/**
 */
package de.hftstuttgart.energycomponents;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Heat Pump</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * </p>
 * <ul>
 *   <li>{@link de.hftstuttgart.energycomponents.HeatPump#getHeatSource <em>Heat Source</em>}</li>
 *   <li>{@link de.hftstuttgart.energycomponents.HeatPump#getCoefficientOfPerformance <em>Coefficient Of Performance</em>}</li>
 *   <li>{@link de.hftstuttgart.energycomponents.HeatPump#getPowerInput <em>Power Input</em>}</li>
 *   <li>{@link de.hftstuttgart.energycomponents.HeatPump#getHeatOutput <em>Heat Output</em>}</li>
 * </ul>
 *
 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHeatPump()
 * @model
 * @generated
 */
public interface HeatPump extends ThermalEnergyDevice {
	/**
	 * Returns the value of the '<em><b>Heat Source</b></em>' attribute.
	 * The literals are from the enumeration {@link de.hftstuttgart.energycomponents.HeatSources}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Heat Source</em>' attribute.
	 * @see de.hftstuttgart.energycomponents.HeatSources
	 * @see #setHeatSource(HeatSources)
	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHeatPump_HeatSource()
	 * @model required="true"
	 * @generated
	 */
	HeatSources getHeatSource();

	/**
	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.HeatPump#getHeatSource <em>Heat Source</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Heat Source</em>' attribute.
	 * @see de.hftstuttgart.energycomponents.HeatSources
	 * @see #getHeatSource()
	 * @generated
	 */
	void setHeatSource(HeatSources value);

	/**
	 * Returns the value of the '<em><b>Coefficient Of Performance</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Coefficient Of Performance</em>' containment reference.
	 * @see #setCoefficientOfPerformance(Characteristic)
	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHeatPump_CoefficientOfPerformance()
	 * @model containment="true" required="true"
	 * @generated
	 */
	Characteristic getCoefficientOfPerformance();

	/**
	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.HeatPump#getCoefficientOfPerformance <em>Coefficient Of Performance</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Coefficient Of Performance</em>' containment reference.
	 * @see #getCoefficientOfPerformance()
	 * @generated
	 */
	void setCoefficientOfPerformance(Characteristic value);

	/**
	 * Returns the value of the '<em><b>Power Input</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Power Input</em>' containment reference.
	 * @see #setPowerInput(Characteristic)
	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHeatPump_PowerInput()
	 * @model containment="true"
	 * @generated
	 */
	Characteristic getPowerInput();

	/**
	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.HeatPump#getPowerInput <em>Power Input</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Power Input</em>' containment reference.
	 * @see #getPowerInput()
	 * @generated
	 */
	void setPowerInput(Characteristic value);

	/**
	 * Returns the value of the '<em><b>Heat Output</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Heat Output</em>' containment reference.
	 * @see #setHeatOutput(Characteristic)
	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getHeatPump_HeatOutput()
	 * @model containment="true"
	 * @generated
	 */
	Characteristic getHeatOutput();

	/**
	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.HeatPump#getHeatOutput <em>Heat Output</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Heat Output</em>' containment reference.
	 * @see #getHeatOutput()
	 * @generated
	 */
	void setHeatOutput(Characteristic value);

} // HeatPump