Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhancement to crankcase heater #9949

Merged
merged 76 commits into from
Aug 17, 2023
Merged

Enhancement to crankcase heater #9949

merged 76 commits into from
Aug 17, 2023

Conversation

yujiex
Copy link
Collaborator

@yujiex yujiex commented Apr 11, 2023

Pull request overview

Crankcase heaters use a simple electrical circuit to create heat within the crankcase when the compressor of the chiller or heat pump is not in use. The heat keeps the refrigerant from condensing and prevents the refrigerant from migrating through the seals into the oil. Poor control of the crankcase heater could result in excessive energy consumption. Some of the existing products start to provide variable heater power based on different outdoor temperature conditions. Currently, EnergyPlus can only model a constant power crankcase heater with a temperature cutoff. This feature proposes to enhance the crankcase heater in EnergyPlus to allow for variable heater power, which enables to model realistic performance of heat pumps.

testing with a testfile

Running HeatPump_variableCrankcaseHeaterCapacity.idf, with a crankcase heater capacity curve of y = 60 - 2x. The following plot shows the relationship between outdoor temperature and heating coil crankcase heater electricity rate, limited to the time period with runtime fraction = 0.

image

The following is the simulation result of HeatPumpVSAS_variableCrankcaseHeaterCapacity.idf with variable speed coils using the same crankcase heater capacity curve. Column C computes the crankcase heater power before adjusting for the runtime fraction

image

Comparing output of a HeatPumpVSAS.idf and HeatPumpVSAS_variableCrankcaseHeaterCapacity.idf with constant curve

!- crankcase heater capacity in HeatPumpVSAS.idf 
  Coil:Heating:DX:VariableSpeed,
    Heat Pump DX Heating Coil 1,  !- Name
    Heating Coil Air Inlet Node,  !- Indoor Air Inlet Node Name
    SuppHeating Coil Air Inlet Node,  !- Indoor Air Outlet Node Name
    10.0,                    !- Number of Speeds {dimensionless}
    10.0,                    !- Nominal Speed Level {dimensionless}
    35000,                   !- Rated Heating Capacity At Selected Nominal Speed Level {W}
    1.7,                     !- Rated Air Flow Rate At Selected Nominal Speed Level {m3/s}
    HPACCOOLPLFFPLR,         !- Energy Part Load Fraction Curve Name
    ,                        !- Defrost Energy Input Ratio Function of Temperature Curve Name
    -5.0,                    !- Minimum Outdoor Dry-Bulb Temperature for Compressor Operation {C}
    ,                        !- Outdoor Dry-Bulb Temperature to Turn On Compressor {C}
    5.0,                     !- Maximum Outdoor Dry-Bulb Temperature for Defrost Operation {C}
    200.0,                   !- Crankcase Heater Capacity {W}


!- curve in HeatPumpVSAS_variableCrankcaseHeaterCapacity.idf
  Curve:Linear,
    heaterCapCurve,          !- Name
    200.0,                    !- Coefficient1 Constant
    0.0,                     !- Coefficient2 x
    -80,                     !- Minimum Value of x
    80;                      !- Maximum Value of x

As anticipated, the crankcase heater power are the same for the two cases
no_curve_vs_const_200_curve

Comparing a curve with a constant capacity of 200 and a curve with a constant capacity of 100

const_200_vs_const_100

Summary of some identified issues

1. The crankcase heater for the variable speed heat pump water heater might be off all the time

