Initial upload; still prototyping.
Initial upload; still prototyping.

--- /dev/null
+++ b/Building_HeatPump.cs
@@ -1,1 +1,22 @@
+using RimWorld;
+using System;
 
+namespace Building_HeatPump
+{
+	public class Building_HeatPump : Building_TempControl
+	{
+		/// <summary>
+		/// The refrigerant.
+		/// </summary>
+		public RefrigerantType Refrigerant;
+
+		public float NominalEvapCoilDeltaT = 12f;
+
+		public float NominalCondenserCoilDeltaT = 14f;
+
+		public float CompressorEfficiency;
+
+		public float 
+	}
+}
+

--- /dev/null
+++ b/Building_HeatPump.csproj
@@ -1,1 +1,41 @@
-
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Release (Linux)</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{AAA70777-04CB-4F1E-9CDE-ADA557ABD322}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <RootNamespace>Building_HeatPump</RootNamespace>
+    <AssemblyName>Building_HeatPump</AssemblyName>
+    <UseMSBuildEngine>False</UseMSBuildEngine>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release (Linux)|AnyCPU' ">
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release (Linux)</OutputPath>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug (Linux)|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug (Linux)</OutputPath>
+    <DefineConstants>DEBUG</DefineConstants>
+    <WarningLevel>4</WarningLevel>
+    <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
+  </PropertyGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <ItemGroup>
+    <Compile Include="Building_HeatPump.cs" />
+    <Compile Include="RefrigerantType.cs" />
+    <Compile Include="RefrigerationCycle.cs" />
+    <Compile Include="ConstantsAndAssumptions.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Reference Include="Assembly-CSharp">
+      <HintPath>..\_RimWorldAssembly\Assembly-CSharp.dll</HintPath>
+    </Reference>
+    <Reference Include="UnityEngine">
+      <HintPath>..\_RimWorldAssembly\UnityEngine.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+</Project>

--- /dev/null
+++ b/ConstantsAndAssumptions.cs
@@ -1,1 +1,13 @@
+using System;
 
+namespace Building_HeatPump
+{
+	public class ConstantsAndAssumptions
+	{
+		public ConstantsAndAssumptions()
+		{
+		}
+	}
+}
+
+

--- /dev/null
+++ b/RefrigerantType.cs
@@ -1,1 +1,40 @@
+using System;
+using RimWorld;
+using Verse;
 
+namespace Building_HeatPump
+{
+	public class RefrigerantType
+	{
+		// public static RefrigerantType R410A = new
+		/// <summary>
+		/// The condensing (liquid) temperature of the refrigerant in a typical cycle, in °C
+		/// </summary>
+		public float CondensorTemp;
+
+		/// <summary>
+		/// The evaporating (suction) temperature of the refrigerant in a typical cycle, in °C
+		/// </summary>
+		public float EvaporatorTemp;
+
+		/// <summary>
+		/// The specific heat absorbed by the evaporator, in kJ/kg
+		/// </summary>
+		public float EvaporatorEnthalpyDelta;
+
+		/// <summary>
+		/// The specific heat generated and consumed in the compressor, in kJ/kg
+		/// </summary>
+		public float CompressorEnthalpyDelta;
+
+		public RefrigerantType(float cnTemp, float evTemp, float evHeat, float cpHeat)
+		{
+			this.CondensorTemp = cnTemp;
+			this.EvaporatorTemp = evTemp;
+
+			this.EvaporatorEnthalpyDelta = evHeat;
+			this.CompressorEnthalpyDelta = cpHeat;
+		}
+	}
+}
+

--- /dev/null
+++ b/RefrigerationCycle.cs
@@ -1,1 +1,29 @@
+using System;
 
+namespace Building_HeatPump
+{
+	public class RefrigerationCycle
+	{
+		/// <summary>
+		/// The refrigerant.
+		/// </summary>
+		public RefrigerantType Refrigerant;
+
+		public float NominalEvapCoilDeltaT = 12f;
+
+		public float NominalCondenserCoilDeltaT = 14f;
+
+		public float CompressorEfficiency;
+
+		public float EvaporatorEfficiencyAtTemp(float tempIndoors)
+		{
+			float evapDeltaT = tempIndoors - Refrigerant.EvaporatorTemp;
+		}
+
+		public RefrigerationCycle()
+		{
+		}
+	}
+}
+
+