Repository: NREL/OpenStudio (language: python)

Issue:
Investigate regression tests failures
Issue overview
--------------

I ran with develop and with the tip of V23-2-0IOFreeze branch. Some failures on develop, more failures on IOFreeze

![image](https://github.com/NREL/OpenStudio/assets/5479063/c1ad0267-e1ba-4fa2-a0bb-1c81b3592a38)


## Possible Solution

Investigate and adjust SDK and/or test

## Details

### Environment

Some additional details about your environment for this issue (if relevant):
 - Platform (Operating system, version):
 - Version of OpenStudio (if using an intermediate build, include SHA):
     - develop: 255c623c80
     - IOFreeze: 830ad7e02b

### Context


Investigate regression tests failures
Issue overview
--------------

I ran with develop and with the tip of V23-2-0IOFreeze branch. Some failures on develop, more failures on IOFreeze

![image](https://github.com/NREL/OpenStudio/assets/5479063/c1ad0267-e1ba-4fa2-a0bb-1c81b3592a38)


## Possible Solution

Investigate and adjust SDK and/or test

## Details

### Environment

Some additional details about your environment for this issue (if relevant):
 - Platform (Operating system, version):
 - Version of OpenStudio (if using an intermediate build, include SHA):
     - develop: 255c623c80
     - IOFreeze: 830ad7e02b

### Context


HeatPump:PlantLoop:EIR:*: new fields
Pull request overview
---------------------

- [x] Support new fields for `HeatPump:PlantLoop:EIR:Cooling`:
  - "Control Type"
  - "Flow Mode"
  - "Minimum Part Load Ratio"
  - "Minimum Source Inlet Temperature"
  - "Maximum Source Inlet Temperature"
  - "Minimum Supply Water Temperature Curve Name"
  - "Maximum Supply Water Temperature Curve Name"
- [x] Support new fields for `HeatPump:PlantLoop:EIR:Heating`:
  - "Heating To Cooling Capacity Sizing Ratio"
  - "Heat Pump Sizing Method"
  - "Control Type"
  - "Flow Mode"
  - "Minimum Part Load Ratio"
  - "Minimum Source Inlet Temperature"
  - "Maximum Source Inlet Temperature"
  - "Minimum Supply Water Temperature Curve Name"
  - "Maximum Supply Water Temperature Curve Name"
  - "Dry Outdoor Correction Factor Curve Name"
  - "Maximum Outdoor Dry Bulb Temperature For Defrost Operation"
  - "Heat Pump Defrost Control"
  - "Heat Pump Defrost Time Period Fraction"
  - "Defrost Energy Input Ratio Function of Temperature Curve Name"
  - "Timed Empirical Defrost Frequency Curve Name"
  - "Timed Empirical Defrost Heat Load Penalty Curve Name"
  - "Timed Empirical Defrost Heat Input Energy Fraction Curve Name"

### Pull Request Author

<!--- Add to this list or remove from it as applicable.  This is a simple templated set of guidelines. -->

 - [ ] Model API Changes / Additions
 - [ ] Any new or modified fields have been implemented in the EnergyPlus ForwardTranslator (and ReverseTranslator as appropriate)
 - [ ] Model API methods are tested (in `src/model/test`)
 - [ ] EnergyPlus ForwardTranslator Tests (in `src/energyplus/Test`)
 - [ ] If a new object or method, added a test in NREL/OpenStudio-resources: Add Link
 - [ ] If needed, added VersionTranslation rules for the objects (`src/osversion/VersionTranslator.cpp`)
 - [ ] Verified that C# bindings built fine on Windows, partial classes used as needed, etc.
 - [ ] All new and existing tests passes
 - [ ] If methods have been deprecated, update rest of code to use the new methods

**Labels:**

 - [ ] If change to an IDD file, add the label `IDDChange`
 - [ ] If breaking existing API, add the label `APIChange`
 - [ ] If deemed ready, add label `Pull Request - Ready for CI` so that CI builds your PR

### Review Checklist

This will not be exhaustively relevant to every PR.
 - [ ] Perform a Code Review on GitHub
 - [ ] Code Style, strip trailing whitespace, etc.
 - [ ] All related changes have been implemented: model changes, model tests, FT changes, FT tests, VersionTranslation, OS App
 - [ ] Labeling is ok
 - [ ] If defect, verify by running develop branch and reproducing defect, then running PR and reproducing fix
 - [ ] If feature, test running new feature, try creative ways to break it
 - [ ] CI status: all green or justified

Investigate regression tests failures
Issue overview
--------------

I ran with develop and with the tip of V23-2-0IOFreeze branch. Some failures on develop, more failures on IOFreeze

![image](https://github.com/NREL/OpenStudio/assets/5479063/c1ad0267-e1ba-4fa2-a0bb-1c81b3592a38)


## Possible Solution

Investigate and adjust SDK and/or test

## Details

### Environment

Some additional details about your environment for this issue (if relevant):
 - Platform (Operating system, version):
 - Version of OpenStudio (if using an intermediate build, include SHA):
     - develop: 255c623c80
     - IOFreeze: 830ad7e02b

### Context




Discussion / hints:
4 way comparison, % change compared to 3.6.1 usage

![image](https://github.com/NREL/OpenStudio/assets/5479063/eb1487f8-a129-4705-b8bd-9b879bf76a27)


Definitely an issue with the Unitary system: 
* https://github.com/NREL/OpenStudio/issues/4963
![image](https://github.com/NREL/OpenStudio/assets/5479063/c293debf-ec44-43cf-986d-ac819dd9fe4e)

4 way comparison, % change compared to 3.6.1 usage

![image](https://github.com/NREL/OpenStudio/assets/5479063/eb1487f8-a129-4705-b8bd-9b879bf76a27)


Definitely an issue with the Unitary system: 
* https://github.com/NREL/OpenStudio/issues/4963
![image](https://github.com/NREL/OpenStudio/assets/5479063/c293debf-ec44-43cf-986d-ac819dd9fe4e)

@jmarrec segfault in tests - presumably related to new reset curve methods. do you see anything obvious?
CI Results for 9c1449eee9b63c99f653812714d78db5ee06ad55:

* Ubuntu 20.04:
    * [OpenStudio-3.7.0-alpha+9c1449eee9-Ubuntu-20.04-x86_64.deb](http://openstudio-ci-builds.s3-website-us-west-2.amazonaws.com/PR-4962/OpenStudio-3.7.0-alpha%2B9c1449eee9-Ubuntu-20.04-x86_64.deb)
    * [OpenStudio-3.7.0-alpha+9c1449eee9-Ubuntu-20.04-x86_64.tar.gz](http://openstudio-ci-builds.s3-website-us-west-2.amazonaws.com/PR-4962/OpenStudio-3.7.0-alpha%2B9c1449eee9-Ubuntu-20.04-x86_64.tar.gz)
    * [perf_test/results.html](https://openstudio-ci-builds.s3-us-west-2.amazonaws.com/PR-4962/9c1449eee9b63c99f653812714d78db5ee06ad55/perf_test/results.html)

* Ubuntu 22.04:
    * [OpenStudio-3.7.0-alpha+9c1449eee9-Ubuntu-22.04-x86_64.deb](http://openstudio-ci-builds.s3-website-us-west-2.amazonaws.com/PR-4962/OpenStudio-3.7.0-alpha%2B9c1449eee9-Ubuntu-22.04-x86_64.deb)
    * [OpenStudio-3.7.0-alpha+9c1449eee9-Ubuntu-22.04-x86_64.tar.gz](http://openstudio-ci-builds.s3-website-us-west-2.amazonaws.com/PR-4962/OpenStudio-3.7.0-alpha%2B9c1449eee9-Ubuntu-22.04-x86_64.tar.gz)

* Darwin:
    * [OpenStudio-3.7.0-alpha+9c1449eee9-Darwin-x86_64.dmg](http://openstudio-ci-builds.s3-website-us-west-2.amazonaws.com/PR-4962/OpenStudio-3.7.0-alpha+9c1449eee9-Darwin-x86_64.dmg)
    * [OpenStudio-3.7.0-alpha+9c1449eee9-Darwin-x86_64.tar.gz](http://openstudio-ci-builds.s3-website-us-west-2.amazonaws.com/PR-4962/OpenStudio-3.7.0-alpha+9c1449eee9-Darwin-x86_64.tar.gz)

* Windows:
* Code Coverage:
4 way comparison, % change compared to 3.6.1 usage

![image](https://github.com/NREL/OpenStudio/assets/5479063/eb1487f8-a129-4705-b8bd-9b879bf76a27)


Definitely an issue with the Unitary system: 
* https://github.com/NREL/OpenStudio/issues/4963
![image](https://github.com/NREL/OpenStudio/assets/5479063/c293debf-ec44-43cf-986d-ac819dd9fe4e)


Fix patch:
diff --git a/src/osversion/VersionTranslator.cpp b/src/osversion/VersionTranslator.cpp
index 6befc4a1932..390039785f3 100644
--- a/src/osversion/VersionTranslator.cpp
+++ b/src/osversion/VersionTranslator.cpp
@@ -8840,6 +8840,105 @@ namespace osversion {
         m_refactored.push_back(RefactoredObjectData(object, newObject));
         ss << newObject;
 
+      } else if (iddname == "OS:LoadProfile:Plant") {
+
+        // Fields that have been added from 3.6.1 to 3.7.0:
+        // ------------------------------------------------
+        // * Plant Loop Fluid Type * 7
+        // * Degree of SubCooling * 8
+        // * Degree of Loop SubCooling * 9
+        auto iddObject = idd_3_7_0.getObject(iddname);
+        IdfObject newObject(iddObject.get());
+
+        for (size_t i = 0; i < object.numFields(); ++i) {
+          if ((value = object.getString(i))) {
+            newObject.setString(i, value.get());
+          }
+        }
+
+        newObject.setString(7, "Water");
+        newObject.setDouble(8, 5.0);
+        newObject.setDouble(9, 20.0);
+
+        ss << newObject;
+        m_refactored.emplace_back(std::move(object), std::move(newObject));
+
+      } else if (iddname == "OS:HeatPump:PlantLoop:EIR:Cooling") {
+
+        // Fields that have been added from 3.6.1 to 3.7.0:
+        // ------------------------------------------------
+        // * Control Type * 16
+        // * Flow Mode * 17
+        // * Minimum Part Load Ratio * 18
+        // * Minimum Source Inlet Temperature * 19
+        // * Maximum Source Inlet Temperature * 20
+        // * Minimum Supply Water Temperature Curve Name * 21 --- Optional
+        // * Maximum Supply Water Temperature Curve Name * 22 --- Optional
+
+        auto iddObject = idd_3_7_0.getObject(iddname);
+        IdfObject newObject(iddObject.get());
+
+        for (size_t i = 0; i < object.numFields(); ++i) {
+          if ((value = object.getString(i))) {
+            newObject.setString(i, value.get());
+          }
+        }
+
+        newObject.setString(16, "Load");
+        newObject.setString(17, "ConstantFlow");
+        newObject.setDouble(18, 0.0);
+        newObject.setDouble(19, -100.0);
+        newObject.setDouble(20, 100.0);
+
+        ss << newObject;
+        m_refactored.emplace_back(std::move(object), std::move(newObject));
+
+      } else if (iddname == "OS:HeatPump:PlantLoop:EIR:Heating") {
+
+        // Fields that have been added from 3.6.1 to 3.7.0:
+        // ------------------------------------------------
+        // * Heating To Cooling Capacity Sizing Ratio * 16
+        // * Heat Pump Sizing Method * 17
+        // * Control Type * 18
+        // * Flow Mode * 19
+        // * Minimum Part Load Ratio * 20
+        // * Minimum Source Inlet Temperature * 21
+        // * Maximum Source Inlet Temperature * 22
+        // * Minimum Supply Water Temperature Curve Name * 23 --- Optional
+        // * Maximum Supply Water Temperature Curve Name * 24 --- Optional
+        // * Dry Outdoor Correction Factor Curve Name * 25
+        // * Maximum Outdoor Dry Bulb Temperature For Defrost Operation * 26
+        // * Heat Pump Defrost Control * 27
+        // * Heat Pump Defrost Time Period Fraction * 28
+        // * Defrost Energy Input Ratio Function of Temperature Curve Name * 29 --- Optional
+        // * Timed Empirical Defrost Frequency Curve Name * 30 --- Optional
+        // * Timed Empirical Defrost Heat Load Penalty Curve Name * 31 --- Optional
+        // * Timed Empirical Defrost Heat Input Energy Fraction Curve Name * 32 --- Optional
+
+        auto iddObject = idd_3_7_0.getObject(iddname);
+        IdfObject newObject(iddObject.get());
+
+        for (size_t i = 0; i < object.numFields(); ++i) {
+          if ((value = object.getString(i))) {
+            newObject.setString(i, value.get());
+          }
+        }
+        newObject.setDouble(16, 1.0);
+        newObject.setString(17, "CoolingCapacity");
+        newObject.setString(18, "Load");
+        newObject.setString(19, "ConstantFlow");
+
+        newObject.setDouble(20, 0.0);
+        newObject.setDouble(21, -100.0);
+        newObject.setDouble(22, 100.0);
+
+        newObject.setDouble(26, 10.0);
+        newObject.setString(27, "None");
+        newObject.setDouble(28, 0.058333);
+
+        ss << newObject;
+        m_refactored.emplace_back(std::move(object), std::move(newObject));
+
         // No-op
       } else {
         ss << object;


Test patch:
diff --git a/src/osversion/test/3_7_0/test_vt_HeatPumpPlantLoopEIR.osm b/src/osversion/test/3_7_0/test_vt_HeatPumpPlantLoopEIR.osm
new file mode 100644
index 00000000000..756d3d1b948
--- /dev/null
+++ b/src/osversion/test/3_7_0/test_vt_HeatPumpPlantLoopEIR.osm
@@ -0,0 +1,131 @@
+
+OS:Version,
+  {33071ded-2315-4908-99af-ab183bb0c205}, !- Handle
+  3.6.1;                                  !- Version Identifier
+
+OS:HeatPump:PlantLoop:EIR:Heating,
+  {a44033ba-0e68-4b7f-96b1-070c5072cdbc}, !- Handle
+  Heat Pump Plant Loop EIR Heating 1,     !- Name
+  ,                                       !- Load Side Inlet Node Name
+  ,                                       !- Load Side Outlet Node Name
+  AirSource,                              !- Condenser Type
+  ,                                       !- Source Side Inlet Node Name
+  ,                                       !- Source Side Outlet Node Name
+  ,                                       !- Companion Heat Pump Name
+  Autosize,                               !- Load Side Reference Flow Rate {m3/s}
+  Autosize,                               !- Source Side Reference Flow Rate {m3/s}
+  Autosize,                               !- Reference Capacity {W}
+  7.5,                                    !- Reference Coefficient of Performance {W/W}
+  1,                                      !- Sizing Factor
+  {0532b92b-8926-4477-885d-c8e094088ed1}, !- Capacity Modifier Function of Temperature Curve Name
+  {1e69a32e-47fd-4dc8-a960-70a19d98cb92}, !- Electric Input to Output Ratio Modifier Function of Temperature Curve Name
+  {20c68188-c744-4f92-b7a3-e744e67b4eae}; !- Electric Input to Output Ratio Modifier Function of Part Load Ratio Curve Name
+
+OS:Curve:Biquadratic,
+  {0532b92b-8926-4477-885d-c8e094088ed1}, !- Handle
+  Curve Biquadratic 1,                    !- Name
+  1,                                      !- Coefficient1 Constant
+  0,                                      !- Coefficient2 x
+  0,                                      !- Coefficient3 x**2
+  0,                                      !- Coefficient4 y
+  0,                                      !- Coefficient5 y**2
+  0,                                      !- Coefficient6 x*y
+  5,                                      !- Minimum Value of x
+  10,                                     !- Maximum Value of x
+  24,                                     !- Minimum Value of y
+  35,                                     !- Maximum Value of y
+  ,                                       !- Minimum Curve Output
+  ,                                       !- Maximum Curve Output
+  Temperature,                            !- Input Unit Type for X
+  Temperature;                            !- Input Unit Type for Y
+
+OS:Curve:Biquadratic,
+  {1e69a32e-47fd-4dc8-a960-70a19d98cb92}, !- Handle
+  Curve Biquadratic 2,                    !- Name
+  1,                                      !- Coefficient1 Constant
+  0,                                      !- Coefficient2 x
+  0,                                      !- Coefficient3 x**2
+  0,                                      !- Coefficient4 y
+  0,                                      !- Coefficient5 y**2
+  0,                                      !- Coefficient6 x*y
+  5,                                      !- Minimum Value of x
+  10,                                     !- Maximum Value of x
+  24,                                     !- Minimum Value of y
+  35,                                     !- Maximum Value of y
+  ,                                       !- Minimum Curve Output
+  ,                                       !- Maximum Curve Output
+  Temperature,                            !- Input Unit Type for X
+  Temperature;                            !- Input Unit Type for Y
+
+OS:Curve:Quadratic,
+  {20c68188-c744-4f92-b7a3-e744e67b4eae}, !- Handle
+  HeatEIRfPLR,                            !- Name
+  1,                                      !- Coefficient1 Constant
+  0,                                      !- Coefficient2 x
+  0,                                      !- Coefficient3 x**2
+  0,                                      !- Minimum Value of x
+  1;                                      !- Maximum Value of x
+
+OS:HeatPump:PlantLoop:EIR:Cooling,
+  {42986a97-3f97-4537-a758-720c86b7a317}, !- Handle
+  Heat Pump Plant Loop EIR Cooling 1,     !- Name
+  ,                                       !- Load Side Inlet Node Name
+  ,                                       !- Load Side Outlet Node Name
+  AirSource,                              !- Condenser Type
+  ,                                       !- Source Side Inlet Node Name
+  ,                                       !- Source Side Outlet Node Name
+  ,                                       !- Companion Heat Pump Name
+  Autosize,                               !- Load Side Reference Flow Rate {m3/s}
+  Autosize,                               !- Source Side Reference Flow Rate {m3/s}
+  Autosize,                               !- Reference Capacity {W}
+  7.5,                                    !- Reference Coefficient of Performance {W/W}
+  1,                                      !- Sizing Factor
+  {a60237b3-76b8-4399-a7a4-d2a8e55b6d03}, !- Capacity Modifier Function of Temperature Curve Name
+  {691e3725-6804-4c01-91c5-853bdb27d116}, !- Electric Input to Output Ratio Modifier Function of Temperature Curve Name
+  {6467d34e-e8fe-4bf7-a42b-bf4a51585284}; !- Electric Input to Output Ratio Modifier Function of Part Load Ratio Curve Name
+
+OS:Curve:Biquadratic,
+  {a60237b3-76b8-4399-a7a4-d2a8e55b6d03}, !- Handle
+  Curve Biquadratic 3,                    !- Name
+  1,                                      !- Coefficient1 Constant
+  0,                                      !- Coefficient2 x
+  0,                                      !- Coefficient3 x**2
+  0,                                      !- Coefficient4 y
+  0,                                      !- Coefficient5 y**2
+  0,                                      !- Coefficient6 x*y
+  5,                                      !- Minimum Value of x
+  10,                                     !- Maximum Value of x
+  24,                                     !- Minimum Value of y
+  35,                                     !- Maximum Value of y
+  ,                                       !- Minimum Curve Output
+  ,                                       !- Maximum Curve Output
+  Temperature,                            !- Input Unit Type for X
+  Temperature;                            !- Input Unit Type for Y
+
+OS:Curve:Biquadratic,
+  {691e3725-6804-4c01-91c5-853bdb27d116}, !- Handle
+  Curve Biquadratic 4,                    !- Name
+  1,                                      !- Coefficient1 Constant
+  0,                                      !- Coefficient2 x
+  0,                                      !- Coefficient3 x**2
+  0,                                      !- Coefficient4 y
+  0,                                      !- Coefficient5 y**2
+  0,                                      !- Coefficient6 x*y
+  5,                                      !- Minimum Value of x
+  10,                                     !- Maximum Value of x
+  24,                                     !- Minimum Value of y
+  35,                                     !- Maximum Value of y
+  ,                                       !- Minimum Curve Output
+  ,                                       !- Maximum Curve Output
+  Temperature,                            !- Input Unit Type for X
+  Temperature;                            !- Input Unit Type for Y
+
+OS:Curve:Quadratic,
+  {6467d34e-e8fe-4bf7-a42b-bf4a51585284}, !- Handle
+  CoolEIRfPLR,                            !- Name
+  1,                                      !- Coefficient1 Constant
+  0,                                      !- Coefficient2 x
+  0,                                      !- Coefficient3 x**2
+  0,                                      !- Minimum Value of x
+  1;                                      !- Maximum Value of x
+
diff --git a/src/osversion/test/3_7_0/test_vt_HeatPumpPlantLoopEIR.rb b/src/osversion/test/3_7_0/test_vt_HeatPumpPlantLoopEIR.rb
new file mode 100644
index 00000000000..0aa395d95e7
--- /dev/null
+++ b/src/osversion/test/3_7_0/test_vt_HeatPumpPlantLoopEIR.rb
@@ -0,0 +1,13 @@
+#require '/usr/local/openstudio-3.6.1/Ruby/openstudio'
+
+include OpenStudio::Model
+
+m = Model.new
+
+hp_heating = HeatPumpPlantLoopEIRHeating.new(m)
+hp_heating.electricInputtoOutputRatioModifierFunctionofPartLoadRatioCurve.setName("HeatEIRfPLR")
+
+hp_cooling = HeatPumpPlantLoopEIRCooling.new(m)
+hp_cooling.electricInputtoOutputRatioModifierFunctionofPartLoadRatioCurve.setName("CoolEIRfPLR")
+
+m.save('test_vt_HeatPumpPlantLoopEIR.osm', true)
diff --git a/src/osversion/test/3_7_0/test_vt_LoadProfilePlant.osm b/src/osversion/test/3_7_0/test_vt_LoadProfilePlant.osm
new file mode 100644
index 00000000000..157ced5b2b7
--- /dev/null
+++ b/src/osversion/test/3_7_0/test_vt_LoadProfilePlant.osm
@@ -0,0 +1,62 @@
+
+OS:Version,
+  {10737f92-9e5a-4b07-b6a1-78d1db5248ae}, !- Handle
+  3.6.1;                                  !- Version Identifier
+
+OS:LoadProfile:Plant,
+  {f33ecf57-5b67-461c-99d6-e86538523108}, !- Handle
+  Load Profile Plant 1,                   !- Name
+  ,                                       !- Inlet Node Name
+  ,                                       !- Outlet Node Name
+  {0642cdcf-a687-46e2-8b47-cb390f082e98}, !- Load Schedule Name
+  0.002,                                  !- Peak Flow Rate {m3/s}
+  {45d46aaa-9916-4b05-b9d9-20241a224ada}; !- Flow Rate Fraction Schedule Name
+
+OS:Schedule:Constant,
+  {45d46aaa-9916-4b05-b9d9-20241a224ada}, !- Handle
+  Always On Discrete,                     !- Name
+  {ae33046c-934f-4b3c-8de4-5e2716384516}, !- Schedule Type Limits Name
+  1;                                      !- Value
+
+OS:ScheduleTypeLimits,
+  {ae33046c-934f-4b3c-8de4-5e2716384516}, !- Handle
+  OnOff,                                  !- Name
+  0,                                      !- Lower Limit Value
+  1,                                      !- Upper Limit Value
+  Discrete,                               !- Numeric Type
+  Availability;                           !- Unit Type
+
+OS:Schedule:Ruleset,
+  {0642cdcf-a687-46e2-8b47-cb390f082e98}, !- Handle
+  Schedule Ruleset 1,                     !- Name
+  {ccdaf27b-a77d-487d-9828-82bf1944d386}, !- Schedule Type Limits Name
+  {c42cc8d2-7d92-4210-9a6f-e8750e7bd2ff}; !- Default Day Schedule Name
+
+OS:Schedule:Day,
+  {c42cc8d2-7d92-4210-9a6f-e8750e7bd2ff}, !- Handle
+  Schedule Day 1,                         !- Name
+  {ccdaf27b-a77d-487d-9828-82bf1944d386}, !- Schedule Type Limits Name
+  ,                                       !- Interpolate to Timestep
+  4,                                      !- Hour 1
+  0,                                      !- Minute 1
+  8000,                                   !- Value Until Time 1
+  8,                                      !- Hour 2
+  0,                                      !- Minute 2
+  6000,                                   !- Value Until Time 2
+  9,                                      !- Hour 3
+  0,                                      !- Minute 3
+  0,                                      !- Value Until Time 3
+  12,                                     !- Hour 4
+  0,                                      !- Minute 4
+  6000,                                   !- Value Until Time 4
+  24,                                     !- Hour 5
+  0,                                      !- Minute 5
+  10000;                                  !- Value Until Time 5
+
+OS:ScheduleTypeLimits,
+  {ccdaf27b-a77d-487d-9828-82bf1944d386}, !- Handle
+  Dimensionless,                          !- Name
+  ,                                       !- Lower Limit Value
+  ,                                       !- Upper Limit Value
+  Continuous;                             !- Numeric Type
+
diff --git a/src/osversion/test/3_7_0/test_vt_LoadProfilePlant.rb b/src/osversion/test/3_7_0/test_vt_LoadProfilePlant.rb
new file mode 100644
index 00000000000..6ca8ee966c0
--- /dev/null
+++ b/src/osversion/test/3_7_0/test_vt_LoadProfilePlant.rb
@@ -0,0 +1,9 @@
+#require '/usr/local/openstudio-3.6.1/Ruby/openstudio'
+
+include OpenStudio::Model
+
+m = Model.new
+
+l = LoadProfilePlant.new(m)
+
+m.save('test_vt_LoadProfilePlant.osm', true)
diff --git a/src/osversion/test/VersionTranslator_GTest.cpp b/src/osversion/test/VersionTranslator_GTest.cpp
index 6c7d1d84d5b..b894320c1e3 100644
--- a/src/osversion/test/VersionTranslator_GTest.cpp
+++ b/src/osversion/test/VersionTranslator_GTest.cpp
@@ -3941,3 +3941,82 @@ TEST_F(OSVersionFixture, update_3_6_1_to_3_7_0_ControllerOutdoorAir) {
   EXPECT_EQ("BypassWhenWithinEconomizerLimits", coa.getString(26).get());  // Heat Recovery Bypass Control Type
   EXPECT_EQ("InterlockedWithMechanicalCooling", coa.getString(27).get());  // Economizer Operation Staging
 }
+
+TEST_F(OSVersionFixture, update_3_6_1_to_3_7_0_LoadProfilePlant) {
+  openstudio::path osmPath = resourcesPath() / toPath("osversion/3_7_0/test_vt_LoadProfilePlant.osm");
+  osversion::VersionTranslator vt;
+  boost::optional<model::Model> model_ = vt.loadModel(osmPath);
+  ASSERT_TRUE(model_) << "Failed to load " << osmPath;
+
+  openstudio::path outPath = osmPath.parent_path() / toPath(osmPath.stem().string() + "_updated" + osmPath.extension().string());
+  model_->save(outPath, true);
+
+  std::vector<WorkspaceObject> lps = model_->getObjectsByType("OS:LoadProfile:Plant");
+  ASSERT_EQ(1u, lps.size());
+  const auto& lp = lps.front();
+
+  // Previous last field
+  ASSERT_TRUE(lp.getTarget(6));
+  EXPECT_EQ("Always On Discrete", lp.getTarget(6)->nameString());
+  EXPECT_EQ("Water", lp.getString(7).get());  // Plant Loop Fluid Type
+  EXPECT_EQ(5.0, lp.getDouble(8).get());      // Degree of SubCooling {C}
+  EXPECT_EQ(20.0, lp.getDouble(9).get());     // Degree of Loop SubCooling {C}
+}
+
+TEST_F(OSVersionFixture, update_3_6_1_to_3_7_0_HeatPumpPlantLoopEIR) {
+  openstudio::path osmPath = resourcesPath() / toPath("osversion/3_7_0/test_vt_HeatPumpPlantLoopEIR.osm");
+  osversion::VersionTranslator vt;
+  boost::optional<model::Model> model_ = vt.loadModel(osmPath);
+  ASSERT_TRUE(model_) << "Failed to load " << osmPath;
+
+  openstudio::path outPath = osmPath.parent_path() / toPath(osmPath.stem().string() + "_updated" + osmPath.extension().string());
+  model_->save(outPath, true);
+
+  {
+    std::vector<WorkspaceObject> hps = model_->getObjectsByType("OS:HeatPump:PlantLoop:EIR:Cooling");
+    ASSERT_EQ(1u, hps.size());
+    const auto& hp = hps.front();
+
+    // Previous last field
+    ASSERT_TRUE(hp.getTarget(15));
+    EXPECT_EQ("CoolEIRfPLR", hp.getTarget(15)->nameString());
+
+    int insertionIndex = 16;
+    EXPECT_EQ("Load", hp.getString(insertionIndex++).get());          // ControlType
+    EXPECT_EQ("ConstantFlow", hp.getString(insertionIndex++).get());  // FlowMode
+    EXPECT_EQ(0.0, hp.getDouble(insertionIndex++).get());             // MinimumPartLoadRatio
+    EXPECT_EQ(-100.0, hp.getDouble(insertionIndex++).get());          // MinimumSourceInletTemperature
+    EXPECT_EQ(100.0, hp.getDouble(insertionIndex++).get());           // MaximumSourceInletTemperature
+    EXPECT_TRUE(hp.isEmpty(insertionIndex++));                        // MinimumSupplyWaterTemperatureCurveName
+    EXPECT_TRUE(hp.isEmpty(insertionIndex++));                        // MaximumSupplyWaterTemperatureCurveName
+  }
+
+  {
+    std::vector<WorkspaceObject> hps = model_->getObjectsByType("OS:HeatPump:PlantLoop:EIR:Heating");
+    ASSERT_EQ(1u, hps.size());
+    const auto& hp = hps.front();
+
+    // Previous last field
+    ASSERT_TRUE(hp.getTarget(15));
+    EXPECT_EQ("HeatEIRfPLR", hp.getTarget(15)->nameString());
+
+    int insertionIndex = 16;
+    EXPECT_EQ(1.0, hp.getDouble(insertionIndex++).get());                // HeatingToCoolingCapacitySizingRatio
+    EXPECT_EQ("CoolingCapacity", hp.getString(insertionIndex++).get());  // HeatPumpSizingMethod
+    EXPECT_EQ("Load", hp.getString(insertionIndex++).get());             // ControlType
+    EXPECT_EQ("ConstantFlow", hp.getString(insertionIndex++).get());     // FlowMode
+    EXPECT_EQ(0.0, hp.getDouble(insertionIndex++).get());                // MinimumPartLoadRatio
+    EXPECT_EQ(-100.0, hp.getDouble(insertionIndex++).get());             // MinimumSourceInletTemperature
+    EXPECT_EQ(100.0, hp.getDouble(insertionIndex++).get());              // MaximumSourceInletTemperature
+    EXPECT_TRUE(hp.isEmpty(insertionIndex++));                           // MinimumSupplyWaterTemperatureCurveName
+    EXPECT_TRUE(hp.isEmpty(insertionIndex++));                           // MaximumSupplyWaterTemperatureCurveName
+    EXPECT_TRUE(hp.isEmpty(insertionIndex++));                           // DryOutdoorCorrectionFactorCurveName
+    EXPECT_EQ(10.0, hp.getDouble(insertionIndex++).get());               // MaximumOutdoorDryBulbTemperatureForDefrostOperation
+    EXPECT_EQ("None", hp.getString(insertionIndex++).get());             // HeatPumpDefrostControl
+    EXPECT_EQ(0.058333, hp.getDouble(insertionIndex++).get());           // HeatPumpDefrostTimePeriodFraction
+    EXPECT_TRUE(hp.isEmpty(insertionIndex++));                           // DefrostEnergyInputRatioFunctionofTemperatureCurveName
+    EXPECT_TRUE(hp.isEmpty(insertionIndex++));                           // TimedEmpiricalDefrostFrequencyCurveName
+    EXPECT_TRUE(hp.isEmpty(insertionIndex++));                           // TimedEmpiricalDefrostHeatLoadPenaltyCurveName
+    EXPECT_TRUE(hp.isEmpty(insertionIndex++));                           // TimedEmpiricalDefrostHeatInputEnergyFractionCurveName
+  }
+}