In the file VariableSpeedCoils.cc, the following chunk of code (in the function CalcVarSpeedHPWH) here modifies the temporary variable CrankcaseHeatingPower which is then used in the calculation of state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).CrankcaseHeaterPower later on. It seems that the check of whether the temperature is appropriate for the crankcase heater to operate is only executed when EvapInletNode is 0. But this variable gets value from state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).AirInletNodeNum which is from a required field. So it can’t be 0 in normal cases. This might mean the crankcase heater power will always be 0

        // check if indoor evaporator or outdoor evaporator
        CrankcaseHeatingPower = 0.0;
        if (EvapInletNode != 0) {
            state.dataVariableSpeedCoils->LoadSideInletDBTemp = state.dataLoopNodes->Node(EvapInletNode).Temp;
            state.dataVariableSpeedCoils->LoadSideInletHumRat = state.dataLoopNodes->Node(EvapInletNode).HumRat;
            LoadPressure = state.dataLoopNodes->Node(EvapInletNode).Press;
            // prevent the air pressure not given
            if (LoadPressure < 10.0) LoadPressure = state.dataEnvrn->OutBaroPress;

            state.dataVariableSpeedCoils->LoadSideInletWBTemp = state.dataLoopNodes->Node(EvapInletNode).OutAirWetBulb;
            state.dataVariableSpeedCoils->LoadSideInletEnth = state.dataLoopNodes->Node(EvapInletNode).Enthalpy;
        } else {
            state.dataVariableSpeedCoils->LoadSideInletDBTemp = state.dataEnvrn->OutDryBulbTemp;
            state.dataVariableSpeedCoils->LoadSideInletHumRat = state.dataEnvrn->OutHumRat;
            LoadPressure = state.dataEnvrn->OutBaroPress;
            state.dataVariableSpeedCoils->LoadSideInletWBTemp = state.dataEnvrn->OutWetBulbTemp;
            state.dataVariableSpeedCoils->LoadSideInletEnth = state.dataEnvrn->OutEnthalpy;

            // Initialize crankcase heater, operates below OAT defined in input deck for HP DX heating coil
            if (state.dataEnvrn->OutDryBulbTemp < state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).MaxOATCrankcaseHeater) {
                CrankcaseHeatingPower = state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).CrankcaseHeaterCapacity;
                if (state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).CrankcaseHeaterCapacityCurveIndex > 0) {
                    CrankcaseHeatingPower = Curve::CurveValue(state,
                                                              state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).CrankcaseHeaterCapacityCurveIndex,
                                                              state.dataEnvrn->OutDryBulbTemp);
                }
            };
        } 

2. Some inconsistency in what temperature should be compared to the maximum temperature threshold below which the crankcase heater should operate

See this issue: #10052

NOTE: ENHANCEMENTS MUST FOLLOW A SUBMISSION PROCESS INCLUDING A FEATURE PROPOSAL AND DESIGN DOCUMENT PRIOR TO SUBMITTING CODE

Pull Request Author

Add to this list or remove from it as applicable. This is a simple templated set of guidelines.

  • Title of PR should be user-synopsis style (clearly understandable in a standalone changelog context)
  • Label the PR with at least one of: Defect, Refactoring, NewFeature, Performance, and/or DoNoPublish
  • Pull requests that impact EnergyPlus code must also include unit tests to cover enhancement or defect repair
  • Author should provide a "walkthrough" of relevant code changes using a GitHub code review comment process
  • If any diffs are expected, author must demonstrate they are justified using plots and descriptions
  • If changes fix a defect, the fix should be demonstrated in plots and descriptions
  • If any defect files are updated to a more recent version, upload new versions here or on DevSupport
  • If IDD requires transition, transition source, rules, ExpandObjects, and IDFs must be updated, and add IDDChange label
  • If structural output changes, add to output rules file and add OutputChange label
  • If adding/removing any LaTeX docs or figures, update that document's CMakeLists file dependencies

Reviewer

This will not be exhaustively relevant to every PR.

  • Perform a Code Review on GitHub
  • If branch is behind develop, merge develop and build locally to check for side effects of the merge
  • 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
  • Check that performance is not impacted (CI Linux results include performance check)
  • Run Unit Test(s) locally
  • Check any new function arguments for performance impacts
  • Verify IDF naming conventions and styles, memos and notes and defaults
  • If new idf included, locally check the err file and other outputs

@yujiex yujiex added NewFeature Includes code to add a new feature to EnergyPlus IDDChange Code changes impact the IDD file (cannot be merged after IO freeze) labels Apr 11, 2023
@yujiex yujiex added this to the EnergyPlus 23.2 IOFreeze milestone Apr 11, 2023
@yujiex yujiex self-assigned this Apr 11, 2023
Copy link
Contributor

@mjwitte mjwitte left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yujiex A few comments below. Also, I don't see any doc changes yet.

@@ -51383,6 +51383,10 @@ Coil:Cooling:DX:CurveFit:Performance,
\note is used as Reheat mode.
\type object-list
\object-list DXCoolingOperatingModeNames
A8; \field Outdoor Temperature Dependent Crankcase Heater Capacity Curve Name
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To be consistent with other curve names this should be
"Crankcase Heater Capacity Function of Temperature Curve Name"
ref.
Coil:Cooling:DX:SingleSpeed, Total Cooling Capacity Function of Temperature Curve Name
Coil:Cooling:DX:CurveFit:Speed, Total Cooling Capacity Modifier Function of Temperature Curve Name

Also this should be tagged with

       \type object-list
       \object-list UnivariateFunctions

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, I'll change the name to "Crankcase Heater Capacity Function of Temperature Curve Name" to match the existing patterns and add the object-list tag.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, I'll change the name to "Crankcase Heater Capacity Function of Temperature Curve Name" to match the existing patterns and add the object-list tag.

These changes are still needed. Also, for each affected object, \min-fields should be increased by one (unless the new field is already beyond the current min-fields value).

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

right right, I'll change min-fields too for ones too for those with the new curve field not beyond the current min-field.

\type object-list
\object-list UnivariateFunctions
\note quadratic curve = a + b*ffa + c*ffa**2
\note cubic curve = a + b*ffa + c*ffa**2 + d*ffa**3
\note ffa = Fraction of the full load Air Flow
A50; \field Outdoor Temperature Dependent Crankcase Heater Capacity Curve Name
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, the group of speed fields is currently not extensible, so technically, this is ok to add at the end of the object, but it just seems lost here. @Myoldmopar do we care?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I'm not certain whether I should put it at the end or near the other crankcase heater fields.

@@ -117,6 +118,7 @@ struct CoilCoolingDXCurveFitPerformance
std::string name;
Real64 crankcaseHeaterCap = 0.0;
Real64 crankcaseHeaterPower = 0.0;
Real64 crankcaseHeaterCapacityCurveIndex = 0.0;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Integer

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was fixed in another commit. I'll push it soon. I was trying to figure out some issues with the variable speed coils curve application.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was fixed in another commit.

This is still not an integer. Did you by chance forget to push a commit?

EXPECT_EQ("COIL COOLING DX 1", thisCoil.name);
EXPECT_EQ("COIL COOLING DX CURVE FIT PERFORMANCE 1", thisCoil.performance.name);
EXPECT_EQ("HEATERCAPCURVE", Curve::GetCurveName(*state, thisCoil.performance.crankcaseHeaterCapacityCurveIndex));
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a return to the last line.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

an explicit return like this return;? @mjwitte

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, no, a return. Look at the display in the PR and you'll see a red circle at the end, because the last line of the file is not terminated fully.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh! I understand now. I'll add a new line in the end.

Comment on lines 1464 to 1472
",",
",",
",",
",",
",",
",",
",",
",",
"heaterCapCurve5; !- Outdoor Temperature Dependent Crankcase Heater Capacity Curve Name",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And this shows why the new field should be placed before the speed groups for variable speed and multi-speed coils, even if it forces a transition rule. @Myoldmopar ?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, this is kind of tedious.

Comment on lines 127 to 130
if (!input_data.outdoor_temperature_dependent_crankcase_heater_capacity_curve_name.empty()) {
this->crankcaseHeaterCapacityCurveIndex =
Curve::GetCurveIndex(state, input_data.outdoor_temperature_dependent_crankcase_heater_capacity_curve_name);
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The input processing needs more steps here (and everywhere) to check if a valid curve was found and to check the curve dimensions. For example, see here. For this application, any uni-variate curve or table is acceptable.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good point. I'll add in the curve validations.

@nrel-bot-2
Copy link

@yujiex it has been 7 days since this pull request was last updated.

3 similar comments
@nrel-bot-2b
Copy link

@yujiex it has been 7 days since this pull request was last updated.

@nrel-bot-2c
Copy link

@yujiex it has been 7 days since this pull request was last updated.

@nrel-bot-2
Copy link

@yujiex it has been 7 days since this pull request was last updated.

} else {
ShowSevereError(state, format("{}{}=\"{}\", invalid", RoutineName, CurrentModuleObject, thisDXCoil.Name));
ShowContinueError(state, format("...not found {}=\"{}\".", cAlphaFields(12 + (I - 1) * 6), Alphas(15 + (I - 1) * 6)));
ShowContinueError(state, format("...not found {}=\"{}\".", cAlphaFields(13 + (I - 1) * 6), Alphas(13 + (I - 1) * 6)));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was this a mistake in code and was corrected? I see an alpha index of 12 and 15 before, and now I see 13 and 13. If this fixes a mistake, which it looks like it does, then that should be added to the PR description.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It should probably be 13 as the error message was stating what the current value of this field is, so the cAlphaFields and Alphas should have the same index. The 12th (one before) and 14th (one after) fields also have similar formats. So I corrected it.

@@ -9319,6 +9401,9 @@ void CalcDoe2DXCoil(EnergyPlusData &state,
// If used in a heat pump, the value of MaxOAT in the heating coil overrides that in the cooling coil (in GetInput)
if (CompAmbTemp < thisDXCoil.MaxOATCrankcaseHeater) {
CrankcaseHeatingPower = thisDXCoil.CrankcaseHeaterCapacity;
if (thisDXCoil.CrankcaseHeaterCapacityCurveIndex > 0) {
CrankcaseHeatingPower *= Curve::CurveValue(state, thisDXCoil.CrankcaseHeaterCapacityCurveIndex, CompAmbTemp);
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This code could have probably been added to ReportDXCoil, instead of each calc funtion. It's OK as is, just noting an alternate way to account for the curve value.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, I do see a lot of places with this type of calculation.

Real64 CrankcaseHeaterCapacity; // total crankcase heater capacity [W]
Real64 CrankcaseHeaterPower; // report variable for average crankcase heater power [W]
Real64 MaxOATCrankcaseHeater; // maximum OAT for crankcase heater operation [C]
int CrankcaseHeaterCapacityCurveIndex; // Crankcase heater power-temperature curve or table index
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not suggesting a change here, but when adding new struct varaiables, declare inline (i.e., = 0) instead of adding to the constructor. Better yet, delete the constructor and decalre everything inline.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

make sense. Should probably gradually phase these out and use inline.

if (state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).BasinHeaterSchedulePtr == 0) {
ShowWarningError(
state,
format("{}{}=\"{}\", invalid", RoutineName, CurrentModuleObject, state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).Name));
ShowContinueError(state, format("...not found {}=\"{}\".", cAlphaFields(14), AlphArray(9)));
ShowContinueError(state, format("...not found {}=\"{}\".", cAlphaFields(14), AlphArray(10)));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why does this cAlphaFields index point to a different input than AlphArray?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I need to fix this

}
ErrorsFound = true;
} else {
CurveVal = CurveValue(state, state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).PLFFPLR, 1.0);
if (CurveVal > 1.10 || CurveVal < 0.90) {
if (CurveVal > 1.11 || CurveVal < 0.90) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oops! This should be 1.10 (i.e., 10% tolerance).

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh no I probably did some global replace and didn't see this ... I'll fix it.

ShowWarningError(state,
format("{}{}=\"{}\", curve values",
RoutineName,
CurrentModuleObject,
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).Name));
ShowContinueError(state, format("...{} output is not equal to 1.0 (+ or - 10%) at rated conditions.", cAlphaFields(10)));
ShowContinueError(state, format("...{} output is not equal to 1.0 (+ or - 11%) at rated conditions.", cAlphaFields(11)));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and same here, 10%

Copy link
Contributor

@rraustad rraustad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wow, that's a lot of changes to add a curve object. There are 2 comments that should be addressed.

@@ -1182,7 +1182,7 @@ namespace VariableSpeedCoils {
ShowWarningError(
state,
format("{}{}=\"{}\", invalid", RoutineName, CurrentModuleObject, state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).Name));
ShowContinueError(state, format("...not found {}=\"{}\".", cAlphaFields(14), AlphArray(10)));
ShowContinueError(state, format("...not found {}=\"{}\".", cAlphaFields(10), AlphArray(10)));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks correct now.

@@ -1717,7 +1717,7 @@ namespace VariableSpeedCoils {
RoutineName,
CurrentModuleObject,
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).Name));
ShowContinueError(state, format("...not found {}=\"{}\".", cAlphaFields(AlfaFieldIncre), AlphArray(14 + (I - 1) * 6)));
ShowContinueError(state, format("...not found {}=\"{}\".", cAlphaFields(AlfaFieldIncre), AlphArray(AlfaFieldIncre)));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This corrects a mistake...

@@ -1810,7 +1810,7 @@ namespace VariableSpeedCoils {
RoutineName,
CurrentModuleObject,
state.dataVariableSpeedCoils->VarSpeedCoil(DXCoilNum).Name));
ShowContinueError(state, format("...not found {}=\"{}\".", cAlphaFields(AlfaFieldIncre), AlphArray(16 + (I - 1) * 6)));
ShowContinueError(state, format("...not found {}=\"{}\".", cAlphaFields(AlfaFieldIncre), AlphArray(AlfaFieldIncre)));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

...and this corrects a mistake. These corrections should be described in the PR description. To be explicit, an issue would be created that this PR corrects.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let me create an issue and link it to the PR

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Created it: #10137

@yujiex
Copy link
Collaborator Author

yujiex commented Aug 16, 2023

Hi @rraustad and @Myoldmopar, I addressed the comments and merged in develop. Would you mind taking another look? Thanks

@Myoldmopar
Copy link
Member

@rraustad looks like you are satisfied based on the comments addressed above. Could you mark it as approved if so? I'll look over things and build/test now.

Copy link
Contributor

@rraustad rraustad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comments have been addressed. This is ready to merge.

Copy link
Member

@Myoldmopar Myoldmopar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I need to work on the transition stuff before I call it ready to go, but it certainly is close.

@@ -1358,6 +1363,7 @@
DXCoilAirInletNode, !- Air Inlet Node Name
DXCoilAirOutletNode, !- Air Outlet Node Name
, !- Crankcase Heater Capacity {W}
, !- Crankcase Heater Capacity Function of Temperature Curve Name
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, datasets updated manually with new field which will require transition.

@@ -117,6 +118,7 @@ struct CoilCoolingDXCurveFitPerformance
std::string name;
Real64 crankcaseHeaterCap = 0.0;
Real64 crankcaseHeaterPower = 0.0;
Real64 crankcaseHeaterCapacityCurveIndex = 0.0;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was fixed in another commit.

This is still not an integer. Did you by chance forget to push a commit?

@@ -493,6 +493,30 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile
OutArgs(23:CurArgs+4)=InArgs(19:CurArgs)
CurArgs = CurArgs + 4

CASE('COIL:COOLING:DX:CURVEFIT:PERFORMANCE')
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought I was going to be merging this right now but this is another big set of transitions for the coils. I need to look this over deeper and ... probably? ... do some manual merging of these rules.

Copy link
Collaborator Author

@yujiex yujiex Aug 16, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is still not an integer. Did you by chance forget to push a commit?

Let me see. I changed it in other places in the header but missed this line somehow.

@Myoldmopar
Copy link
Member

Comments have been addressed. This is ready to merge.

Thanks @rraustad, it's definitely close, but I need to spend some time with the transition code before merging.

@Myoldmopar
Copy link
Member

OK, I spent a little time in there this evening. As I did with the other coil transition branch, I ran transition on the full set of 23.1 example files, which passed fine. I then ran EnergyPlus on the manually-converted example files in this branch, along with the set of auto-converted example files I had just made. I compared the full set of ERR outputs and found no meaningful difference, meaning once again that the transition code appears to be working happily on an extensive array of configurations.

While I was looking at the ERR file diff, I noticed some files were still 23.1 version, so I cleaned those up. I also integrated the transition rule markdown file...the variable speed DX coil now has changes related to the 90.1 metrics, the latent/curve stuff, and now this crankcase change. FYI @jmarrec !!!

As long as there isn't another coil transition PR in the queue, we should be good. I am uninterested in doing this deep of a transition test again this week.

So I think everything is happy now. I'll let CI run and check in the morning, but if it's all clean I plan to merge it in.

@Myoldmopar
Copy link
Member

And local regression testing is showing only 2 ERR diffs, which are introduced by me. They are simply cleaning up the bad version number in a couple files. Hopefully Decent agrees with me on that diff result.

@Myoldmopar
Copy link
Member

OK, so the failures showing up are also showing up on other branches. Apparently a previous coil started producing duplicate output columns and mathdiff is fumbling. Other than that, this looks clean though, so I'm merging it and I'll investigate that other issue. Thanks @yujiex

@Myoldmopar Myoldmopar merged commit 65a661d into develop Aug 17, 2023
10 checks passed
@Myoldmopar Myoldmopar deleted the crankcaseHeater branch August 17, 2023 12:36
@yujiex
Copy link
Collaborator Author

yujiex commented Aug 17, 2023

Thanks @Myoldmopar =)

@jmarrec
Copy link
Contributor

jmarrec commented Aug 21, 2023

While I was looking at the ERR file diff, I noticed some files were still 23.1 version, so I cleaned those up. I also integrated the transition rule markdown file...the variable speed DX coil now has changes related to the 90.1 metrics, the latent/curve stuff, and now this crankcase change. FYI @jmarrec !!!

@Myoldmopar Any specific action items for me to tackle here since you tagged me?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
IDDChange Code changes impact the IDD file (cannot be merged after IO freeze) NewFeature Includes code to add a new feature to EnergyPlus
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Non-matching field name and value in error messages
10 participants