From fa2e8aba64c46b5522e463c1412968367f147b26 Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Mon, 13 Nov 2017 07:55:42 -0700 Subject: [PATCH 01/47] Work on merging run period inputs --- idd/Energy+.idd.in | 124 +-- src/EnergyPlus/DataEnvironment.cc | 9 +- src/EnergyPlus/DataEnvironment.hh | 9 +- src/EnergyPlus/DataGlobals.cc | 1 + src/EnergyPlus/DataGlobals.hh | 3 +- .../FiniteDifferenceGroundTemperatureModel.cc | 6 +- src/EnergyPlus/OutputProcessor.hh | 9 + src/EnergyPlus/SimulationManager.cc | 2 +- src/EnergyPlus/WeatherManager.cc | 765 ++++++++++-------- src/EnergyPlus/WeatherManager.hh | 50 +- tst/EnergyPlus/unit/CMakeLists.txt | 1 + 11 files changed, 519 insertions(+), 460 deletions(-) diff --git a/idd/Energy+.idd.in b/idd/Energy+.idd.in index 6c740d6b2dd..4653bd1f40d 100644 --- a/idd/Energy+.idd.in +++ b/idd/Energy+.idd.in @@ -1223,93 +1223,9 @@ SizingPeriod:WeatherFileConditionType, \default Yes RunPeriod, - \memo Specified a range of dates and other parameters for a weather file simulation. + \memo Specify a range of dates and other parameters for a simulation. \memo Multiple run periods may be input, but they may not overlap. - \min-fields 11 - A1 , \field Name - \reference RunPeriodsAndDesignDays - \note descriptive name (used in reporting mainly) - \note if blank, weather file title is used. if not blank, must be unique - N1 , \field Begin Month - \required-field - \minimum 1 - \maximum 12 - \type integer - N2 , \field Begin Day of Month - \required-field - \minimum 1 - \maximum 31 - \type integer - N3 , \field End Month - \required-field - \minimum 1 - \maximum 12 - \type integer - N4 , \field End Day of Month - \required-field - \minimum 1 - \maximum 31 - \type integer - A2 , \field Day of Week for Start Day - \note =|Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday]; - \default UseWeatherFile - \type choice - \key Sunday - \key Monday - \key Tuesday - \key Wednesday - \key Thursday - \key Friday - \key Saturday - \key UseWeatherFile - A3, \field Use Weather File Holidays and Special Days - \note If yes or blank, use holidays as specified on Weatherfile. - \note If no, do not use the holidays specified on the Weatherfile. - \note Note: You can still specify holidays/special days using the RunPeriodControl:SpecialDays object(s). - \type choice - \default Yes - \key Yes - \key No - A4, \field Use Weather File Daylight Saving Period - \note If yes or blank, use daylight saving period as specified on Weatherfile. - \note If no, do not use the daylight saving period as specified on the Weatherfile. - \type choice - \default Yes - \key Yes - \key No - A5, \field Apply Weekend Holiday Rule - \note if yes and single day holiday falls on weekend, "holiday" occurs on following Monday - \type choice - \key Yes - \key No - \default No - A6, \field Use Weather File Rain Indicators - \type choice - \key Yes - \key No - \default Yes - A7, \field Use Weather File Snow Indicators - \type choice - \key Yes - \key No - \default Yes - N5, \field Number of Times Runperiod to be Repeated - \type integer - \minimum 1 - \default 1 - A8, \field Increment Day of Week on repeat - \type choice - \key Yes - \key No - \default Yes - N6; \field Start Year - \note this is the start year for the start date. If the leap year is "Yes" in the weather file header - \note (that is HOLIDAYS/SPECIAL DAYS header first field), then any year which is a leap year will assume - \note there will be a Feb 29. A repeat of this runperiod will automatically increment the year. - -RunPeriod:CustomRange, - \memo run simulation for a custom created weather file - \min-fields 13 + \min-fields 5 A1 , \field Name \reference RunPeriodsAndDesignDays \note descriptive name (used in reporting mainly) @@ -1325,8 +1241,7 @@ RunPeriod:CustomRange, \maximum 31 \type integer N3, \field Begin Year - \required-field - \note must be start year of this date on weather file + \note start year of the simulation, if this field is specified it must agree with the Day of Week for Start Day N4 , \field End Month \required-field \minimum 1 @@ -1338,11 +1253,10 @@ RunPeriod:CustomRange, \maximum 31 \type integer N6, \field End Year - \required-field - \note must be end year of this date on weather file + \note end year of simulation, if specified A2 , \field Day of Week for Start Day - \note =|Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday]; - \default UseWeatherFile + \note =[Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday]; + \default Sunday \type choice \key Sunday \key Monday @@ -1352,37 +1266,27 @@ RunPeriod:CustomRange, \key Friday \key Saturday \key UseWeatherFile - A3, \field Use Weather File Holidays and Special Days - \note If yes or blank, use holidays as specified on Weatherfile. - \note If no, do not use the holidays specified on the Weatherfile. - \note Note: You can still specify holidays/special days using the RunPeriodControl:SpecialDays object(s). - \type choice - \default Yes - \key Yes - \key No - A4, \field Use Weather File Daylight Saving Period - \note If yes or blank, use daylight saving period as specified on Weatherfile. - \note If no, do not use the daylight saving period as specified on the Weatherfile. - \type choice - \default Yes - \key Yes - \key No - A5, \field Apply Weekend Holiday Rule + A3, \field Apply Weekend Holiday Rule \note if yes and single day holiday falls on weekend, "holiday" occurs on following Monday \type choice \key Yes \key No \default No - A6, \field Use Weather File Rain Indicators + A4, \field Use Weather File Rain Indicators \type choice \key Yes \key No \default Yes - A7; \field Use Weather File Snow Indicators + A5, \field Use Weather File Snow Indicators \type choice \key Yes \key No \default Yes + A6; \field Treat Weather as Actual + \type choice + \key Yes + \key No + \default No RunPeriodControl:SpecialDays, \min-fields 4 diff --git a/src/EnergyPlus/DataEnvironment.cc b/src/EnergyPlus/DataEnvironment.cc index 9cccbac7ccf..2d0152a8d67 100644 --- a/src/EnergyPlus/DataEnvironment.cc +++ b/src/EnergyPlus/DataEnvironment.cc @@ -110,6 +110,10 @@ namespace DataEnvironment { int DayOfWeekTomorrow; // Tomorrow's day of the week (Sunday=1, Monday=2, ...) int DayOfYear; // Current day of the year (01JAN=1, 02JAN=2, ...) int DayOfYear_Schedule; // Schedule manager always assumes leap years... + int Month; // Current calendar month + int MonthTomorrow; // Tomorrow's calendar month + int Year; // Current calendar year of the simulation + int YearTomorrow; // Tomorrow's calendar year of the simulation Real64 DifSolarRad; // Current sky diffuse solar horizontal irradiance bool EMSDifSolarRadOverrideOn( false ); // EMS flag for sky diffuse solar horizontal irradiance Real64 EMSDifSolarRadOverrideValue; // EMS override value for sky diffuse solar horizontal irradiance @@ -131,8 +135,6 @@ namespace DataEnvironment { bool IsSnow; // Snow on the ground for this time interval Real64 Latitude; // Latitude of building location Real64 Longitude; // Longitude of building location - int Month; // Current calendar month - int MonthTomorrow; // Tomorrow's calendar month Real64 OutBaroPress; // Current outdoor air barometric pressure Real64 OutDryBulbTemp; // Current outdoor air dry bulb temperature bool EMSOutDryBulbOverrideOn( false ); // EMS flag for outdoor air dry bulb temperature @@ -159,8 +161,6 @@ namespace DataEnvironment { bool EMSWindSpeedOverrideOn( false ); // EMS flag for outdoor air wind speed Real64 EMSWindSpeedOverrideValue; // EMS override value for outdoor air wind speed Real64 WaterMainsTemp; // Current water mains temperature - int Year; // Current calendar year of the simulation - int YearTomorrow; // Tomorrow's calendar year of the simulation Array1D< Real64 > SOLCOS( 3 ); // Solar direction cosines at current time step Real64 CloudFraction; // Fraction of sky covered by clouds Real64 HISKF; // Exterior horizontal illuminance from sky (lux). @@ -177,6 +177,7 @@ namespace DataEnvironment { Real64 TimeZoneMeridian; // Standard Meridian of TimeZone std::string EnvironmentName; // Current environment name (longer for weather file names) std::string WeatherFileLocationTitle; // Location Title from Weather File + std::string currentTimestamp; // Current timestamp info in ISO8601 format yyyy-mm-ddThh:mm:ss std::string CurMnDyHr; // Current Month/Day/Hour timestamp info std::string CurMnDy; // Current Month/Day timestamp info int CurEnvirNum; // current environment number diff --git a/src/EnergyPlus/DataEnvironment.hh b/src/EnergyPlus/DataEnvironment.hh index 7a36a287a29..c8f647258a3 100644 --- a/src/EnergyPlus/DataEnvironment.hh +++ b/src/EnergyPlus/DataEnvironment.hh @@ -84,6 +84,10 @@ namespace DataEnvironment { extern int DayOfWeekTomorrow; // Tomorrow's day of the week (Sunday=1, Monday=2, ...) extern int DayOfYear; // Current day of the year (01JAN=1, 02JAN=2, ...) extern int DayOfYear_Schedule; // Schedule manager always assumes leap years... + extern int Month; // Current calendar month + extern int MonthTomorrow; // Tomorrow's calendar month + extern int Year; // Current calendar year of the simulation + extern int YearTomorrow; // Tomorrow's calendar year of the simulation extern Real64 DifSolarRad; // Current sky diffuse solar horizontal irradiance extern bool EMSDifSolarRadOverrideOn; // EMS flag for sky diffuse solar horizontal irradiance extern Real64 EMSDifSolarRadOverrideValue; // EMS override value for sky diffuse solar horizontal irradiance @@ -105,8 +109,6 @@ namespace DataEnvironment { extern bool IsSnow; // Snow on the ground for this time interval extern Real64 Latitude; // Latitude of building location extern Real64 Longitude; // Longitude of building location - extern int Month; // Current calendar month - extern int MonthTomorrow; // Tomorrow's calendar month extern Real64 OutBaroPress; // Current outdoor air barometric pressure extern Real64 OutDryBulbTemp; // Current outdoor air dry bulb temperature extern bool EMSOutDryBulbOverrideOn; // EMS flag for outdoor air dry bulb temperature @@ -133,8 +135,6 @@ namespace DataEnvironment { extern bool EMSWindSpeedOverrideOn; // EMS flag for outdoor air wind speed extern Real64 EMSWindSpeedOverrideValue; // EMS override value for outdoor air wind speed extern Real64 WaterMainsTemp; // Current water mains temperature - extern int Year; // Current calendar year of the simulation - extern int YearTomorrow; // Tomorrow's calendar year of the simulation extern Array1D< Real64 > SOLCOS; // Solar direction cosines at current time step extern Real64 CloudFraction; // Fraction of sky covered by clouds extern Real64 HISKF; // Exterior horizontal illuminance from sky (lux). @@ -151,6 +151,7 @@ namespace DataEnvironment { extern Real64 TimeZoneMeridian; // Standard Meridian of TimeZone extern std::string EnvironmentName; // Current environment name (longer for weather file names) extern std::string WeatherFileLocationTitle; // Location Title from Weather File + extern std::string currentTimestamp; // Current timestamp info in ISO8601 format yyyy-mm-ddThh:mm:ss extern std::string CurMnDyHr; // Current Month/Day/Hour timestamp info extern std::string CurMnDy; // Current Month/Day timestamp info extern int CurEnvirNum; // current environment number diff --git a/src/EnergyPlus/DataGlobals.cc b/src/EnergyPlus/DataGlobals.cc index 50c73563ef2..1970d11a8b4 100644 --- a/src/EnergyPlus/DataGlobals.cc +++ b/src/EnergyPlus/DataGlobals.cc @@ -174,6 +174,7 @@ namespace DataGlobals { // (last time step of last hour of last day of environ which is a design day) bool EndDayFlag( false ); // True at the end of each day (last time step of last hour of day) bool EndHourFlag( false ); // True at the end of each hour (last time step of hour) + bool EndYearFlag( false ); // True at the end of each year, for the entire last day of the year int PreviousHour( 0 ); // Previous Hour Index int HourOfDay( 0 ); // Counter for hours in a simulation day Real64 WeightPreviousHour( 0.0 ); // Weighting of value for previous hour diff --git a/src/EnergyPlus/DataGlobals.hh b/src/EnergyPlus/DataGlobals.hh index 4e01a73aa3b..8142ea2b7f0 100644 --- a/src/EnergyPlus/DataGlobals.hh +++ b/src/EnergyPlus/DataGlobals.hh @@ -80,7 +80,7 @@ namespace DataGlobals { extern int const ksRunPeriodWeather; extern int const ksHVACSizeDesignDay; // a regular design day run during HVAC Sizing Simulation extern int const ksHVACSizeRunPeriodDesign; // a weather period design day run during HVAC Sizing Simulation - extern int const ksReadAllWeatherData; // a weather period for reading all weather data proir to the simulation + extern int const ksReadAllWeatherData; // a weather period for reading all weather data prior to the simulation extern int const ZoneTSReporting; // value for Zone Time Step Reporting (UpdateDataAndReport) extern int const HVACTSReporting; // value for HVAC Time Step Reporting (UpdateDataAndReport) @@ -152,6 +152,7 @@ namespace DataGlobals { // (last time step of last hour of last day of environ which is a design day) extern bool EndDayFlag; // True at the end of each day (last time step of last hour of day) extern bool EndHourFlag; // True at the end of each hour (last time step of hour) + extern bool EndYearFlag; // True at the end of each year, for the entire last day of the year extern int PreviousHour; // Previous Hour Index extern int HourOfDay; // Counter for hours in a simulation day extern Real64 WeightPreviousHour; // Weighting of value for previous hour diff --git a/src/EnergyPlus/GroundTemperatureModeling/FiniteDifferenceGroundTemperatureModel.cc b/src/EnergyPlus/GroundTemperatureModeling/FiniteDifferenceGroundTemperatureModel.cc index ba46aa4c27c..3db68983a39 100644 --- a/src/EnergyPlus/GroundTemperatureModeling/FiniteDifferenceGroundTemperatureModel.cc +++ b/src/EnergyPlus/GroundTemperatureModeling/FiniteDifferenceGroundTemperatureModel.cc @@ -180,7 +180,7 @@ namespace EnergyPlus { // RE-ENGINEERED na // PURPOSE OF THIS SUBROUTINE: - // Finds correct envrionment for reading all weather data. Loops over all weather data in weather file + // Finds correct environment for reading all weather data. Loops over all weather data in weather file // and data structure containing daily average of required weather data. // USE STATEMENTS: @@ -236,8 +236,8 @@ namespace EnergyPlus { Environment( NumOfEnvrn ).KindOfEnvrn = ksReadAllWeatherData; RPReadAllWeatherData = true; WeathSimReq = true; - RunPeriodInput( TotRunPers ).StartDate = JulianDay( 1, 1, 0 ); - RunPeriodInput( TotRunPers ).EndDate = JulianDay( 12, 31, 0 ); + RunPeriodInput( TotRunPers ).startJulianDate = 1; //JulianDay( 1, 1, 0 ); + RunPeriodInput( TotRunPers ).endJulianDate = 365; //JulianDay( 12, 31, 0 ); RunPeriodInput( TotRunPers ).MonWeekDay = 0; SetupEnvironmentTypes(); diff --git a/src/EnergyPlus/OutputProcessor.hh b/src/EnergyPlus/OutputProcessor.hh index b65606356cd..ea158646139 100644 --- a/src/EnergyPlus/OutputProcessor.hh +++ b/src/EnergyPlus/OutputProcessor.hh @@ -79,6 +79,15 @@ namespace OutputProcessor { extern int const ReportMonthly; // Write out at end of month (must be determined) extern int const ReportSim; // Write out once per environment 'EndEnvrnFlag' + enum class ReportingFrequency { Each = -1, // Write out each time UpdatedataandReport is called + TimeStep, // Write out at 'EndTimeStepFlag' + Hourly, // Write out at 'EndHourFlag' + Daily, // Write out at 'EndDayFlag' + Monthly, // Write out at end of month (must be determined) + Yearly, + Environment // Write out once per environment 'EndEnvrnFlag' + }; + extern int const ReportVDD_No; // Don't report the variable dictionaries in any form extern int const ReportVDD_Yes; // Report the variable dictionaries in "report format" extern int const ReportVDD_IDF; // Report the variable dictionaries in "IDF format" diff --git a/src/EnergyPlus/SimulationManager.cc b/src/EnergyPlus/SimulationManager.cc index b823d37db03..c4aa2918173 100644 --- a/src/EnergyPlus/SimulationManager.cc +++ b/src/EnergyPlus/SimulationManager.cc @@ -536,7 +536,7 @@ namespace SimulationManager { } // for simulations that last longer than a week, identify when the last year of the simulation is started if ( ( DayOfSim > 365 ) && ( (NumOfDayInEnvrn - DayOfSim) == 364 ) && !WarmupFlag ){ - DisplayString( "Starting last year of environment at: " + DayOfSimChr ); + DisplayString( "Starting last year of environment at: " + DayOfSimChr ); ResetTabularReports(); } diff --git a/src/EnergyPlus/WeatherManager.cc b/src/EnergyPlus/WeatherManager.cc index 3a27ecf961d..cbf112adefc 100644 --- a/src/EnergyPlus/WeatherManager.cc +++ b/src/EnergyPlus/WeatherManager.cc @@ -50,6 +50,7 @@ #include #include #include +#include // ObjexxFCL Headers #include @@ -171,6 +172,8 @@ namespace WeatherManager { static std::string const BlankString; Array1D_string const DaysOfWeek( 7, { "SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY" } ); + std::map weekDayLookUp{ { "SUNDAY", WeekDay::Sunday }, { "MONDAY", WeekDay::Monday }, { "TUESDAY", WeekDay::Tuesday }, + { "WEDNESDAY", WeekDay::Wednesday }, { "THURSDAY", WeekDay::Thursday }, { "FRIDAY", WeekDay::Friday }, { "SATURDAY", WeekDay::Saturday } }; bool Debugout( false ); @@ -2127,8 +2130,12 @@ namespace WeatherManager { } } + EndYearFlag = false; if ( DayOfMonth == EndDayOfMonth( Month ) ) { EndMonthFlag = true; + if ( Month == 12 ) { + EndYearFlag = true; + } } // Set Tomorrow's date data @@ -2143,7 +2150,7 @@ namespace WeatherManager { if ( DatesShouldBeReset ) { if ( Environment( Envrn ).TreatYearsAsConsecutive ) { ++Environment( Envrn ).CurrentYear; - Environment( Envrn ).IsLeapYear = IsLeapYear( Environment( Envrn ).CurrentYear ); + Environment( Envrn ).IsLeapYear = isLeapYear( Environment( Envrn ).CurrentYear ); CurrentYearIsLeapYear = Environment( Envrn ).IsLeapYear; if ( CurrentYearIsLeapYear ) { if ( WFAllowsLeapYears ) { @@ -2183,7 +2190,7 @@ namespace WeatherManager { } else if ( ( Month == 1 && DayOfMonth == 1 ) && DatesShouldBeReset && ( Jan1DatesShouldBeReset ) ) { if ( Environment( Envrn ).TreatYearsAsConsecutive ) { ++Environment( Envrn ).CurrentYear; - Environment( Envrn ).IsLeapYear = IsLeapYear( Environment( Envrn ).CurrentYear ); + Environment( Envrn ).IsLeapYear = isLeapYear( Environment( Envrn ).CurrentYear ); CurrentYearIsLeapYear = Environment( Envrn ).IsLeapYear; if ( CurrentYearIsLeapYear && ! WFAllowsLeapYears ) CurrentYearIsLeapYear = false; if ( DayOfSim < curSimDayForEndOfRunPeriod && CurrentYearIsLeapYear ) ++curSimDayForEndOfRunPeriod; @@ -2374,6 +2381,7 @@ namespace WeatherManager { // na // SUBROUTINE PARAMETER DEFINITIONS: + static char full_date[ 11 ]; static char time_stamp[ 10 ]; static char day_stamp[ 6 ]; static std::string const RoutineName( "SetCurrentWeather" ); @@ -2393,16 +2401,18 @@ namespace WeatherManager { NextHour = HourOfDay + 1; - if ( HourOfDay == 24 ) { + if ( HourOfDay == 24 ) { // Should investigate whether EndDayFlag is always set here and use that instead NextHour = 1; } - if ( HourOfDay == 1 ) { + if ( HourOfDay == 1 ) { // Should investigate whether BeginDayFlag is always set here and use that instead DayOfYear_Schedule = JulianDay( Month, DayOfMonth, 1 ); } UpdateScheduleValues(); + std::sprintf( full_date, "%04d-%02d-%02d", Year, Month, DayOfMonth ); + currentTimestamp = full_date; std::sprintf( time_stamp, "%02d/%02d %02d:", Month, DayOfMonth, HourOfDay - 1 ); CurMnDyHr = time_stamp; std::sprintf( day_stamp, "%02d/%02d", Month, DayOfMonth ); @@ -5485,6 +5495,24 @@ Label9999: ; } + static int findYearForWeekday( int const month, int const day, WeekDay const weekday ) + { + static std::map defaultYear{ { WeekDay::Sunday, 2017 },{ WeekDay::Monday, 2007 },{ WeekDay::Tuesday, 2013 }, + { WeekDay::Wednesday, 2014 },{ WeekDay::Thursday, 2015 },{ WeekDay::Friday, 2010 },{ WeekDay::Saturday, 2011 } }; + int rem = calculateDayOfYear( month, day ) % 7; + WeekDay firstWeekDay = static_cast( static_cast( weekday ) - rem + 1 ); + return defaultYear[ firstWeekDay ]; + } + + static int findLeapYearForWeekday( int const month, int const day, WeekDay const weekday ) + { + static std::map defaultYear{ { WeekDay::Sunday, 2012 },{ WeekDay::Monday, 1996 },{ WeekDay::Tuesday, 2008 }, + { WeekDay::Wednesday, 1992 },{ WeekDay::Thursday, 2004 },{ WeekDay::Friday, 2016 },{ WeekDay::Saturday, 2000 } }; + int rem = calculateDayOfYear( month, day, true ) % 7; + WeekDay firstWeekDay = static_cast( static_cast( weekday ) - rem + 1 ); + return defaultYear[ firstWeekDay ]; + } + void GetRunPeriodData( int & TotRunPers, // Total number of Run Periods requested @@ -5539,30 +5567,16 @@ Label9999: ; bool IsNotOK; // Flag to verify name bool IsBlank; // Flag for blank name int Count; - int RP; // number of run periods - int RPAW; // number of run periods, actual weather - int Ptr; - int LocalLeapYearAdd; - - // Object Data - - // FLOW: - RP = GetNumObjectsFound( "RunPeriod" ); - RPAW = GetNumObjectsFound( "RunPeriod:CustomRange" ); //Call Input Get routine to retrieve annual run data RunPeriodInput.allocate( TotRunPers ); cCurrentModuleObject = "RunPeriod"; Count = 0; - if ( ! WFAllowsLeapYears ) { - LocalLeapYearAdd = 0; - } else { - LocalLeapYearAdd = 1; - } - for ( Loop = 1; Loop <= RP; ++Loop ) { + for ( Loop = 1; Loop <= TotRunPers; ++Loop ) { GetObjectItem( cCurrentModuleObject, Loop, cAlphaArgs, NumAlpha, rNumericArgs, NumNumeric, IOStat, lNumericFieldBlanks, lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames ); + // A1, \field Name if ( ! lAlphaFieldBlanks( 1 ) ) { IsNotOK = false; IsBlank = false; @@ -5574,325 +5588,206 @@ Label9999: ; } ++Count; + //Loop = RP + Ptr; RunPeriodInput( Loop ).Title = cAlphaArgs( 1 ); //set the start and end day of month from user input // N1 , \field Begin Month // N2 , \field Begin Day of Month - // N3 , \field End Month - // N4 , \field End Day of Month + // N3, \field Start Year + // N4 , \field End Month + // N5 , \field End Day of Month + // N6, \field End Year RunPeriodInput( Loop ).StartMonth = int( rNumericArgs( 1 ) ); RunPeriodInput( Loop ).StartDay = int( rNumericArgs( 2 ) ); - RunPeriodInput( Loop ).EndMonth = int( rNumericArgs( 3 ) ); - RunPeriodInput( Loop ).EndDay = int( rNumericArgs( 4 ) ); - - // N5, \field Number of Times Runperiod to be Repeated - if ( int( rNumericArgs( 5 ) ) == 0 ) { - RunPeriodInput( Loop ).NumSimYears = 1; - } else { - RunPeriodInput( Loop ).NumSimYears = int( rNumericArgs( 5 ) ); - } - - // N6; \field Start Year - if ( int( rNumericArgs( 6 ) ) == 0 ) { - RunPeriodInput( Loop ).BeginYear = AutoCalculate; - RunPeriodInput( Loop ).TreatYearsAsConsecutive = false; - } else { - RunPeriodInput( Loop ).BeginYear = int( rNumericArgs( 6 ) ); - RunPeriodInput( Loop ).TreatYearsAsConsecutive = true; - } + RunPeriodInput( Loop ).startYear = int( rNumericArgs( 3 ) ); + RunPeriodInput( Loop ).endMonth = int( rNumericArgs( 4 ) ); + RunPeriodInput( Loop ).endDay = int( rNumericArgs( 5 ) ); + RunPeriodInput( Loop ).endYear = int( rNumericArgs( 6 ) ); + RunPeriodInput( Loop ).TreatYearsAsConsecutive = true; if ( FullAnnualRun && Loop == 1 ) { RunPeriodInput( Loop ).StartMonth = 1; RunPeriodInput( Loop ).StartDay = 1; - RunPeriodInput( Loop ).EndMonth = 12; - RunPeriodInput( Loop ).EndDay = 31; + RunPeriodInput( Loop ).endMonth = 12; + RunPeriodInput( Loop ).endDay = 31; } - { auto const SELECT_CASE_var( RunPeriodInput( Loop ).StartMonth ); - - if ( ( SELECT_CASE_var == 1 ) || ( SELECT_CASE_var == 3 ) || ( SELECT_CASE_var == 5 ) || ( SELECT_CASE_var == 7 ) || ( SELECT_CASE_var == 8 ) || ( SELECT_CASE_var == 10 ) || ( SELECT_CASE_var == 12 ) ) { - if ( RunPeriodInput( Loop ).StartDay > 31 ) { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", " + cNumericFieldNames( 2 ) + " invalid=[" + TrimSigDigits( RunPeriodInput( Loop ).StartDay ) + ']' ); - ShowContinueError( "Indicated " + cNumericFieldNames( 1 ) + "=[" + TrimSigDigits( RunPeriodInput( Loop ).StartMonth ) + "]." ); - ErrorsFound = true; - } - } else if ( ( SELECT_CASE_var == 4 ) || ( SELECT_CASE_var == 6 ) || ( SELECT_CASE_var == 9 ) || ( SELECT_CASE_var == 11 ) ) { - if ( RunPeriodInput( Loop ).StartDay > 30 ) { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", " + cNumericFieldNames( 2 ) + " invalid=[" + TrimSigDigits( RunPeriodInput( Loop ).StartDay ) + ']' ); - ShowContinueError( "Indicated " + cNumericFieldNames( 1 ) + "=[" + TrimSigDigits( RunPeriodInput( Loop ).StartMonth ) + "]." ); + // Validate year inputs + if ( RunPeriodInput( Loop ).startYear == 0 ) { + if ( RunPeriodInput( Loop ).endYear != 0 ) { // Have to have an input start year to input an end year + ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", end year cannot be specified if the start year is not." ); ErrorsFound = true; } - } else if ( SELECT_CASE_var == 2 ) { - if ( RunPeriodInput( Loop ).StartDay > 28 + LocalLeapYearAdd ) { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", " + cNumericFieldNames( 2 ) + " invalid=[" + TrimSigDigits( RunPeriodInput( Loop ).StartDay ) + ']' ); - ShowContinueError( "Indicated " + cNumericFieldNames( 1 ) + "=[" + TrimSigDigits( RunPeriodInput( Loop ).StartMonth ) + "]." ); - ErrorsFound = true; - } - } else { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cNumericFieldNames( 2 ) + " invalid=[" + TrimSigDigits( RunPeriodInput( Loop ).StartMonth ) + ']' ); + } else if ( RunPeriodInput( Loop ).startYear < 1583 ) { // Bail on the proleptic Gregorian calendar + ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", start year (" + std::to_string( RunPeriodInput( Loop ).startYear ) + ") is too early, please choose a date after 1582." ); ErrorsFound = true; - }} - - { auto const SELECT_CASE_var( RunPeriodInput( Loop ).EndMonth ); + } - if ( ( SELECT_CASE_var == 1 ) || ( SELECT_CASE_var == 3 ) || ( SELECT_CASE_var == 5 ) || ( SELECT_CASE_var == 7 ) || ( SELECT_CASE_var == 8 ) || ( SELECT_CASE_var == 10 ) || ( SELECT_CASE_var == 12 ) ) { - if ( RunPeriodInput( Loop ).EndDay > 31 ) { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", " + cNumericFieldNames( 4 ) + " invalid=[" + TrimSigDigits( RunPeriodInput( Loop ).EndDay ) + ']' ); - ShowContinueError( "Indicated " + cNumericFieldNames( 3 ) + "=[" + TrimSigDigits( RunPeriodInput( Loop ).EndMonth ) + "]." ); - ErrorsFound = true; - } - } else if ( ( SELECT_CASE_var == 4 ) || ( SELECT_CASE_var == 6 ) || ( SELECT_CASE_var == 9 ) || ( SELECT_CASE_var == 11 ) ) { - if ( RunPeriodInput( Loop ).EndDay > 30 ) { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", " + cNumericFieldNames( 4 ) + " invalid=[" + TrimSigDigits( RunPeriodInput( Loop ).EndDay ) + ']' ); - ShowContinueError( "Indicated " + cNumericFieldNames( 3 ) + "=[" + TrimSigDigits( RunPeriodInput( Loop ).EndMonth ) + "]." ); - ErrorsFound = true; - } - } else if ( SELECT_CASE_var == 2 ) { - if ( RunPeriodInput( Loop ).EndDay > 28 + LocalLeapYearAdd ) { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", " + cNumericFieldNames( 4 ) + " invalid=[" + TrimSigDigits( RunPeriodInput( Loop ).EndDay ) + ']' ); - ShowContinueError( "Indicated " + cNumericFieldNames( 3 ) + "=[" + TrimSigDigits( RunPeriodInput( Loop ).EndMonth ) + "]." ); - ErrorsFound = true; - } - } else { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cNumericFieldNames( 3 ) + " invalid=[" + TrimSigDigits( RunPeriodInput( Loop ).EndMonth ) + ']' ); + if( RunPeriodInput( Loop ).endYear != 0 && RunPeriodInput( Loop ).startYear > RunPeriodInput( Loop ).endYear ) { + ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + ", start year (" + std::to_string( RunPeriodInput( Loop ).startYear ) + ") is after the end year (" + std::to_string( RunPeriodInput( Loop ).endYear ) + ")." ); ErrorsFound = true; - }} + } // A2 , \field Day of Week for Start Day - if ( lAlphaFieldBlanks( 2 ) || cAlphaArgs( 2 ) == "USEWEATHERFILE" ) { - RunPeriodInput( Loop ).DayOfWeek = 0; // Defaults to Day of Week from Weather File - } else { - RunPeriodInput( Loop ).DayOfWeek = FindItemInList( cAlphaArgs( 2 ), DaysOfWeek, 7 ); - if ( RunPeriodInput( Loop ).DayOfWeek == 0 ) { - ShowWarningError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 2 ) + " invalid (Day of Week) [" + cAlphaArgs( 2 ) + " for Start is not Valid, DayofWeek from WeatherFile will be used." ); + bool inputWeekday = false; + if ( !lAlphaFieldBlanks( 2 ) ) { // Have input + auto result = weekDayLookUp.find( cAlphaArgs( 2 ) ); + if ( result == weekDayLookUp.end() ) { + ShowWarningError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 2 ) + " invalid (Day of Week) [" + cAlphaArgs( 2 ) + "] for Start is not valid, Sunday will be used." ); + RunPeriodInput(Loop).startWeekDay = WeekDay::Sunday; + } else { + RunPeriodInput( Loop ).startWeekDay = result->second; + inputWeekday = true; + } + } else { // No input, set the default as Sunday. This may get overriden below + RunPeriodInput( Loop ).startWeekDay = WeekDay::Sunday; + } + + // Validate the dates now that the weekday field has been looked at + if ( RunPeriodInput( Loop ).StartMonth == 2 && RunPeriodInput( Loop ).StartDay == 29 ) { + // Requested start date is a leap year + if ( RunPeriodInput( Loop ).startYear == 0 ) { // No input starting year + RunPeriodInput( Loop ).startYear = findLeapYearForWeekday( RunPeriodInput( Loop ).StartMonth, RunPeriodInput( Loop ).StartDay, + RunPeriodInput( Loop).startWeekDay ); + } else { // Have an input start year + if ( !isLeapYear( RunPeriodInput( Loop ).startYear ) ) { // Start year is not a leap year + ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", start year (" + std::to_string( RunPeriodInput( Loop ).startYear ) + ") is not a leap year but the requested start date is 2/29." ); + ErrorsFound = true; + } else { // Start year is a leap year + WeekDay weekday = calculateDayOfWeek( RunPeriodInput( Loop ).startYear, RunPeriodInput( Loop ).StartMonth, RunPeriodInput( Loop ).StartDay ); + if ( inputWeekday ) { // Check for correctness of input + if ( weekday != RunPeriodInput( Loop ).startWeekDay ) { + ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", start weekday (" + cAlphaArgs( 2 ) + ") does not match the start year (" + std::to_string( RunPeriodInput( Loop ).startYear ) + ")" ); + ErrorsFound = true; + } + } else { // Set the weekday if it was not input + RunPeriodInput( Loop ).startWeekDay = weekday; + } + } } - } - - // A3, \field Use Weather File Holidays and Special Days - if ( lAlphaFieldBlanks( 3 ) || SameString( cAlphaArgs( 3 ), "YES" ) ) { - RunPeriodInput( Loop ).UseHolidays = true; - } else if ( SameString( cAlphaArgs( 3 ), "NO" ) ) { - RunPeriodInput( Loop ).UseHolidays = false; - } else { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 3 ) + " invalid [" + cAlphaArgs( 3 ) + ']' ); - ErrorsFound = true; - } - - // A4, \field Use Weather File Daylight Saving Period - if ( lAlphaFieldBlanks( 4 ) || SameString( cAlphaArgs( 4 ), "YES" ) ) { - RunPeriodInput( Loop ).UseDST = true; - } else if ( SameString( cAlphaArgs( 4 ), "NO" ) ) { - RunPeriodInput( Loop ).UseDST = false; - } else { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 4 ) + " invalid [" + cAlphaArgs( 4 ) + ']' ); - ErrorsFound = true; - } - - // A5, \field Apply Weekend Holiday Rule - if ( lAlphaFieldBlanks( 5 ) || SameString( cAlphaArgs( 5 ), "YES" ) ) { - RunPeriodInput( Loop ).ApplyWeekendRule = true; - } else if ( SameString( cAlphaArgs( 5 ), "NO" ) ) { - RunPeriodInput( Loop ).ApplyWeekendRule = false; } else { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 5 ) + " invalid [" + cAlphaArgs( 5 ) + ']' ); - ErrorsFound = true; - } - - // A6, \field Use Weather File Rain Indicators - if ( lAlphaFieldBlanks( 6 ) || SameString( cAlphaArgs( 6 ), "YES" ) ) { - RunPeriodInput( Loop ).UseRain = true; - } else if ( SameString( cAlphaArgs( 6 ), "NO" ) ) { - RunPeriodInput( Loop ).UseRain = false; - } else { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 6 ) + " invalid [" + cAlphaArgs( 6 ) + ']' ); - ErrorsFound = true; - } - - // A7, \field Use Weather File Snow Indicators - if ( lAlphaFieldBlanks( 7 ) || SameString( cAlphaArgs( 7 ), "YES" ) ) { - RunPeriodInput( Loop ).UseSnow = true; - } else if ( SameString( cAlphaArgs( 7 ), "NO" ) ) { - RunPeriodInput( Loop ).UseSnow = false; - } else { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 7 ) + " invalid [" + cAlphaArgs( 7 ) + ']' ); - ErrorsFound = true; - } - - // A8, \field Increment Day of Week on repeat - if ( lAlphaFieldBlanks( 8 ) || SameString( cAlphaArgs( 8 ), "YES" ) ) { - RunPeriodInput( Loop ).RollDayTypeOnRepeat = true; - } else if ( SameString( cAlphaArgs( 8 ), "NO" ) ) { - RunPeriodInput( Loop ).RollDayTypeOnRepeat = false; - } else { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ' ' + cAlphaFieldNames( 8 ) + " invalid [" + cAlphaArgs( 8 ) + ']' ); - ErrorsFound = true; - } - - //calculate the annual start and end dates from the user inputted month and day - RunPeriodInput( Loop ).StartDate = JulianDay( RunPeriodInput( Loop ).StartMonth, RunPeriodInput( Loop ).StartDay, LeapYearAdd ); - RunPeriodInput( Loop ).EndDate = JulianDay( RunPeriodInput( Loop ).EndMonth, RunPeriodInput( Loop ).EndDay, LeapYearAdd ); - RunPeriodInput( Loop ).MonWeekDay = 0; - if ( RunPeriodInput( Loop ).DayOfWeek != 0 && ! ErrorsFound ) { - SetupWeekDaysByMonth( RunPeriodInput( Loop ).StartMonth, RunPeriodInput( Loop ).StartDay, RunPeriodInput( Loop ).DayOfWeek, RunPeriodInput( Loop ).MonWeekDay ); - } - } - - cCurrentModuleObject = "RunPeriod:CustomRange"; - Count = 0; - for ( Ptr = 1; Ptr <= RPAW; ++Ptr ) { - GetObjectItem( cCurrentModuleObject, Ptr, cAlphaArgs, NumAlpha, rNumericArgs, NumNumeric, IOStat, lNumericFieldBlanks, lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames ); - - if ( ! lAlphaFieldBlanks( 1 ) ) { - IsNotOK = false; - IsBlank = false; - VerifyName( cAlphaArgs( 1 ), RunPeriodInput, &RunPeriodData::Title, Count, IsNotOK, IsBlank, cCurrentModuleObject + " Name" ); - if ( IsNotOK ) { + // Non leap-day start date + if ( !validMonthDay( RunPeriodInput( Loop ).StartMonth, RunPeriodInput( Loop ).StartDay ) ) { + ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", Invalid input start month/day (" + TrimSigDigits( RunPeriodInput( Loop ).StartMonth ) + '/' + TrimSigDigits( RunPeriodInput( Loop ).StartDay ) + ')' ); ErrorsFound = true; - if ( IsBlank ) cAlphaArgs( 1 ) = "xxxxx"; + } else { // Month/day is valid + if ( RunPeriodInput( Loop ).startYear == 0 ) { // No input starting year + RunPeriodInput( Loop ).startYear = findYearForWeekday( RunPeriodInput( Loop ).StartMonth, RunPeriodInput( Loop ).StartDay, + RunPeriodInput( Loop).startWeekDay ); + } else { // Have an input starting year + WeekDay weekday = calculateDayOfWeek( RunPeriodInput( Loop ).startYear, RunPeriodInput( Loop ).StartMonth, RunPeriodInput( Loop ).StartDay ); + if ( inputWeekday ) { // Check for correctness of input + if ( weekday != RunPeriodInput( Loop ).startWeekDay ) { + ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", start weekday (" + cAlphaArgs( 2 ) + ") does not match the start year (" + std::to_string( RunPeriodInput( Loop ).startYear ) + ")" ); + ErrorsFound = true; + } + } else { // Set the weekday if it was not input + RunPeriodInput( Loop ).startWeekDay = weekday; + } + } } } - ++Count; - Loop = RP + Ptr; - RunPeriodInput( Loop ).Title = cAlphaArgs( 1 ); - - //set the start and end day of month from user input - // N1 , \field Begin Month - // N2 , \field Begin Day of Month - // N3, \field Start Year - // N4 , \field End Month - // N5 , \field End Day of Month - // N6, \field End Year - RunPeriodInput( Loop ).StartMonth = int( rNumericArgs( 1 ) ); - RunPeriodInput( Loop ).StartDay = int( rNumericArgs( 2 ) ); - RunPeriodInput( Loop ).StartYear = int( rNumericArgs( 3 ) ); - RunPeriodInput( Loop ).EndMonth = int( rNumericArgs( 4 ) ); - RunPeriodInput( Loop ).EndDay = int( rNumericArgs( 5 ) ); - RunPeriodInput( Loop ).EndYear = int( rNumericArgs( 6 ) ); - RunPeriodInput( Loop ).TreatYearsAsConsecutive = true; - - if ( FullAnnualRun && Loop == 1 ) { - RunPeriodInput( Loop ).StartMonth = 1; - RunPeriodInput( Loop ).StartDay = 1; - RunPeriodInput( Loop ).EndMonth = 12; - RunPeriodInput( Loop ).EndDay = 31; - } - - { auto const SELECT_CASE_var( RunPeriodInput( Loop ).StartMonth ); + // Compute the Julian date of the start date + RunPeriodInput( Loop ).startJulianDate = computeJulianDate( RunPeriodInput( Loop ).startYear, RunPeriodInput( Loop ).StartMonth, RunPeriodInput( Loop ).StartDay ); - if ( ( SELECT_CASE_var == 1 ) || ( SELECT_CASE_var == 3 ) || ( SELECT_CASE_var == 5 ) || ( SELECT_CASE_var == 7 ) || ( SELECT_CASE_var == 8 ) || ( SELECT_CASE_var == 10 ) || ( SELECT_CASE_var == 12 ) ) { - if ( RunPeriodInput( Loop ).StartDay > 31 ) { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", " + cNumericFieldNames( 2 ) + " invalid=[" + TrimSigDigits( RunPeriodInput( Loop ).StartDay ) + ']' ); - ShowContinueError( "Indicated " + cNumericFieldNames( 1 ) + "=[" + TrimSigDigits( RunPeriodInput( Loop ).StartMonth ) + "]." ); - ErrorsFound = true; - } - } else if ( ( SELECT_CASE_var == 4 ) || ( SELECT_CASE_var == 6 ) || ( SELECT_CASE_var == 9 ) || ( SELECT_CASE_var == 11 ) ) { - if ( RunPeriodInput( Loop ).StartDay > 30 ) { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", " + cNumericFieldNames( 2 ) + " invalid=[" + TrimSigDigits( RunPeriodInput( Loop ).StartDay ) + ']' ); - ShowContinueError( "Indicated " + cNumericFieldNames( 1 ) + "=[" + TrimSigDigits( RunPeriodInput( Loop ).StartMonth ) + "]." ); - ErrorsFound = true; - } - } else if ( SELECT_CASE_var == 2 ) { - if ( RunPeriodInput( Loop ).StartDay > 28 + LeapYearAdd ) { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", " + cNumericFieldNames( 2 ) + " invalid=[" + TrimSigDigits( RunPeriodInput( Loop ).StartDay ) + ']' ); - ShowContinueError( "Indicated " + cNumericFieldNames( 1 ) + "=[" + TrimSigDigits( RunPeriodInput( Loop ).StartMonth ) + "]." ); - ErrorsFound = true; + // Validate the end date + if ( RunPeriodInput( Loop ).endMonth == 2 && RunPeriodInput( Loop ).endDay == 29 ) { + // Requested end date is a leap year + if ( RunPeriodInput( Loop ).endYear == 0 ) { // No input end year + if ( isLeapYear( RunPeriodInput( Loop ).startYear ) && RunPeriodInput( Loop ).StartMonth < 3 ) { + // The run period is from some date on or before 2/29 through 2/29 + RunPeriodInput(Loop).endYear = RunPeriodInput(Loop).startYear; + } else { + // There might be a better approach here, but for now just loop forward for the next leap year + for ( int yr = RunPeriodInput( Loop ).startYear + 1; yr < RunPeriodInput( Loop ).startYear + 10; yr++ ) { + if ( isLeapYear( yr ) ) { + RunPeriodInput(Loop).endYear = yr; + break; + } + } + } + } else { // Have an input end year + if ( !isLeapYear( RunPeriodInput( Loop ).endYear ) ) { // End year is not a leap year + ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", end year (" + std::to_string( RunPeriodInput( Loop ).startYear ) + ") is not a leap year but the requested end date is 2/29." ); + ErrorsFound = true; + } else { + RunPeriodInput( Loop ).endJulianDate = computeJulianDate( RunPeriodInput( Loop ).endYear, RunPeriodInput( Loop ).endMonth, RunPeriodInput( Loop ).endDay ); + if ( RunPeriodInput( Loop ).startJulianDate > RunPeriodInput( Loop ).endJulianDate ) { + ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", start Julian date (" + std::to_string( RunPeriodInput( Loop ).startJulianDate ) + ") is after the end Julian date (" + std::to_string( RunPeriodInput( Loop ).endJulianDate ) + ")." ); + ErrorsFound = true; + } + } } } else { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ' ' + cNumericFieldNames( 2 ) + " invalid=[" + TrimSigDigits( RunPeriodInput( Loop ).StartMonth ) + ']' ); - ErrorsFound = true; - }} - - { auto const SELECT_CASE_var( RunPeriodInput( Loop ).EndMonth ); - - if ( ( SELECT_CASE_var == 1 ) || ( SELECT_CASE_var == 3 ) || ( SELECT_CASE_var == 5 ) || ( SELECT_CASE_var == 7 ) || ( SELECT_CASE_var == 8 ) || ( SELECT_CASE_var == 10 ) || ( SELECT_CASE_var == 12 ) ) { - if ( RunPeriodInput( Loop ).EndDay > 31 ) { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", " + cNumericFieldNames( 4 ) + " invalid=[" + TrimSigDigits( RunPeriodInput( Loop ).EndDay ) + ']' ); - ShowContinueError( "Indicated " + cNumericFieldNames( 3 ) + "=[" + TrimSigDigits( RunPeriodInput( Loop ).EndMonth ) + "]." ); - ErrorsFound = true; - } - } else if ( ( SELECT_CASE_var == 4 ) || ( SELECT_CASE_var == 6 ) || ( SELECT_CASE_var == 9 ) || ( SELECT_CASE_var == 11 ) ) { - if ( RunPeriodInput( Loop ).EndDay > 30 ) { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", " + cNumericFieldNames( 4 ) + " invalid=[" + TrimSigDigits( RunPeriodInput( Loop ).EndDay ) + ']' ); - ShowContinueError( "Indicated " + cNumericFieldNames( 3 ) + "=[" + TrimSigDigits( RunPeriodInput( Loop ).EndMonth ) + "]." ); - ErrorsFound = true; - } - } else if ( SELECT_CASE_var == 2 ) { - if ( RunPeriodInput( Loop ).EndDay > 28 + LeapYearAdd ) { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", " + cNumericFieldNames( 4 ) + " invalid=[" + TrimSigDigits( RunPeriodInput( Loop ).EndDay ) + ']' ); - ShowContinueError( "Indicated " + cNumericFieldNames( 3 ) + "=[" + TrimSigDigits( RunPeriodInput( Loop ).EndMonth ) + "]." ); + // Non leap-day end date + if ( !validMonthDay( RunPeriodInput( Loop ).StartMonth, RunPeriodInput( Loop ).StartDay ) ) { + ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", Invalid input end month/day (" + TrimSigDigits( RunPeriodInput( Loop ).StartMonth ) + '/' + TrimSigDigits( RunPeriodInput( Loop ).StartDay ) + ')' ); ErrorsFound = true; + } else { // Month/day is valid + if ( RunPeriodInput( Loop ).endYear == 0 ) { // No input end year + // Assume same year as start year + RunPeriodInput( Loop ).endYear = RunPeriodInput( Loop ).startYear; + RunPeriodInput( Loop ).endJulianDate = computeJulianDate( RunPeriodInput( Loop ).endYear, RunPeriodInput( Loop ).endMonth, RunPeriodInput( Loop ).endDay ); + if ( RunPeriodInput( Loop ).startJulianDate > RunPeriodInput( Loop ).endJulianDate ) { + RunPeriodInput( Loop ).endJulianDate = 0; // Force recalculation later + RunPeriodInput( Loop ).endYear += 1; + } + } else { // Have an input end year + RunPeriodInput( Loop ).endJulianDate = computeJulianDate( RunPeriodInput( Loop ).endYear, RunPeriodInput( Loop ).endMonth, RunPeriodInput( Loop ).endDay ); + if ( RunPeriodInput( Loop ).startJulianDate > RunPeriodInput( Loop ).endJulianDate ) { + ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", start Julian date (" + std::to_string( RunPeriodInput( Loop ).startJulianDate ) + ") is after the end Julian date (" + std::to_string( RunPeriodInput( Loop ).endJulianDate ) + ")." ); + ErrorsFound = true; + } + } } - } else { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cNumericFieldNames( 3 ) + " invalid=[" + TrimSigDigits( RunPeriodInput( Loop ).EndMonth ) + ']' ); - ErrorsFound = true; - }} + } - // A2 , \field Day of Week for Start Day - if ( lAlphaFieldBlanks( 2 ) || cAlphaArgs( 2 ) == "USEWEATHERFILE" ) { - RunPeriodInput( Loop ).DayOfWeek = 0; // Defaults to Day of Week from Weather File - } else { - RunPeriodInput( Loop ).DayOfWeek = FindItemInList( cAlphaArgs( 2 ), DaysOfWeek, 7 ); - if ( RunPeriodInput( Loop ).DayOfWeek == 0 ) { - ShowWarningError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 2 ) + " invalid (Day of Week) [" + cAlphaArgs( 2 ) + " for Start is not Valid, DayofWeek from WeatherFile will be used." ); - } + if ( RunPeriodInput( Loop ).endJulianDate == 0 ) { + RunPeriodInput(Loop).endJulianDate = computeJulianDate(RunPeriodInput(Loop).endYear, RunPeriodInput(Loop).endMonth, RunPeriodInput(Loop).endDay); } - // A3, \field Use Weather File Holidays and Special Days - if ( lAlphaFieldBlanks( 3 ) || SameString( cAlphaArgs( 3 ), "YES" ) ) { - RunPeriodInput( Loop ).UseHolidays = true; + // A3, \field Apply Weekend Holiday Rule + if ( lAlphaFieldBlanks( 3) || SameString( cAlphaArgs( 3 ), "YES" ) ) { + RunPeriodInput( Loop ).ApplyWeekendRule = true; } else if ( SameString( cAlphaArgs( 3 ), "NO" ) ) { - RunPeriodInput( Loop ).UseHolidays = false; + RunPeriodInput( Loop ).ApplyWeekendRule = false; } else { ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 3 ) + " invalid [" + cAlphaArgs( 3 ) + ']' ); ErrorsFound = true; } - // A4, \field Use Weather File Daylight Saving Period + // A4, \field Use Weather File Rain Indicators if ( lAlphaFieldBlanks( 4 ) || SameString( cAlphaArgs( 4 ), "YES" ) ) { - RunPeriodInput( Loop ).UseDST = true; + RunPeriodInput( Loop ).UseRain = true; } else if ( SameString( cAlphaArgs( 4 ), "NO" ) ) { - RunPeriodInput( Loop ).UseDST = false; + RunPeriodInput( Loop ).UseRain = false; } else { ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 4 ) + " invalid [" + cAlphaArgs( 4 ) + ']' ); ErrorsFound = true; } - // A5, \field Apply Weekend Holiday Rule + // A5, \field Use Weather File Snow Indicators if ( lAlphaFieldBlanks( 5 ) || SameString( cAlphaArgs( 5 ), "YES" ) ) { - RunPeriodInput( Loop ).ApplyWeekendRule = true; + RunPeriodInput( Loop ).UseSnow = true; } else if ( SameString( cAlphaArgs( 5 ), "NO" ) ) { - RunPeriodInput( Loop ).ApplyWeekendRule = false; + RunPeriodInput( Loop ).UseSnow = false; } else { ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 5 ) + " invalid [" + cAlphaArgs( 5 ) + ']' ); ErrorsFound = true; } - // A6, \field Use Weather File Rain Indicators + // A6, \field Treat Weather as Actual if ( lAlphaFieldBlanks( 6 ) || SameString( cAlphaArgs( 6 ), "YES" ) ) { - RunPeriodInput( Loop ).UseRain = true; - } else if ( SameString( cAlphaArgs( 6 ), "NO" ) ) { - RunPeriodInput( Loop ).UseRain = false; + RunPeriodInput( Loop ).actualWeather = true; } else { ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 6 ) + " invalid [" + cAlphaArgs( 6 ) + ']' ); ErrorsFound = true; } - // A7, \field Use Weather File Snow Indicators - if ( lAlphaFieldBlanks( 7 ) || SameString( cAlphaArgs( 7 ), "YES" ) ) { - RunPeriodInput( Loop ).UseSnow = true; - } else if ( SameString( cAlphaArgs( 7 ), "NO" ) ) { - RunPeriodInput( Loop ).UseSnow = false; - } else { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 7 ) + " invalid [" + cAlphaArgs( 7 ) + ']' ); - ErrorsFound = true; - } - //calculate the annual start and end days from the user inputted month and day - RunPeriodInput( Loop ).ActualWeather = true; - JGDate( GregorianToJulian, RunPeriodInput( Loop ).StartDate, RunPeriodInput( Loop ).StartYear, RunPeriodInput( Loop ).StartMonth, RunPeriodInput( Loop ).StartDay ); - JGDate( GregorianToJulian, RunPeriodInput( Loop ).EndDate, RunPeriodInput( Loop ).EndYear, RunPeriodInput( Loop ).EndMonth, RunPeriodInput( Loop ).EndDay ); + //RunPeriodInput( Loop ).ActualWeather = true; RunPeriodInput( Loop ).MonWeekDay = 0; if ( RunPeriodInput( Loop ).DayOfWeek != 0 && ! ErrorsFound ) { SetupWeekDaysByMonth( RunPeriodInput( Loop ).StartMonth, RunPeriodInput( Loop ).StartDay, RunPeriodInput( Loop ).DayOfWeek, RunPeriodInput( Loop ).MonWeekDay ); @@ -5906,8 +5801,8 @@ Label9999: ; TotRunPers = 1; WeathSimReq = true; RunPeriodInput.allocate( TotRunPers ); - RunPeriodInput( 1 ).StartDate = JulianDay( RunPeriodInput( 1 ).StartMonth, RunPeriodInput( 1 ).StartDay, LeapYearAdd ); - RunPeriodInput( 1 ).EndDate = JulianDay( RunPeriodInput( 1 ).EndMonth, RunPeriodInput( 1 ).EndDay, LeapYearAdd ); + RunPeriodInput( 1 ).startJulianDate = JulianDay( RunPeriodInput( 1 ).StartMonth, RunPeriodInput( 1 ).StartDay, LeapYearAdd ); + RunPeriodInput( 1 ).endJulianDate = JulianDay( RunPeriodInput( 1 ).endMonth, RunPeriodInput( 1 ).endDay, LeapYearAdd ); RunPeriodInput( 1 ).MonWeekDay = 0; if ( RunPeriodInput( 1 ).DayOfWeek != 0 && ! ErrorsFound ) { SetupWeekDaysByMonth( RunPeriodInput( 1 ).StartMonth, RunPeriodInput( 1 ).StartDay, RunPeriodInput( 1 ).DayOfWeek, RunPeriodInput( 1 ).MonWeekDay ); @@ -5998,8 +5893,8 @@ Label9999: ; //set the start and end day of month from user input RunPeriodDesignInput( Count ).StartMonth = int( rNumericArgs( 1 ) ); RunPeriodDesignInput( Count ).StartDay = int( rNumericArgs( 2 ) ); - RunPeriodDesignInput( Count ).EndMonth = int( rNumericArgs( 3 ) ); - RunPeriodDesignInput( Count ).EndDay = int( rNumericArgs( 4 ) ); + RunPeriodDesignInput( Count ).endMonth = int( rNumericArgs( 3 ) ); + RunPeriodDesignInput( Count ).endDay = int( rNumericArgs( 4 ) ); { auto const SELECT_CASE_var( RunPeriodDesignInput( Count ).StartMonth ); @@ -6054,12 +5949,12 @@ Label9999: ; } //calculate the annual start and end days from the user inputted month and day - RunPeriodDesignInput( Count ).StartDate = JulianDay( RunPeriodDesignInput( Count ).StartMonth, RunPeriodDesignInput( Count ).StartDay, LeapYearAdd ); - RunPeriodDesignInput( Count ).EndDate = JulianDay( RunPeriodDesignInput( Count ).EndMonth, RunPeriodDesignInput( Count ).EndDay, LeapYearAdd ); - if ( RunPeriodDesignInput( Count ).StartDate <= RunPeriodDesignInput( Count ).EndDate ) { - RunPeriodDesignInput( Count ).TotalDays = ( RunPeriodDesignInput( Count ).EndDate - RunPeriodDesignInput( Count ).StartDate + 1 ) * RunPeriodDesignInput( Count ).NumSimYears; + RunPeriodDesignInput( Count ).startJulianDate = JulianDay( RunPeriodDesignInput( Count ).StartMonth, RunPeriodDesignInput( Count ).StartDay, LeapYearAdd ); + RunPeriodDesignInput( Count ).endJulianDate = JulianDay( RunPeriodDesignInput( Count ).endMonth, RunPeriodDesignInput( Count ).endDay, LeapYearAdd ); + if ( RunPeriodDesignInput( Count ).startJulianDate <= RunPeriodDesignInput( Count ).endJulianDate ) { + RunPeriodDesignInput( Count ).TotalDays = ( RunPeriodDesignInput( Count ).endJulianDate - RunPeriodDesignInput( Count ).startJulianDate + 1 ) * RunPeriodDesignInput( Count ).NumSimYears; } else { - RunPeriodDesignInput( Count ).TotalDays = ( JulianDay( 12, 31, LeapYearAdd ) - RunPeriodDesignInput( Count ).StartDate + 1 + RunPeriodDesignInput( Count ).EndDate ) * RunPeriodDesignInput( Count ).NumSimYears; + RunPeriodDesignInput( Count ).TotalDays = ( JulianDay( 12, 31, LeapYearAdd ) - RunPeriodDesignInput( Count ).startJulianDate + 1 + RunPeriodDesignInput( Count ).endJulianDate ) * RunPeriodDesignInput( Count ).NumSimYears; } RunPeriodDesignInput( Count ).MonWeekDay = 0; if ( RunPeriodDesignInput( 1 ).DayOfWeek != 0 && ! ErrorsFound ) { @@ -6088,20 +5983,20 @@ Label9999: ; if ( WhichPeriod != 0 ) { RunPeriodDesignInput( Count ).StartDay = TypicalExtremePeriods( WhichPeriod ).StartDay; RunPeriodDesignInput( Count ).StartMonth = TypicalExtremePeriods( WhichPeriod ).StartMonth; - RunPeriodDesignInput( Count ).StartDate = TypicalExtremePeriods( WhichPeriod ).StartJDay; - RunPeriodDesignInput( Count ).EndDay = TypicalExtremePeriods( WhichPeriod ).EndDay; - RunPeriodDesignInput( Count ).EndMonth = TypicalExtremePeriods( WhichPeriod ).EndMonth; - RunPeriodDesignInput( Count ).EndDate = TypicalExtremePeriods( WhichPeriod ).EndJDay; + RunPeriodDesignInput( Count ).startJulianDate = TypicalExtremePeriods( WhichPeriod ).StartJDay; + RunPeriodDesignInput( Count ).endDay = TypicalExtremePeriods( WhichPeriod ).EndDay; + RunPeriodDesignInput( Count ).endMonth = TypicalExtremePeriods( WhichPeriod ).EndMonth; + RunPeriodDesignInput( Count ).endJulianDate = TypicalExtremePeriods( WhichPeriod ).EndJDay; RunPeriodDesignInput( Count ).TotalDays = TypicalExtremePeriods( WhichPeriod ).TotalDays; } else { WhichPeriod = FindItem( cAlphaArgs( 2 ), TypicalExtremePeriods, &TypicalExtremeData::MatchValue1 ); if ( WhichPeriod != 0 ) { RunPeriodDesignInput( Count ).StartDay = TypicalExtremePeriods( WhichPeriod ).StartDay; RunPeriodDesignInput( Count ).StartMonth = TypicalExtremePeriods( WhichPeriod ).StartMonth; - RunPeriodDesignInput( Count ).StartDate = TypicalExtremePeriods( WhichPeriod ).StartJDay; - RunPeriodDesignInput( Count ).EndDay = TypicalExtremePeriods( WhichPeriod ).EndDay; - RunPeriodDesignInput( Count ).EndMonth = TypicalExtremePeriods( WhichPeriod ).EndMonth; - RunPeriodDesignInput( Count ).EndDate = TypicalExtremePeriods( WhichPeriod ).EndJDay; + RunPeriodDesignInput( Count ).startJulianDate = TypicalExtremePeriods( WhichPeriod ).StartJDay; + RunPeriodDesignInput( Count ).endDay = TypicalExtremePeriods( WhichPeriod ).EndDay; + RunPeriodDesignInput( Count ).endMonth = TypicalExtremePeriods( WhichPeriod ).EndMonth; + RunPeriodDesignInput( Count ).endJulianDate = TypicalExtremePeriods( WhichPeriod ).EndJDay; RunPeriodDesignInput( Count ).TotalDays = TypicalExtremePeriods( WhichPeriod ).TotalDays; ShowWarningError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).Title + ' ' + cAlphaFieldNames( 2 ) + '=' + cAlphaArgs( 2 ) + " matched to " + TypicalExtremePeriods( WhichPeriod ).MatchValue ); } else { @@ -6109,10 +6004,10 @@ Label9999: ; if ( WhichPeriod != 0 ) { RunPeriodDesignInput( Count ).StartDay = TypicalExtremePeriods( WhichPeriod ).StartDay; RunPeriodDesignInput( Count ).StartMonth = TypicalExtremePeriods( WhichPeriod ).StartMonth; - RunPeriodDesignInput( Count ).StartDate = TypicalExtremePeriods( WhichPeriod ).StartJDay; - RunPeriodDesignInput( Count ).EndDay = TypicalExtremePeriods( WhichPeriod ).EndDay; - RunPeriodDesignInput( Count ).EndMonth = TypicalExtremePeriods( WhichPeriod ).EndMonth; - RunPeriodDesignInput( Count ).EndDate = TypicalExtremePeriods( WhichPeriod ).EndJDay; + RunPeriodDesignInput( Count ).startJulianDate = TypicalExtremePeriods( WhichPeriod ).StartJDay; + RunPeriodDesignInput( Count ).endDay = TypicalExtremePeriods( WhichPeriod ).EndDay; + RunPeriodDesignInput( Count ).endMonth = TypicalExtremePeriods( WhichPeriod ).EndMonth; + RunPeriodDesignInput( Count ).endJulianDate = TypicalExtremePeriods( WhichPeriod ).EndJDay; RunPeriodDesignInput( Count ).TotalDays = TypicalExtremePeriods( WhichPeriod ).TotalDays; ShowWarningError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).Title + ' ' + cAlphaFieldNames( 2 ) + '=' + cAlphaArgs( 2 ) + " matched to " + TypicalExtremePeriods( WhichPeriod ).MatchValue ); } else { @@ -9431,9 +9326,9 @@ Label9998: ; env.StartDay = runPer.StartDay; env.StartJDay = JulianDay( runPer.StartMonth, runPer.StartDay, LeapYearAdd ); env.TotalDays = runPer.TotalDays; - env.EndMonth = runPer.EndMonth; - env.EndDay = runPer.EndDay; - env.EndJDay = JulianDay( runPer.EndMonth, runPer.EndDay, LeapYearAdd ); + env.EndMonth = runPer.endMonth; + env.EndDay = runPer.endDay; + env.EndJDay = JulianDay( runPer.endMonth, runPer.endDay, LeapYearAdd ); env.NumSimYears = runPer.NumSimYears; if ( env.StartJDay <= env.EndJDay ) { env.TotalDays = ( env.EndJDay - env.StartJDay + 1 ) * env.NumSimYears; @@ -9464,15 +9359,15 @@ Label9998: ; env.StartMonth = runPer.StartMonth; env.StartDay = runPer.StartDay; - env.EndMonth = runPer.EndMonth; - env.EndDay = runPer.EndDay; + env.EndMonth = runPer.endMonth; + env.EndDay = runPer.endDay; env.NumSimYears = runPer.NumSimYears; - if ( runPer.ActualWeather ) { - env.CurrentYear = runPer.StartYear; - env.IsLeapYear = IsLeapYear( runPer.StartYear ); + if ( runPer.actualWeather ) { + env.CurrentYear = runPer.startYear; + env.IsLeapYear = isLeapYear( runPer.startYear ); env.TreatYearsAsConsecutive = true; - env.StartYear = runPer.StartYear; - env.EndYear = runPer.EndYear; + env.StartYear = runPer.startYear; + env.EndYear = runPer.endYear; JGDate( GregorianToJulian, env.StartDate, env.StartYear, env.StartMonth, env.StartDay ); JGDate( GregorianToJulian, env.EndDate, env.EndYear, env.EndMonth, env.EndDay ); env.StartJDay = env.StartDate; @@ -9493,7 +9388,7 @@ Label9998: ; env.TreatYearsAsConsecutive = false; env.RollDayTypeOnRepeat = runPer.RollDayTypeOnRepeat; env.StartJDay = JulianDay( runPer.StartMonth, runPer.StartDay, LocalLeapYearAdd ); - env.EndJDay = JulianDay( runPer.EndMonth, runPer.EndDay, LocalLeapYearAdd ); + env.EndJDay = JulianDay( runPer.endMonth, runPer.endDay, LocalLeapYearAdd ); // need message if isleapyear and wfleapyearind=0 if ( env.StartJDay <= env.EndJDay ) { env.RawSimDays = ( env.EndJDay - env.StartJDay + 1 ); @@ -9505,16 +9400,16 @@ Label9998: ; } else { // Using Runperiod and StartYear option. env.CurrentYear = runPer.BeginYear; - env.IsLeapYear = IsLeapYear( env.CurrentYear ); + env.IsLeapYear = isLeapYear( env.CurrentYear ); env.TreatYearsAsConsecutive = true; env.RollDayTypeOnRepeat = runPer.RollDayTypeOnRepeat; env.StartJDay = JulianDay( runPer.StartMonth, runPer.StartDay, LeapYearAdd ); - env.EndJDay = JulianDay( runPer.EndMonth, runPer.EndDay, LeapYearAdd ); + env.EndJDay = JulianDay( runPer.endMonth, runPer.endDay, LeapYearAdd ); env.TotalDays = 0; for ( Loop1 = 1; Loop1 <= env.NumSimYears; ++Loop1 ) { - if ( ! IsLeapYear( runPer.BeginYear - 1 + Loop1 ) || ! WFAllowsLeapYears ) { + if ( ! isLeapYear( runPer.BeginYear - 1 + Loop1 ) || ! WFAllowsLeapYears ) { JDay1 = JulianDay( runPer.StartMonth, runPer.StartDay, 0 ); - JDay2 = JulianDay( runPer.EndMonth, runPer.EndDay, 0 ); + JDay2 = JulianDay( runPer.endMonth, runPer.endDay, 0 ); if ( JDay1 <= JDay2 ) { if ( Loop1 == 1 ) env.RawSimDays = ( JDay2 - JDay1 + 1 ); env.TotalDays += ( JDay2 - JDay1 + 1 ); @@ -9524,7 +9419,7 @@ Label9998: ; } } else { // Leap Year JDay1 = JulianDay( runPer.StartMonth, runPer.StartDay, 1 ); - JDay2 = JulianDay( runPer.EndMonth, runPer.EndDay, 1 ); + JDay2 = JulianDay( runPer.endMonth, runPer.endDay, 1 ); if ( JDay1 <= JDay2 ) { env.TotalDays += ( JDay2 - JDay1 + 1 ); } else { @@ -9558,7 +9453,7 @@ Label9998: ; } bool - IsLeapYear( int const Year ) + isLeapYear( int const Year ) { // FUNCTION INFORMATION: @@ -9579,9 +9474,6 @@ Label9998: ; // USE STATEMENTS: // na - // Return value - bool YesNo; - // Locals // FUNCTION ARGUMENT DEFINITIONS: @@ -9597,13 +9489,12 @@ Label9998: ; // FUNCTION LOCAL VARIABLE DECLARATIONS: // na - YesNo = false; if ( mod( Year, 4 ) == 0 ) { // Potential Leap Year if ( ! ( mod( Year, 100 ) == 0 && mod( Year, 400 ) != 0 ) ) { - YesNo = true; + return true; } } - return YesNo; + return false; } @@ -9692,6 +9583,65 @@ Label9998: ; } + int + computeJulianDate( + int const gyyyy, // input/output gregorian year, should be specified as 4 digits + int const gmm, // input/output gregorian month + int const gdd // input/output gregorian day + ) + { + // SUBROUTINE INFORMATION: + // AUTHOR Jason DeGraw + // DATE WRITTEN 10/25/2017 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // Split the former JGDate is a gregorian date to actual julian date + // converter. the advantage of storing a julian date in the + // jdate format rather than a 5 digit format is that any + // number of days can be add or subtracted to jdate and + // that result is a proper julian date. + + // METHODOLOGY EMPLOYED: + // + + // REFERENCES: + // for discussion of this algorithm, + // see cacm, vol 11, no 10, oct 1968, page 657 + + // USE STATEMENTS: + // na + + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + // na + + // SUBROUTINE PARAMETER DEFINITIONS: + // na + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // DERIVED TYPE DEFINITIONS: + // na + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + int tdate; // integer*4 variable needed for double precision arithmetic + int tyyyy; // integer*4 variable needed for double precision arithmetic + int tmm; // integer*4 variable needed for double precision arithmetic + int tdd; // integer*4 variable needed for double precision arithmetic + int l; // temporary variable used in conversion. + int n; // temporary variable used in conversion. + + tyyyy = gyyyy; + tmm = gmm; + tdd = gdd; + l = ( tmm - 14 ) / 12; + return tdd - 32075 + 1461 * ( tyyyy + 4800 + l ) / 4 + 367 * ( tmm - 2 - l * 12 ) / 12 - 3 * ( ( tyyyy + 4900 + l ) / 100 ) / 4; + + } + int CalculateDayOfWeek( int const JulianDate ) // from JGDate calculation { @@ -9752,6 +9702,177 @@ Label9998: ; } + WeekDay + calculateDayOfWeek( int const year, int const month, int const day ) + { + + // FUNCTION INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN March 2012 + // MODIFIED October 2017, Jason DeGraw + // RE-ENGINEERED na + + // PURPOSE OF THIS FUNCTION: + // Calculate the correct day of week. + + // METHODOLOGY EMPLOYED: + // Zeller's algorithm. + + // REFERENCES: + // http://en.wikipedia.org/wiki/Zeller%27s_congruence + // and other references around the web. + + // USE STATEMENTS: + // na + + // Locals + // FUNCTION ARGUMENT DEFINITIONS: + + // FUNCTION PARAMETER DEFINITIONS: + // na + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // DERIVED TYPE DEFINITIONS: + // na + + // FUNCTION LOCAL VARIABLE DECLARATIONS: + int Gyyyy(year); // Gregorian yyyy + int Gmm(month); // Gregorian mm + + // Jan, Feb are 13, 14 months of previous year + if ( Gmm < 3 ) { + Gmm += 12; + --Gyyyy; + } + + DayOfWeek = mod( day + ( 13 * ( Gmm + 1 ) / 5 ) + Gyyyy + ( Gyyyy / 4 ) + 6 * ( Gyyyy / 100 ) + ( Gyyyy / 400 ), 7 ); + if ( DayOfWeek == 0 ) DayOfWeek = 7; + + return static_cast( DayOfWeek ); + + } + + int + calculateDayOfYear( int const Month, int const Day ) + { + + // FUNCTION INFORMATION: + // AUTHOR Jason DeGraw + // DATE WRITTEN October 10, 2017 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS FUNCTION: + // Compute the day of the year for non-leap years. + + // METHODOLOGY EMPLOYED: + // Lookup table. + + // REFERENCES: + // NA + + // USE STATEMENTS: + // na + + // FUNCTION LOCAL VARIABLE DECLARATIONS: + static std::array daysbefore{ { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 } }; + + // Could probably do some bounds checking here, but for now assume the month is in [1, 12] + return daysbefore[Month - 1] + Day; + + } + + int + calculateDayOfYear(int const Month, int const Day, bool const leapYear) + { + + // FUNCTION INFORMATION: + // AUTHOR Jason DeGraw + // DATE WRITTEN October 10, 2017 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS FUNCTION: + // Compute the day of the year for leap and non-leap years. + + // METHODOLOGY EMPLOYED: + // Lookup table. + + // REFERENCES: + // NA + + // USE STATEMENTS: + // na + + // FUNCTION LOCAL VARIABLE DECLARATIONS: + static std::array daysbefore{ { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 } }; + static std::array daysbeforeleap{ { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 } }; + + // Could probably do some bounds checking here, but for now assume the month is in [1, 12] + if (leapYear) { + return daysbefore[Month - 1] + Day; + } else { + return daysbeforeleap[Month - 1] + Day; + } + } + + bool + validMonthDay(int const month, int const day, int const leapYearAdd) + { + + // FUNCTION INFORMATION: + // AUTHOR Jason DeGraw + // DATE WRITTEN October 31, 2017 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS FUNCTION: + // Determine if a month/day+leapyear combination is valid. + + // METHODOLOGY EMPLOYED: + // Lookup table. + + // REFERENCES: + // NA + + // USE STATEMENTS: + // NA + + // FUNCTION LOCAL VARIABLE DECLARATIONS: + // NA + + switch( month ) { + case 1: + case 3: + case 5: + case 7: + case 8: + case 10: + case 12: + if ( day > 31 ) { + return false; + } + break; + case 4: + case 6: + case 9: + case 11: + if ( day > 30 ) { + return false; + } + break; + case 2: + if ( day > 28 + leapYearAdd ) { + return false; + } + break; + default: + return false; + } + return true; + } } // WeatherManager } // EnergyPlus diff --git a/src/EnergyPlus/WeatherManager.hh b/src/EnergyPlus/WeatherManager.hh index 0f1f23c56ca..ad6572b6317 100644 --- a/src/EnergyPlus/WeatherManager.hh +++ b/src/EnergyPlus/WeatherManager.hh @@ -259,8 +259,11 @@ namespace WeatherManager { // Types + enum class WeekDay { Sunday=1, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; + struct EnvironmentData { + enum class Type { DesignDay, RunPeriodDesign, RunPeriodWeather, HVACSizeDesignDay, ksHVACSizeRunPeriodDesign, ReadAllWeatherData }; // Members std::string Title; // Environment name std::string cKindOfEnvrn; // kind of environment @@ -409,13 +412,14 @@ namespace WeatherManager { int TotalDays; // total number of days in requested period int StartMonth; int StartDay; - int StartDate; // Calculated start date (Julian) for a weather file run period - int StartYear; // entered in "consecutive"/real runperiod object - int EndMonth; - int EndDay; - int EndDate; // Calculated end date (Julian) for a weather file run period - int EndYear; // entered in "consecutive"/real runperiod object + int startJulianDate; // Calculated start date (Julian or ordinal) for a weather file run period + int startYear; // entered in "consecutive"/real runperiod object + int endMonth; + int endDay; + int endJulianDate; // Calculated end date (Julian or ordinal) for a weather file run period + int endYear; // entered in "consecutive"/real runperiod object int DayOfWeek; // Day of Week that the RunPeriod will start on (User Input) + WeekDay startWeekDay; // Day of the week that the RunPeriod will start on (User Input) bool UseDST; // True if DaylightSavingTime is used for this RunPeriod bool UseHolidays; // True if Holidays are used for this RunPeriod (from WeatherFile) bool ApplyWeekendRule; // True if "Weekend Rule" is to be applied to RunPeriod @@ -427,20 +431,21 @@ namespace WeatherManager { bool IsLeapYear; // True if Begin Year is leap year. bool RollDayTypeOnRepeat; // If repeating run period, increment day type on repeat. bool TreatYearsAsConsecutive; // When year rolls over, increment year and recalculate Leap Year - bool ActualWeather; // true when using actual weather data + bool actualWeather; // true when using actual weather data // Default Constructor RunPeriodData() : TotalDays( 0 ), StartMonth( 1 ), StartDay( 1 ), - StartDate( 0 ), - StartYear( 0 ), - EndMonth( 12 ), - EndDay( 31 ), - EndDate( 0 ), - EndYear( 0 ), + startJulianDate( 0 ), + startYear( 2017 ), + endMonth( 12 ), + endDay( 31 ), + endJulianDate( 0 ), + endYear( 0 ), DayOfWeek( 0 ), + startWeekDay( WeekDay::Sunday ), UseDST( false ), UseHolidays( false ), ApplyWeekendRule( false ), @@ -452,7 +457,7 @@ namespace WeatherManager { IsLeapYear( false ), RollDayTypeOnRepeat( true ), TreatYearsAsConsecutive( true ), - ActualWeather( false ) + actualWeather( false ) {} }; @@ -1098,7 +1103,10 @@ namespace WeatherManager { SetupEnvironmentTypes(); bool - IsLeapYear( int const Year ); + isLeapYear( int const Year ); + + int + computeJulianDate( int const gyyyy, int const gmm, int const gdd ); void JGDate( @@ -1112,6 +1120,18 @@ namespace WeatherManager { int CalculateDayOfWeek( int const JulianDate ); // from JGDate calculation + WeekDay + calculateDayOfWeek( int const year, int const month, int day ); + + int + calculateDayOfYear( int const Month, int const Day ); + + int + calculateDayOfYear( int const Month, int const Day, bool const leapYear ); + + bool + validMonthDay( int const month, int const day, int const leapYearAdd = 0 ); + } // WeatherManager } // EnergyPlus diff --git a/tst/EnergyPlus/unit/CMakeLists.txt b/tst/EnergyPlus/unit/CMakeLists.txt index 28e8eedc447..6429b4be0ce 100644 --- a/tst/EnergyPlus/unit/CMakeLists.txt +++ b/tst/EnergyPlus/unit/CMakeLists.txt @@ -121,6 +121,7 @@ set( test_src ReportSizingManager.unit.cc RoomAirflowNetwork.unit.cc RoomAirModelUserTempPattern.unit.cc + RunPeriod.unit.cc ScheduleManager.unit.cc SecondaryDXCoils.unit.cc SetPointManager.unit.cc From 64c954f21b58c21f605050ed9e5e8f619c3bfbf2 Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Tue, 6 Feb 2018 11:46:19 -0700 Subject: [PATCH 02/47] Add missed file --- tst/EnergyPlus/unit/RunPeriod.unit.cc | 291 ++++++++++++++++++++++++++ 1 file changed, 291 insertions(+) create mode 100644 tst/EnergyPlus/unit/RunPeriod.unit.cc diff --git a/tst/EnergyPlus/unit/RunPeriod.unit.cc b/tst/EnergyPlus/unit/RunPeriod.unit.cc new file mode 100644 index 00000000000..5534ca411c3 --- /dev/null +++ b/tst/EnergyPlus/unit/RunPeriod.unit.cc @@ -0,0 +1,291 @@ +// EnergyPlus, Copyright (c) 1996-2018, The Board of Trustees of the University of Illinois, +// The Regents of the University of California, through Lawrence Berkeley National Laboratory +// (subject to receipt of any required approvals from the U.S. Dept. of Energy), Oak Ridge +// National Laboratory, managed by UT-Battelle, Alliance for Sustainable Energy, LLC, and other +// contributors. All rights reserved. +// +// NOTICE: This Software was developed under funding from the U.S. Department of Energy and the +// U.S. Government consequently retains certain rights. As such, the U.S. Government has been +// granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable, +// worldwide license in the Software to reproduce, distribute copies to the public, prepare +// derivative works, and perform publicly and display publicly, and to permit others to do so. +// +// Redistribution and use in source and binary forms, with or without modification, are permitted +// provided that the following conditions are met: +// +// (1) Redistributions of source code must retain the above copyright notice, this list of +// conditions and the following disclaimer. +// +// (2) Redistributions in binary form must reproduce the above copyright notice, this list of +// conditions and the following disclaimer in the documentation and/or other materials +// provided with the distribution. +// +// (3) Neither the name of the University of California, Lawrence Berkeley National Laboratory, +// the University of Illinois, U.S. Dept. of Energy nor the names of its contributors may be +// used to endorse or promote products derived from this software without specific prior +// written permission. +// +// (4) Use of EnergyPlus(TM) Name. If Licensee (i) distributes the software in stand-alone form +// without changes from the version obtained under this License, or (ii) Licensee makes a +// reference solely to the software portion of its product, Licensee must refer to the +// software as "EnergyPlus version X" software, where "X" is the version number Licensee +// obtained under this License and may not use a different name for the software. Except as +// specifically required in this Section (4), Licensee shall not use in a company name, a +// product name, in advertising, publicity, or other promotional activities any name, trade +// name, trademark, logo, or other designation of "EnergyPlus", "E+", "e+" or confusingly +// similar designation, without the U.S. Department of Energy's prior written consent. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR +// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +// EnergyPlus::RunPeriod Unit Tests + +// Google Test Headers +#include + +// ObjexxFCL Headers +#include + +// EnergyPlus Headers +#include +#include +#include +#include +#include +#include +#include + +#include "Fixtures/EnergyPlusFixture.hh" + +using namespace EnergyPlus; +using namespace EnergyPlus::WeatherManager; +using namespace EnergyPlus::ScheduleManager; + +TEST_F( EnergyPlusFixture, RunPeriod_SkyTempTest ) +{ + std::string const idf_objects = delimited_string({ + "Version,", + "8.8;", + "SimulationControl, NO, NO, NO, YES, YES;", + "Timestep,4;", + "RunPeriod,", + ", !- Name", + "2, !- Begin Month", + "29, !- Begin Day of Month", + "2016, !- Begin Year", + "3, !- End Month", + "3, !- End Day of Month", + ", !- End Year", + "Tuesday, !- Day of Week for Start Day", + "No, !- Apply Weekend Holiday Rule", + "Yes, !- Use Weather File Rain Indicators", + "Yes; !- Use Weather File Snow Indicators", + "BUILDING, Simple One Zone (Wireframe DXF), 0.0, Suburbs, .04, .004, MinimalShadowing, 30, 6;", + "Schedule:Compact,", + "TskySchedule, !- Name", + ", !- Schedule Type Limits Name", + "Through: 2/26, For: AllOtherDays, Until: 24:00, 2.26,", + "Through: 2/27, For: AllOtherDays, Until: 24:00, 2.27,", + "Through: 2/28, For: AllOtherDays, Until: 24:00, 2.28,", + "Through: 3/1, For: AllOtherDays, Until: 24:00, 3.01,", + "Through: 3/2, For: AllOtherDays, Until: 24:00, 3.02,", + "Through: 12/31, For: AllOtherDays, Until: 24:00, 12.31;", + "WeatherProperty:SkyTemperature,", + ", !- Name", + "ScheduleValue, !- Calculation Type", + "TskySchedule; !- Schedule Name", + "Site:WaterMainsTemperature,", + "Schedule, !- Calculation Method", + "TskySchedule, !- Temperature Schedule Name", + ", !- Annual Average Outdoor Air Temperature{ C }", + "; !- Maximum Difference In Monthly Average Outdoor Air Temperatures{ deltaC }", + "Output:Variable,*,Schedule Value,hourly;", + "Output:Variable,*,Site Sky Temperature,hourly;", + "Output:Variable,*,Site Mains Water Temperature,hourly; !- Zone Average[C]", + " Site:Location,", + " USA IL-CHICAGO-OHARE, !- Name", + " 41.77, !- Latitude {deg}", + " -87.75, !- Longitude {deg}", + " -6.00, !- Time Zone {hr}", + " 190; !- Elevation {m}", + }); + + ASSERT_FALSE( process_idf( idf_objects ) ); + bool errors; + int totalrps( 1 ); + WeatherManager::GetRunPeriodData( totalrps, errors) ; + EXPECT_EQ( WeatherManager::WeekDay::Tuesday, WeatherManager::RunPeriodInput[ 0 ].startWeekDay ); + EXPECT_EQ( 2007, WeatherManager::RunPeriodInput[ 0 ].startYear ); + EXPECT_EQ( 2454159, WeatherManager::RunPeriodInput[ 0 ].startJulianDate ); + EXPECT_EQ( 2454163, WeatherManager::RunPeriodInput[ 0 ].endJulianDate); + + Array2D< Real64 > TomorrowSkyTemp; // Sky temperature + DataGlobals::NumOfTimeStepInHour = 4; + DataGlobals::MinutesPerTimeStep = 60 / DataGlobals::NumOfTimeStepInHour; + TomorrowSkyTemp.allocate( DataGlobals::NumOfTimeStepInHour, 24 ); + TomorrowSkyTemp = 0.0; + + //Febuary 27 + ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 58, 3); + EXPECT_NEAR(2.27, TomorrowSkyTemp(1,1), .001); + + //Febuary 28 + ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 59, 4); + EXPECT_NEAR(2.28, TomorrowSkyTemp(1, 1), .001); + + //March 1 + ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 60, 5); + EXPECT_NEAR(3.01, TomorrowSkyTemp(1, 1), .001); + + //Not March 2, this "Day" is ignored unless its a leap year, otherwise same data as March 1 + ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 61, 6); + EXPECT_NEAR(3.01, TomorrowSkyTemp(1, 1), .001); + + //March 2 + ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 62, 6); + EXPECT_NEAR(3.02, TomorrowSkyTemp(1, 1), .001); +} + +TEST_F( EnergyPlusFixture, RunPeriod_BadYears ) +{ + std::string const idf_objects = delimited_string({ + "Version,", + "8.8;", + "SimulationControl, NO, NO, NO, YES, YES;", + "Timestep,4;", + "RunPeriod,", + ", !- Name", + "2, !- Begin Month", + "27, !- Begin Day of Month", + ", !- Begin Year", + "3, !- End Month", + "3, !- End Day of Month", + "1997, !- End Year", + "Tuesday, !- Day of Week for Start Day", + "No, !- Apply Weekend Holiday Rule", + "Yes, !- Use Weather File Rain Indicators", + "Yes; !- Use Weather File Snow Indicators", + "BUILDING, Simple One Zone (Wireframe DXF), 0.0, Suburbs, .04, .004, MinimalShadowing, 30, 6;", + "Schedule:Compact,", + "TskySchedule, !- Name", + ", !- Schedule Type Limits Name", + "Through: 2/26, For: AllOtherDays, Until: 24:00, 2.26,", + "Through: 2/27, For: AllOtherDays, Until: 24:00, 2.27,", + "Through: 2/28, For: AllOtherDays, Until: 24:00, 2.28,", + "Through: 3/1, For: AllOtherDays, Until: 24:00, 3.01,", + "Through: 3/2, For: AllOtherDays, Until: 24:00, 3.02,", + "Through: 12/31, For: AllOtherDays, Until: 24:00, 12.31;", + "WeatherProperty:SkyTemperature,", + ", !- Name", + "ScheduleValue, !- Calculation Type", + "TskySchedule; !- Schedule Name", + "Site:WaterMainsTemperature,", + "Schedule, !- Calculation Method", + "TskySchedule, !- Temperature Schedule Name", + ", !- Annual Average Outdoor Air Temperature{ C }", + "; !- Maximum Difference In Monthly Average Outdoor Air Temperatures{ deltaC }", + "Output:Variable,*,Schedule Value,hourly;", + "Output:Variable,*,Site Sky Temperature,hourly;", + "Output:Variable,*,Site Mains Water Temperature,hourly; !- Zone Average[C]", + " Site:Location,", + " USA IL-CHICAGO-OHARE, !- Name", + " 41.77, !- Latitude {deg}", + " -87.75, !- Longitude {deg}", + " -6.00, !- Time Zone {hr}", + " 190; !- Elevation {m}", + }); + + ASSERT_FALSE( process_idf( idf_objects ) ); + bool errors; + int totalrps( 1 ); + WeatherManager::GetRunPeriodData( totalrps, errors) ; + EXPECT_EQ( WeatherManager::WeekDay::Tuesday, WeatherManager::RunPeriodInput[ 0 ].startWeekDay ); + EXPECT_EQ( 2007, WeatherManager::RunPeriodInput[ 0 ].startYear ); + EXPECT_EQ( 2454159, WeatherManager::RunPeriodInput[ 0 ].startJulianDate ); + EXPECT_EQ( 2454163, WeatherManager::RunPeriodInput[ 0 ].endJulianDate); + + Array2D< Real64 > TomorrowSkyTemp; // Sky temperature + DataGlobals::NumOfTimeStepInHour = 4; + DataGlobals::MinutesPerTimeStep = 60 / DataGlobals::NumOfTimeStepInHour; + TomorrowSkyTemp.allocate( DataGlobals::NumOfTimeStepInHour, 24 ); + TomorrowSkyTemp = 0.0; + + //Febuary 27 + ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 58, 3); + EXPECT_NEAR(2.27, TomorrowSkyTemp(1,1), .001); + + //Febuary 28 + ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 59, 4); + EXPECT_NEAR(2.28, TomorrowSkyTemp(1, 1), .001); + + //March 1 + ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 60, 5); + EXPECT_NEAR(3.01, TomorrowSkyTemp(1, 1), .001); + + //Not March 2, this "Day" is ignored unless its a leap year, otherwise same data as March 1 + ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 61, 6); + EXPECT_NEAR(3.01, TomorrowSkyTemp(1, 1), .001); + + //March 2 + ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 62, 6); + EXPECT_NEAR(3.02, TomorrowSkyTemp(1, 1), .001); +} + +TEST_F( EnergyPlusFixture, RunPeriod_JGDate_Test ) +{ + // used http://aa.usno.navy.mil/data/docs/JulianDate.php + // + int julianDate; + int gregorianYear; + int gregorianMonth; + int gregorianDay; + + gregorianYear = 2016; // when test was made + gregorianMonth = 5; + gregorianDay = 25; + JGDate( GregorianToJulian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); + EXPECT_EQ( 2457534, julianDate ); + JGDate( JulianToGregorian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); + EXPECT_EQ( 2016, gregorianYear ); + EXPECT_EQ( 5, gregorianMonth ); + EXPECT_EQ( 25, gregorianDay ); + + gregorianYear = 2015; // a year before when test was made + gregorianMonth = 5; + gregorianDay = 25; + JGDate( GregorianToJulian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); + EXPECT_EQ( 2457168, julianDate ); + JGDate( JulianToGregorian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); + EXPECT_EQ( 2015, gregorianYear ); + EXPECT_EQ( 5, gregorianMonth ); + EXPECT_EQ( 25, gregorianDay ); + + gregorianYear = 1966; // a fine date in history + gregorianMonth = 7; + gregorianDay = 16; + JGDate( GregorianToJulian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); + EXPECT_EQ( 2439323, julianDate ); + JGDate( JulianToGregorian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); + EXPECT_EQ( 1966, gregorianYear ); + EXPECT_EQ( 7, gregorianMonth ); + EXPECT_EQ( 16, gregorianDay ); + + gregorianYear = 2000; //complex leap year + gregorianMonth = 12; + gregorianDay = 31; + JGDate( GregorianToJulian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); + EXPECT_EQ( 2451910, julianDate ); + JGDate( JulianToGregorian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); + EXPECT_EQ( 2000, gregorianYear ); + EXPECT_EQ( 12, gregorianMonth ); + EXPECT_EQ( 31, gregorianDay ); + +} + From 42dca0397da9df6ac52ed1f8c03e8174202d0995 Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Tue, 6 Feb 2018 13:50:23 -0700 Subject: [PATCH 03/47] Roll back some changes --- src/EnergyPlus/DataEnvironment.cc | 11 +++++------ src/EnergyPlus/DataEnvironment.hh | 11 +++++------ src/EnergyPlus/DataGlobals.cc | 7 +++---- src/EnergyPlus/DataGlobals.hh | 1 - src/EnergyPlus/OutputProcessor.hh | 11 +---------- src/EnergyPlus/WeatherManager.cc | 7 ------- 6 files changed, 14 insertions(+), 34 deletions(-) diff --git a/src/EnergyPlus/DataEnvironment.cc b/src/EnergyPlus/DataEnvironment.cc index 2d0152a8d67..d8a94ab1a56 100644 --- a/src/EnergyPlus/DataEnvironment.cc +++ b/src/EnergyPlus/DataEnvironment.cc @@ -1,4 +1,4 @@ -// EnergyPlus, Copyright (c) 1996-2017, The Board of Trustees of the University of Illinois, +// EnergyPlus, Copyright (c) 1996-2018, The Board of Trustees of the University of Illinois, // The Regents of the University of California, through Lawrence Berkeley National Laboratory // (subject to receipt of any required approvals from the U.S. Dept. of Energy), Oak Ridge // National Laboratory, managed by UT-Battelle, Alliance for Sustainable Energy, LLC, and other @@ -110,10 +110,6 @@ namespace DataEnvironment { int DayOfWeekTomorrow; // Tomorrow's day of the week (Sunday=1, Monday=2, ...) int DayOfYear; // Current day of the year (01JAN=1, 02JAN=2, ...) int DayOfYear_Schedule; // Schedule manager always assumes leap years... - int Month; // Current calendar month - int MonthTomorrow; // Tomorrow's calendar month - int Year; // Current calendar year of the simulation - int YearTomorrow; // Tomorrow's calendar year of the simulation Real64 DifSolarRad; // Current sky diffuse solar horizontal irradiance bool EMSDifSolarRadOverrideOn( false ); // EMS flag for sky diffuse solar horizontal irradiance Real64 EMSDifSolarRadOverrideValue; // EMS override value for sky diffuse solar horizontal irradiance @@ -135,6 +131,8 @@ namespace DataEnvironment { bool IsSnow; // Snow on the ground for this time interval Real64 Latitude; // Latitude of building location Real64 Longitude; // Longitude of building location + int Month; // Current calendar month + int MonthTomorrow; // Tomorrow's calendar month Real64 OutBaroPress; // Current outdoor air barometric pressure Real64 OutDryBulbTemp; // Current outdoor air dry bulb temperature bool EMSOutDryBulbOverrideOn( false ); // EMS flag for outdoor air dry bulb temperature @@ -161,6 +159,8 @@ namespace DataEnvironment { bool EMSWindSpeedOverrideOn( false ); // EMS flag for outdoor air wind speed Real64 EMSWindSpeedOverrideValue; // EMS override value for outdoor air wind speed Real64 WaterMainsTemp; // Current water mains temperature + int Year; // Current calendar year of the simulation + int YearTomorrow; // Tomorrow's calendar year of the simulation Array1D< Real64 > SOLCOS( 3 ); // Solar direction cosines at current time step Real64 CloudFraction; // Fraction of sky covered by clouds Real64 HISKF; // Exterior horizontal illuminance from sky (lux). @@ -177,7 +177,6 @@ namespace DataEnvironment { Real64 TimeZoneMeridian; // Standard Meridian of TimeZone std::string EnvironmentName; // Current environment name (longer for weather file names) std::string WeatherFileLocationTitle; // Location Title from Weather File - std::string currentTimestamp; // Current timestamp info in ISO8601 format yyyy-mm-ddThh:mm:ss std::string CurMnDyHr; // Current Month/Day/Hour timestamp info std::string CurMnDy; // Current Month/Day timestamp info int CurEnvirNum; // current environment number diff --git a/src/EnergyPlus/DataEnvironment.hh b/src/EnergyPlus/DataEnvironment.hh index c8f647258a3..384ac252324 100644 --- a/src/EnergyPlus/DataEnvironment.hh +++ b/src/EnergyPlus/DataEnvironment.hh @@ -1,4 +1,4 @@ -// EnergyPlus, Copyright (c) 1996-2017, The Board of Trustees of the University of Illinois, +// EnergyPlus, Copyright (c) 1996-2018, The Board of Trustees of the University of Illinois, // The Regents of the University of California, through Lawrence Berkeley National Laboratory // (subject to receipt of any required approvals from the U.S. Dept. of Energy), Oak Ridge // National Laboratory, managed by UT-Battelle, Alliance for Sustainable Energy, LLC, and other @@ -84,10 +84,6 @@ namespace DataEnvironment { extern int DayOfWeekTomorrow; // Tomorrow's day of the week (Sunday=1, Monday=2, ...) extern int DayOfYear; // Current day of the year (01JAN=1, 02JAN=2, ...) extern int DayOfYear_Schedule; // Schedule manager always assumes leap years... - extern int Month; // Current calendar month - extern int MonthTomorrow; // Tomorrow's calendar month - extern int Year; // Current calendar year of the simulation - extern int YearTomorrow; // Tomorrow's calendar year of the simulation extern Real64 DifSolarRad; // Current sky diffuse solar horizontal irradiance extern bool EMSDifSolarRadOverrideOn; // EMS flag for sky diffuse solar horizontal irradiance extern Real64 EMSDifSolarRadOverrideValue; // EMS override value for sky diffuse solar horizontal irradiance @@ -109,6 +105,8 @@ namespace DataEnvironment { extern bool IsSnow; // Snow on the ground for this time interval extern Real64 Latitude; // Latitude of building location extern Real64 Longitude; // Longitude of building location + extern int Month; // Current calendar month + extern int MonthTomorrow; // Tomorrow's calendar month extern Real64 OutBaroPress; // Current outdoor air barometric pressure extern Real64 OutDryBulbTemp; // Current outdoor air dry bulb temperature extern bool EMSOutDryBulbOverrideOn; // EMS flag for outdoor air dry bulb temperature @@ -135,6 +133,8 @@ namespace DataEnvironment { extern bool EMSWindSpeedOverrideOn; // EMS flag for outdoor air wind speed extern Real64 EMSWindSpeedOverrideValue; // EMS override value for outdoor air wind speed extern Real64 WaterMainsTemp; // Current water mains temperature + extern int Year; // Current calendar year of the simulation + extern int YearTomorrow; // Tomorrow's calendar year of the simulation extern Array1D< Real64 > SOLCOS; // Solar direction cosines at current time step extern Real64 CloudFraction; // Fraction of sky covered by clouds extern Real64 HISKF; // Exterior horizontal illuminance from sky (lux). @@ -151,7 +151,6 @@ namespace DataEnvironment { extern Real64 TimeZoneMeridian; // Standard Meridian of TimeZone extern std::string EnvironmentName; // Current environment name (longer for weather file names) extern std::string WeatherFileLocationTitle; // Location Title from Weather File - extern std::string currentTimestamp; // Current timestamp info in ISO8601 format yyyy-mm-ddThh:mm:ss extern std::string CurMnDyHr; // Current Month/Day/Hour timestamp info extern std::string CurMnDy; // Current Month/Day timestamp info extern int CurEnvirNum; // current environment number diff --git a/src/EnergyPlus/DataGlobals.cc b/src/EnergyPlus/DataGlobals.cc index 1970d11a8b4..1886cfdfc2c 100644 --- a/src/EnergyPlus/DataGlobals.cc +++ b/src/EnergyPlus/DataGlobals.cc @@ -1,4 +1,4 @@ -// EnergyPlus, Copyright (c) 1996-2017, The Board of Trustees of the University of Illinois, +// EnergyPlus, Copyright (c) 1996-2018, The Board of Trustees of the University of Illinois, // The Regents of the University of California, through Lawrence Berkeley National Laboratory // (subject to receipt of any required approvals from the U.S. Dept. of Energy), Oak Ridge // National Laboratory, managed by UT-Battelle, Alliance for Sustainable Energy, LLC, and other @@ -102,7 +102,7 @@ namespace DataGlobals { int const ksRunPeriodWeather( 3 ); int const ksHVACSizeDesignDay ( 4 ); // a regular design day run during HVAC Sizing Simulation int const ksHVACSizeRunPeriodDesign( 5 ); // a weather period design day run during HVAC Sizing Simulation - int const ksReadAllWeatherData( 6 ); // a weather period for reading all weather data proir to the simulation + int const ksReadAllWeatherData( 6 ); // a weather period for reading all weather data prior to the simulation int const ZoneTSReporting( 1 ); // value for Zone Time Step Reporting (UpdateDataAndReport) int const HVACTSReporting( 2 ); // value for HVAC Time Step Reporting (UpdateDataAndReport) @@ -115,7 +115,7 @@ namespace DataGlobals { Real64 const DegToRadians( Pi / 180.0 ); // Conversion for Degrees to Radians Real64 const RadToDeg( 180.0 / Pi ); // Conversion for Radians to Degrees Real64 const SecInHour( 3600.0 ); // Conversion for hours to seconds - Real64 const HoursInDay( 24.0 ); // Number of Hourse in Day + Real64 const HoursInDay( 24.0 ); // Number of Hours in Day Real64 const SecsInDay( SecInHour * HoursInDay ); // Number of seconds in Day Real64 const BigNumber( HUGE_( 1.0 ) ); // Max Number real used for initializations Real64 const rTinyValue( EPSILON( 1.0 ) ); // Tiny value to replace use of TINY(x) @@ -174,7 +174,6 @@ namespace DataGlobals { // (last time step of last hour of last day of environ which is a design day) bool EndDayFlag( false ); // True at the end of each day (last time step of last hour of day) bool EndHourFlag( false ); // True at the end of each hour (last time step of hour) - bool EndYearFlag( false ); // True at the end of each year, for the entire last day of the year int PreviousHour( 0 ); // Previous Hour Index int HourOfDay( 0 ); // Counter for hours in a simulation day Real64 WeightPreviousHour( 0.0 ); // Weighting of value for previous hour diff --git a/src/EnergyPlus/DataGlobals.hh b/src/EnergyPlus/DataGlobals.hh index 8142ea2b7f0..36d1018acef 100644 --- a/src/EnergyPlus/DataGlobals.hh +++ b/src/EnergyPlus/DataGlobals.hh @@ -152,7 +152,6 @@ namespace DataGlobals { // (last time step of last hour of last day of environ which is a design day) extern bool EndDayFlag; // True at the end of each day (last time step of last hour of day) extern bool EndHourFlag; // True at the end of each hour (last time step of hour) - extern bool EndYearFlag; // True at the end of each year, for the entire last day of the year extern int PreviousHour; // Previous Hour Index extern int HourOfDay; // Counter for hours in a simulation day extern Real64 WeightPreviousHour; // Weighting of value for previous hour diff --git a/src/EnergyPlus/OutputProcessor.hh b/src/EnergyPlus/OutputProcessor.hh index ea158646139..5e93a451e43 100644 --- a/src/EnergyPlus/OutputProcessor.hh +++ b/src/EnergyPlus/OutputProcessor.hh @@ -1,4 +1,4 @@ -// EnergyPlus, Copyright (c) 1996-2017, The Board of Trustees of the University of Illinois, +// EnergyPlus, Copyright (c) 1996-2018, The Board of Trustees of the University of Illinois, // The Regents of the University of California, through Lawrence Berkeley National Laboratory // (subject to receipt of any required approvals from the U.S. Dept. of Energy), Oak Ridge // National Laboratory, managed by UT-Battelle, Alliance for Sustainable Energy, LLC, and other @@ -79,15 +79,6 @@ namespace OutputProcessor { extern int const ReportMonthly; // Write out at end of month (must be determined) extern int const ReportSim; // Write out once per environment 'EndEnvrnFlag' - enum class ReportingFrequency { Each = -1, // Write out each time UpdatedataandReport is called - TimeStep, // Write out at 'EndTimeStepFlag' - Hourly, // Write out at 'EndHourFlag' - Daily, // Write out at 'EndDayFlag' - Monthly, // Write out at end of month (must be determined) - Yearly, - Environment // Write out once per environment 'EndEnvrnFlag' - }; - extern int const ReportVDD_No; // Don't report the variable dictionaries in any form extern int const ReportVDD_Yes; // Report the variable dictionaries in "report format" extern int const ReportVDD_IDF; // Report the variable dictionaries in "IDF format" diff --git a/src/EnergyPlus/WeatherManager.cc b/src/EnergyPlus/WeatherManager.cc index cbf112adefc..65d836f8f82 100644 --- a/src/EnergyPlus/WeatherManager.cc +++ b/src/EnergyPlus/WeatherManager.cc @@ -2130,12 +2130,8 @@ namespace WeatherManager { } } - EndYearFlag = false; if ( DayOfMonth == EndDayOfMonth( Month ) ) { EndMonthFlag = true; - if ( Month == 12 ) { - EndYearFlag = true; - } } // Set Tomorrow's date data @@ -2381,7 +2377,6 @@ namespace WeatherManager { // na // SUBROUTINE PARAMETER DEFINITIONS: - static char full_date[ 11 ]; static char time_stamp[ 10 ]; static char day_stamp[ 6 ]; static std::string const RoutineName( "SetCurrentWeather" ); @@ -2411,8 +2406,6 @@ namespace WeatherManager { UpdateScheduleValues(); - std::sprintf( full_date, "%04d-%02d-%02d", Year, Month, DayOfMonth ); - currentTimestamp = full_date; std::sprintf( time_stamp, "%02d/%02d %02d:", Month, DayOfMonth, HourOfDay - 1 ); CurMnDyHr = time_stamp; std::sprintf( day_stamp, "%02d/%02d", Month, DayOfMonth ); From 5b539f950ee9ba50115033a5b478d5234a77631b Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Tue, 6 Feb 2018 19:05:58 -0700 Subject: [PATCH 04/47] Work on unit testing --- idd/Energy+.idd.in | 1 - src/EnergyPlus/WeatherManager.cc | 8 +- .../unit/AirflowNetworkBalanceManager.unit.cc | 16 +- .../unit/DesiccantDehumidifiers.unit.cc | 16 +- tst/EnergyPlus/unit/HVACFourPipeBeam.unit.cc | 7 +- .../unit/HeatBalanceManager.unit.cc | 8 +- .../unit/HeatBalanceSurfaceManager.unit.cc | 24 +- .../unit/OASystemHWPreheatCoil.unit.cc | 8 +- .../PlantHeatExchangerFluidToFluid.unit.cc | 20 +- tst/EnergyPlus/unit/RunPeriod.unit.cc | 244 ++++++------------ tst/EnergyPlus/unit/SolarShading.unit.cc | 8 +- tst/EnergyPlus/unit/UnitHeater.unit.cc | 4 +- tst/EnergyPlus/unit/VentilatedSlab.unit.cc | 4 +- tst/EnergyPlus/unit/WeatherManager.unit.cc | 10 +- tst/EnergyPlus/unit/WindowManager.unit.cc | 8 +- 15 files changed, 142 insertions(+), 244 deletions(-) diff --git a/idd/Energy+.idd.in b/idd/Energy+.idd.in index 01268cec632..d0c22ade17a 100644 --- a/idd/Energy+.idd.in +++ b/idd/Energy+.idd.in @@ -1266,7 +1266,6 @@ RunPeriod, \key Thursday \key Friday \key Saturday - \key UseWeatherFile A3, \field Apply Weekend Holiday Rule \note if yes and single day holiday falls on weekend, "holiday" occurs on following Monday \type choice diff --git a/src/EnergyPlus/WeatherManager.cc b/src/EnergyPlus/WeatherManager.cc index 9b53511afd3..32deadd7fba 100644 --- a/src/EnergyPlus/WeatherManager.cc +++ b/src/EnergyPlus/WeatherManager.cc @@ -5715,7 +5715,7 @@ Label9999: ; } } else { // Non leap-day end date - if ( !validMonthDay( RunPeriodInput( Loop ).StartMonth, RunPeriodInput( Loop ).StartDay ) ) { + if ( !validMonthDay( RunPeriodInput( Loop ).endMonth, RunPeriodInput( Loop ).endDay ) ) { ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", Invalid input end month/day (" + TrimSigDigits( RunPeriodInput( Loop ).StartMonth ) + '/' + TrimSigDigits( RunPeriodInput( Loop ).StartDay ) + ')' ); ErrorsFound = true; } else { // Month/day is valid @@ -9590,9 +9590,9 @@ Label9998: ; // RE-ENGINEERED na // PURPOSE OF THIS SUBROUTINE: - // Split the former JGDate is a gregorian date to actual julian date - // converter. the advantage of storing a julian date in the - // jdate format rather than a 5 digit format is that any + // Split the former JGDate function in two. Convert a gregorian + // date to actual julian date. the advantage of storing a julian date + // in the jdate format rather than a 5 digit format is that any // number of days can be add or subtracted to jdate and // that result is a proper julian date. diff --git a/tst/EnergyPlus/unit/AirflowNetworkBalanceManager.unit.cc b/tst/EnergyPlus/unit/AirflowNetworkBalanceManager.unit.cc index e8d5f8b373d..38b70072d72 100644 --- a/tst/EnergyPlus/unit/AirflowNetworkBalanceManager.unit.cc +++ b/tst/EnergyPlus/unit/AirflowNetworkBalanceManager.unit.cc @@ -3083,11 +3083,11 @@ namespace EnergyPlus { " , !- Name", " 1, !- Begin Month", " 1, !- Begin Day of Month", - " 12, !- End Month", + " , !- Begin Year", + " 12, !- End Month", " 31, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", @@ -8685,16 +8685,14 @@ namespace EnergyPlus { " RunPeriod1, !- Name", " 1, !- Begin Month", " 1, !- Begin Day of Month", + " , !- Begin Year", " 12, !- End Month", " 31, !- End Day of Month", - " UseWeatherFile, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", + " , !- End Year", + " Sunday, !- Day of Week for Start Day", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", - " Yes, !- Use Weather File Snow Indicators", - " 1, !- Number of Times Runperiod to be Repeated", - " Yes; !- Increment Day of Week on repeat", + " Yes; !- Use Weather File Snow Indicators", "Material,", " F08 Metal surface, !- Name", " Smooth, !- Roughness", diff --git a/tst/EnergyPlus/unit/DesiccantDehumidifiers.unit.cc b/tst/EnergyPlus/unit/DesiccantDehumidifiers.unit.cc index 2fe69060ec1..8c912e3825c 100644 --- a/tst/EnergyPlus/unit/DesiccantDehumidifiers.unit.cc +++ b/tst/EnergyPlus/unit/DesiccantDehumidifiers.unit.cc @@ -136,11 +136,11 @@ namespace EnergyPlus { " , !- Name", " 1, !- Begin Month", " 1, !- Begin Day of Month", + " , !- Begin Year", " 1, !- End Month", " 5, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", @@ -2903,11 +2903,11 @@ namespace EnergyPlus { " , !- Name", " 1, !- Begin Month", " 1, !- Begin Day of Month", + " , !- Begin Year", " 1, !- End Month", " 5, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", @@ -4075,11 +4075,11 @@ namespace EnergyPlus { " , !- Name", " 1, !- Begin Month", " 1, !- Begin Day of Month", + " , !- Begin Year", " 1, !- End Month", " 5, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", @@ -5492,11 +5492,11 @@ namespace EnergyPlus { " , !- Name", " 1, !- Begin Month", " 1, !- Begin Day of Month", + " , !- Begin Year", " 1, !- End Month", " 5, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", diff --git a/tst/EnergyPlus/unit/HVACFourPipeBeam.unit.cc b/tst/EnergyPlus/unit/HVACFourPipeBeam.unit.cc index 96610affbee..92bf46acf39 100644 --- a/tst/EnergyPlus/unit/HVACFourPipeBeam.unit.cc +++ b/tst/EnergyPlus/unit/HVACFourPipeBeam.unit.cc @@ -221,15 +221,14 @@ namespace EnergyPlus { " annual, !- Name", " 1, !- Begin Month", " 1, !- Begin Day of Month", + " , !- Begin Year", " 12, !- End Month", " 31, !- End Day of Month", + " , !- End Year", " Sunday, !- Day of Week for Start Day", - " No, !- Use Weather File Holidays and Special Days", - " No, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", - " Yes, !- Use Weather File Snow Indicators", - " 1.0000; !- Number of Times Runperiod to be Repeated", + " Yes; !- Use Weather File Snow Indicators", " ScheduleTypeLimits,", " On/Off, !- Name", diff --git a/tst/EnergyPlus/unit/HeatBalanceManager.unit.cc b/tst/EnergyPlus/unit/HeatBalanceManager.unit.cc index da1066340be..920fd899b21 100644 --- a/tst/EnergyPlus/unit/HeatBalanceManager.unit.cc +++ b/tst/EnergyPlus/unit/HeatBalanceManager.unit.cc @@ -762,11 +762,11 @@ namespace EnergyPlus { " , !- Name", " 1, !- Begin Month", " 14, !- Begin Day of Month", + " , !- Begin Year", " 1, !- End Month", " 14, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", @@ -775,11 +775,11 @@ namespace EnergyPlus { " , !- Name", " 7, !- Begin Month", " 7, !- Begin Day of Month", + " , !- Begin Year", " 7, !- End Month", " 7, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " No; !- Use Weather File Snow Indicators", diff --git a/tst/EnergyPlus/unit/HeatBalanceSurfaceManager.unit.cc b/tst/EnergyPlus/unit/HeatBalanceSurfaceManager.unit.cc index fe4ed3d22c7..5df807e01d4 100644 --- a/tst/EnergyPlus/unit/HeatBalanceSurfaceManager.unit.cc +++ b/tst/EnergyPlus/unit/HeatBalanceSurfaceManager.unit.cc @@ -366,11 +366,11 @@ namespace EnergyPlus { " , !- Name", " 1, !- Begin Month", " 14, !- Begin Day of Month", + " , !- Begin Year", " 1, !- End Month", " 14, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", @@ -379,11 +379,11 @@ namespace EnergyPlus { " , !- Name", " 7, !- Begin Month", " 7, !- Begin Day of Month", + " , !- Begin Year", " 7, !- End Month", " 7, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " No; !- Use Weather File Snow Indicators", @@ -862,11 +862,11 @@ namespace EnergyPlus { " , !- Name", " 1, !- Begin Month", " 14, !- Begin Day of Month", + " , !- Begin Year", " 1, !- End Month", " 14, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", @@ -875,11 +875,11 @@ namespace EnergyPlus { " , !- Name", " 7, !- Begin Month", " 7, !- Begin Day of Month", + " , !- Begin Year", " 7, !- End Month", " 7, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " No; !- Use Weather File Snow Indicators", @@ -1412,11 +1412,11 @@ namespace EnergyPlus { " , !- Name", " 1, !- Begin Month", " 14, !- Begin Day of Month", + " , !- Begin Year", " 1, !- End Month", " 14, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", @@ -1425,11 +1425,11 @@ namespace EnergyPlus { " , !- Name", " 7, !- Begin Month", " 7, !- Begin Day of Month", + " , !- Begin Year", " 7, !- End Month", " 7, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " No; !- Use Weather File Snow Indicators", diff --git a/tst/EnergyPlus/unit/OASystemHWPreheatCoil.unit.cc b/tst/EnergyPlus/unit/OASystemHWPreheatCoil.unit.cc index 5b71afc20ed..ce1e47a693a 100644 --- a/tst/EnergyPlus/unit/OASystemHWPreheatCoil.unit.cc +++ b/tst/EnergyPlus/unit/OASystemHWPreheatCoil.unit.cc @@ -97,11 +97,11 @@ namespace EnergyPlus { " , !- Name", " 1, !- Begin Month", " 1, !- Begin Day of Month", + " , !- Begin Year", " 12, !- End Month", " 31, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", @@ -1075,11 +1075,11 @@ namespace EnergyPlus { " , !- Name", " 1, !- Begin Month", " 1, !- Begin Day of Month", + " , !- Begin Year", " 12, !- End Month", " 31, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", diff --git a/tst/EnergyPlus/unit/PlantHeatExchangerFluidToFluid.unit.cc b/tst/EnergyPlus/unit/PlantHeatExchangerFluidToFluid.unit.cc index b7b20fa839a..e5a88336974 100644 --- a/tst/EnergyPlus/unit/PlantHeatExchangerFluidToFluid.unit.cc +++ b/tst/EnergyPlus/unit/PlantHeatExchangerFluidToFluid.unit.cc @@ -132,14 +132,14 @@ namespace EnergyPlus { " 0.00; !- Sky Clearness", " RunPeriod,", - " Jan, !- Name", + " Jan, !- Name", " 1, !- Begin Month", " 1, !- Begin Day of Month", - " 1, !- End Month", - " 2, !- End Day of Month", + " , !- Begin Year", + " 1, !- End Month", + " 2, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", @@ -1228,14 +1228,14 @@ namespace EnergyPlus { " 0.00; !- Sky Clearness", " RunPeriod,", - " Jan, !- Name", + " Jan, !- Name", " 1, !- Begin Month", " 1, !- Begin Day of Month", - " 1, !- End Month", - " 2, !- End Day of Month", + " , !- Begin Year", + " 1, !- End Month", + " 2, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", diff --git a/tst/EnergyPlus/unit/RunPeriod.unit.cc b/tst/EnergyPlus/unit/RunPeriod.unit.cc index 5534ca411c3..e1efa9979d7 100644 --- a/tst/EnergyPlus/unit/RunPeriod.unit.cc +++ b/tst/EnergyPlus/unit/RunPeriod.unit.cc @@ -68,7 +68,7 @@ using namespace EnergyPlus; using namespace EnergyPlus::WeatherManager; using namespace EnergyPlus::ScheduleManager; -TEST_F( EnergyPlusFixture, RunPeriod_SkyTempTest ) +TEST_F(EnergyPlusFixture, RunPeriod_YearTests) { std::string const idf_objects = delimited_string({ "Version,", @@ -76,84 +76,91 @@ TEST_F( EnergyPlusFixture, RunPeriod_SkyTempTest ) "SimulationControl, NO, NO, NO, YES, YES;", "Timestep,4;", "RunPeriod,", - ", !- Name", + "RP1, !- Name", "2, !- Begin Month", "29, !- Begin Day of Month", "2016, !- Begin Year", "3, !- End Month", "3, !- End Day of Month", ", !- End Year", - "Tuesday, !- Day of Week for Start Day", + "Monday, !- Day of Week for Start Day", + "No, !- Apply Weekend Holiday Rule", + "Yes, !- Use Weather File Rain Indicators", + "Yes; !- Use Weather File Snow Indicators", + "RunPeriod,", + "RP2, !- Name", + "2, !- Begin Month", + "29, !- Begin Day of Month", + ", !- Begin Year", + "3, !- End Month", + "3, !- End Day of Month", + ", !- End Year", + "Wednesday, !- Day of Week for Start Day", + "No, !- Apply Weekend Holiday Rule", + "Yes, !- Use Weather File Rain Indicators", + "Yes; !- Use Weather File Snow Indicators", + "RunPeriod,", + "RP3, !- Name", + "1, !- Begin Month", + "1, !- Begin Day of Month", + ", !- Begin Year", + "12, !- End Month", + "31, !- End Day of Month", + ", !- End Year", + "Thursday, !- Day of Week for Start Day", + "No, !- Apply Weekend Holiday Rule", + "Yes, !- Use Weather File Rain Indicators", + "Yes; !- Use Weather File Snow Indicators", + "RunPeriod,", + "RP4, !- Name", + "1, !- Begin Month", + "1, !- Begin Day of Month", + ", !- Begin Year", + "12, !- End Month", + "31, !- End Day of Month", + ", !- End Year", + ", !- Day of Week for Start Day", "No, !- Apply Weekend Holiday Rule", "Yes, !- Use Weather File Rain Indicators", "Yes; !- Use Weather File Snow Indicators", "BUILDING, Simple One Zone (Wireframe DXF), 0.0, Suburbs, .04, .004, MinimalShadowing, 30, 6;", - "Schedule:Compact,", - "TskySchedule, !- Name", - ", !- Schedule Type Limits Name", - "Through: 2/26, For: AllOtherDays, Until: 24:00, 2.26,", - "Through: 2/27, For: AllOtherDays, Until: 24:00, 2.27,", - "Through: 2/28, For: AllOtherDays, Until: 24:00, 2.28,", - "Through: 3/1, For: AllOtherDays, Until: 24:00, 3.01,", - "Through: 3/2, For: AllOtherDays, Until: 24:00, 3.02,", - "Through: 12/31, For: AllOtherDays, Until: 24:00, 12.31;", - "WeatherProperty:SkyTemperature,", - ", !- Name", - "ScheduleValue, !- Calculation Type", - "TskySchedule; !- Schedule Name", - "Site:WaterMainsTemperature,", - "Schedule, !- Calculation Method", - "TskySchedule, !- Temperature Schedule Name", - ", !- Annual Average Outdoor Air Temperature{ C }", - "; !- Maximum Difference In Monthly Average Outdoor Air Temperatures{ deltaC }", - "Output:Variable,*,Schedule Value,hourly;", - "Output:Variable,*,Site Sky Temperature,hourly;", - "Output:Variable,*,Site Mains Water Temperature,hourly; !- Zone Average[C]", - " Site:Location,", - " USA IL-CHICAGO-OHARE, !- Name", - " 41.77, !- Latitude {deg}", - " -87.75, !- Longitude {deg}", - " -6.00, !- Time Zone {hr}", - " 190; !- Elevation {m}", + }); ASSERT_FALSE( process_idf( idf_objects ) ); - bool errors; - int totalrps( 1 ); - WeatherManager::GetRunPeriodData( totalrps, errors) ; - EXPECT_EQ( WeatherManager::WeekDay::Tuesday, WeatherManager::RunPeriodInput[ 0 ].startWeekDay ); - EXPECT_EQ( 2007, WeatherManager::RunPeriodInput[ 0 ].startYear ); - EXPECT_EQ( 2454159, WeatherManager::RunPeriodInput[ 0 ].startJulianDate ); - EXPECT_EQ( 2454163, WeatherManager::RunPeriodInput[ 0 ].endJulianDate); - - Array2D< Real64 > TomorrowSkyTemp; // Sky temperature - DataGlobals::NumOfTimeStepInHour = 4; - DataGlobals::MinutesPerTimeStep = 60 / DataGlobals::NumOfTimeStepInHour; - TomorrowSkyTemp.allocate( DataGlobals::NumOfTimeStepInHour, 24 ); - TomorrowSkyTemp = 0.0; - - //Febuary 27 - ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 58, 3); - EXPECT_NEAR(2.27, TomorrowSkyTemp(1,1), .001); + bool errors_in_input( false ); + int totalrps( 4 ); + WeatherManager::GetRunPeriodData( totalrps, errors_in_input ); + EXPECT_FALSE( errors_in_input ); + + EXPECT_EQ( WeatherManager::WeekDay::Monday, WeatherManager::RunPeriodInput[0].startWeekDay ); + EXPECT_EQ( 2016, WeatherManager::RunPeriodInput[0].startYear ); + EXPECT_EQ( 2016, WeatherManager::RunPeriodInput[0].startYear ); + EXPECT_EQ( 2457448, WeatherManager::RunPeriodInput[0].startJulianDate ); + EXPECT_EQ( 2457451, WeatherManager::RunPeriodInput[0].endJulianDate ); + + EXPECT_EQ( WeatherManager::WeekDay::Wednesday, WeatherManager::RunPeriodInput[1].startWeekDay ); + EXPECT_EQ( 2012, WeatherManager::RunPeriodInput[1].startYear ); + EXPECT_EQ( 2012, WeatherManager::RunPeriodInput[1].startYear ); + EXPECT_EQ( 2455987, WeatherManager::RunPeriodInput[1].startJulianDate ); + EXPECT_EQ( 2455990, WeatherManager::RunPeriodInput[1].endJulianDate ); + + EXPECT_EQ( WeatherManager::WeekDay::Thursday, WeatherManager::RunPeriodInput[2].startWeekDay ); + EXPECT_EQ( 2015, WeatherManager::RunPeriodInput[2].startYear ); + EXPECT_EQ( 2015, WeatherManager::RunPeriodInput[2].startYear ); + EXPECT_EQ( 2457024, WeatherManager::RunPeriodInput[2].startJulianDate ); + EXPECT_EQ( 2457388, WeatherManager::RunPeriodInput[2].endJulianDate ); + + EXPECT_EQ( WeatherManager::WeekDay::Sunday, WeatherManager::RunPeriodInput[3].startWeekDay ); + EXPECT_EQ( 2017, WeatherManager::RunPeriodInput[3].startYear ); + EXPECT_EQ( 2017, WeatherManager::RunPeriodInput[3].startYear ); + EXPECT_EQ( 2457755, WeatherManager::RunPeriodInput[3].startJulianDate ); + EXPECT_EQ( 2458119, WeatherManager::RunPeriodInput[3].endJulianDate ); - //Febuary 28 - ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 59, 4); - EXPECT_NEAR(2.28, TomorrowSkyTemp(1, 1), .001); - - //March 1 - ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 60, 5); - EXPECT_NEAR(3.01, TomorrowSkyTemp(1, 1), .001); - - //Not March 2, this "Day" is ignored unless its a leap year, otherwise same data as March 1 - ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 61, 6); - EXPECT_NEAR(3.01, TomorrowSkyTemp(1, 1), .001); - - //March 2 - ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 62, 6); - EXPECT_NEAR(3.02, TomorrowSkyTemp(1, 1), .001); } -TEST_F( EnergyPlusFixture, RunPeriod_BadYears ) + +TEST_F( EnergyPlusFixture, RunPeriod_EndYearOnly ) { std::string const idf_objects = delimited_string({ "Version,", @@ -173,119 +180,14 @@ TEST_F( EnergyPlusFixture, RunPeriod_BadYears ) "Yes, !- Use Weather File Rain Indicators", "Yes; !- Use Weather File Snow Indicators", "BUILDING, Simple One Zone (Wireframe DXF), 0.0, Suburbs, .04, .004, MinimalShadowing, 30, 6;", - "Schedule:Compact,", - "TskySchedule, !- Name", - ", !- Schedule Type Limits Name", - "Through: 2/26, For: AllOtherDays, Until: 24:00, 2.26,", - "Through: 2/27, For: AllOtherDays, Until: 24:00, 2.27,", - "Through: 2/28, For: AllOtherDays, Until: 24:00, 2.28,", - "Through: 3/1, For: AllOtherDays, Until: 24:00, 3.01,", - "Through: 3/2, For: AllOtherDays, Until: 24:00, 3.02,", - "Through: 12/31, For: AllOtherDays, Until: 24:00, 12.31;", - "WeatherProperty:SkyTemperature,", - ", !- Name", - "ScheduleValue, !- Calculation Type", - "TskySchedule; !- Schedule Name", - "Site:WaterMainsTemperature,", - "Schedule, !- Calculation Method", - "TskySchedule, !- Temperature Schedule Name", - ", !- Annual Average Outdoor Air Temperature{ C }", - "; !- Maximum Difference In Monthly Average Outdoor Air Temperatures{ deltaC }", - "Output:Variable,*,Schedule Value,hourly;", - "Output:Variable,*,Site Sky Temperature,hourly;", - "Output:Variable,*,Site Mains Water Temperature,hourly; !- Zone Average[C]", - " Site:Location,", - " USA IL-CHICAGO-OHARE, !- Name", - " 41.77, !- Latitude {deg}", - " -87.75, !- Longitude {deg}", - " -6.00, !- Time Zone {hr}", - " 190; !- Elevation {m}", }); ASSERT_FALSE( process_idf( idf_objects ) ); - bool errors; + bool errors_in_input( false ); int totalrps( 1 ); - WeatherManager::GetRunPeriodData( totalrps, errors) ; - EXPECT_EQ( WeatherManager::WeekDay::Tuesday, WeatherManager::RunPeriodInput[ 0 ].startWeekDay ); - EXPECT_EQ( 2007, WeatherManager::RunPeriodInput[ 0 ].startYear ); - EXPECT_EQ( 2454159, WeatherManager::RunPeriodInput[ 0 ].startJulianDate ); - EXPECT_EQ( 2454163, WeatherManager::RunPeriodInput[ 0 ].endJulianDate); - - Array2D< Real64 > TomorrowSkyTemp; // Sky temperature - DataGlobals::NumOfTimeStepInHour = 4; - DataGlobals::MinutesPerTimeStep = 60 / DataGlobals::NumOfTimeStepInHour; - TomorrowSkyTemp.allocate( DataGlobals::NumOfTimeStepInHour, 24 ); - TomorrowSkyTemp = 0.0; - - //Febuary 27 - ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 58, 3); - EXPECT_NEAR(2.27, TomorrowSkyTemp(1,1), .001); - - //Febuary 28 - ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 59, 4); - EXPECT_NEAR(2.28, TomorrowSkyTemp(1, 1), .001); - - //March 1 - ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 60, 5); - EXPECT_NEAR(3.01, TomorrowSkyTemp(1, 1), .001); - - //Not March 2, this "Day" is ignored unless its a leap year, otherwise same data as March 1 - ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 61, 6); - EXPECT_NEAR(3.01, TomorrowSkyTemp(1, 1), .001); - - //March 2 - ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 62, 6); - EXPECT_NEAR(3.02, TomorrowSkyTemp(1, 1), .001); -} - -TEST_F( EnergyPlusFixture, RunPeriod_JGDate_Test ) -{ - // used http://aa.usno.navy.mil/data/docs/JulianDate.php - // - int julianDate; - int gregorianYear; - int gregorianMonth; - int gregorianDay; - - gregorianYear = 2016; // when test was made - gregorianMonth = 5; - gregorianDay = 25; - JGDate( GregorianToJulian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); - EXPECT_EQ( 2457534, julianDate ); - JGDate( JulianToGregorian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); - EXPECT_EQ( 2016, gregorianYear ); - EXPECT_EQ( 5, gregorianMonth ); - EXPECT_EQ( 25, gregorianDay ); - - gregorianYear = 2015; // a year before when test was made - gregorianMonth = 5; - gregorianDay = 25; - JGDate( GregorianToJulian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); - EXPECT_EQ( 2457168, julianDate ); - JGDate( JulianToGregorian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); - EXPECT_EQ( 2015, gregorianYear ); - EXPECT_EQ( 5, gregorianMonth ); - EXPECT_EQ( 25, gregorianDay ); - - gregorianYear = 1966; // a fine date in history - gregorianMonth = 7; - gregorianDay = 16; - JGDate( GregorianToJulian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); - EXPECT_EQ( 2439323, julianDate ); - JGDate( JulianToGregorian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); - EXPECT_EQ( 1966, gregorianYear ); - EXPECT_EQ( 7, gregorianMonth ); - EXPECT_EQ( 16, gregorianDay ); + WeatherManager::GetRunPeriodData( totalrps, errors_in_input ); - gregorianYear = 2000; //complex leap year - gregorianMonth = 12; - gregorianDay = 31; - JGDate( GregorianToJulian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); - EXPECT_EQ( 2451910, julianDate ); - JGDate( JulianToGregorian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); - EXPECT_EQ( 2000, gregorianYear ); - EXPECT_EQ( 12, gregorianMonth ); - EXPECT_EQ( 31, gregorianDay ); + EXPECT_TRUE( errors_in_input ); } diff --git a/tst/EnergyPlus/unit/SolarShading.unit.cc b/tst/EnergyPlus/unit/SolarShading.unit.cc index 5350c744227..cc11f7274ae 100644 --- a/tst/EnergyPlus/unit/SolarShading.unit.cc +++ b/tst/EnergyPlus/unit/SolarShading.unit.cc @@ -322,11 +322,11 @@ TEST_F( EnergyPlusFixture, SolarShadingTest_FigureSolarBeamAtTimestep ) " , !- Name ", " 1, !- Begin Month ", " 1, !- Begin Day of Month ", + " , !- Begin Year ", " 12, !- End Month ", " 31, !- End Day of Month ", + " , !- End Year ", " , !- Day of Week for Start Day ", - " , !- Use Weather File Holidays and Special Days ", - " , !- Use Weather File Daylight Saving Period ", " , !- Apply Weekend Holiday Rule ", " , !- Use Weather File Rain Indicators ", " ; !- Use Weather File Snow Indicators ", @@ -704,11 +704,11 @@ TEST_F( EnergyPlusFixture, SolarShadingTest_ExternalShadingIO ) " , !- Name ", " 1, !- Begin Month ", " 1, !- Begin Day of Month ", + " , !- Begin Year ", " 12, !- End Month ", " 31, !- End Day of Month ", + " , !- End Year ", " , !- Day of Week for Start Day ", - " , !- Use Weather File Holidays and Special Days ", - " , !- Use Weather File Daylight Saving Period ", " , !- Apply Weekend Holiday Rule ", " , !- Use Weather File Rain Indicators ", " ; !- Use Weather File Snow Indicators ", diff --git a/tst/EnergyPlus/unit/UnitHeater.unit.cc b/tst/EnergyPlus/unit/UnitHeater.unit.cc index 699f9086a68..57b3a4c38b9 100644 --- a/tst/EnergyPlus/unit/UnitHeater.unit.cc +++ b/tst/EnergyPlus/unit/UnitHeater.unit.cc @@ -148,11 +148,11 @@ TEST_F( EnergyPlusFixture, UnitHeater_HWHeatingCoilUAAutoSizingTest ) { " , !- Name", " 1, !- Begin Month", " 14, !- Begin Day of Month", + " , !- Begin Year", " 1, !- End Month", " 14, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", diff --git a/tst/EnergyPlus/unit/VentilatedSlab.unit.cc b/tst/EnergyPlus/unit/VentilatedSlab.unit.cc index 319547540fb..12d6da9f5e8 100644 --- a/tst/EnergyPlus/unit/VentilatedSlab.unit.cc +++ b/tst/EnergyPlus/unit/VentilatedSlab.unit.cc @@ -246,11 +246,11 @@ TEST_F( EnergyPlusFixture, VentilatedSlab_InitVentilatedSlabTest ) { " , !- Name", " 7, !- Begin Month", " 5, !- Begin Day of Month", + " , !- Begin Year", " 7, !- End Month", " 12, !- End Day of Month", + " , !- End Year", " UseWeatherFile, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", diff --git a/tst/EnergyPlus/unit/WeatherManager.unit.cc b/tst/EnergyPlus/unit/WeatherManager.unit.cc index 11b3d0df2ee..d8900791199 100644 --- a/tst/EnergyPlus/unit/WeatherManager.unit.cc +++ b/tst/EnergyPlus/unit/WeatherManager.unit.cc @@ -78,12 +78,12 @@ TEST_F(EnergyPlusFixture, SkyTempTest ) "RunPeriod,", ", !- Name", "2, !- Begin Month", - "27, !- Begin Day of Month", - "3, !- End Month", - "3, !- End Day of Month", + "27, !- Begin Day of Month", + ", !- Begin Year", + "3, !- End Month", + "3, !- End Day of Month", + ", !- End Year", "Tuesday, !- Day of Week for Start Day", - "Yes, !- Use Weather File Holidays and Special Days", - "Yes, !- Use Weather File Daylight Saving Period", "No, !- Apply Weekend Holiday Rule", "Yes, !- Use Weather File Rain Indicators", "Yes; !- Use Weather File Snow Indicators", diff --git a/tst/EnergyPlus/unit/WindowManager.unit.cc b/tst/EnergyPlus/unit/WindowManager.unit.cc index f9841efebd3..c01ed5e3102 100644 --- a/tst/EnergyPlus/unit/WindowManager.unit.cc +++ b/tst/EnergyPlus/unit/WindowManager.unit.cc @@ -638,11 +638,11 @@ TEST_F( EnergyPlusFixture, SpectralAngularPropertyTest ) " , !- Name", " 1, !- Begin Month", " 14, !- Begin Day of Month", + " , !- Begin Year", " 1, !- End Month", " 14, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", @@ -651,11 +651,11 @@ TEST_F( EnergyPlusFixture, SpectralAngularPropertyTest ) " , !- Name", " 7, !- Begin Month", " 7, !- Begin Day of Month", + " , !- Begin Year", " 7, !- End Month", " 7, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " No; !- Use Weather File Snow Indicators", From 3a4e7b34c8d013b341399e10678b91762ae33a21 Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Tue, 13 Feb 2018 23:47:04 -0700 Subject: [PATCH 05/47] Roll back a few more changes --- idd/Energy+.idd.in | 25 ++++++++-- src/EnergyPlus/WeatherManager.cc | 46 ++++++++++++++----- .../unit/AirflowNetworkBalanceManager.unit.cc | 4 ++ .../unit/DesiccantDehumidifiers.unit.cc | 8 ++++ tst/EnergyPlus/unit/HVACFourPipeBeam.unit.cc | 2 + .../unit/HeatBalanceManager.unit.cc | 4 ++ .../unit/HeatBalanceSurfaceManager.unit.cc | 10 ++++ .../unit/OASystemHWPreheatCoil.unit.cc | 4 ++ .../PlantHeatExchangerFluidToFluid.unit.cc | 4 ++ tst/EnergyPlus/unit/RunPeriod.unit.cc | 10 ++++ tst/EnergyPlus/unit/SolarShading.unit.cc | 4 ++ tst/EnergyPlus/unit/UnitHeater.unit.cc | 2 + tst/EnergyPlus/unit/VentilatedSlab.unit.cc | 2 + tst/EnergyPlus/unit/WeatherManager.unit.cc | 2 + tst/EnergyPlus/unit/WindowManager.unit.cc | 4 ++ 15 files changed, 114 insertions(+), 17 deletions(-) diff --git a/idd/Energy+.idd.in b/idd/Energy+.idd.in index d0c22ade17a..807e9a7c32c 100644 --- a/idd/Energy+.idd.in +++ b/idd/Energy+.idd.in @@ -1226,7 +1226,7 @@ SizingPeriod:WeatherFileConditionType, RunPeriod, \memo Specify a range of dates and other parameters for a simulation. \memo Multiple run periods may be input, but they may not overlap. - \min-fields 5 + \min-fields 7 A1 , \field Name \reference RunPeriodsAndDesignDays \note descriptive name (used in reporting mainly) @@ -1266,23 +1266,38 @@ RunPeriod, \key Thursday \key Friday \key Saturday - A3, \field Apply Weekend Holiday Rule + A3, \field Use Weather File Holidays and Special Days + \note If yes or blank, use holidays as specified on Weatherfile. + \note If no, do not use the holidays specified on the Weatherfile. + \note Note: You can still specify holidays/special days using the RunPeriodControl:SpecialDays object(s). + \type choice + \default Yes + \key Yes + \key No + A4, \field Use Weather File Daylight Saving Period + \note If yes or blank, use daylight saving period as specified on Weatherfile. + \note If no, do not use the daylight saving period as specified on the Weatherfile. + \type choice + \default Yes + \key Yes + \key No + A5, \field Apply Weekend Holiday Rule \note if yes and single day holiday falls on weekend, "holiday" occurs on following Monday \type choice \key Yes \key No \default No - A4, \field Use Weather File Rain Indicators + A6, \field Use Weather File Rain Indicators \type choice \key Yes \key No \default Yes - A5, \field Use Weather File Snow Indicators + A7, \field Use Weather File Snow Indicators \type choice \key Yes \key No \default Yes - A6; \field Treat Weather as Actual + A8; \field Treat Weather as Actual \type choice \key Yes \key No diff --git a/src/EnergyPlus/WeatherManager.cc b/src/EnergyPlus/WeatherManager.cc index 32deadd7fba..ab98a42ccb1 100644 --- a/src/EnergyPlus/WeatherManager.cc +++ b/src/EnergyPlus/WeatherManager.cc @@ -5741,44 +5741,66 @@ Label9999: ; RunPeriodInput(Loop).endJulianDate = computeJulianDate(RunPeriodInput(Loop).endYear, RunPeriodInput(Loop).endMonth, RunPeriodInput(Loop).endDay); } - // A3, \field Apply Weekend Holiday Rule - if ( lAlphaFieldBlanks( 3) || SameString( cAlphaArgs( 3 ), "YES" ) ) { - RunPeriodInput( Loop ).ApplyWeekendRule = true; + // A3, \field Use Weather File Holidays and Special Days + if ( lAlphaFieldBlanks( 3 ) || SameString( cAlphaArgs( 3 ), "YES" ) ) { + RunPeriodInput( Loop ).UseHolidays = true; } else if ( SameString( cAlphaArgs( 3 ), "NO" ) ) { - RunPeriodInput( Loop ).ApplyWeekendRule = false; + RunPeriodInput( Loop ).UseHolidays = false; } else { ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 3 ) + " invalid [" + cAlphaArgs( 3 ) + ']' ); ErrorsFound = true; } - // A4, \field Use Weather File Rain Indicators + // A4, \field Use Weather File Daylight Saving Period if ( lAlphaFieldBlanks( 4 ) || SameString( cAlphaArgs( 4 ), "YES" ) ) { - RunPeriodInput( Loop ).UseRain = true; + RunPeriodInput( Loop ).UseDST = true; } else if ( SameString( cAlphaArgs( 4 ), "NO" ) ) { - RunPeriodInput( Loop ).UseRain = false; + RunPeriodInput( Loop ).UseDST = false; } else { ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 4 ) + " invalid [" + cAlphaArgs( 4 ) + ']' ); ErrorsFound = true; } - // A5, \field Use Weather File Snow Indicators + // A5, \field Apply Weekend Holiday Rule if ( lAlphaFieldBlanks( 5 ) || SameString( cAlphaArgs( 5 ), "YES" ) ) { - RunPeriodInput( Loop ).UseSnow = true; + RunPeriodInput( Loop ).ApplyWeekendRule = true; } else if ( SameString( cAlphaArgs( 5 ), "NO" ) ) { - RunPeriodInput( Loop ).UseSnow = false; + RunPeriodInput( Loop ).ApplyWeekendRule = false; } else { ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 5 ) + " invalid [" + cAlphaArgs( 5 ) + ']' ); ErrorsFound = true; } - // A6, \field Treat Weather as Actual + // A6, \field Use Weather File Rain Indicators if ( lAlphaFieldBlanks( 6 ) || SameString( cAlphaArgs( 6 ), "YES" ) ) { - RunPeriodInput( Loop ).actualWeather = true; + RunPeriodInput( Loop ).UseRain = true; + } else if ( SameString( cAlphaArgs( 6 ), "NO" ) ) { + RunPeriodInput( Loop ).UseRain = false; } else { ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 6 ) + " invalid [" + cAlphaArgs( 6 ) + ']' ); ErrorsFound = true; } + // A7, \field Use Weather File Snow Indicators + if ( lAlphaFieldBlanks( 7 ) || SameString( cAlphaArgs( 7 ), "YES" ) ) { + RunPeriodInput( Loop ).UseSnow = true; + } else if ( SameString( cAlphaArgs( 7 ), "NO" ) ) { + RunPeriodInput( Loop ).UseSnow = false; + } else { + ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 7 ) + " invalid [" + cAlphaArgs( 7 ) + ']' ); + ErrorsFound = true; + } + + // A8, \field Treat Weather as Actual + if ( lAlphaFieldBlanks( 8 ) || SameString( cAlphaArgs( 8 ), "YES" ) ) { + RunPeriodInput( Loop ).actualWeather = true; + } else if ( SameString( cAlphaArgs( 8 ), "NO" ) ) { + RunPeriodInput(Loop).actualWeather = false; + } else { + ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 8 ) + " invalid [" + cAlphaArgs( 8 ) + ']' ); + ErrorsFound = true; + } + //calculate the annual start and end days from the user inputted month and day //RunPeriodInput( Loop ).ActualWeather = true; RunPeriodInput( Loop ).MonWeekDay = 0; diff --git a/tst/EnergyPlus/unit/AirflowNetworkBalanceManager.unit.cc b/tst/EnergyPlus/unit/AirflowNetworkBalanceManager.unit.cc index 38b70072d72..cb5ab4ed949 100644 --- a/tst/EnergyPlus/unit/AirflowNetworkBalanceManager.unit.cc +++ b/tst/EnergyPlus/unit/AirflowNetworkBalanceManager.unit.cc @@ -3088,6 +3088,8 @@ namespace EnergyPlus { " 31, !- End Day of Month", " , !- End Year", " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", @@ -8690,6 +8692,8 @@ namespace EnergyPlus { " 31, !- End Day of Month", " , !- End Year", " Sunday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", diff --git a/tst/EnergyPlus/unit/DesiccantDehumidifiers.unit.cc b/tst/EnergyPlus/unit/DesiccantDehumidifiers.unit.cc index 8c912e3825c..433f9ffe23a 100644 --- a/tst/EnergyPlus/unit/DesiccantDehumidifiers.unit.cc +++ b/tst/EnergyPlus/unit/DesiccantDehumidifiers.unit.cc @@ -141,6 +141,8 @@ namespace EnergyPlus { " 5, !- End Day of Month", " , !- End Year", " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", @@ -2908,6 +2910,8 @@ namespace EnergyPlus { " 5, !- End Day of Month", " , !- End Year", " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", @@ -4080,6 +4084,8 @@ namespace EnergyPlus { " 5, !- End Day of Month", " , !- End Year", " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", @@ -5497,6 +5503,8 @@ namespace EnergyPlus { " 5, !- End Day of Month", " , !- End Year", " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", diff --git a/tst/EnergyPlus/unit/HVACFourPipeBeam.unit.cc b/tst/EnergyPlus/unit/HVACFourPipeBeam.unit.cc index 92bf46acf39..ec273696211 100644 --- a/tst/EnergyPlus/unit/HVACFourPipeBeam.unit.cc +++ b/tst/EnergyPlus/unit/HVACFourPipeBeam.unit.cc @@ -226,6 +226,8 @@ namespace EnergyPlus { " 31, !- End Day of Month", " , !- End Year", " Sunday, !- Day of Week for Start Day", + " No, !- Use Weather File Holidays and Special Days", + " No, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", diff --git a/tst/EnergyPlus/unit/HeatBalanceManager.unit.cc b/tst/EnergyPlus/unit/HeatBalanceManager.unit.cc index 920fd899b21..e0e4accf5e6 100644 --- a/tst/EnergyPlus/unit/HeatBalanceManager.unit.cc +++ b/tst/EnergyPlus/unit/HeatBalanceManager.unit.cc @@ -767,6 +767,8 @@ namespace EnergyPlus { " 14, !- End Day of Month", " , !- End Year", " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", @@ -780,6 +782,8 @@ namespace EnergyPlus { " 7, !- End Day of Month", " , !- End Year", " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " No; !- Use Weather File Snow Indicators", diff --git a/tst/EnergyPlus/unit/HeatBalanceSurfaceManager.unit.cc b/tst/EnergyPlus/unit/HeatBalanceSurfaceManager.unit.cc index 5df807e01d4..a1fe1fae701 100644 --- a/tst/EnergyPlus/unit/HeatBalanceSurfaceManager.unit.cc +++ b/tst/EnergyPlus/unit/HeatBalanceSurfaceManager.unit.cc @@ -371,6 +371,8 @@ namespace EnergyPlus { " 14, !- End Day of Month", " , !- End Year", " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", @@ -384,6 +386,8 @@ namespace EnergyPlus { " 7, !- End Day of Month", " , !- End Year", " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " No; !- Use Weather File Snow Indicators", @@ -867,6 +871,8 @@ namespace EnergyPlus { " 14, !- End Day of Month", " , !- End Year", " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", @@ -880,6 +886,8 @@ namespace EnergyPlus { " 7, !- End Day of Month", " , !- End Year", " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " No; !- Use Weather File Snow Indicators", @@ -1417,6 +1425,8 @@ namespace EnergyPlus { " 14, !- End Day of Month", " , !- End Year", " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", diff --git a/tst/EnergyPlus/unit/OASystemHWPreheatCoil.unit.cc b/tst/EnergyPlus/unit/OASystemHWPreheatCoil.unit.cc index ce1e47a693a..f6ac158929e 100644 --- a/tst/EnergyPlus/unit/OASystemHWPreheatCoil.unit.cc +++ b/tst/EnergyPlus/unit/OASystemHWPreheatCoil.unit.cc @@ -102,6 +102,8 @@ namespace EnergyPlus { " 31, !- End Day of Month", " , !- End Year", " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", @@ -1080,6 +1082,8 @@ namespace EnergyPlus { " 31, !- End Day of Month", " , !- End Year", " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", diff --git a/tst/EnergyPlus/unit/PlantHeatExchangerFluidToFluid.unit.cc b/tst/EnergyPlus/unit/PlantHeatExchangerFluidToFluid.unit.cc index e5a88336974..4a47bb51881 100644 --- a/tst/EnergyPlus/unit/PlantHeatExchangerFluidToFluid.unit.cc +++ b/tst/EnergyPlus/unit/PlantHeatExchangerFluidToFluid.unit.cc @@ -140,6 +140,8 @@ namespace EnergyPlus { " 2, !- End Day of Month", " , !- End Year", " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", @@ -1236,6 +1238,8 @@ namespace EnergyPlus { " 2, !- End Day of Month", " , !- End Year", " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", diff --git a/tst/EnergyPlus/unit/RunPeriod.unit.cc b/tst/EnergyPlus/unit/RunPeriod.unit.cc index e1efa9979d7..6cd83685e86 100644 --- a/tst/EnergyPlus/unit/RunPeriod.unit.cc +++ b/tst/EnergyPlus/unit/RunPeriod.unit.cc @@ -84,6 +84,8 @@ TEST_F(EnergyPlusFixture, RunPeriod_YearTests) "3, !- End Day of Month", ", !- End Year", "Monday, !- Day of Week for Start Day", + "Yes, !- Use Weather File Holidays and Special Days", + "Yes, !- Use Weather File Daylight Saving Period", "No, !- Apply Weekend Holiday Rule", "Yes, !- Use Weather File Rain Indicators", "Yes; !- Use Weather File Snow Indicators", @@ -96,6 +98,8 @@ TEST_F(EnergyPlusFixture, RunPeriod_YearTests) "3, !- End Day of Month", ", !- End Year", "Wednesday, !- Day of Week for Start Day", + "Yes, !- Use Weather File Holidays and Special Days", + "Yes, !- Use Weather File Daylight Saving Period", "No, !- Apply Weekend Holiday Rule", "Yes, !- Use Weather File Rain Indicators", "Yes; !- Use Weather File Snow Indicators", @@ -108,6 +112,8 @@ TEST_F(EnergyPlusFixture, RunPeriod_YearTests) "31, !- End Day of Month", ", !- End Year", "Thursday, !- Day of Week for Start Day", + "Yes, !- Use Weather File Holidays and Special Days", + "Yes, !- Use Weather File Daylight Saving Period", "No, !- Apply Weekend Holiday Rule", "Yes, !- Use Weather File Rain Indicators", "Yes; !- Use Weather File Snow Indicators", @@ -120,6 +126,8 @@ TEST_F(EnergyPlusFixture, RunPeriod_YearTests) "31, !- End Day of Month", ", !- End Year", ", !- Day of Week for Start Day", + "Yes, !- Use Weather File Holidays and Special Days", + "Yes, !- Use Weather File Daylight Saving Period", "No, !- Apply Weekend Holiday Rule", "Yes, !- Use Weather File Rain Indicators", "Yes; !- Use Weather File Snow Indicators", @@ -176,6 +184,8 @@ TEST_F( EnergyPlusFixture, RunPeriod_EndYearOnly ) "3, !- End Day of Month", "1997, !- End Year", "Tuesday, !- Day of Week for Start Day", + "Yes, !- Use Weather File Holidays and Special Days", + "Yes, !- Use Weather File Daylight Saving Period", "No, !- Apply Weekend Holiday Rule", "Yes, !- Use Weather File Rain Indicators", "Yes; !- Use Weather File Snow Indicators", diff --git a/tst/EnergyPlus/unit/SolarShading.unit.cc b/tst/EnergyPlus/unit/SolarShading.unit.cc index cc11f7274ae..46b5d3efdd3 100644 --- a/tst/EnergyPlus/unit/SolarShading.unit.cc +++ b/tst/EnergyPlus/unit/SolarShading.unit.cc @@ -327,6 +327,8 @@ TEST_F( EnergyPlusFixture, SolarShadingTest_FigureSolarBeamAtTimestep ) " 31, !- End Day of Month ", " , !- End Year ", " , !- Day of Week for Start Day ", + " , !- Use Weather File Holidays and Special Days ", + " , !- Use Weather File Daylight Saving Period ", " , !- Apply Weekend Holiday Rule ", " , !- Use Weather File Rain Indicators ", " ; !- Use Weather File Snow Indicators ", @@ -709,6 +711,8 @@ TEST_F( EnergyPlusFixture, SolarShadingTest_ExternalShadingIO ) " 31, !- End Day of Month ", " , !- End Year ", " , !- Day of Week for Start Day ", + " , !- Use Weather File Holidays and Special Days ", + " , !- Use Weather File Daylight Saving Period ", " , !- Apply Weekend Holiday Rule ", " , !- Use Weather File Rain Indicators ", " ; !- Use Weather File Snow Indicators ", diff --git a/tst/EnergyPlus/unit/UnitHeater.unit.cc b/tst/EnergyPlus/unit/UnitHeater.unit.cc index 57b3a4c38b9..371b97e6da0 100644 --- a/tst/EnergyPlus/unit/UnitHeater.unit.cc +++ b/tst/EnergyPlus/unit/UnitHeater.unit.cc @@ -153,6 +153,8 @@ TEST_F( EnergyPlusFixture, UnitHeater_HWHeatingCoilUAAutoSizingTest ) { " 14, !- End Day of Month", " , !- End Year", " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", diff --git a/tst/EnergyPlus/unit/VentilatedSlab.unit.cc b/tst/EnergyPlus/unit/VentilatedSlab.unit.cc index 12d6da9f5e8..746e64411e7 100644 --- a/tst/EnergyPlus/unit/VentilatedSlab.unit.cc +++ b/tst/EnergyPlus/unit/VentilatedSlab.unit.cc @@ -251,6 +251,8 @@ TEST_F( EnergyPlusFixture, VentilatedSlab_InitVentilatedSlabTest ) { " 12, !- End Day of Month", " , !- End Year", " UseWeatherFile, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", diff --git a/tst/EnergyPlus/unit/WeatherManager.unit.cc b/tst/EnergyPlus/unit/WeatherManager.unit.cc index d8900791199..12788cd871b 100644 --- a/tst/EnergyPlus/unit/WeatherManager.unit.cc +++ b/tst/EnergyPlus/unit/WeatherManager.unit.cc @@ -84,6 +84,8 @@ TEST_F(EnergyPlusFixture, SkyTempTest ) "3, !- End Day of Month", ", !- End Year", "Tuesday, !- Day of Week for Start Day", + "Yes, !- Use Weather File Holidays and Special Days", + "Yes, !- Use Weather File Daylight Saving Period", "No, !- Apply Weekend Holiday Rule", "Yes, !- Use Weather File Rain Indicators", "Yes; !- Use Weather File Snow Indicators", diff --git a/tst/EnergyPlus/unit/WindowManager.unit.cc b/tst/EnergyPlus/unit/WindowManager.unit.cc index c01ed5e3102..6b8a5c2fae9 100644 --- a/tst/EnergyPlus/unit/WindowManager.unit.cc +++ b/tst/EnergyPlus/unit/WindowManager.unit.cc @@ -643,6 +643,8 @@ TEST_F( EnergyPlusFixture, SpectralAngularPropertyTest ) " 14, !- End Day of Month", " , !- End Year", " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " Yes; !- Use Weather File Snow Indicators", @@ -656,6 +658,8 @@ TEST_F( EnergyPlusFixture, SpectralAngularPropertyTest ) " 7, !- End Day of Month", " , !- End Year", " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", " No; !- Use Weather File Snow Indicators", From 915c7f828a6a98006b6e9f5445b3f849aa6c87f4 Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Wed, 14 Feb 2018 00:02:53 -0700 Subject: [PATCH 06/47] Another small unit test change --- tst/EnergyPlus/unit/VentilatedSlab.unit.cc | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/tst/EnergyPlus/unit/VentilatedSlab.unit.cc b/tst/EnergyPlus/unit/VentilatedSlab.unit.cc index 746e64411e7..44ce6eaab0a 100644 --- a/tst/EnergyPlus/unit/VentilatedSlab.unit.cc +++ b/tst/EnergyPlus/unit/VentilatedSlab.unit.cc @@ -242,21 +242,6 @@ TEST_F( EnergyPlusFixture, VentilatedSlab_InitVentilatedSlabTest ) { " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", " 1.0; !- Sky Clearness", - " RunPeriod,", - " , !- Name", - " 7, !- Begin Month", - " 5, !- Begin Day of Month", - " , !- Begin Year", - " 7, !- End Month", - " 12, !- End Day of Month", - " , !- End Year", - " UseWeatherFile, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " Yes; !- Use Weather File Snow Indicators", - " Site:GroundTemperature:BuildingSurface,20.03,20.03,20.13,20.30,20.43,20.52,20.62,20.77,20.78,20.55,20.44,20.20;", " ScheduleTypeLimits,", From 1c6323ff2a76157d2275711bb9993d780bc0443b Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Wed, 14 Feb 2018 02:09:53 -0700 Subject: [PATCH 07/47] Modify the example files --- .../1ZoneDataCenterCRAC_wPumpedDXCoolingCoil.idf | 4 ++++ testfiles/1ZoneEvapCooler.idf | 2 ++ testfiles/1ZoneParameterAspect.idf | 2 ++ testfiles/1ZoneUncontrolled.idf | 2 ++ testfiles/1ZoneUncontrolled3SurfaceZone.idf | 2 ++ .../1ZoneUncontrolledCondFDWithVariableKat24C.idf | 2 ++ testfiles/1ZoneUncontrolledFourAlgorithms.idf | 2 ++ testfiles/1ZoneUncontrolledResLayers.idf | 2 ++ testfiles/1ZoneUncontrolledWithHysteresisPCM.idf | 2 ++ testfiles/1ZoneUncontrolled_DD2009.idf | 2 ++ testfiles/1ZoneUncontrolled_DDChanges.idf | 2 ++ .../1ZoneUncontrolled_FCfactor_Slab_UGWall.idf | 2 ++ .../1ZoneUncontrolled_OtherEquipmentWithFuel.idf | 2 ++ testfiles/1ZoneUncontrolled_win_1.idf | 2 ++ testfiles/1ZoneUncontrolled_win_2.idf | 2 ++ testfiles/1ZoneWith14ControlledHeat-CoolPanels.idf | 5 +++-- testfiles/2ZoneDataCenterHVAC_wEconomizer.idf | 8 ++++++++ testfiles/4ZoneWithShading_Simple_1.idf | 4 +++- testfiles/4ZoneWithShading_Simple_2.idf | 4 +++- testfiles/5ZoneAirCooled.idf | 2 ++ testfiles/5ZoneAirCooledConvCoef.idf | 4 ++++ testfiles/5ZoneAirCooledConvCoefPIU.idf | 4 ++++ testfiles/5ZoneAirCooledDemandLimiting.idf | 4 ++++ ...irCooledDemandLimiting_FixedRateVentilation.idf | 4 ++++ ...ledDemandLimiting_ReductionRatioVentilation.idf | 4 ++++ testfiles/5ZoneAirCooledWithCoupledInGradeSlab.idf | 2 ++ testfiles/5ZoneAirCooledWithDOASAirLoop.idf | 2 ++ testfiles/5ZoneAirCooledWithSlab.idf | 2 ++ testfiles/5ZoneAirCooled_UniformLoading.idf | 2 ++ testfiles/5ZoneAirCooled_VRPSizing.idf | 2 ++ testfiles/5ZoneAirCooled_VRPSizing_MaxZd.idf | 2 ++ .../5ZoneAirCooled_ZoneAirMassFlowBalance.idf | 4 ++++ ...irCooled_ZoneAirMassFlowBalance_Pressurized.idf | 4 ++++ testfiles/5ZoneAutoDXVAV.idf | 4 ++++ testfiles/5ZoneBoilerOutsideAirReset.idf | 4 ++++ testfiles/5ZoneBranchSupplyPumps.idf | 4 ++++ testfiles/5ZoneCAV_MaxTemp.idf | 5 +++-- testfiles/5ZoneCAVtoVAVWarmestTempFlow.idf | 5 +++-- testfiles/5ZoneCoolBeam.idf | 4 ++++ testfiles/5ZoneCoolingPanelBaseboard.idf | 4 ++++ testfiles/5ZoneCoolingPanelBaseboardAuto.idf | 4 ++++ testfiles/5ZoneCoolingPanelBaseboardTotalLoad.idf | 4 ++++ testfiles/5ZoneCoolingPanelBaseboardVarOff.idf | 4 ++++ testfiles/5ZoneCostEst.idf | 2 ++ testfiles/5ZoneDDCycOnAny.idf | 2 ++ testfiles/5ZoneDDCycOnOne.idf | 2 ++ testfiles/5ZoneDesignInputCoolingCoil.idf | 2 ++ testfiles/5ZoneDetailedIceStorage.idf | 4 ++++ testfiles/5ZoneDetailedIceStorage2.idf | 4 ++++ testfiles/5ZoneDetailedIceStorageCubicLinear.idf | 4 ++++ testfiles/5ZoneDetailedIceStorageSimpleCtrl.idf | 4 ++++ .../5ZoneEconomicsTariffAndLifeCycleCosts.idf | 2 ++ testfiles/5ZoneElectricBaseboard.idf | 4 ++++ testfiles/5ZoneEndUses.idf | 2 ++ testfiles/5ZoneEngChill.idf | 4 ++++ testfiles/5ZoneFPIU.idf | 4 ++++ testfiles/5ZoneFanCoilDOASCool.idf | 2 ++ .../5ZoneFanCoilDOAS_ERVOnAirLoopMainBranch.idf | 2 ++ .../5ZoneFanCoilDOAS_HumidifierOnOASystem.idf | 4 ++++ testfiles/5ZoneGeometryTransform.idf | 2 ++ testfiles/5ZoneIceStorage.idf | 4 ++++ testfiles/5ZoneNightVent1.idf | 2 ++ testfiles/5ZoneNightVent2.idf | 2 ++ testfiles/5ZoneNightVent3.idf | 2 ++ testfiles/5ZoneReturnFan.idf | 4 ++++ testfiles/5ZoneSteamBaseboard.idf | 8 ++++++-- testfiles/5ZoneSupRetPlenRAB.idf | 4 ++++ testfiles/5ZoneSupRetPlenVSATU.idf | 4 ++++ testfiles/5ZoneSwimmingPool.idf | 2 ++ testfiles/5ZoneTDV.idf | 2 ++ testfiles/5ZoneVAV-ChilledWaterStorage-Mixed.idf | 2 ++ ...ZoneVAV-ChilledWaterStorage-Mixed_DCV_MaxZd.idf | 2 ++ ...VAV-ChilledWaterStorage-Mixed_DCV_MultiPath.idf | 2 ++ .../5ZoneVAV-ChilledWaterStorage-Stratified.idf | 2 ++ testfiles/5ZoneVAV-Pri-SecLoop.idf | 4 ++++ testfiles/5ZoneWLHPPlantLoopTower.idf | 4 ++++ testfiles/5ZoneWarmest.idf | 4 ++++ testfiles/5ZoneWarmestMultDDSizBypass.idf | 4 ++++ testfiles/5ZoneWarmestMultDDSizOnOff.idf | 4 ++++ testfiles/5ZoneWarmestMultDDSizVAV.idf | 4 ++++ testfiles/5ZoneWarmestMultDDSizVT.idf | 4 ++++ testfiles/5ZoneWarmestVFD.idf | 4 ++++ testfiles/5ZoneWarmestVFD_FCMAuto.idf | 2 ++ testfiles/5ZoneWaterCooled_Baseboard.idf | 4 ++++ .../5ZoneWaterCooled_BaseboardScalableSizing.idf | 4 ++++ .../5ZoneWaterCooled_GasFiredSteamHumidifier.idf | 4 ++++ testfiles/5ZoneWaterCooled_HighRHControl.idf | 4 ++++ .../5ZoneWaterCooled_MultizoneAverageRHControl.idf | 4 ++++ .../5ZoneWaterCooled_MultizoneMinMaxRHControl.idf | 4 ++++ testfiles/5ZoneWaterLoopHeatPump.idf | 4 ++++ .../5Zone_IdealLoadsAirSystems_ReturnPlenum.idf | 4 ++++ testfiles/5Zone_Transformer.idf | 4 ++++ testfiles/5Zone_Unitary_HXAssistedCoil.idf | 4 ++++ .../5Zone_Unitary_VSDesuperheatWaterHeater.idf | 4 ++++ testfiles/5Zone_Unitary_VSDesuperheater.idf | 4 ++++ testfiles/ASIHPMixedTank.idf | 4 ++++ testfiles/AbsorptionChiller.idf | 4 ++++ testfiles/ActiveTrombeWall.idf | 2 ++ testfiles/AdaptiveThermostatASH55_5Zone_Miami.idf | 2 ++ testfiles/AirCooledElectricChiller.idf | 4 ++++ ...zerFaults_RefBldgLargeOfficeNew2004_Chicago.idf | 5 +++-- testfiles/AirEconomizerWithMaxMinOAFractions.idf | 2 ++ testfiles/AirflowNetwork3zVent.idf | 4 +++- testfiles/AirflowNetwork3zVentAutoWPC.idf | 4 +++- .../AirflowNetworkOccupantVentilationControl.idf | 4 +++- testfiles/AirflowNetwork_Attic_Duct.idf | 2 ++ testfiles/AirflowNetwork_MultiZone_House.idf | 4 ++++ ...flowNetwork_MultiZone_House_OvercoolDehumid.idf | 2 ++ .../AirflowNetwork_MultiZone_House_TwoSpeed.idf | 4 ++++ testfiles/AirflowNetwork_MultiZone_LocalNode.idf | 2 ++ testfiles/AirflowNetwork_MultiZone_SmallOffice.idf | 4 ++++ ...work_MultiZone_SmallOffice_CoilHXAssistedDX.idf | 4 ++++ ...Network_MultiZone_SmallOffice_GenericContam.idf | 4 ++++ ...work_MultiZone_SmallOffice_HeatRecoveryHXSL.idf | 4 ++++ .../AirflowNetwork_MultiZone_SmallOffice_VAV.idf | 4 ++++ .../AirflowNetwork_Multizone_HorizontalOpening.idf | 4 +++- testfiles/AirflowNetwork_PressureControl.idf | 4 ++++ testfiles/AirflowNetwork_Simple_House.idf | 4 ++++ testfiles/AirflowNetwork_Simple_SmallOffice.idf | 4 ++++ testfiles/BaseBoardElectric.idf | 4 ++++ .../CentralChillerHeaterSystem_Cooling_Heating.idf | 4 ++++ ...erHeaterSystem_Simultaneous_Cooling_Heating.idf | 2 ++ testfiles/ChangeoverBypassVAV.idf | 2 ++ testfiles/ChangeoverBypassVAV_AirToAir.idf | 2 ++ testfiles/ChangeoverBypassVAV_AirToAirHeatPump.idf | 2 ++ testfiles/ChangeoverBypassVAV_MaxTemp.idf | 2 ++ ...LoadCurve_RefBldgLargeOfficeNew2004_Chicago.idf | 5 +++-- testfiles/CmplxGlz_Daylighting_SouthVB45deg.idf | 4 +++- .../CmplxGlz_MeasuredDeflectionAndShading.idf | 4 +++- testfiles/CmplxGlz_SchedSurfGains.idf | 4 +++- testfiles/CmplxGlz_SingleZone_Deflection.idf | 4 +++- testfiles/CmplxGlz_SingleZone_DoubleClearAir.idf | 4 +++- testfiles/CmplxGlz_SingleZone_Vacuum.idf | 4 +++- testfiles/CmplxGlz_SmOff_IntExtShading.idf | 2 ++ testfiles/CoilWaterDesuperheating.idf | 4 ++++ testfiles/CommonPipe_Pri-Sec.idf | 2 ++ testfiles/CompSetPtControl.idf | 4 ++++ testfiles/CondFD1ZonePurchAirAutoSizeWithPCM.idf | 8 ++++++-- testfiles/Convection.idf | 2 ++ testfiles/ConvectionAdaptiveSmallOffice.idf | 10 ++++++---- testfiles/CoolingCoilFreezingPrevention.idf | 2 ++ testfiles/CoolingTower.idf | 4 ++++ testfiles/CoolingTowerDryBulbRangeOp.idf | 4 ++++ testfiles/CoolingTowerNomCap.idf | 4 ++++ testfiles/CoolingTowerRHRangeOp.idf | 4 ++++ testfiles/CoolingTowerWetBulbRangeOp.idf | 4 ++++ testfiles/CoolingTowerWithDBDeltaTempOp.idf | 4 ++++ testfiles/CoolingTowerWithWBDeltaTempOp.idf | 4 ++++ testfiles/CoolingTower_FluidBypass.idf | 5 +++-- testfiles/CoolingTower_MerkelVariableSpeed.idf | 5 +++-- testfiles/CoolingTower_SingleSpeed_MultiCell.idf | 5 +++-- testfiles/CoolingTower_TwoSpeed.idf | 4 ++++ .../CoolingTower_TwoSpeed_CondEntTempReset.idf | 4 ++++ testfiles/CoolingTower_TwoSpeed_MultiCell.idf | 5 +++-- testfiles/CoolingTower_VariableSpeed.idf | 4 ++++ ...CoolingTower_VariableSpeed_CondEntTempReset.idf | 4 ++++ ...riableSpeed_CondEntTempReset_MultipleTowers.idf | 4 ++++ ...ower_VariableSpeed_IdealCondEntTempSetpoint.idf | 4 ++++ ...eed_IdealCondEntTempSetpoint_MultipleTowers.idf | 2 ++ testfiles/CoolingTower_VariableSpeed_MultiCell.idf | 5 +++-- testfiles/CooltowerSimpleTest.idf | 2 ++ testfiles/CooltowerSimpleTestwithVentilation.idf | 2 ++ testfiles/CrossVent_1Zone_AirflowNetwork.idf | 10 ++++++---- ...ent_1Zone_AirflowNetwork_with2CrossflowJets.idf | 10 ++++++---- ...eSpectrum_RefBldgSmallOfficeNew2004_Chicago.idf | 5 +++-- testfiles/DDAutoSize.idf | 4 ++++ testfiles/DElight-Detailed-Comparison.idf | 2 ++ testfiles/DElightCFSLightShelf.idf | 2 ++ testfiles/DElightCFSWindow.idf | 2 ++ testfiles/DOASDXCOIL_wADPBFMethod.idf | 4 ++++ testfiles/DOASDXCOIL_wADPBFMethod_NoReturnPath.idf | 4 ++++ testfiles/DOASDualDuctSchool.idf | 10 ++++++---- testfiles/DOAToFanCoilInlet.idf | 4 ++++ testfiles/DOAToFanCoilSupply.idf | 4 ++++ testfiles/DOAToPTAC.idf | 10 ++++++---- testfiles/DOAToPTHP.idf | 10 ++++++---- testfiles/DOAToUnitVentilator.idf | 4 ++++ testfiles/DOAToUnitarySystem.idf | 10 ++++++---- testfiles/DOAToVRF.idf | 4 ++++ testfiles/DOAToWaterToAirHPInlet.idf | 10 ++++++---- testfiles/DOAToWaterToAirHPSupply.idf | 10 ++++++---- testfiles/DXCoilSystemAuto.idf | 4 ++++ testfiles/DaylightingDeviceShelf.idf | 2 ++ testfiles/DaylightingDeviceTubular.idf | 2 ++ testfiles/DesiccantCVRh.idf | 4 ++++ testfiles/DesiccantCVRhZoneRHCtrl.idf | 4 ++++ .../DesiccantCVRhZoneRHCtrl_AddedAutosize.idf | 4 ++++ .../DesiccantDehumidifierWithAirToAirCoil.idf | 2 ++ .../DesiccantDehumidifierWithCompanionCoil.idf | 2 ++ testfiles/DirectIndirectEvapCoolers.idf | 8 ++++++-- testfiles/DirectIndirectEvapCoolersVSAS.idf | 8 ++++++-- testfiles/DisplacementVent_1ZoneOffice.idf | 2 ++ testfiles/DisplacementVent_Nat_AirflowNetwork.idf | 4 +++- ...mentVent_Nat_AirflowNetwork_AdaptiveComfort.idf | 4 +++- testfiles/DisplacementVent_VAV.idf | 4 +++- testfiles/DualDuctConstVolDamper.idf | 4 ++++ testfiles/DualDuctConstVolGasHC.idf | 4 ++++ testfiles/DualDuctVarVolDamper.idf | 4 ++++ testfiles/DualDuctWaterCoils.idf | 4 ++++ testfiles/DynamicClothing.idf | 2 ++ testfiles/EMPD5ZoneWaterCooled_HighRHControl.idf | 4 ++++ .../EMSAirflowNetworkOpeningControlByHumidity.idf | 2 ++ testfiles/EMSConstantVolumePurchasedAir.idf | 2 ++ .../EMSCurveOverride_PackagedTerminalHeatPump.idf | 4 ++++ testfiles/EMSCustomOutputVariable.idf | 5 +++-- testfiles/EMSCustomSchedule.idf | 5 +++-- testfiles/EMSDemandManager_LargeOffice.idf | 5 +++-- testfiles/EMSDiscreteAirSystemSizes.idf | 5 +++-- testfiles/EMSPlantLoopOverrideControl.idf | 2 ++ testfiles/EMSPlantOperation_largeOff.idf | 5 +++-- .../EMSReplaceTraditionalManagers_LargeOffice.idf | 5 +++-- testfiles/EMSTestMathAndKill.idf | 5 +++-- testfiles/EMSThermochromicWindow.idf | 5 +++-- testfiles/EMSUserDefined5ZoneAirCooled.idf | 4 ++++ testfiles/EMSUserDefinedWindACAuto.idf | 4 ++++ testfiles/EMSWindowShadeControl.idf | 2 ++ testfiles/EarthTubeSimpleTest.idf | 2 ++ testfiles/EcoroofOrlando.idf | 2 ++ testfiles/ElectricChiller.idf | 4 ++++ testfiles/ElectricEIRChiller.idf | 4 ++++ testfiles/ElectricEIRChillerHeatRecoveryAuto.idf | 4 ++++ testfiles/EngineChiller.idf | 4 ++++ testfiles/EquivalentLayerWindow.idf | 2 ++ testfiles/EvaporativeFluidCooler.idf | 4 ++++ testfiles/EvaporativeFluidCooler_TwoSpeed.idf | 4 ++++ testfiles/ExhFiredAbsorptionChiller.idf | 7 ++++--- testfiles/ExteriorLightsAndEq.idf | 2 ++ testfiles/FanCoilAutoSize.idf | 4 ++++ testfiles/FanCoilAutoSizeScalableSizing.idf | 4 ++++ testfiles/FanCoilAutoSize_MultiSpeedFan.idf | 4 ++++ testfiles/FanCoil_HybridVent_VentSch.idf | 4 ++++ ...erSWTSensorOffset_RefBldgLargeOfficeNew2004.idf | 5 +++-- testfiles/Fault_CoilSATSensorOffset.idf | 4 ++++ testfiles/Fault_CondenserSWTSensorOffset.idf | 2 ++ ...FoulingAirFilter_RefBldgMediumOfficeNew2004.idf | 5 +++-- ...lingChillerBoiler_RefBldgLargeOfficeNew2004.idf | 10 ++++++---- testfiles/Fault_FoulingCoolingTower.idf | 2 ++ ...t_FoulingEvapCooler_StripMallZoneEvapCooler.idf | 5 +++-- testfiles/Fault_HumidistatOffset_Supermarket.idf | 2 ++ ...midistatOffset_ThermostatOffset_Supermarket.idf | 2 ++ ...ThermostatOffset_RefBldgMediumOfficeNew2004.idf | 5 +++-- testfiles/Flr_Rf_8Sides.idf | 4 +++- testfiles/FluidCooler.idf | 4 ++++ testfiles/FluidCoolerTwoSpeed.idf | 4 ++++ testfiles/FourPipeBeamLargeOffice.idf | 5 +++-- testfiles/FreeCoolingChiller.idf | 2 ++ testfiles/Furnace.idf | 2 ++ testfiles/FurnaceFuelOil.idf | 2 ++ testfiles/FurnacePLRHeatingCoil.idf | 2 ++ testfiles/FurnaceWithDXSystem.idf | 4 ++++ testfiles/FurnaceWithDXSystemComfortControl.idf | 2 ++ testfiles/FurnaceWithDXSystemRHcontrol.idf | 6 ++++++ .../FurnaceWithDXSystemRHcontrol_cyclingfan.idf | 4 ++++ .../FurnaceWithDXSystem_CoolingHXAssisted.idf | 2 ++ testfiles/GSHP-GLHE-CalcGFunctions.idf | 2 ++ testfiles/GSHP-GLHE.idf | 4 ++++ testfiles/GSHP-Slinky.idf | 4 ++++ testfiles/GSHPSimple-GLHE.idf | 8 ++++++-- testfiles/GasTurbChiller.idf | 4 ++++ testfiles/GasTurbChillerHeatRecoveryAuto.idf | 4 ++++ testfiles/Generators.idf | 4 ++++ testfiles/Generators_Transformer.idf | 4 ++++ testfiles/GeneratorswithPV.idf | 8 ++++++-- testfiles/GeneratorwithWindTurbine.idf | 4 ++++ testfiles/GeometryTest.idf | 4 +++- testfiles/GroundTempOSCCompactSched.idf | 2 ++ testfiles/HAMT_DailyProfileReport.idf | 14 ++++++++------ testfiles/HAMT_HourlyProfileReport.idf | 7 ++++--- testfiles/HPAirToAir_wSolarCollectorHWCoil.idf | 6 ++++++ testfiles/HP_wICSSolarCollector.idf | 4 ++++ testfiles/HVACStandAloneERV_Economizer.idf | 4 ++++ testfiles/HVACTemplate-5ZoneBaseboardHeat.idf | 4 ++++ ...ACTemplate-5ZoneConstantVolumeChillerBoiler.idf | 4 ++++ testfiles/HVACTemplate-5ZoneDualDuct.idf | 4 ++++ testfiles/HVACTemplate-5ZoneFanCoil-DOAS.idf | 4 ++++ testfiles/HVACTemplate-5ZoneFanCoil.idf | 4 ++++ testfiles/HVACTemplate-5ZoneFurnaceDX.idf | 4 ++++ testfiles/HVACTemplate-5ZonePTAC-DOAS.idf | 4 ++++ testfiles/HVACTemplate-5ZonePTAC.idf | 4 ++++ testfiles/HVACTemplate-5ZonePTHP.idf | 4 ++++ testfiles/HVACTemplate-5ZonePackagedVAV.idf | 4 ++++ testfiles/HVACTemplate-5ZonePurchAir.idf | 4 ++++ testfiles/HVACTemplate-5ZoneUnitaryHeatPump.idf | 4 ++++ testfiles/HVACTemplate-5ZoneUnitarySystem.idf | 4 ++++ testfiles/HVACTemplate-5ZoneVAVFanPowered.idf | 4 ++++ ...emplate-5ZoneVAVWaterCooled-ObjectReference.idf | 4 ++++ testfiles/HVACTemplate-5ZoneVAVWaterCooled.idf | 4 ++++ testfiles/HVACTemplate-5ZoneVRF.idf | 4 ++++ ...Template-5ZoneWaterToAirHeatPumpTowerBoiler.idf | 4 ++++ testfiles/HeaderedPumpsConSpeed.idf | 2 ++ testfiles/HeaderedPumpsVarSpeed.idf | 2 ++ testfiles/HeatPump.idf | 4 ++++ testfiles/HeatPumpAirToAirWithRHcontrol.idf | 6 ++++++ testfiles/HeatPumpAuto.idf | 4 ++++ testfiles/HeatPumpIAQP_DCV.idf | 2 ++ testfiles/HeatPumpIAQP_GenericContamControl.idf | 2 ++ testfiles/HeatPumpProportionalControl_DCV.idf | 2 ++ .../HeatPumpProportionalControl_DCVDesignRate.idf | 2 ++ testfiles/HeatPumpSecondaryCoil.idf | 4 ++++ testfiles/HeatPumpSimpleDCV.idf | 4 ++++ testfiles/HeatPumpVRP_DCV.idf | 2 ++ testfiles/HeatPumpVSAS.idf | 4 ++++ testfiles/HeatPumpWaterHeater.idf | 4 ++++ testfiles/HeatPumpWaterHeaterStratified.idf | 4 ++++ testfiles/HeatPumpWaterToAir.idf | 4 ++++ testfiles/HeatPumpWaterToAirEquationFit.idf | 4 ++++ testfiles/HeatPumpWaterToAirWithRHControl.idf | 4 ++++ testfiles/HeatPumpwithBiquadraticCurves.idf | 4 ++++ testfiles/HeatRecoveryElectricChiller.idf | 8 ++++++-- testfiles/HeatRecoveryPlantLoop.idf | 8 ++++++-- testfiles/HeatRecoveryPlantLoopAuto.idf | 8 ++++++-- testfiles/HeatRecoverywithStorageTank.idf | 8 ++++++-- testfiles/HospitalBaseline.idf | 5 +++-- testfiles/HospitalBaselineReheatReportEMS.idf | 5 +++-- testfiles/HospitalLowEnergy.idf | 5 +++-- testfiles/House-2FurnaceAC-SequentialLoad.idf | 6 ++++++ .../House-2FurnaceAC-SequentialUniformPLR.idf | 6 ++++++ testfiles/House-2FurnaceAC-UniformLoad.idf | 6 ++++++ testfiles/House-2FurnaceAC-UniformPLR.idf | 6 ++++++ testfiles/HybridVentilationControl.idf | 4 ++++ testfiles/HybridVentilationControlGlobalSimple.idf | 4 ++++ testfiles/HybridZoneModel.idf | 4 +++- testfiles/IceStorage-Parallel.idf | 4 ++++ testfiles/IceStorage-Series-ChillerDownstream.idf | 4 ++++ testfiles/IceStorage-Series-ChillerUpstream.idf | 4 ++++ testfiles/IndEvapCoolerRTUoffice.idf | 2 ++ testfiles/IndirectAbsorptionChiller.idf | 4 ++++ testfiles/LBuilding-G000.idf | 2 ++ testfiles/LBuilding-G090.idf | 2 ++ testfiles/LBuilding-G180.idf | 2 ++ testfiles/LBuilding-G270.idf | 2 ++ testfiles/LBuildingAppGRotPar.idf | 2 ++ testfiles/LgOffVAV.idf | 4 ++++ testfiles/LgOffVAVusingBasement.idf | 4 ++++ testfiles/LookupTables.idf | 4 ++++ testfiles/LrgOff_GridStorageDemandLeveling.idf | 5 +++-- testfiles/LrgOff_GridStorageEMSSmoothing.idf | 5 +++-- testfiles/LrgOff_GridStorageScheduled.idf | 5 +++-- testfiles/MicroCogeneration.idf | 2 ++ testfiles/Minimal.idf | 2 ++ testfiles/MovableExtInsulationSimple.idf | 2 ++ testfiles/MovableIntInsulationLights.idf | 2 ++ testfiles/MovableIntInsulationLightsLowE.idf | 2 ++ testfiles/MovableIntInsulationSimple.idf | 2 ++ testfiles/MultiSpeedACFurnace.idf | 4 ++++ testfiles/MultiSpeedHP_StagedThermostat.idf | 4 ++++ testfiles/MultiSpeedHeatPump_MultiSolvers.idf | 4 ++++ testfiles/MultiStory.idf | 2 ++ testfiles/MultispeedHeatPump.idf | 4 ++++ testfiles/Mundt_System_Always_On.idf | 2 ++ testfiles/Mundt_System_On_During_the_Day.idf | 2 ++ ...imalStart_RefBldgLargeOfficeNew2004_Chicago.idf | 10 ++++++---- testfiles/OutdoorAirUnit.idf | 4 ++++ testfiles/OutdoorAirUnitwithAirloopHVAC.idf | 4 ++++ testfiles/PIUAuto.idf | 6 ++++++ testfiles/PackagedTerminalAirConditioner.idf | 4 ++++ testfiles/PackagedTerminalAirConditionerVSAS.idf | 4 ++++ testfiles/PackagedTerminalHeatPump.idf | 4 ++++ testfiles/PackagedTerminalHeatPumpVSAS.idf | 4 ++++ testfiles/ParametricInsulation-5ZoneAirCooled.idf | 2 ++ testfiles/PassiveTrombeWall.idf | 2 ++ testfiles/PipeHeatTransfer_Outair.idf | 2 ++ testfiles/PipeHeatTransfer_Schedule.idf | 2 ++ testfiles/PipeHeatTransfer_Underground.idf | 2 ++ testfiles/PipeHeatTransfer_Zone.idf | 2 ++ testfiles/PipingSystem_Underground_FHX.idf | 2 ++ testfiles/PipingSystem_Underground_TwoPipe.idf | 2 ++ ...ngSystem_Underground_TwoPipe_FD_GroundTemps.idf | 2 ++ ...System_Underground_TwoPipe_Xing_GroundTemps.idf | 2 ++ testfiles/PlantApplicationsGuide_Example1.idf | 2 ++ testfiles/PlantApplicationsGuide_Example3.idf | 2 ++ testfiles/PlantComponentTemperatureSource.idf | 2 ++ testfiles/PlantHorizontalGroundHX.idf | 2 ++ testfiles/PlantLoadProfile.idf | 2 ++ testfiles/PlantLoadProfileCoolingReturnReset.idf | 2 ++ .../PlantLoadProfileCoolingReturnResetLookup.idf | 2 ++ .../PlantLoadProfile_AutosizedDistrictHeating.idf | 2 ++ testfiles/PlantLoopChainCooling.idf | 2 ++ testfiles/PlantLoopChainDeadband.idf | 2 ++ testfiles/PlantLoopChainDualDeadband.idf | 2 ++ testfiles/PlantLoopChainHeating.idf | 2 ++ testfiles/PlantPressureDrop.idf | 2 ++ testfiles/PlantPressure_PumpCurve.idf | 2 ++ testfiles/PlantPressure_VFD_Scheduled.idf | 2 ++ testfiles/PlateHeatExchanger.idf | 8 ++++++-- testfiles/Plenum.idf | 2 ++ testfiles/PlenumwithRetAirHeatGain.idf | 2 ++ testfiles/PondGroundHeatExchanger.idf | 4 ++++ testfiles/PurchAirTables.idf | 4 +++- testfiles/PurchAirTables_SQL.idf | 4 +++- testfiles/PurchAirTables_wAnnual.idf | 4 +++- testfiles/PurchAirWindowBlind.idf | 2 ++ testfiles/PurchAirWindowBlind_BlockBeamSolar.idf | 2 ++ testfiles/QTFtest.idf | 2 ++ testfiles/RadHiTempElecTermReheat.idf | 2 ++ testfiles/RadHiTempGasCtrlOpt.idf | 2 ++ testfiles/RadHiTempGasTermReheat.idf | 2 ++ testfiles/RadLoHydrHeatCoolAuto.idf | 4 ++++ testfiles/RadLoHydrHeatCoolAutoCondFD.idf | 4 ++++ testfiles/RadLoTempCFloHeatCool.idf | 2 ++ testfiles/RadLoTempCFloHeatCoolCondFD.idf | 2 ++ .../RadLoTempCFloHeatCool_AddedAutosizing.idf | 2 ++ testfiles/RadLoTempCFloTermReheat.idf | 2 ++ testfiles/RadLoTempElecTermReheat.idf | 2 ++ testfiles/RadLoTempElecTermReheatCondFD.idf | 2 ++ testfiles/RadLoTempHydrCoolTower.idf | 2 ++ testfiles/RadLoTempHydrCoolTowerCondFD.idf | 2 ++ testfiles/RadLoTempHydrCtrlOpt.idf | 2 ++ testfiles/RadLoTempHydrCtrlOpt2.idf | 2 ++ testfiles/RadLoTempHydrHeatCool.idf | 2 ++ testfiles/RadLoTempHydrHeatCool2D.idf | 2 ++ testfiles/RadLoTempHydrHeatCoolDry.idf | 2 ++ testfiles/RadLoTempHydrHeatCoolDryCondFD.idf | 2 ++ testfiles/RadLoTempHydrInterMulti.idf | 2 ++ testfiles/RadLoTempHydrMulti10.idf | 2 ++ testfiles/RadLoTempHydrTermReheat.idf | 2 ++ ...RefBldgFullServiceRestaurantNew2004_Chicago.idf | 5 +++-- testfiles/RefBldgHospitalNew2004_Chicago.idf | 5 +++-- testfiles/RefBldgLargeHotelNew2004_Chicago.idf | 5 +++-- ...fBldgLargeOfficeNew2004_Chicago-ReturnReset.idf | 5 +++-- testfiles/RefBldgLargeOfficeNew2004_Chicago.idf | 5 +++-- testfiles/RefBldgMediumOfficeNew2004_Chicago.idf | 5 +++-- .../RefBldgMidriseApartmentNew2004_Chicago.idf | 5 +++-- testfiles/RefBldgOutPatientNew2004_Chicago.idf | 5 +++-- testfiles/RefBldgPrimarySchoolNew2004_Chicago.idf | 5 +++-- ...efBldgQuickServiceRestaurantNew2004_Chicago.idf | 5 +++-- .../RefBldgSecondarySchoolNew2004_Chicago.idf | 5 +++-- testfiles/RefBldgSmallHotelNew2004_Chicago.idf | 5 +++-- testfiles/RefBldgSmallOfficeNew2004_Chicago.idf | 5 +++-- .../RefBldgStand-aloneRetailNew2004_Chicago.idf | 5 +++-- testfiles/RefBldgStripMallNew2004_Chicago.idf | 5 +++-- testfiles/RefBldgSuperMarketNew2004_Chicago.idf | 5 +++-- testfiles/RefBldgWarehouseNew2004_Chicago.idf | 5 +++-- testfiles/RefMedOffVAVAllDefVRP.idf | 5 +++-- testfiles/RefrigeratedWarehouse.idf | 4 ++++ testfiles/ReliefIndEvapCoolerRTUoffice.idf | 2 ++ testfiles/ReportDaylightFactors.idf | 5 +++-- testfiles/RetailPackagedTESCoil.idf | 5 +++-- testfiles/RoomAirflowNetwork.idf | 4 +++- testfiles/SeriesActiveBranch.idf | 4 ++++ testfiles/ShopWithPVandBattery.idf | 2 ++ testfiles/ShopWithPVandStorage.idf | 2 ++ testfiles/ShopWithSimplePVT.idf | 4 ++++ .../SingleFamilyHouse_TwoSpeed_ZoneAirBalance.idf | 4 ++++ testfiles/SmOffPSZ-MultiModeDX.idf | 6 ++++++ testfiles/SmOffPSZ.idf | 2 ++ testfiles/SmOffPSZ_OnOffStagedControl.idf | 2 ++ testfiles/SolarCollectorFlatPlateWater.idf | 4 ++++ testfiles/SolarShadingTest.idf | 2 ++ testfiles/SolarShadingTest_ExternalFraction.idf | 2 ++ testfiles/SolarShadingTest_SQL.idf | 2 ++ .../SpectralAngularOpticalProperties_TableData.idf | 4 ++++ testfiles/StackedZonesWithInterzoneIRTLayers.idf | 7 ++++--- testfiles/SteamSystemAutoSize.idf | 8 ++++++-- testfiles/StripMallZoneEvapCooler.idf | 5 +++-- testfiles/StripMallZoneEvapCoolerAutosized.idf | 5 +++-- .../SuperMarketDetailed_DesuperHeatingCoil.idf | 4 ++++ testfiles/SuperMarket_DesuperHeatingCoil.idf | 4 ++++ testfiles/SuperMarket_DetailedEvapCondenser.idf | 4 ++++ testfiles/SuperMarket_DetailedWaterCondenser.idf | 4 ++++ testfiles/SuperMarket_EvapCondenser.idf | 4 ++++ testfiles/SuperMarket_SharedEvapCondenser.idf | 4 ++++ testfiles/SuperMarket_WaterCondenser.idf | 4 ++++ testfiles/Supermarket.idf | 4 ++++ testfiles/SupermarketSecondary.idf | 4 ++++ testfiles/SupermarketSubCoolersVariableSuction.idf | 4 ++++ testfiles/SupermarketTranscriticalCO2.idf | 4 ++++ testfiles/SupermarketTwoStageFlashIntercooler.idf | 4 ++++ .../SupermarketTwoStageShellCoilIntercooler.idf | 4 ++++ testfiles/Supermarket_CascadeCond.idf | 4 ++++ testfiles/Supermarket_Detailed.idf | 4 ++++ testfiles/Supermarket_SharedAirCondenser.idf | 4 ++++ testfiles/SupplyPlenumVAV.idf | 2 ++ testfiles/SurfaceGroundHeatExchanger.idf | 4 ++++ testfiles/SurfacePropTest_SurfLWR.idf | 4 +++- testfiles/SurfaceTest.idf | 4 +++- testfiles/SurfaceZonePropTest_LocalEnv.idf | 4 +++- testfiles/TRHConstFlowChillerOneBranch.idf | 4 ++++ testfiles/TRHEvapCoolerOAStaged.idf | 2 ++ testfiles/TRHEvapCoolerOAStagedWetCoil.idf | 2 ++ testfiles/TermRHDXSystem.idf | 4 ++++ testfiles/TermRHGasElecCoils.idf | 4 ++++ testfiles/TermReheat.idf | 4 ++++ testfiles/TermReheatPri-SecLoop.idf | 2 ++ testfiles/TermReheatScheduledPump.idf | 4 ++++ testfiles/TermReheatSurfTC.idf | 2 ++ testfiles/TermRhDualSetpointWithDB.idf | 4 ++++ testfiles/TermRhGenericOAHeatRecMinExh.idf | 4 ++++ testfiles/TermRhGenericOAHeatRecPreheat.idf | 4 ++++ testfiles/TermRhSingleHeatCoolNoDB.idf | 4 ++++ testfiles/ThermalChimneyTest.idf | 2 ++ testfiles/ThermochromicWindow.idf | 5 +++-- testfiles/TranspiredCollectors.idf | 4 ++++ testfiles/TwoWayCommonPipe_Pri-Sec.idf | 4 ++++ testfiles/UnitHeater.idf | 2 ++ testfiles/UnitHeaterAuto.idf | 2 ++ testfiles/UnitHeaterGasElec.idf | 2 ++ testfiles/UnitVent5Zone.idf | 2 ++ testfiles/UnitVent5ZoneAuto.idf | 4 ++++ testfiles/UnitVent5ZoneFixedOANoCoilOpt.idf | 2 ++ testfiles/UnitarySystem_5ZoneWaterLoopHeatPump.idf | 4 ++++ testfiles/UnitarySystem_DXCoilSystemAuto.idf | 4 ++++ .../UnitarySystem_FurnaceWithDXSystemRHcontrol.idf | 6 ++++++ testfiles/UnitarySystem_HeatPumpAuto.idf | 4 ++++ .../UnitarySystem_MultiSpeedCoils_SingleMode.idf | 4 ++++ ...itarySystem_VSHeatPumpWaterToAirEquationFit.idf | 4 ++++ .../UnitarySystem_WaterCoils_wMultiSpeedFan.idf | 6 ++++++ testfiles/UserDefinedRoomAirPatterns.idf | 2 ++ testfiles/VAVSingleDuctConstFlowBoiler.idf | 4 ++++ testfiles/VAVSingleDuctReheat.idf | 4 ++++ testfiles/VAVSingleDuctReheatBaseboard.idf | 4 ++++ testfiles/VAVSingleDuctReheatNoReheat.idf | 4 ++++ testfiles/VAVSingleDuctReheat_DualMax.idf | 4 ++++ .../VAVSingleDuctReheat_MaxSAT_ReverseActing.idf | 4 ++++ testfiles/VAVSingleDuctVarFlowBoiler.idf | 4 ++++ testfiles/VSDXCoilSystemAuto.idf | 4 ++++ testfiles/VSHeatPumpWaterHeater.idf | 4 ++++ testfiles/VSHeatPumpWaterToAirEquationFit.idf | 4 ++++ testfiles/VSHeatPumpWaterToAirWithRHControl.idf | 4 ++++ testfiles/VSWaterHeaterHeatPumpStratifiedTank.idf | 2 ++ testfiles/VariableRefrigerantFlow_5Zone.idf | 4 ++++ .../VariableRefrigerantFlow_FluidTCtrl_5Zone.idf | 4 ++++ ...VariableRefrigerantFlow_FluidTCtrl_HR_5Zone.idf | 4 ++++ testfiles/VaryingLocationAndOrientation.idf | 2 ++ testfiles/VentilatedSlab.idf | 2 ++ testfiles/VentilatedSlab_SeriesSlabs.idf | 4 +++- testfiles/VentilationSimpleTest.idf | 2 ++ testfiles/WWHPSimpleAuto.idf | 8 ++++++-- testfiles/WaterHeaterDHWPlantLoop.idf | 2 ++ testfiles/WaterHeaterHeatPumpStratifiedTank.idf | 2 ++ testfiles/WaterHeaterHeatPumpWrappedCondenser.idf | 2 ++ testfiles/WaterHeaterStandAlone.idf | 2 ++ testfiles/WaterSideEconomizer_Integrated.idf | 2 ++ testfiles/WaterSideEconomizer_NonIntegrated.idf | 2 ++ testfiles/WeatherTimeBins.idf | 2 ++ testfiles/WindACAirtoAir.idf | 4 ++++ testfiles/WindACAuto.idf | 4 ++++ testfiles/WindACRHControl.idf | 4 ++++ testfiles/WindowTests.idf | 4 ++++ testfiles/WindowTestsSimple.idf | 4 ++++ testfiles/ZoneCoupledGroundHTBasement.idf | 2 ++ testfiles/ZoneCoupledGroundHTSlabInGrade.idf | 2 ++ testfiles/ZoneCoupledGroundHTSlabOnGrade.idf | 2 ++ testfiles/ZoneCoupledKivaBasement.idf | 2 ++ testfiles/ZoneCoupledKivaRefBldgMediumOffice.idf | 5 +++-- testfiles/ZoneCoupledKivaSlab.idf | 2 ++ testfiles/ZoneCoupledKivaWalkoutBasement.idf | 2 ++ testfiles/ZoneSysAvailManager.idf | 2 ++ testfiles/ZoneVSWSHP_wDOAS.idf | 2 ++ testfiles/ZoneWSHP_wDOAS.idf | 2 ++ testfiles/_1ZoneUncontrolled_Feb29.idf | 2 ++ testfiles/_1ZoneUncontrolled_SineOSC.idf | 2 ++ testfiles/_1ZoneUncontrolled_customrange.idf | 2 ++ testfiles/_1Zone_Heavy_AdiabaticX2.idf | 7 ++++--- testfiles/_1Zone_Heavy_MassX2.idf | 7 ++++--- testfiles/_1Zone_Heavy_SelfRef.idf | 7 ++++--- testfiles/_5ZoneEvapCooled.idf | 2 ++ testfiles/_AllOffOpScheme.idf | 4 ++++ testfiles/_BranchPumpsWithCommonPipe.idf | 2 ++ testfiles/_CTFTestsPart1.idf | 2 ++ testfiles/_CTFTestsPart2.idf | 2 ++ testfiles/_ConvCoefftest.idf | 2 ++ testfiles/_CoolingTowerDewPointRangeOp.idf | 4 ++++ testfiles/_CoolingTowerWithDPDeltaTempOp.idf | 4 ++++ testfiles/_DOASDXCOIL_wUserSHRMethod.idf | 4 ++++ .../_DemandVentilationFixedRateAndHighPriority.idf | 4 ++++ ...andVentilationReductionRatioAndHighPriority.idf | 4 ++++ ...mandVentilationReductionRatioAndLowPriority.idf | 4 ++++ ...nstVolDamperMultizoneAverageSetPointManager.idf | 4 ++++ testfiles/_ElectricREformulatedEIRChiller.idf | 4 ++++ testfiles/_ExternalInterface-actuator.idf | 2 ++ ...lInterface-functionalmockupunit-to-actuator.idf | 2 ++ ...lInterface-functionalmockupunit-to-schedule.idf | 4 +++- ...lInterface-functionalmockupunit-to-variable.idf | 2 ++ testfiles/_ExternalInterface-schedule.idf | 2 ++ testfiles/_ExternalInterface-variable.idf | 2 ++ testfiles/_FanCoilHybridVentAFN.idf | 4 ++++ testfiles/_FollowSysNodeTemp.idf | 4 ++++ testfiles/_FuelCellTest200.idf | 5 +++-- testfiles/_HybridVentilationControlGlobalAN.idf | 4 ++++ testfiles/_HybridVentilationControl_MinTime.idf | 4 ++++ testfiles/_MaterialTest.idf | 2 ++ testfiles/_MicroCHPTest301.idf | 5 +++-- testfiles/_MultiSpeedACElecFurnace.idf | 4 ++++ testfiles/_PurchAirWindowBlind2.idf | 2 ++ testfiles/_PurchAirWindowBlind3.idf | 2 ++ testfiles/_PurchAirWindowBlind4.idf | 2 ++ testfiles/_SmallOffice_Dulles.idf | 5 +++-- .../_VAVSingleDuctConstFlowBoiler_otherfuel.idf | 4 ++++ 589 files changed, 1918 insertions(+), 235 deletions(-) diff --git a/testfiles/1ZoneDataCenterCRAC_wPumpedDXCoolingCoil.idf b/testfiles/1ZoneDataCenterCRAC_wPumpedDXCoolingCoil.idf index ac515d2f64a..d7bb6b467c1 100644 --- a/testfiles/1ZoneDataCenterCRAC_wPumpedDXCoolingCoil.idf +++ b/testfiles/1ZoneDataCenterCRAC_wPumpedDXCoolingCoil.idf @@ -57,8 +57,10 @@ Jan, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -70,8 +72,10 @@ Jul, !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/1ZoneEvapCooler.idf b/testfiles/1ZoneEvapCooler.idf index 988af06583e..fd7210b2c39 100644 --- a/testfiles/1ZoneEvapCooler.idf +++ b/testfiles/1ZoneEvapCooler.idf @@ -91,8 +91,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/1ZoneParameterAspect.idf b/testfiles/1ZoneParameterAspect.idf index abe595948fa..221c2e86a29 100644 --- a/testfiles/1ZoneParameterAspect.idf +++ b/testfiles/1ZoneParameterAspect.idf @@ -115,8 +115,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/1ZoneUncontrolled.idf b/testfiles/1ZoneUncontrolled.idf index 857d2a30e1b..8f64e80a880 100644 --- a/testfiles/1ZoneUncontrolled.idf +++ b/testfiles/1ZoneUncontrolled.idf @@ -119,8 +119,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/1ZoneUncontrolled3SurfaceZone.idf b/testfiles/1ZoneUncontrolled3SurfaceZone.idf index 1d49905942c..6a1079f8807 100644 --- a/testfiles/1ZoneUncontrolled3SurfaceZone.idf +++ b/testfiles/1ZoneUncontrolled3SurfaceZone.idf @@ -119,8 +119,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/1ZoneUncontrolledCondFDWithVariableKat24C.idf b/testfiles/1ZoneUncontrolledCondFDWithVariableKat24C.idf index c4d7ac54876..64b7ed6e834 100644 --- a/testfiles/1ZoneUncontrolledCondFDWithVariableKat24C.idf +++ b/testfiles/1ZoneUncontrolledCondFDWithVariableKat24C.idf @@ -117,8 +117,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/1ZoneUncontrolledFourAlgorithms.idf b/testfiles/1ZoneUncontrolledFourAlgorithms.idf index 01eff1b2c4b..cbce6fccf3d 100644 --- a/testfiles/1ZoneUncontrolledFourAlgorithms.idf +++ b/testfiles/1ZoneUncontrolledFourAlgorithms.idf @@ -116,8 +116,10 @@ jan, !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 28, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/1ZoneUncontrolledResLayers.idf b/testfiles/1ZoneUncontrolledResLayers.idf index 4315f031fa4..bdf3011834b 100644 --- a/testfiles/1ZoneUncontrolledResLayers.idf +++ b/testfiles/1ZoneUncontrolledResLayers.idf @@ -120,8 +120,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/1ZoneUncontrolledWithHysteresisPCM.idf b/testfiles/1ZoneUncontrolledWithHysteresisPCM.idf index 5c0dd56c1b3..ef91bc053b3 100644 --- a/testfiles/1ZoneUncontrolledWithHysteresisPCM.idf +++ b/testfiles/1ZoneUncontrolledWithHysteresisPCM.idf @@ -119,8 +119,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/1ZoneUncontrolled_DD2009.idf b/testfiles/1ZoneUncontrolled_DD2009.idf index 3b02209da8b..d77d84dd546 100644 --- a/testfiles/1ZoneUncontrolled_DD2009.idf +++ b/testfiles/1ZoneUncontrolled_DD2009.idf @@ -119,8 +119,10 @@ TestRun, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/1ZoneUncontrolled_DDChanges.idf b/testfiles/1ZoneUncontrolled_DDChanges.idf index dfe2aea9efa..236146362b5 100644 --- a/testfiles/1ZoneUncontrolled_DDChanges.idf +++ b/testfiles/1ZoneUncontrolled_DDChanges.idf @@ -122,8 +122,10 @@ TestRun, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/1ZoneUncontrolled_FCfactor_Slab_UGWall.idf b/testfiles/1ZoneUncontrolled_FCfactor_Slab_UGWall.idf index 714b5d49ead..696f296682e 100644 --- a/testfiles/1ZoneUncontrolled_FCfactor_Slab_UGWall.idf +++ b/testfiles/1ZoneUncontrolled_FCfactor_Slab_UGWall.idf @@ -118,8 +118,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/1ZoneUncontrolled_OtherEquipmentWithFuel.idf b/testfiles/1ZoneUncontrolled_OtherEquipmentWithFuel.idf index 4e5ca6262e2..e1b566b8a27 100644 --- a/testfiles/1ZoneUncontrolled_OtherEquipmentWithFuel.idf +++ b/testfiles/1ZoneUncontrolled_OtherEquipmentWithFuel.idf @@ -119,8 +119,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/1ZoneUncontrolled_win_1.idf b/testfiles/1ZoneUncontrolled_win_1.idf index 1c2e5002810..2a25ed4187a 100644 --- a/testfiles/1ZoneUncontrolled_win_1.idf +++ b/testfiles/1ZoneUncontrolled_win_1.idf @@ -119,8 +119,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/1ZoneUncontrolled_win_2.idf b/testfiles/1ZoneUncontrolled_win_2.idf index 16ca2b05894..f91c451b9a0 100644 --- a/testfiles/1ZoneUncontrolled_win_2.idf +++ b/testfiles/1ZoneUncontrolled_win_2.idf @@ -119,8 +119,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/1ZoneWith14ControlledHeat-CoolPanels.idf b/testfiles/1ZoneWith14ControlledHeat-CoolPanels.idf index 463dafefdb7..b7ba2464003 100644 --- a/testfiles/1ZoneWith14ControlledHeat-CoolPanels.idf +++ b/testfiles/1ZoneWith14ControlledHeat-CoolPanels.idf @@ -511,15 +511,16 @@ Annual Run, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year UseWeatherFile, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators Material:NoMass, R13LAYER, !- Name diff --git a/testfiles/2ZoneDataCenterHVAC_wEconomizer.idf b/testfiles/2ZoneDataCenterHVAC_wEconomizer.idf index 7511c171906..5d99e892915 100644 --- a/testfiles/2ZoneDataCenterHVAC_wEconomizer.idf +++ b/testfiles/2ZoneDataCenterHVAC_wEconomizer.idf @@ -142,8 +142,10 @@ WinterSeasonDay, !- Name 1, !- Begin Month 12, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -155,8 +157,10 @@ SpringSeasonDay, !- Name 4, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 4, !- End Month 16, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -168,8 +172,10 @@ SummerSeasonDay, !- Name 7, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 7, !- End Month 16, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -181,8 +187,10 @@ AutumnSeasonDay, !- Name 10, !- Begin Month 12, !- Begin Day of Month + , !- Begin Year 10, !- End Month 16, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/4ZoneWithShading_Simple_1.idf b/testfiles/4ZoneWithShading_Simple_1.idf index 6bbef97487a..558a343191a 100644 --- a/testfiles/4ZoneWithShading_Simple_1.idf +++ b/testfiles/4ZoneWithShading_Simple_1.idf @@ -186,9 +186,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/4ZoneWithShading_Simple_2.idf b/testfiles/4ZoneWithShading_Simple_2.idf index b056b6f158d..5cf871c6d76 100644 --- a/testfiles/4ZoneWithShading_Simple_2.idf +++ b/testfiles/4ZoneWithShading_Simple_2.idf @@ -184,9 +184,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/5ZoneAirCooled.idf b/testfiles/5ZoneAirCooled.idf index 470d65b4d4d..4d3e74920ee 100644 --- a/testfiles/5ZoneAirCooled.idf +++ b/testfiles/5ZoneAirCooled.idf @@ -163,8 +163,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneAirCooledConvCoef.idf b/testfiles/5ZoneAirCooledConvCoef.idf index d1e114b51ca..aa4d4e91c6c 100644 --- a/testfiles/5ZoneAirCooledConvCoef.idf +++ b/testfiles/5ZoneAirCooledConvCoef.idf @@ -178,8 +178,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -191,8 +193,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneAirCooledConvCoefPIU.idf b/testfiles/5ZoneAirCooledConvCoefPIU.idf index d1a68b4f1e3..2435561561d 100644 --- a/testfiles/5ZoneAirCooledConvCoefPIU.idf +++ b/testfiles/5ZoneAirCooledConvCoefPIU.idf @@ -176,8 +176,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -189,8 +191,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneAirCooledDemandLimiting.idf b/testfiles/5ZoneAirCooledDemandLimiting.idf index cd7253342e6..87731c1f8b3 100644 --- a/testfiles/5ZoneAirCooledDemandLimiting.idf +++ b/testfiles/5ZoneAirCooledDemandLimiting.idf @@ -165,8 +165,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -178,8 +180,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneAirCooledDemandLimiting_FixedRateVentilation.idf b/testfiles/5ZoneAirCooledDemandLimiting_FixedRateVentilation.idf index de421f5ad23..9600ffe1126 100644 --- a/testfiles/5ZoneAirCooledDemandLimiting_FixedRateVentilation.idf +++ b/testfiles/5ZoneAirCooledDemandLimiting_FixedRateVentilation.idf @@ -166,8 +166,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -179,8 +181,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneAirCooledDemandLimiting_ReductionRatioVentilation.idf b/testfiles/5ZoneAirCooledDemandLimiting_ReductionRatioVentilation.idf index cba3671e57d..d6809fc3ae9 100644 --- a/testfiles/5ZoneAirCooledDemandLimiting_ReductionRatioVentilation.idf +++ b/testfiles/5ZoneAirCooledDemandLimiting_ReductionRatioVentilation.idf @@ -166,8 +166,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -179,8 +181,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneAirCooledWithCoupledInGradeSlab.idf b/testfiles/5ZoneAirCooledWithCoupledInGradeSlab.idf index 1419e6914db..e1e94beace8 100644 --- a/testfiles/5ZoneAirCooledWithCoupledInGradeSlab.idf +++ b/testfiles/5ZoneAirCooledWithCoupledInGradeSlab.idf @@ -161,8 +161,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Wednesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneAirCooledWithDOASAirLoop.idf b/testfiles/5ZoneAirCooledWithDOASAirLoop.idf index fbeb16edf22..f73b78cc2ae 100644 --- a/testfiles/5ZoneAirCooledWithDOASAirLoop.idf +++ b/testfiles/5ZoneAirCooledWithDOASAirLoop.idf @@ -164,8 +164,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneAirCooledWithSlab.idf b/testfiles/5ZoneAirCooledWithSlab.idf index ec72ee55f7f..8a33ba917ae 100644 --- a/testfiles/5ZoneAirCooledWithSlab.idf +++ b/testfiles/5ZoneAirCooledWithSlab.idf @@ -230,8 +230,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneAirCooled_UniformLoading.idf b/testfiles/5ZoneAirCooled_UniformLoading.idf index 29d18544ec7..4afa6848a6c 100644 --- a/testfiles/5ZoneAirCooled_UniformLoading.idf +++ b/testfiles/5ZoneAirCooled_UniformLoading.idf @@ -162,8 +162,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneAirCooled_VRPSizing.idf b/testfiles/5ZoneAirCooled_VRPSizing.idf index 22bf1712ee8..db84eedeae4 100644 --- a/testfiles/5ZoneAirCooled_VRPSizing.idf +++ b/testfiles/5ZoneAirCooled_VRPSizing.idf @@ -163,8 +163,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneAirCooled_VRPSizing_MaxZd.idf b/testfiles/5ZoneAirCooled_VRPSizing_MaxZd.idf index e8933e5c2f8..aa3a7af5051 100644 --- a/testfiles/5ZoneAirCooled_VRPSizing_MaxZd.idf +++ b/testfiles/5ZoneAirCooled_VRPSizing_MaxZd.idf @@ -166,8 +166,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneAirCooled_ZoneAirMassFlowBalance.idf b/testfiles/5ZoneAirCooled_ZoneAirMassFlowBalance.idf index 797c3d958ca..b96cc73ca6a 100644 --- a/testfiles/5ZoneAirCooled_ZoneAirMassFlowBalance.idf +++ b/testfiles/5ZoneAirCooled_ZoneAirMassFlowBalance.idf @@ -173,8 +173,10 @@ WinterRunPeriod, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -186,8 +188,10 @@ SummerRunPeriod, !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneAirCooled_ZoneAirMassFlowBalance_Pressurized.idf b/testfiles/5ZoneAirCooled_ZoneAirMassFlowBalance_Pressurized.idf index ddefc2116fd..935226a780b 100644 --- a/testfiles/5ZoneAirCooled_ZoneAirMassFlowBalance_Pressurized.idf +++ b/testfiles/5ZoneAirCooled_ZoneAirMassFlowBalance_Pressurized.idf @@ -175,8 +175,10 @@ WinterRunPeriod, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -188,8 +190,10 @@ SummerRunPeriod, !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneAutoDXVAV.idf b/testfiles/5ZoneAutoDXVAV.idf index 46c9da61823..d9634746172 100644 --- a/testfiles/5ZoneAutoDXVAV.idf +++ b/testfiles/5ZoneAutoDXVAV.idf @@ -161,8 +161,10 @@ , !- Name 2, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 2, !- End Month 5, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -174,8 +176,10 @@ , !- Name 6, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 6, !- End Month 5, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneBoilerOutsideAirReset.idf b/testfiles/5ZoneBoilerOutsideAirReset.idf index 83f85f51022..bfdc01dd0d7 100644 --- a/testfiles/5ZoneBoilerOutsideAirReset.idf +++ b/testfiles/5ZoneBoilerOutsideAirReset.idf @@ -161,8 +161,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -174,8 +176,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneBranchSupplyPumps.idf b/testfiles/5ZoneBranchSupplyPumps.idf index a6a5807de67..c5ba1fc0986 100644 --- a/testfiles/5ZoneBranchSupplyPumps.idf +++ b/testfiles/5ZoneBranchSupplyPumps.idf @@ -164,8 +164,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -177,8 +179,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneCAV_MaxTemp.idf b/testfiles/5ZoneCAV_MaxTemp.idf index a686185a840..e67ead34480 100644 --- a/testfiles/5ZoneCAV_MaxTemp.idf +++ b/testfiles/5ZoneCAV_MaxTemp.idf @@ -154,15 +154,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators Site:Location, CHICAGO_IL_USA TMY2-94846, !- Name diff --git a/testfiles/5ZoneCAVtoVAVWarmestTempFlow.idf b/testfiles/5ZoneCAVtoVAVWarmestTempFlow.idf index 3b1557f6c35..56dbb5c3157 100644 --- a/testfiles/5ZoneCAVtoVAVWarmestTempFlow.idf +++ b/testfiles/5ZoneCAVtoVAVWarmestTempFlow.idf @@ -146,15 +146,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators Site:Location, CHICAGO_IL_USA TMY2-94846, !- Name diff --git a/testfiles/5ZoneCoolBeam.idf b/testfiles/5ZoneCoolBeam.idf index 06ffa740c11..4f0e5c2cce2 100644 --- a/testfiles/5ZoneCoolBeam.idf +++ b/testfiles/5ZoneCoolBeam.idf @@ -164,8 +164,10 @@ Jan14, !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -177,8 +179,10 @@ July7, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneCoolingPanelBaseboard.idf b/testfiles/5ZoneCoolingPanelBaseboard.idf index 7e821dbeff0..edd5b090244 100644 --- a/testfiles/5ZoneCoolingPanelBaseboard.idf +++ b/testfiles/5ZoneCoolingPanelBaseboard.idf @@ -221,8 +221,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -234,8 +236,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneCoolingPanelBaseboardAuto.idf b/testfiles/5ZoneCoolingPanelBaseboardAuto.idf index c7a601da675..dddc630c920 100644 --- a/testfiles/5ZoneCoolingPanelBaseboardAuto.idf +++ b/testfiles/5ZoneCoolingPanelBaseboardAuto.idf @@ -221,8 +221,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -234,8 +236,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneCoolingPanelBaseboardTotalLoad.idf b/testfiles/5ZoneCoolingPanelBaseboardTotalLoad.idf index 02ffe85567c..83eab7d40c6 100644 --- a/testfiles/5ZoneCoolingPanelBaseboardTotalLoad.idf +++ b/testfiles/5ZoneCoolingPanelBaseboardTotalLoad.idf @@ -221,8 +221,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -234,8 +236,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneCoolingPanelBaseboardVarOff.idf b/testfiles/5ZoneCoolingPanelBaseboardVarOff.idf index 642826aaca3..4adfdf4b8d4 100644 --- a/testfiles/5ZoneCoolingPanelBaseboardVarOff.idf +++ b/testfiles/5ZoneCoolingPanelBaseboardVarOff.idf @@ -221,8 +221,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -234,8 +236,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneCostEst.idf b/testfiles/5ZoneCostEst.idf index dd4c70ffb33..f30db04a8f7 100644 --- a/testfiles/5ZoneCostEst.idf +++ b/testfiles/5ZoneCostEst.idf @@ -52,8 +52,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneDDCycOnAny.idf b/testfiles/5ZoneDDCycOnAny.idf index ad73a6da49a..a981fabffcf 100644 --- a/testfiles/5ZoneDDCycOnAny.idf +++ b/testfiles/5ZoneDDCycOnAny.idf @@ -129,8 +129,10 @@ , !- Name 1, !- Begin Month 25, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneDDCycOnOne.idf b/testfiles/5ZoneDDCycOnOne.idf index cff7f95d02b..cf4194e28cf 100644 --- a/testfiles/5ZoneDDCycOnOne.idf +++ b/testfiles/5ZoneDDCycOnOne.idf @@ -129,8 +129,10 @@ , !- Name 1, !- Begin Month 25, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneDesignInputCoolingCoil.idf b/testfiles/5ZoneDesignInputCoolingCoil.idf index 78604a8f89e..76bbf035e53 100644 --- a/testfiles/5ZoneDesignInputCoolingCoil.idf +++ b/testfiles/5ZoneDesignInputCoolingCoil.idf @@ -165,8 +165,10 @@ , !- Name 6, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 6, !- End Month 21, !- End Day of Month + , !- End Year , !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneDetailedIceStorage.idf b/testfiles/5ZoneDetailedIceStorage.idf index 8bcbd1d895b..d40c6db49c7 100644 --- a/testfiles/5ZoneDetailedIceStorage.idf +++ b/testfiles/5ZoneDetailedIceStorage.idf @@ -181,8 +181,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -194,8 +196,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneDetailedIceStorage2.idf b/testfiles/5ZoneDetailedIceStorage2.idf index 3567278e1aa..381bf02280e 100644 --- a/testfiles/5ZoneDetailedIceStorage2.idf +++ b/testfiles/5ZoneDetailedIceStorage2.idf @@ -181,8 +181,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -194,8 +196,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneDetailedIceStorageCubicLinear.idf b/testfiles/5ZoneDetailedIceStorageCubicLinear.idf index 6ecb0a083f1..26d04e5840c 100644 --- a/testfiles/5ZoneDetailedIceStorageCubicLinear.idf +++ b/testfiles/5ZoneDetailedIceStorageCubicLinear.idf @@ -181,8 +181,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -194,8 +196,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneDetailedIceStorageSimpleCtrl.idf b/testfiles/5ZoneDetailedIceStorageSimpleCtrl.idf index dcd3d06f7b5..8dc47c102ee 100644 --- a/testfiles/5ZoneDetailedIceStorageSimpleCtrl.idf +++ b/testfiles/5ZoneDetailedIceStorageSimpleCtrl.idf @@ -181,8 +181,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -194,8 +196,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneEconomicsTariffAndLifeCycleCosts.idf b/testfiles/5ZoneEconomicsTariffAndLifeCycleCosts.idf index 81d24d53872..68a36e3bbf6 100644 --- a/testfiles/5ZoneEconomicsTariffAndLifeCycleCosts.idf +++ b/testfiles/5ZoneEconomicsTariffAndLifeCycleCosts.idf @@ -166,8 +166,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneElectricBaseboard.idf b/testfiles/5ZoneElectricBaseboard.idf index 8ecd5e5f810..2d943d2a30f 100644 --- a/testfiles/5ZoneElectricBaseboard.idf +++ b/testfiles/5ZoneElectricBaseboard.idf @@ -227,8 +227,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 15, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -240,8 +242,10 @@ , !- Name 4, !- Begin Month 15, !- Begin Day of Month + , !- Begin Year 4, !- End Month 30, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneEndUses.idf b/testfiles/5ZoneEndUses.idf index 020e55f7bda..5be7ee3158b 100644 --- a/testfiles/5ZoneEndUses.idf +++ b/testfiles/5ZoneEndUses.idf @@ -169,8 +169,10 @@ , !- Name 10, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 10, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneEngChill.idf b/testfiles/5ZoneEngChill.idf index 9fbff6b0854..988d9c45e03 100644 --- a/testfiles/5ZoneEngChill.idf +++ b/testfiles/5ZoneEngChill.idf @@ -162,8 +162,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -175,8 +177,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneFPIU.idf b/testfiles/5ZoneFPIU.idf index 05535d46103..579f15694dd 100644 --- a/testfiles/5ZoneFPIU.idf +++ b/testfiles/5ZoneFPIU.idf @@ -168,8 +168,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -181,8 +183,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneFanCoilDOASCool.idf b/testfiles/5ZoneFanCoilDOASCool.idf index 77024c5d8f5..ddcdb4beb1b 100644 --- a/testfiles/5ZoneFanCoilDOASCool.idf +++ b/testfiles/5ZoneFanCoilDOASCool.idf @@ -214,8 +214,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneFanCoilDOAS_ERVOnAirLoopMainBranch.idf b/testfiles/5ZoneFanCoilDOAS_ERVOnAirLoopMainBranch.idf index 35a60690628..673c1221c00 100644 --- a/testfiles/5ZoneFanCoilDOAS_ERVOnAirLoopMainBranch.idf +++ b/testfiles/5ZoneFanCoilDOAS_ERVOnAirLoopMainBranch.idf @@ -215,8 +215,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneFanCoilDOAS_HumidifierOnOASystem.idf b/testfiles/5ZoneFanCoilDOAS_HumidifierOnOASystem.idf index cdb1508468b..6d22deca41d 100644 --- a/testfiles/5ZoneFanCoilDOAS_HumidifierOnOASystem.idf +++ b/testfiles/5ZoneFanCoilDOAS_HumidifierOnOASystem.idf @@ -216,8 +216,10 @@ WinterTypicalDays, !- Name 1, !- Begin Month 21, !- Begin Day of Month + , !- Begin Year 1, !- End Month 27, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -229,8 +231,10 @@ SummerTypicalDays, !- Name 7, !- Begin Month 21, !- Begin Day of Month + , !- Begin Year 7, !- End Month 27, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneGeometryTransform.idf b/testfiles/5ZoneGeometryTransform.idf index 34a6ff8e859..a51b2bb20d5 100644 --- a/testfiles/5ZoneGeometryTransform.idf +++ b/testfiles/5ZoneGeometryTransform.idf @@ -167,8 +167,10 @@ , !- Name 10, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 10, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneIceStorage.idf b/testfiles/5ZoneIceStorage.idf index 5381c94629f..1decd64b2cd 100644 --- a/testfiles/5ZoneIceStorage.idf +++ b/testfiles/5ZoneIceStorage.idf @@ -181,8 +181,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -194,8 +196,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneNightVent1.idf b/testfiles/5ZoneNightVent1.idf index 82b99ba7fda..863308c8b29 100644 --- a/testfiles/5ZoneNightVent1.idf +++ b/testfiles/5ZoneNightVent1.idf @@ -130,8 +130,10 @@ , !- Name 8, !- Begin Month 10, !- Begin Day of Month + , !- Begin Year 8, !- End Month 18, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneNightVent2.idf b/testfiles/5ZoneNightVent2.idf index 5f683b0304f..dd5222fdc24 100644 --- a/testfiles/5ZoneNightVent2.idf +++ b/testfiles/5ZoneNightVent2.idf @@ -139,8 +139,10 @@ , !- Name 8, !- Begin Month 10, !- Begin Day of Month + , !- Begin Year 8, !- End Month 18, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneNightVent3.idf b/testfiles/5ZoneNightVent3.idf index f1a8ac9b7d7..41b7a325241 100644 --- a/testfiles/5ZoneNightVent3.idf +++ b/testfiles/5ZoneNightVent3.idf @@ -142,8 +142,10 @@ Aug10-18, !- Name 8, !- Begin Month 10, !- Begin Day of Month + , !- Begin Year 8, !- End Month 18, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneReturnFan.idf b/testfiles/5ZoneReturnFan.idf index 82d2f8e129f..c175be5e029 100644 --- a/testfiles/5ZoneReturnFan.idf +++ b/testfiles/5ZoneReturnFan.idf @@ -130,8 +130,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -143,8 +145,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneSteamBaseboard.idf b/testfiles/5ZoneSteamBaseboard.idf index 436ee4aa5fe..2b566a60528 100644 --- a/testfiles/5ZoneSteamBaseboard.idf +++ b/testfiles/5ZoneSteamBaseboard.idf @@ -131,9 +131,11 @@ , !- Name 1, !- Begin Month 15, !- Begin Day of Month + , !- Begin Year 1, !- End Month 21, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period , !- Apply Weekend Holiday Rule @@ -144,9 +146,11 @@ , !- Name 4, !- Begin Month 15, !- Begin Day of Month + , !- Begin Year 4, !- End Month 21, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period , !- Apply Weekend Holiday Rule diff --git a/testfiles/5ZoneSupRetPlenRAB.idf b/testfiles/5ZoneSupRetPlenRAB.idf index aa3babebbaf..f7ded6ae559 100644 --- a/testfiles/5ZoneSupRetPlenRAB.idf +++ b/testfiles/5ZoneSupRetPlenRAB.idf @@ -153,8 +153,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -166,8 +168,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneSupRetPlenVSATU.idf b/testfiles/5ZoneSupRetPlenVSATU.idf index bdbc082621a..048b8a77f25 100644 --- a/testfiles/5ZoneSupRetPlenVSATU.idf +++ b/testfiles/5ZoneSupRetPlenVSATU.idf @@ -154,8 +154,10 @@ Jan14, !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -167,8 +169,10 @@ July7, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneSwimmingPool.idf b/testfiles/5ZoneSwimmingPool.idf index e00964198e7..c4f79d5e58b 100644 --- a/testfiles/5ZoneSwimmingPool.idf +++ b/testfiles/5ZoneSwimmingPool.idf @@ -163,8 +163,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneTDV.idf b/testfiles/5ZoneTDV.idf index d2a731b598f..6f115301c2a 100644 --- a/testfiles/5ZoneTDV.idf +++ b/testfiles/5ZoneTDV.idf @@ -164,8 +164,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneVAV-ChilledWaterStorage-Mixed.idf b/testfiles/5ZoneVAV-ChilledWaterStorage-Mixed.idf index 5cea5c087ea..6978ce06d8b 100644 --- a/testfiles/5ZoneVAV-ChilledWaterStorage-Mixed.idf +++ b/testfiles/5ZoneVAV-ChilledWaterStorage-Mixed.idf @@ -86,8 +86,10 @@ annual, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneVAV-ChilledWaterStorage-Mixed_DCV_MaxZd.idf b/testfiles/5ZoneVAV-ChilledWaterStorage-Mixed_DCV_MaxZd.idf index 1928f07fa5f..e70b6a4e2a1 100644 --- a/testfiles/5ZoneVAV-ChilledWaterStorage-Mixed_DCV_MaxZd.idf +++ b/testfiles/5ZoneVAV-ChilledWaterStorage-Mixed_DCV_MaxZd.idf @@ -89,8 +89,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneVAV-ChilledWaterStorage-Mixed_DCV_MultiPath.idf b/testfiles/5ZoneVAV-ChilledWaterStorage-Mixed_DCV_MultiPath.idf index 76a9c867a0a..6d9fa7e0b61 100644 --- a/testfiles/5ZoneVAV-ChilledWaterStorage-Mixed_DCV_MultiPath.idf +++ b/testfiles/5ZoneVAV-ChilledWaterStorage-Mixed_DCV_MultiPath.idf @@ -89,8 +89,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneVAV-ChilledWaterStorage-Stratified.idf b/testfiles/5ZoneVAV-ChilledWaterStorage-Stratified.idf index 07d9eef9daa..523835d1198 100644 --- a/testfiles/5ZoneVAV-ChilledWaterStorage-Stratified.idf +++ b/testfiles/5ZoneVAV-ChilledWaterStorage-Stratified.idf @@ -86,8 +86,10 @@ , !- Name 7, !- Begin Month 11, !- Begin Day of Month + , !- Begin Year 7, !- End Month 18, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneVAV-Pri-SecLoop.idf b/testfiles/5ZoneVAV-Pri-SecLoop.idf index ffa532aca0d..734397ca9ef 100644 --- a/testfiles/5ZoneVAV-Pri-SecLoop.idf +++ b/testfiles/5ZoneVAV-Pri-SecLoop.idf @@ -163,8 +163,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -176,8 +178,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneWLHPPlantLoopTower.idf b/testfiles/5ZoneWLHPPlantLoopTower.idf index e1a0f8a20e0..8ca35154e7c 100644 --- a/testfiles/5ZoneWLHPPlantLoopTower.idf +++ b/testfiles/5ZoneWLHPPlantLoopTower.idf @@ -174,8 +174,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -187,8 +189,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneWarmest.idf b/testfiles/5ZoneWarmest.idf index 5bd39b8e0b5..590a2c84b49 100644 --- a/testfiles/5ZoneWarmest.idf +++ b/testfiles/5ZoneWarmest.idf @@ -175,8 +175,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -188,8 +190,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneWarmestMultDDSizBypass.idf b/testfiles/5ZoneWarmestMultDDSizBypass.idf index ff58066ef8e..25fb2f83dbd 100644 --- a/testfiles/5ZoneWarmestMultDDSizBypass.idf +++ b/testfiles/5ZoneWarmestMultDDSizBypass.idf @@ -175,8 +175,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -188,8 +190,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneWarmestMultDDSizOnOff.idf b/testfiles/5ZoneWarmestMultDDSizOnOff.idf index 1afd0969e15..d843d06a9e9 100644 --- a/testfiles/5ZoneWarmestMultDDSizOnOff.idf +++ b/testfiles/5ZoneWarmestMultDDSizOnOff.idf @@ -175,8 +175,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -188,8 +190,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneWarmestMultDDSizVAV.idf b/testfiles/5ZoneWarmestMultDDSizVAV.idf index 46fd1db2236..2816fccb0dc 100644 --- a/testfiles/5ZoneWarmestMultDDSizVAV.idf +++ b/testfiles/5ZoneWarmestMultDDSizVAV.idf @@ -175,8 +175,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -188,8 +190,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneWarmestMultDDSizVT.idf b/testfiles/5ZoneWarmestMultDDSizVT.idf index b9672781abc..8a0d4566845 100644 --- a/testfiles/5ZoneWarmestMultDDSizVT.idf +++ b/testfiles/5ZoneWarmestMultDDSizVT.idf @@ -175,8 +175,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -188,8 +190,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneWarmestVFD.idf b/testfiles/5ZoneWarmestVFD.idf index b09c176990c..f8b21dc28da 100644 --- a/testfiles/5ZoneWarmestVFD.idf +++ b/testfiles/5ZoneWarmestVFD.idf @@ -179,8 +179,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -192,8 +194,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneWarmestVFD_FCMAuto.idf b/testfiles/5ZoneWarmestVFD_FCMAuto.idf index db31469b1a6..3b9b9a125e4 100644 --- a/testfiles/5ZoneWarmestVFD_FCMAuto.idf +++ b/testfiles/5ZoneWarmestVFD_FCMAuto.idf @@ -173,8 +173,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneWaterCooled_Baseboard.idf b/testfiles/5ZoneWaterCooled_Baseboard.idf index 7ac06ac658a..c28772397bd 100644 --- a/testfiles/5ZoneWaterCooled_Baseboard.idf +++ b/testfiles/5ZoneWaterCooled_Baseboard.idf @@ -220,8 +220,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -233,8 +235,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneWaterCooled_BaseboardScalableSizing.idf b/testfiles/5ZoneWaterCooled_BaseboardScalableSizing.idf index 1fefada5867..5696cfed388 100644 --- a/testfiles/5ZoneWaterCooled_BaseboardScalableSizing.idf +++ b/testfiles/5ZoneWaterCooled_BaseboardScalableSizing.idf @@ -222,8 +222,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -235,8 +237,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneWaterCooled_GasFiredSteamHumidifier.idf b/testfiles/5ZoneWaterCooled_GasFiredSteamHumidifier.idf index 5fa448343f4..c5b171e3735 100644 --- a/testfiles/5ZoneWaterCooled_GasFiredSteamHumidifier.idf +++ b/testfiles/5ZoneWaterCooled_GasFiredSteamHumidifier.idf @@ -179,8 +179,10 @@ , !- Name 1, !- Begin Month 21, !- Begin Day of Month + , !- Begin Year 1, !- End Month 21, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -192,8 +194,10 @@ , !- Name 7, !- Begin Month 16, !- Begin Day of Month + , !- Begin Year 7, !- End Month 16, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneWaterCooled_HighRHControl.idf b/testfiles/5ZoneWaterCooled_HighRHControl.idf index a7f008bf91a..30f3b7fb702 100644 --- a/testfiles/5ZoneWaterCooled_HighRHControl.idf +++ b/testfiles/5ZoneWaterCooled_HighRHControl.idf @@ -172,8 +172,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -185,8 +187,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneWaterCooled_MultizoneAverageRHControl.idf b/testfiles/5ZoneWaterCooled_MultizoneAverageRHControl.idf index dc3a88637b0..fe46e1c4188 100644 --- a/testfiles/5ZoneWaterCooled_MultizoneAverageRHControl.idf +++ b/testfiles/5ZoneWaterCooled_MultizoneAverageRHControl.idf @@ -179,8 +179,10 @@ , !- Name 1, !- Begin Month 21, !- Begin Day of Month + , !- Begin Year 1, !- End Month 21, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -192,8 +194,10 @@ , !- Name 7, !- Begin Month 16, !- Begin Day of Month + , !- Begin Year 7, !- End Month 16, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneWaterCooled_MultizoneMinMaxRHControl.idf b/testfiles/5ZoneWaterCooled_MultizoneMinMaxRHControl.idf index 3c213963454..804ad8c356d 100644 --- a/testfiles/5ZoneWaterCooled_MultizoneMinMaxRHControl.idf +++ b/testfiles/5ZoneWaterCooled_MultizoneMinMaxRHControl.idf @@ -179,8 +179,10 @@ , !- Name 1, !- Begin Month 21, !- Begin Day of Month + , !- Begin Year 1, !- End Month 21, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -192,8 +194,10 @@ , !- Name 7, !- Begin Month 16, !- Begin Day of Month + , !- Begin Year 7, !- End Month 16, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5ZoneWaterLoopHeatPump.idf b/testfiles/5ZoneWaterLoopHeatPump.idf index bbffa300c48..c8287af0ab1 100644 --- a/testfiles/5ZoneWaterLoopHeatPump.idf +++ b/testfiles/5ZoneWaterLoopHeatPump.idf @@ -168,8 +168,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -181,8 +183,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5Zone_IdealLoadsAirSystems_ReturnPlenum.idf b/testfiles/5Zone_IdealLoadsAirSystems_ReturnPlenum.idf index bb2528e1c6f..42de6a26d0b 100644 --- a/testfiles/5Zone_IdealLoadsAirSystems_ReturnPlenum.idf +++ b/testfiles/5Zone_IdealLoadsAirSystems_ReturnPlenum.idf @@ -165,8 +165,10 @@ RP1, !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -178,8 +180,10 @@ RP2, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5Zone_Transformer.idf b/testfiles/5Zone_Transformer.idf index 03d03f150df..086a8716e8b 100644 --- a/testfiles/5Zone_Transformer.idf +++ b/testfiles/5Zone_Transformer.idf @@ -145,8 +145,10 @@ WinterDay, !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -158,8 +160,10 @@ SummerDay, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5Zone_Unitary_HXAssistedCoil.idf b/testfiles/5Zone_Unitary_HXAssistedCoil.idf index f19bc82abfc..93031d3421d 100644 --- a/testfiles/5Zone_Unitary_HXAssistedCoil.idf +++ b/testfiles/5Zone_Unitary_HXAssistedCoil.idf @@ -160,8 +160,10 @@ Feb 1 to 5, !- Name 2, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 2, !- End Month 5, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -173,8 +175,10 @@ June 1 to 5, !- Name 6, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 6, !- End Month 5, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5Zone_Unitary_VSDesuperheatWaterHeater.idf b/testfiles/5Zone_Unitary_VSDesuperheatWaterHeater.idf index d86e52360d0..389b05b9c03 100644 --- a/testfiles/5Zone_Unitary_VSDesuperheatWaterHeater.idf +++ b/testfiles/5Zone_Unitary_VSDesuperheatWaterHeater.idf @@ -160,8 +160,10 @@ Feb 1 to 5, !- Name 2, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 2, !- End Month 5, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -173,8 +175,10 @@ June 1 to 5, !- Name 6, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 6, !- End Month 5, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/5Zone_Unitary_VSDesuperheater.idf b/testfiles/5Zone_Unitary_VSDesuperheater.idf index 564e832a9d1..d1caba9fa36 100644 --- a/testfiles/5Zone_Unitary_VSDesuperheater.idf +++ b/testfiles/5Zone_Unitary_VSDesuperheater.idf @@ -160,8 +160,10 @@ Feb 1 to 5, !- Name 2, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 2, !- End Month 5, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -173,8 +175,10 @@ June 1 to 5, !- Name 6, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 6, !- End Month 5, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ASIHPMixedTank.idf b/testfiles/ASIHPMixedTank.idf index de343ca7f75..cf33d63db87 100644 --- a/testfiles/ASIHPMixedTank.idf +++ b/testfiles/ASIHPMixedTank.idf @@ -1400,8 +1400,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -1413,8 +1415,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/AbsorptionChiller.idf b/testfiles/AbsorptionChiller.idf index c35bfb5f91f..96a388badf5 100644 --- a/testfiles/AbsorptionChiller.idf +++ b/testfiles/AbsorptionChiller.idf @@ -142,8 +142,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -155,8 +157,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ActiveTrombeWall.idf b/testfiles/ActiveTrombeWall.idf index 104e7ecf468..a3e2bed9c20 100644 --- a/testfiles/ActiveTrombeWall.idf +++ b/testfiles/ActiveTrombeWall.idf @@ -104,8 +104,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/AdaptiveThermostatASH55_5Zone_Miami.idf b/testfiles/AdaptiveThermostatASH55_5Zone_Miami.idf index fee1c60a557..25317fe5019 100644 --- a/testfiles/AdaptiveThermostatASH55_5Zone_Miami.idf +++ b/testfiles/AdaptiveThermostatASH55_5Zone_Miami.idf @@ -167,8 +167,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/AirCooledElectricChiller.idf b/testfiles/AirCooledElectricChiller.idf index efdc577dd44..a89488b09fb 100644 --- a/testfiles/AirCooledElectricChiller.idf +++ b/testfiles/AirCooledElectricChiller.idf @@ -127,8 +127,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -140,8 +142,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/AirEconomizerFaults_RefBldgLargeOfficeNew2004_Chicago.idf b/testfiles/AirEconomizerFaults_RefBldgLargeOfficeNew2004_Chicago.idf index c2c1611ea0f..76315312046 100644 --- a/testfiles/AirEconomizerFaults_RefBldgLargeOfficeNew2004_Chicago.idf +++ b/testfiles/AirEconomizerFaults_RefBldgLargeOfficeNew2004_Chicago.idf @@ -98,15 +98,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/AirEconomizerWithMaxMinOAFractions.idf b/testfiles/AirEconomizerWithMaxMinOAFractions.idf index 7e08676bcec..158b02bb424 100644 --- a/testfiles/AirEconomizerWithMaxMinOAFractions.idf +++ b/testfiles/AirEconomizerWithMaxMinOAFractions.idf @@ -162,8 +162,10 @@ , !- Name 3, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 3, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/AirflowNetwork3zVent.idf b/testfiles/AirflowNetwork3zVent.idf index fef1daa2dfe..cddd10785a1 100644 --- a/testfiles/AirflowNetwork3zVent.idf +++ b/testfiles/AirflowNetwork3zVent.idf @@ -162,9 +162,11 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 2, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/AirflowNetwork3zVentAutoWPC.idf b/testfiles/AirflowNetwork3zVentAutoWPC.idf index 50296417008..da81ce827f1 100644 --- a/testfiles/AirflowNetwork3zVentAutoWPC.idf +++ b/testfiles/AirflowNetwork3zVentAutoWPC.idf @@ -160,9 +160,11 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 2, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/AirflowNetworkOccupantVentilationControl.idf b/testfiles/AirflowNetworkOccupantVentilationControl.idf index 07f95ee8046..c94b47fac2f 100644 --- a/testfiles/AirflowNetworkOccupantVentilationControl.idf +++ b/testfiles/AirflowNetworkOccupantVentilationControl.idf @@ -162,9 +162,11 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 3, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/AirflowNetwork_Attic_Duct.idf b/testfiles/AirflowNetwork_Attic_Duct.idf index 0166f8b1a6b..35943261a5b 100644 --- a/testfiles/AirflowNetwork_Attic_Duct.idf +++ b/testfiles/AirflowNetwork_Attic_Duct.idf @@ -106,8 +106,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/AirflowNetwork_MultiZone_House.idf b/testfiles/AirflowNetwork_MultiZone_House.idf index 95f34307fa8..044f968e45f 100644 --- a/testfiles/AirflowNetwork_MultiZone_House.idf +++ b/testfiles/AirflowNetwork_MultiZone_House.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -147,8 +149,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/AirflowNetwork_MultiZone_House_OvercoolDehumid.idf b/testfiles/AirflowNetwork_MultiZone_House_OvercoolDehumid.idf index 776a05c038f..fc556d9f19f 100644 --- a/testfiles/AirflowNetwork_MultiZone_House_OvercoolDehumid.idf +++ b/testfiles/AirflowNetwork_MultiZone_House_OvercoolDehumid.idf @@ -151,8 +151,10 @@ , !- Name 8, !- Begin Month 16, !- Begin Day of Month + , !- Begin Year 8, !- End Month 19, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/AirflowNetwork_MultiZone_House_TwoSpeed.idf b/testfiles/AirflowNetwork_MultiZone_House_TwoSpeed.idf index 6232c2b10f2..684a1b99ee8 100644 --- a/testfiles/AirflowNetwork_MultiZone_House_TwoSpeed.idf +++ b/testfiles/AirflowNetwork_MultiZone_House_TwoSpeed.idf @@ -136,8 +136,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -149,8 +151,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/AirflowNetwork_MultiZone_LocalNode.idf b/testfiles/AirflowNetwork_MultiZone_LocalNode.idf index 7938558729b..2a90012be9b 100644 --- a/testfiles/AirflowNetwork_MultiZone_LocalNode.idf +++ b/testfiles/AirflowNetwork_MultiZone_LocalNode.idf @@ -125,8 +125,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/AirflowNetwork_MultiZone_SmallOffice.idf b/testfiles/AirflowNetwork_MultiZone_SmallOffice.idf index dcfe0cdb133..e129b1bc7a6 100644 --- a/testfiles/AirflowNetwork_MultiZone_SmallOffice.idf +++ b/testfiles/AirflowNetwork_MultiZone_SmallOffice.idf @@ -167,8 +167,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -180,8 +182,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/AirflowNetwork_MultiZone_SmallOffice_CoilHXAssistedDX.idf b/testfiles/AirflowNetwork_MultiZone_SmallOffice_CoilHXAssistedDX.idf index 763d972af10..66e7980daee 100644 --- a/testfiles/AirflowNetwork_MultiZone_SmallOffice_CoilHXAssistedDX.idf +++ b/testfiles/AirflowNetwork_MultiZone_SmallOffice_CoilHXAssistedDX.idf @@ -185,8 +185,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -198,8 +200,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/AirflowNetwork_MultiZone_SmallOffice_GenericContam.idf b/testfiles/AirflowNetwork_MultiZone_SmallOffice_GenericContam.idf index e5e6aa22fd5..af0fe23ac1d 100644 --- a/testfiles/AirflowNetwork_MultiZone_SmallOffice_GenericContam.idf +++ b/testfiles/AirflowNetwork_MultiZone_SmallOffice_GenericContam.idf @@ -173,8 +173,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -186,8 +188,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/AirflowNetwork_MultiZone_SmallOffice_HeatRecoveryHXSL.idf b/testfiles/AirflowNetwork_MultiZone_SmallOffice_HeatRecoveryHXSL.idf index ca5aa617e47..9b2b6d3f7cf 100644 --- a/testfiles/AirflowNetwork_MultiZone_SmallOffice_HeatRecoveryHXSL.idf +++ b/testfiles/AirflowNetwork_MultiZone_SmallOffice_HeatRecoveryHXSL.idf @@ -162,8 +162,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -175,8 +177,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/AirflowNetwork_MultiZone_SmallOffice_VAV.idf b/testfiles/AirflowNetwork_MultiZone_SmallOffice_VAV.idf index e0f68dba1be..e4e38fd0da2 100644 --- a/testfiles/AirflowNetwork_MultiZone_SmallOffice_VAV.idf +++ b/testfiles/AirflowNetwork_MultiZone_SmallOffice_VAV.idf @@ -174,8 +174,10 @@ Winter run, !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -187,8 +189,10 @@ Summer run, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/AirflowNetwork_Multizone_HorizontalOpening.idf b/testfiles/AirflowNetwork_Multizone_HorizontalOpening.idf index a3031a2c16a..9d202ed495c 100644 --- a/testfiles/AirflowNetwork_Multizone_HorizontalOpening.idf +++ b/testfiles/AirflowNetwork_Multizone_HorizontalOpening.idf @@ -182,9 +182,11 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 2, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/AirflowNetwork_PressureControl.idf b/testfiles/AirflowNetwork_PressureControl.idf index d2f413540ca..6116e270abd 100644 --- a/testfiles/AirflowNetwork_PressureControl.idf +++ b/testfiles/AirflowNetwork_PressureControl.idf @@ -167,8 +167,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -180,8 +182,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/AirflowNetwork_Simple_House.idf b/testfiles/AirflowNetwork_Simple_House.idf index aca06010c6a..9b5539c22e6 100644 --- a/testfiles/AirflowNetwork_Simple_House.idf +++ b/testfiles/AirflowNetwork_Simple_House.idf @@ -136,8 +136,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -149,8 +151,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/AirflowNetwork_Simple_SmallOffice.idf b/testfiles/AirflowNetwork_Simple_SmallOffice.idf index 8c534f88d26..b59740057ed 100644 --- a/testfiles/AirflowNetwork_Simple_SmallOffice.idf +++ b/testfiles/AirflowNetwork_Simple_SmallOffice.idf @@ -165,8 +165,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -178,8 +180,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/BaseBoardElectric.idf b/testfiles/BaseBoardElectric.idf index d67179213aa..34c3d01a525 100644 --- a/testfiles/BaseBoardElectric.idf +++ b/testfiles/BaseBoardElectric.idf @@ -219,8 +219,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -232,8 +234,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CentralChillerHeaterSystem_Cooling_Heating.idf b/testfiles/CentralChillerHeaterSystem_Cooling_Heating.idf index 067c8500e39..553e42610a6 100644 --- a/testfiles/CentralChillerHeaterSystem_Cooling_Heating.idf +++ b/testfiles/CentralChillerHeaterSystem_Cooling_Heating.idf @@ -270,8 +270,10 @@ , !- Name 1, !- Begin Month 5, !- Begin Day of Month + , !- Begin Year 1, !- End Month 10, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -283,8 +285,10 @@ , !- Name 7, !- Begin Month 5, !- Begin Day of Month + , !- Begin Year 7, !- End Month 10, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CentralChillerHeaterSystem_Simultaneous_Cooling_Heating.idf b/testfiles/CentralChillerHeaterSystem_Simultaneous_Cooling_Heating.idf index e2099e40db6..c4c518a6520 100644 --- a/testfiles/CentralChillerHeaterSystem_Simultaneous_Cooling_Heating.idf +++ b/testfiles/CentralChillerHeaterSystem_Simultaneous_Cooling_Heating.idf @@ -270,8 +270,10 @@ , !- Name 5, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 5, !- End Month 5, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ChangeoverBypassVAV.idf b/testfiles/ChangeoverBypassVAV.idf index 7321c42f970..113eb686965 100644 --- a/testfiles/ChangeoverBypassVAV.idf +++ b/testfiles/ChangeoverBypassVAV.idf @@ -221,8 +221,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ChangeoverBypassVAV_AirToAir.idf b/testfiles/ChangeoverBypassVAV_AirToAir.idf index b2ff334b827..20b13b32815 100644 --- a/testfiles/ChangeoverBypassVAV_AirToAir.idf +++ b/testfiles/ChangeoverBypassVAV_AirToAir.idf @@ -221,8 +221,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 15, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ChangeoverBypassVAV_AirToAirHeatPump.idf b/testfiles/ChangeoverBypassVAV_AirToAirHeatPump.idf index 00866d92dbf..b6e8e09e0a5 100644 --- a/testfiles/ChangeoverBypassVAV_AirToAirHeatPump.idf +++ b/testfiles/ChangeoverBypassVAV_AirToAirHeatPump.idf @@ -221,8 +221,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 15, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ChangeoverBypassVAV_MaxTemp.idf b/testfiles/ChangeoverBypassVAV_MaxTemp.idf index 21b9c174b9b..5c38fbba55b 100644 --- a/testfiles/ChangeoverBypassVAV_MaxTemp.idf +++ b/testfiles/ChangeoverBypassVAV_MaxTemp.idf @@ -223,8 +223,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 15, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ChillerPartLoadCurve_RefBldgLargeOfficeNew2004_Chicago.idf b/testfiles/ChillerPartLoadCurve_RefBldgLargeOfficeNew2004_Chicago.idf index 12726893694..c69916f4b60 100644 --- a/testfiles/ChillerPartLoadCurve_RefBldgLargeOfficeNew2004_Chicago.idf +++ b/testfiles/ChillerPartLoadCurve_RefBldgLargeOfficeNew2004_Chicago.idf @@ -97,15 +97,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/CmplxGlz_Daylighting_SouthVB45deg.idf b/testfiles/CmplxGlz_Daylighting_SouthVB45deg.idf index 46d7ad58c12..d327738ad20 100644 --- a/testfiles/CmplxGlz_Daylighting_SouthVB45deg.idf +++ b/testfiles/CmplxGlz_Daylighting_SouthVB45deg.idf @@ -139,9 +139,11 @@ datarun, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule diff --git a/testfiles/CmplxGlz_MeasuredDeflectionAndShading.idf b/testfiles/CmplxGlz_MeasuredDeflectionAndShading.idf index 131d5f2ee94..0f62f12026c 100644 --- a/testfiles/CmplxGlz_MeasuredDeflectionAndShading.idf +++ b/testfiles/CmplxGlz_MeasuredDeflectionAndShading.idf @@ -140,9 +140,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule diff --git a/testfiles/CmplxGlz_SchedSurfGains.idf b/testfiles/CmplxGlz_SchedSurfGains.idf index 3804fe88924..9972f798714 100644 --- a/testfiles/CmplxGlz_SchedSurfGains.idf +++ b/testfiles/CmplxGlz_SchedSurfGains.idf @@ -137,9 +137,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule diff --git a/testfiles/CmplxGlz_SingleZone_Deflection.idf b/testfiles/CmplxGlz_SingleZone_Deflection.idf index 773c25f9d57..f7d684c1d49 100644 --- a/testfiles/CmplxGlz_SingleZone_Deflection.idf +++ b/testfiles/CmplxGlz_SingleZone_Deflection.idf @@ -134,9 +134,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule diff --git a/testfiles/CmplxGlz_SingleZone_DoubleClearAir.idf b/testfiles/CmplxGlz_SingleZone_DoubleClearAir.idf index 9dc47e331ec..3094622e69d 100644 --- a/testfiles/CmplxGlz_SingleZone_DoubleClearAir.idf +++ b/testfiles/CmplxGlz_SingleZone_DoubleClearAir.idf @@ -130,9 +130,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule diff --git a/testfiles/CmplxGlz_SingleZone_Vacuum.idf b/testfiles/CmplxGlz_SingleZone_Vacuum.idf index fff49d49539..eec0610d234 100644 --- a/testfiles/CmplxGlz_SingleZone_Vacuum.idf +++ b/testfiles/CmplxGlz_SingleZone_Vacuum.idf @@ -130,9 +130,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule diff --git a/testfiles/CmplxGlz_SmOff_IntExtShading.idf b/testfiles/CmplxGlz_SmOff_IntExtShading.idf index 65f3ff4e3a9..766da24f502 100644 --- a/testfiles/CmplxGlz_SmOff_IntExtShading.idf +++ b/testfiles/CmplxGlz_SmOff_IntExtShading.idf @@ -105,8 +105,10 @@ , !- Name 10, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 9, !- End Month 30, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CoilWaterDesuperheating.idf b/testfiles/CoilWaterDesuperheating.idf index 3317566fa21..8c338478a4f 100644 --- a/testfiles/CoilWaterDesuperheating.idf +++ b/testfiles/CoilWaterDesuperheating.idf @@ -136,8 +136,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -149,8 +151,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CommonPipe_Pri-Sec.idf b/testfiles/CommonPipe_Pri-Sec.idf index 8bda20fd4aa..ff7db8b25f3 100644 --- a/testfiles/CommonPipe_Pri-Sec.idf +++ b/testfiles/CommonPipe_Pri-Sec.idf @@ -164,8 +164,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CompSetPtControl.idf b/testfiles/CompSetPtControl.idf index 24374a5cbbd..29923819991 100644 --- a/testfiles/CompSetPtControl.idf +++ b/testfiles/CompSetPtControl.idf @@ -225,8 +225,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -238,8 +240,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CondFD1ZonePurchAirAutoSizeWithPCM.idf b/testfiles/CondFD1ZonePurchAirAutoSizeWithPCM.idf index 6097bfbf2a4..e9c66708044 100644 --- a/testfiles/CondFD1ZonePurchAirAutoSizeWithPCM.idf +++ b/testfiles/CondFD1ZonePurchAirAutoSizeWithPCM.idf @@ -95,9 +95,11 @@ Jan_1-15, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 15, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule @@ -108,9 +110,11 @@ April_1-17, !- Name 4, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 4, !- End Month 17, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/Convection.idf b/testfiles/Convection.idf index 885c12b2ea2..45594eda0b9 100644 --- a/testfiles/Convection.idf +++ b/testfiles/Convection.idf @@ -111,8 +111,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ConvectionAdaptiveSmallOffice.idf b/testfiles/ConvectionAdaptiveSmallOffice.idf index a11aa23bf8b..dacd8985094 100644 --- a/testfiles/ConvectionAdaptiveSmallOffice.idf +++ b/testfiles/ConvectionAdaptiveSmallOffice.idf @@ -132,29 +132,31 @@ Jan, !- Name 1, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators RunPeriod, Jul, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 14, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/CoolingCoilFreezingPrevention.idf b/testfiles/CoolingCoilFreezingPrevention.idf index 23653e4faf8..8abdb350c05 100644 --- a/testfiles/CoolingCoilFreezingPrevention.idf +++ b/testfiles/CoolingCoilFreezingPrevention.idf @@ -133,8 +133,10 @@ , !- Name 4, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 4, !- End Month 3, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CoolingTower.idf b/testfiles/CoolingTower.idf index a3182ee1167..21a2ea75296 100644 --- a/testfiles/CoolingTower.idf +++ b/testfiles/CoolingTower.idf @@ -138,8 +138,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -151,8 +153,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CoolingTowerDryBulbRangeOp.idf b/testfiles/CoolingTowerDryBulbRangeOp.idf index add49ffb232..217844488b9 100644 --- a/testfiles/CoolingTowerDryBulbRangeOp.idf +++ b/testfiles/CoolingTowerDryBulbRangeOp.idf @@ -163,8 +163,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -176,8 +178,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CoolingTowerNomCap.idf b/testfiles/CoolingTowerNomCap.idf index f2a1e853293..b7dd0313fb2 100644 --- a/testfiles/CoolingTowerNomCap.idf +++ b/testfiles/CoolingTowerNomCap.idf @@ -126,8 +126,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -139,8 +141,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CoolingTowerRHRangeOp.idf b/testfiles/CoolingTowerRHRangeOp.idf index 624c8ed4876..5e15865e739 100644 --- a/testfiles/CoolingTowerRHRangeOp.idf +++ b/testfiles/CoolingTowerRHRangeOp.idf @@ -163,8 +163,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -176,8 +178,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CoolingTowerWetBulbRangeOp.idf b/testfiles/CoolingTowerWetBulbRangeOp.idf index be341443267..a3d634f2aec 100644 --- a/testfiles/CoolingTowerWetBulbRangeOp.idf +++ b/testfiles/CoolingTowerWetBulbRangeOp.idf @@ -163,8 +163,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -176,8 +178,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CoolingTowerWithDBDeltaTempOp.idf b/testfiles/CoolingTowerWithDBDeltaTempOp.idf index 14d88e103e0..a5510d9ae2d 100644 --- a/testfiles/CoolingTowerWithDBDeltaTempOp.idf +++ b/testfiles/CoolingTowerWithDBDeltaTempOp.idf @@ -163,8 +163,10 @@ , !- Name 1, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -176,8 +178,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CoolingTowerWithWBDeltaTempOp.idf b/testfiles/CoolingTowerWithWBDeltaTempOp.idf index b012c09b14f..c4ee5a3ec1b 100644 --- a/testfiles/CoolingTowerWithWBDeltaTempOp.idf +++ b/testfiles/CoolingTowerWithWBDeltaTempOp.idf @@ -124,8 +124,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -137,8 +139,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CoolingTower_FluidBypass.idf b/testfiles/CoolingTower_FluidBypass.idf index a49ce1a007b..eb4e72256b3 100644 --- a/testfiles/CoolingTower_FluidBypass.idf +++ b/testfiles/CoolingTower_FluidBypass.idf @@ -85,15 +85,16 @@ , !- Name 5, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 5, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators SurfaceConvectionAlgorithm:Inside,TARP; diff --git a/testfiles/CoolingTower_MerkelVariableSpeed.idf b/testfiles/CoolingTower_MerkelVariableSpeed.idf index 95c82b90cde..1a8ac168fd1 100644 --- a/testfiles/CoolingTower_MerkelVariableSpeed.idf +++ b/testfiles/CoolingTower_MerkelVariableSpeed.idf @@ -57,15 +57,16 @@ Annual, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/CoolingTower_SingleSpeed_MultiCell.idf b/testfiles/CoolingTower_SingleSpeed_MultiCell.idf index be3bd930db2..30c6c9fbb3e 100644 --- a/testfiles/CoolingTower_SingleSpeed_MultiCell.idf +++ b/testfiles/CoolingTower_SingleSpeed_MultiCell.idf @@ -85,15 +85,16 @@ , !- Name 4, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 5, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators SurfaceConvectionAlgorithm:Inside,TARP; diff --git a/testfiles/CoolingTower_TwoSpeed.idf b/testfiles/CoolingTower_TwoSpeed.idf index 7941e54e5fd..f27491b4535 100644 --- a/testfiles/CoolingTower_TwoSpeed.idf +++ b/testfiles/CoolingTower_TwoSpeed.idf @@ -130,8 +130,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -143,8 +145,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CoolingTower_TwoSpeed_CondEntTempReset.idf b/testfiles/CoolingTower_TwoSpeed_CondEntTempReset.idf index 6f192622389..0f591c7cde8 100644 --- a/testfiles/CoolingTower_TwoSpeed_CondEntTempReset.idf +++ b/testfiles/CoolingTower_TwoSpeed_CondEntTempReset.idf @@ -131,8 +131,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -144,8 +146,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CoolingTower_TwoSpeed_MultiCell.idf b/testfiles/CoolingTower_TwoSpeed_MultiCell.idf index a006acc2f56..0139de912de 100644 --- a/testfiles/CoolingTower_TwoSpeed_MultiCell.idf +++ b/testfiles/CoolingTower_TwoSpeed_MultiCell.idf @@ -85,15 +85,16 @@ , !- Name 4, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 5, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators SurfaceConvectionAlgorithm:Inside,TARP; diff --git a/testfiles/CoolingTower_VariableSpeed.idf b/testfiles/CoolingTower_VariableSpeed.idf index 1441372161a..87f980c9a77 100644 --- a/testfiles/CoolingTower_VariableSpeed.idf +++ b/testfiles/CoolingTower_VariableSpeed.idf @@ -186,8 +186,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -199,8 +201,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CoolingTower_VariableSpeed_CondEntTempReset.idf b/testfiles/CoolingTower_VariableSpeed_CondEntTempReset.idf index c4affb57d51..3898535c31d 100644 --- a/testfiles/CoolingTower_VariableSpeed_CondEntTempReset.idf +++ b/testfiles/CoolingTower_VariableSpeed_CondEntTempReset.idf @@ -188,8 +188,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -201,8 +203,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CoolingTower_VariableSpeed_CondEntTempReset_MultipleTowers.idf b/testfiles/CoolingTower_VariableSpeed_CondEntTempReset_MultipleTowers.idf index 61ba15ac99a..af9cf233fbe 100644 --- a/testfiles/CoolingTower_VariableSpeed_CondEntTempReset_MultipleTowers.idf +++ b/testfiles/CoolingTower_VariableSpeed_CondEntTempReset_MultipleTowers.idf @@ -188,8 +188,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -201,8 +203,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CoolingTower_VariableSpeed_IdealCondEntTempSetpoint.idf b/testfiles/CoolingTower_VariableSpeed_IdealCondEntTempSetpoint.idf index 27d3162c69c..3869efda1d2 100644 --- a/testfiles/CoolingTower_VariableSpeed_IdealCondEntTempSetpoint.idf +++ b/testfiles/CoolingTower_VariableSpeed_IdealCondEntTempSetpoint.idf @@ -193,8 +193,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -206,8 +208,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CoolingTower_VariableSpeed_IdealCondEntTempSetpoint_MultipleTowers.idf b/testfiles/CoolingTower_VariableSpeed_IdealCondEntTempSetpoint_MultipleTowers.idf index 877d8db90c5..23f843afb40 100644 --- a/testfiles/CoolingTower_VariableSpeed_IdealCondEntTempSetpoint_MultipleTowers.idf +++ b/testfiles/CoolingTower_VariableSpeed_IdealCondEntTempSetpoint_MultipleTowers.idf @@ -188,8 +188,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CoolingTower_VariableSpeed_MultiCell.idf b/testfiles/CoolingTower_VariableSpeed_MultiCell.idf index be90afd9739..ae82d386081 100644 --- a/testfiles/CoolingTower_VariableSpeed_MultiCell.idf +++ b/testfiles/CoolingTower_VariableSpeed_MultiCell.idf @@ -85,15 +85,16 @@ , !- Name 4, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 5, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators SurfaceConvectionAlgorithm:Inside,TARP; diff --git a/testfiles/CooltowerSimpleTest.idf b/testfiles/CooltowerSimpleTest.idf index e23e8b9522f..01da160f4bd 100644 --- a/testfiles/CooltowerSimpleTest.idf +++ b/testfiles/CooltowerSimpleTest.idf @@ -102,8 +102,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CooltowerSimpleTestwithVentilation.idf b/testfiles/CooltowerSimpleTestwithVentilation.idf index 394c3c50b29..991c2881919 100644 --- a/testfiles/CooltowerSimpleTestwithVentilation.idf +++ b/testfiles/CooltowerSimpleTestwithVentilation.idf @@ -102,8 +102,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CrossVent_1Zone_AirflowNetwork.idf b/testfiles/CrossVent_1Zone_AirflowNetwork.idf index 123f8667492..7e99336d283 100644 --- a/testfiles/CrossVent_1Zone_AirflowNetwork.idf +++ b/testfiles/CrossVent_1Zone_AirflowNetwork.idf @@ -94,29 +94,31 @@ , !- Name 8, !- Begin Month 15, !- Begin Day of Month + , !- Begin Year 8, !- End Month 17, !- End Day of Month + , !- End Year , !- Day of Week for Start Day , !- Use Weather File Holidays and Special Days , !- Use Weather File Daylight Saving Period , !- Apply Weekend Holiday Rule , !- Use Weather File Rain Indicators - , !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + ; !- Use Weather File Snow Indicators RunPeriod, , !- Name 1, !- Begin Month 15, !- Begin Day of Month + , !- Begin Year 1, !- End Month 17, !- End Day of Month + , !- End Year , !- Day of Week for Start Day , !- Use Weather File Holidays and Special Days , !- Use Weather File Daylight Saving Period , !- Apply Weekend Holiday Rule , !- Use Weather File Rain Indicators - , !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + ; !- Use Weather File Snow Indicators Site:Location, SAN_FRANCISCO_CA_USA_WMO_724940, !- Name diff --git a/testfiles/CrossVent_1Zone_AirflowNetwork_with2CrossflowJets.idf b/testfiles/CrossVent_1Zone_AirflowNetwork_with2CrossflowJets.idf index f5c28861a8b..fe1ca982009 100644 --- a/testfiles/CrossVent_1Zone_AirflowNetwork_with2CrossflowJets.idf +++ b/testfiles/CrossVent_1Zone_AirflowNetwork_with2CrossflowJets.idf @@ -94,29 +94,31 @@ , !- Name 8, !- Begin Month 15, !- Begin Day of Month + , !- Begin Year 8, !- End Month 17, !- End Day of Month + , !- End Year , !- Day of Week for Start Day , !- Use Weather File Holidays and Special Days , !- Use Weather File Daylight Saving Period , !- Apply Weekend Holiday Rule , !- Use Weather File Rain Indicators - , !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + ; !- Use Weather File Snow Indicators RunPeriod, , !- Name 1, !- Begin Month 15, !- Begin Day of Month + , !- Begin Year 1, !- End Month 17, !- End Day of Month + , !- End Year , !- Day of Week for Start Day , !- Use Weather File Holidays and Special Days , !- Use Weather File Daylight Saving Period , !- Apply Weekend Holiday Rule , !- Use Weather File Rain Indicators - , !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + ; !- Use Weather File Snow Indicators Site:Location, SAN_FRANCISCO_CA_USA_WMO_724940, !- Name diff --git a/testfiles/CustomSolarVisibleSpectrum_RefBldgSmallOfficeNew2004_Chicago.idf b/testfiles/CustomSolarVisibleSpectrum_RefBldgSmallOfficeNew2004_Chicago.idf index 20298d40ea5..a7e4cf39161 100644 --- a/testfiles/CustomSolarVisibleSpectrum_RefBldgSmallOfficeNew2004_Chicago.idf +++ b/testfiles/CustomSolarVisibleSpectrum_RefBldgSmallOfficeNew2004_Chicago.idf @@ -90,15 +90,16 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/DDAutoSize.idf b/testfiles/DDAutoSize.idf index a45993e4cd8..a989489c8f7 100644 --- a/testfiles/DDAutoSize.idf +++ b/testfiles/DDAutoSize.idf @@ -129,8 +129,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -142,8 +144,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/DElight-Detailed-Comparison.idf b/testfiles/DElight-Detailed-Comparison.idf index 9ff0dddec7d..98293be55aa 100644 --- a/testfiles/DElight-Detailed-Comparison.idf +++ b/testfiles/DElight-Detailed-Comparison.idf @@ -24,8 +24,10 @@ , !- Name 4, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 4, !- End Month 7, !- End Day of Month + , !- End Year , !- Day of Week for Start Day , !- Use Weather File Holidays and Special Days , !- Use Weather File Daylight Saving Period diff --git a/testfiles/DElightCFSLightShelf.idf b/testfiles/DElightCFSLightShelf.idf index 53713bf598c..1ff363f9ae4 100644 --- a/testfiles/DElightCFSLightShelf.idf +++ b/testfiles/DElightCFSLightShelf.idf @@ -25,8 +25,10 @@ , !- Name 4, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 4, !- End Month 7, !- End Day of Month + , !- End Year , !- Day of Week for Start Day , !- Use Weather File Holidays and Special Days , !- Use Weather File Daylight Saving Period diff --git a/testfiles/DElightCFSWindow.idf b/testfiles/DElightCFSWindow.idf index 15a3279a67b..08c3d25ff61 100644 --- a/testfiles/DElightCFSWindow.idf +++ b/testfiles/DElightCFSWindow.idf @@ -25,8 +25,10 @@ , !- Name 4, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 4, !- End Month 7, !- End Day of Month + , !- End Year , !- Day of Week for Start Day , !- Use Weather File Holidays and Special Days , !- Use Weather File Daylight Saving Period diff --git a/testfiles/DOASDXCOIL_wADPBFMethod.idf b/testfiles/DOASDXCOIL_wADPBFMethod.idf index d58497a85f0..bd8c055d247 100644 --- a/testfiles/DOASDXCOIL_wADPBFMethod.idf +++ b/testfiles/DOASDXCOIL_wADPBFMethod.idf @@ -162,8 +162,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -175,8 +177,10 @@ , !- Name 7, !- Begin Month 16, !- Begin Day of Month + , !- Begin Year 7, !- End Month 16, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/DOASDXCOIL_wADPBFMethod_NoReturnPath.idf b/testfiles/DOASDXCOIL_wADPBFMethod_NoReturnPath.idf index f29c34aa61f..e8cc5e1ae0f 100644 --- a/testfiles/DOASDXCOIL_wADPBFMethod_NoReturnPath.idf +++ b/testfiles/DOASDXCOIL_wADPBFMethod_NoReturnPath.idf @@ -164,8 +164,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -177,8 +179,10 @@ , !- Name 7, !- Begin Month 16, !- Begin Day of Month + , !- Begin Year 7, !- End Month 16, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/DOASDualDuctSchool.idf b/testfiles/DOASDualDuctSchool.idf index 2a3f70fd8f8..8a0a650f65d 100644 --- a/testfiles/DOASDualDuctSchool.idf +++ b/testfiles/DOASDualDuctSchool.idf @@ -90,29 +90,31 @@ Jan, !- Name 1, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 1, !- End Month 8, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators RunPeriod, Jul, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 8, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators SurfaceConvectionAlgorithm:Inside,TARP; diff --git a/testfiles/DOAToFanCoilInlet.idf b/testfiles/DOAToFanCoilInlet.idf index 0c62e1d3740..8d7ec4fe756 100644 --- a/testfiles/DOAToFanCoilInlet.idf +++ b/testfiles/DOAToFanCoilInlet.idf @@ -214,8 +214,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -227,8 +229,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/DOAToFanCoilSupply.idf b/testfiles/DOAToFanCoilSupply.idf index afeeb9d5de7..c62f5f1ba26 100644 --- a/testfiles/DOAToFanCoilSupply.idf +++ b/testfiles/DOAToFanCoilSupply.idf @@ -214,8 +214,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -227,8 +229,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/DOAToPTAC.idf b/testfiles/DOAToPTAC.idf index 870b9d608fb..0fa84bf573b 100644 --- a/testfiles/DOAToPTAC.idf +++ b/testfiles/DOAToPTAC.idf @@ -227,29 +227,31 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators RunPeriod, , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators !- =========== ALL OBJECTS IN CLASS: SITE:GROUNDTEMPERATURE:BUILDINGSURFACE =========== diff --git a/testfiles/DOAToPTHP.idf b/testfiles/DOAToPTHP.idf index f1ae0f12714..af45532786f 100644 --- a/testfiles/DOAToPTHP.idf +++ b/testfiles/DOAToPTHP.idf @@ -233,29 +233,31 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators RunPeriod, , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators !- =========== ALL OBJECTS IN CLASS: SITE:GROUNDTEMPERATURE:BUILDINGSURFACE =========== diff --git a/testfiles/DOAToUnitVentilator.idf b/testfiles/DOAToUnitVentilator.idf index 7b70753b78f..6708a9b7258 100644 --- a/testfiles/DOAToUnitVentilator.idf +++ b/testfiles/DOAToUnitVentilator.idf @@ -136,8 +136,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -149,8 +151,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/DOAToUnitarySystem.idf b/testfiles/DOAToUnitarySystem.idf index 3d582e0eb3f..54f777c9b4c 100644 --- a/testfiles/DOAToUnitarySystem.idf +++ b/testfiles/DOAToUnitarySystem.idf @@ -234,29 +234,31 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators RunPeriod, , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators !- =========== ALL OBJECTS IN CLASS: SITE:GROUNDTEMPERATURE:BUILDINGSURFACE =========== diff --git a/testfiles/DOAToVRF.idf b/testfiles/DOAToVRF.idf index 5f6116bf942..55037d5eb32 100644 --- a/testfiles/DOAToVRF.idf +++ b/testfiles/DOAToVRF.idf @@ -942,8 +942,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 4, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -955,8 +957,10 @@ , !- Name 2, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 2, !- End Month 4, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/DOAToWaterToAirHPInlet.idf b/testfiles/DOAToWaterToAirHPInlet.idf index 46ed5070177..1e7a773e8e0 100644 --- a/testfiles/DOAToWaterToAirHPInlet.idf +++ b/testfiles/DOAToWaterToAirHPInlet.idf @@ -218,29 +218,31 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators RunPeriod, , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators !- =========== ALL OBJECTS IN CLASS: SITE:GROUNDTEMPERATURE:BUILDINGSURFACE =========== diff --git a/testfiles/DOAToWaterToAirHPSupply.idf b/testfiles/DOAToWaterToAirHPSupply.idf index 5aa3c016af2..34db0dfabab 100644 --- a/testfiles/DOAToWaterToAirHPSupply.idf +++ b/testfiles/DOAToWaterToAirHPSupply.idf @@ -218,29 +218,31 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators RunPeriod, , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators !- =========== ALL OBJECTS IN CLASS: SITE:GROUNDTEMPERATURE:BUILDINGSURFACE =========== diff --git a/testfiles/DXCoilSystemAuto.idf b/testfiles/DXCoilSystemAuto.idf index 375f2dae589..0686cd17953 100644 --- a/testfiles/DXCoilSystemAuto.idf +++ b/testfiles/DXCoilSystemAuto.idf @@ -131,8 +131,10 @@ Jan14, !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -144,8 +146,10 @@ July7, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/DaylightingDeviceShelf.idf b/testfiles/DaylightingDeviceShelf.idf index 711fd14c1a4..082e9d2e476 100644 --- a/testfiles/DaylightingDeviceShelf.idf +++ b/testfiles/DaylightingDeviceShelf.idf @@ -114,8 +114,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/DaylightingDeviceTubular.idf b/testfiles/DaylightingDeviceTubular.idf index aef25a4b942..873674da88d 100644 --- a/testfiles/DaylightingDeviceTubular.idf +++ b/testfiles/DaylightingDeviceTubular.idf @@ -115,8 +115,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/DesiccantCVRh.idf b/testfiles/DesiccantCVRh.idf index 75223e84309..387d0188cde 100644 --- a/testfiles/DesiccantCVRh.idf +++ b/testfiles/DesiccantCVRh.idf @@ -129,8 +129,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -142,8 +144,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/DesiccantCVRhZoneRHCtrl.idf b/testfiles/DesiccantCVRhZoneRHCtrl.idf index 9d1260167ab..9a040db6847 100644 --- a/testfiles/DesiccantCVRhZoneRHCtrl.idf +++ b/testfiles/DesiccantCVRhZoneRHCtrl.idf @@ -137,8 +137,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -150,8 +152,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/DesiccantCVRhZoneRHCtrl_AddedAutosize.idf b/testfiles/DesiccantCVRhZoneRHCtrl_AddedAutosize.idf index 12cdf04d162..e8b15ea4431 100644 --- a/testfiles/DesiccantCVRhZoneRHCtrl_AddedAutosize.idf +++ b/testfiles/DesiccantCVRhZoneRHCtrl_AddedAutosize.idf @@ -137,8 +137,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -150,8 +152,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/DesiccantDehumidifierWithAirToAirCoil.idf b/testfiles/DesiccantDehumidifierWithAirToAirCoil.idf index 8271d968534..193c8daa524 100644 --- a/testfiles/DesiccantDehumidifierWithAirToAirCoil.idf +++ b/testfiles/DesiccantDehumidifierWithAirToAirCoil.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 5, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/DesiccantDehumidifierWithCompanionCoil.idf b/testfiles/DesiccantDehumidifierWithCompanionCoil.idf index ceeed6965d0..0e0c8a9da9c 100644 --- a/testfiles/DesiccantDehumidifierWithCompanionCoil.idf +++ b/testfiles/DesiccantDehumidifierWithCompanionCoil.idf @@ -135,8 +135,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 5, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/DirectIndirectEvapCoolers.idf b/testfiles/DirectIndirectEvapCoolers.idf index cf59b33377c..2e275413f6d 100644 --- a/testfiles/DirectIndirectEvapCoolers.idf +++ b/testfiles/DirectIndirectEvapCoolers.idf @@ -113,9 +113,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 7, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule @@ -128,9 +130,11 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/DirectIndirectEvapCoolersVSAS.idf b/testfiles/DirectIndirectEvapCoolersVSAS.idf index 3312e8c8b82..57605d99a32 100644 --- a/testfiles/DirectIndirectEvapCoolersVSAS.idf +++ b/testfiles/DirectIndirectEvapCoolersVSAS.idf @@ -688,9 +688,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 7, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule @@ -703,9 +705,11 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/DisplacementVent_1ZoneOffice.idf b/testfiles/DisplacementVent_1ZoneOffice.idf index e6d33272c61..49bcfe059db 100644 --- a/testfiles/DisplacementVent_1ZoneOffice.idf +++ b/testfiles/DisplacementVent_1ZoneOffice.idf @@ -111,8 +111,10 @@ annual, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/DisplacementVent_Nat_AirflowNetwork.idf b/testfiles/DisplacementVent_Nat_AirflowNetwork.idf index 5ca1391039c..19572d595cf 100644 --- a/testfiles/DisplacementVent_Nat_AirflowNetwork.idf +++ b/testfiles/DisplacementVent_Nat_AirflowNetwork.idf @@ -107,9 +107,11 @@ , !- Name 7, !- Begin Month 28, !- Begin Day of Month + , !- Begin Year 7, !- End Month 29, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/DisplacementVent_Nat_AirflowNetwork_AdaptiveComfort.idf b/testfiles/DisplacementVent_Nat_AirflowNetwork_AdaptiveComfort.idf index 87e9d77c6a6..8bc0079ea7b 100644 --- a/testfiles/DisplacementVent_Nat_AirflowNetwork_AdaptiveComfort.idf +++ b/testfiles/DisplacementVent_Nat_AirflowNetwork_AdaptiveComfort.idf @@ -109,9 +109,11 @@ , !- Name 5, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 9, !- End Month 30, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/DisplacementVent_VAV.idf b/testfiles/DisplacementVent_VAV.idf index 36899ce911f..1f9424084c1 100644 --- a/testfiles/DisplacementVent_VAV.idf +++ b/testfiles/DisplacementVent_VAV.idf @@ -100,9 +100,11 @@ , !- Name 6, !- Begin Month 29, !- Begin Day of Month + , !- Begin Year 7, !- End Month 1, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/DualDuctConstVolDamper.idf b/testfiles/DualDuctConstVolDamper.idf index 3a4c90c0cf6..557296bd5cd 100644 --- a/testfiles/DualDuctConstVolDamper.idf +++ b/testfiles/DualDuctConstVolDamper.idf @@ -136,8 +136,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -149,8 +151,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/DualDuctConstVolGasHC.idf b/testfiles/DualDuctConstVolGasHC.idf index dc4e9e755ad..49fe61cb0c4 100644 --- a/testfiles/DualDuctConstVolGasHC.idf +++ b/testfiles/DualDuctConstVolGasHC.idf @@ -135,8 +135,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -148,8 +150,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/DualDuctVarVolDamper.idf b/testfiles/DualDuctVarVolDamper.idf index 305b9607a25..fa1eca4a632 100644 --- a/testfiles/DualDuctVarVolDamper.idf +++ b/testfiles/DualDuctVarVolDamper.idf @@ -144,8 +144,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -157,8 +159,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/DualDuctWaterCoils.idf b/testfiles/DualDuctWaterCoils.idf index 77d566ec6ee..91f5baca4ce 100644 --- a/testfiles/DualDuctWaterCoils.idf +++ b/testfiles/DualDuctWaterCoils.idf @@ -221,8 +221,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -234,8 +236,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/DynamicClothing.idf b/testfiles/DynamicClothing.idf index 7e447c5e0e3..b57b617ab3f 100644 --- a/testfiles/DynamicClothing.idf +++ b/testfiles/DynamicClothing.idf @@ -220,8 +220,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/EMPD5ZoneWaterCooled_HighRHControl.idf b/testfiles/EMPD5ZoneWaterCooled_HighRHControl.idf index f30e8e2f958..88b8e011dea 100644 --- a/testfiles/EMPD5ZoneWaterCooled_HighRHControl.idf +++ b/testfiles/EMPD5ZoneWaterCooled_HighRHControl.idf @@ -169,8 +169,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -182,8 +184,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/EMSAirflowNetworkOpeningControlByHumidity.idf b/testfiles/EMSAirflowNetworkOpeningControlByHumidity.idf index dd2f70a8f01..197e4094c33 100644 --- a/testfiles/EMSAirflowNetworkOpeningControlByHumidity.idf +++ b/testfiles/EMSAirflowNetworkOpeningControlByHumidity.idf @@ -159,8 +159,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/EMSConstantVolumePurchasedAir.idf b/testfiles/EMSConstantVolumePurchasedAir.idf index 791447c1066..c086e79d992 100644 --- a/testfiles/EMSConstantVolumePurchasedAir.idf +++ b/testfiles/EMSConstantVolumePurchasedAir.idf @@ -135,8 +135,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/EMSCurveOverride_PackagedTerminalHeatPump.idf b/testfiles/EMSCurveOverride_PackagedTerminalHeatPump.idf index 76a737c36c9..bb4e7dd6065 100644 --- a/testfiles/EMSCurveOverride_PackagedTerminalHeatPump.idf +++ b/testfiles/EMSCurveOverride_PackagedTerminalHeatPump.idf @@ -375,8 +375,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -388,8 +390,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/EMSCustomOutputVariable.idf b/testfiles/EMSCustomOutputVariable.idf index a232e04d398..692cf0ac970 100644 --- a/testfiles/EMSCustomOutputVariable.idf +++ b/testfiles/EMSCustomOutputVariable.idf @@ -80,15 +80,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators SurfaceConvectionAlgorithm:Inside,TARP; diff --git a/testfiles/EMSCustomSchedule.idf b/testfiles/EMSCustomSchedule.idf index b8753e22b36..00fc751981f 100644 --- a/testfiles/EMSCustomSchedule.idf +++ b/testfiles/EMSCustomSchedule.idf @@ -80,15 +80,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators SurfaceConvectionAlgorithm:Inside,TARP; diff --git a/testfiles/EMSDemandManager_LargeOffice.idf b/testfiles/EMSDemandManager_LargeOffice.idf index de7a82b76dd..47ddbf8c707 100644 --- a/testfiles/EMSDemandManager_LargeOffice.idf +++ b/testfiles/EMSDemandManager_LargeOffice.idf @@ -74,15 +74,16 @@ , !- Name 5, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 5, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators SurfaceConvectionAlgorithm:Inside,TARP; diff --git a/testfiles/EMSDiscreteAirSystemSizes.idf b/testfiles/EMSDiscreteAirSystemSizes.idf index 8d7f4216859..03fcf6873c4 100644 --- a/testfiles/EMSDiscreteAirSystemSizes.idf +++ b/testfiles/EMSDiscreteAirSystemSizes.idf @@ -82,15 +82,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators SurfaceConvectionAlgorithm:Inside,TARP; diff --git a/testfiles/EMSPlantLoopOverrideControl.idf b/testfiles/EMSPlantLoopOverrideControl.idf index 858ac8928b6..e03adf669d2 100644 --- a/testfiles/EMSPlantLoopOverrideControl.idf +++ b/testfiles/EMSPlantLoopOverrideControl.idf @@ -96,8 +96,10 @@ first part of Feb, !- Name 2, !- Begin Month 3, !- Begin Day of Month + , !- Begin Year 2, !- End Month 17, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/EMSPlantOperation_largeOff.idf b/testfiles/EMSPlantOperation_largeOff.idf index 5a6858827cb..a50151bee10 100644 --- a/testfiles/EMSPlantOperation_largeOff.idf +++ b/testfiles/EMSPlantOperation_largeOff.idf @@ -57,15 +57,16 @@ Annual, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/EMSReplaceTraditionalManagers_LargeOffice.idf b/testfiles/EMSReplaceTraditionalManagers_LargeOffice.idf index 358dca75f4a..bd9dde00567 100644 --- a/testfiles/EMSReplaceTraditionalManagers_LargeOffice.idf +++ b/testfiles/EMSReplaceTraditionalManagers_LargeOffice.idf @@ -83,15 +83,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators SurfaceConvectionAlgorithm:Inside,TARP; diff --git a/testfiles/EMSTestMathAndKill.idf b/testfiles/EMSTestMathAndKill.idf index ea28bbf3a15..2efdc814796 100644 --- a/testfiles/EMSTestMathAndKill.idf +++ b/testfiles/EMSTestMathAndKill.idf @@ -83,15 +83,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators SurfaceConvectionAlgorithm:Inside,TARP; diff --git a/testfiles/EMSThermochromicWindow.idf b/testfiles/EMSThermochromicWindow.idf index dca48bda859..29b65a95479 100644 --- a/testfiles/EMSThermochromicWindow.idf +++ b/testfiles/EMSThermochromicWindow.idf @@ -92,15 +92,16 @@ July, !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators SurfaceConvectionAlgorithm:Inside,TARP; diff --git a/testfiles/EMSUserDefined5ZoneAirCooled.idf b/testfiles/EMSUserDefined5ZoneAirCooled.idf index c1002fb2fae..cfe69412c67 100644 --- a/testfiles/EMSUserDefined5ZoneAirCooled.idf +++ b/testfiles/EMSUserDefined5ZoneAirCooled.idf @@ -164,8 +164,10 @@ Jan14, !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -177,8 +179,10 @@ Jul7, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/EMSUserDefinedWindACAuto.idf b/testfiles/EMSUserDefinedWindACAuto.idf index f3c21bdc9f3..6b8b2ed6787 100644 --- a/testfiles/EMSUserDefinedWindACAuto.idf +++ b/testfiles/EMSUserDefinedWindACAuto.idf @@ -116,8 +116,10 @@ Jan14, !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -129,8 +131,10 @@ Jul7, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/EMSWindowShadeControl.idf b/testfiles/EMSWindowShadeControl.idf index 00186c5704f..33778878dbf 100644 --- a/testfiles/EMSWindowShadeControl.idf +++ b/testfiles/EMSWindowShadeControl.idf @@ -127,8 +127,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/EarthTubeSimpleTest.idf b/testfiles/EarthTubeSimpleTest.idf index 591e29e057a..0889c48e505 100644 --- a/testfiles/EarthTubeSimpleTest.idf +++ b/testfiles/EarthTubeSimpleTest.idf @@ -51,8 +51,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/EcoroofOrlando.idf b/testfiles/EcoroofOrlando.idf index fd8eb57139a..7ac349b13b8 100644 --- a/testfiles/EcoroofOrlando.idf +++ b/testfiles/EcoroofOrlando.idf @@ -94,8 +94,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ElectricChiller.idf b/testfiles/ElectricChiller.idf index 785685ef4d5..96212830e60 100644 --- a/testfiles/ElectricChiller.idf +++ b/testfiles/ElectricChiller.idf @@ -137,8 +137,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -150,8 +152,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ElectricEIRChiller.idf b/testfiles/ElectricEIRChiller.idf index a9fe717b07b..8046a5e4b1a 100644 --- a/testfiles/ElectricEIRChiller.idf +++ b/testfiles/ElectricEIRChiller.idf @@ -125,8 +125,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -138,8 +140,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ElectricEIRChillerHeatRecoveryAuto.idf b/testfiles/ElectricEIRChillerHeatRecoveryAuto.idf index 6aa87e3cde9..c341578c63f 100644 --- a/testfiles/ElectricEIRChillerHeatRecoveryAuto.idf +++ b/testfiles/ElectricEIRChillerHeatRecoveryAuto.idf @@ -130,8 +130,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -143,8 +145,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/EngineChiller.idf b/testfiles/EngineChiller.idf index 20ca4815744..ad1a3d3bdea 100644 --- a/testfiles/EngineChiller.idf +++ b/testfiles/EngineChiller.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -147,8 +149,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/EquivalentLayerWindow.idf b/testfiles/EquivalentLayerWindow.idf index 486952d0e83..6acd149ff5e 100644 --- a/testfiles/EquivalentLayerWindow.idf +++ b/testfiles/EquivalentLayerWindow.idf @@ -123,8 +123,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/EvaporativeFluidCooler.idf b/testfiles/EvaporativeFluidCooler.idf index ebd5da06c90..a26fbc99d5a 100644 --- a/testfiles/EvaporativeFluidCooler.idf +++ b/testfiles/EvaporativeFluidCooler.idf @@ -123,8 +123,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -136,8 +138,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/EvaporativeFluidCooler_TwoSpeed.idf b/testfiles/EvaporativeFluidCooler_TwoSpeed.idf index 92549207f51..5737ee7452d 100644 --- a/testfiles/EvaporativeFluidCooler_TwoSpeed.idf +++ b/testfiles/EvaporativeFluidCooler_TwoSpeed.idf @@ -123,8 +123,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -136,8 +138,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ExhFiredAbsorptionChiller.idf b/testfiles/ExhFiredAbsorptionChiller.idf index 7ff233bda4f..5610c53eb40 100644 --- a/testfiles/ExhFiredAbsorptionChiller.idf +++ b/testfiles/ExhFiredAbsorptionChiller.idf @@ -133,15 +133,16 @@ Run Period1, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! RunPeriod, ! Run Period2, !- Name diff --git a/testfiles/ExteriorLightsAndEq.idf b/testfiles/ExteriorLightsAndEq.idf index 3697243d944..9b4952feb22 100644 --- a/testfiles/ExteriorLightsAndEq.idf +++ b/testfiles/ExteriorLightsAndEq.idf @@ -162,8 +162,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/FanCoilAutoSize.idf b/testfiles/FanCoilAutoSize.idf index a4381875f68..9085eceea32 100644 --- a/testfiles/FanCoilAutoSize.idf +++ b/testfiles/FanCoilAutoSize.idf @@ -119,8 +119,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -132,8 +134,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/FanCoilAutoSizeScalableSizing.idf b/testfiles/FanCoilAutoSizeScalableSizing.idf index bc13f9b696c..89348fcad4b 100644 --- a/testfiles/FanCoilAutoSizeScalableSizing.idf +++ b/testfiles/FanCoilAutoSizeScalableSizing.idf @@ -119,8 +119,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -132,8 +134,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/FanCoilAutoSize_MultiSpeedFan.idf b/testfiles/FanCoilAutoSize_MultiSpeedFan.idf index f3c19156f13..d4427382c4d 100644 --- a/testfiles/FanCoilAutoSize_MultiSpeedFan.idf +++ b/testfiles/FanCoilAutoSize_MultiSpeedFan.idf @@ -119,8 +119,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -132,8 +134,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/FanCoil_HybridVent_VentSch.idf b/testfiles/FanCoil_HybridVent_VentSch.idf index 496b6138190..6596cda37e7 100644 --- a/testfiles/FanCoil_HybridVent_VentSch.idf +++ b/testfiles/FanCoil_HybridVent_VentSch.idf @@ -119,8 +119,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -132,8 +134,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/Fault_ChillerSWTSensorOffset_RefBldgLargeOfficeNew2004.idf b/testfiles/Fault_ChillerSWTSensorOffset_RefBldgLargeOfficeNew2004.idf index 5c9c2044cd3..77ccb759662 100644 --- a/testfiles/Fault_ChillerSWTSensorOffset_RefBldgLargeOfficeNew2004.idf +++ b/testfiles/Fault_ChillerSWTSensorOffset_RefBldgLargeOfficeNew2004.idf @@ -96,15 +96,16 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/Fault_CoilSATSensorOffset.idf b/testfiles/Fault_CoilSATSensorOffset.idf index 34df358af99..627f26c001b 100644 --- a/testfiles/Fault_CoilSATSensorOffset.idf +++ b/testfiles/Fault_CoilSATSensorOffset.idf @@ -169,8 +169,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 3, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -182,8 +184,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 3, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/Fault_CondenserSWTSensorOffset.idf b/testfiles/Fault_CondenserSWTSensorOffset.idf index 2f3ce5e2cf0..b132825909a 100644 --- a/testfiles/Fault_CondenserSWTSensorOffset.idf +++ b/testfiles/Fault_CondenserSWTSensorOffset.idf @@ -136,8 +136,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/Fault_FoulingAirFilter_RefBldgMediumOfficeNew2004.idf b/testfiles/Fault_FoulingAirFilter_RefBldgMediumOfficeNew2004.idf index 8d9720f40d4..1a145700e96 100644 --- a/testfiles/Fault_FoulingAirFilter_RefBldgMediumOfficeNew2004.idf +++ b/testfiles/Fault_FoulingAirFilter_RefBldgMediumOfficeNew2004.idf @@ -94,15 +94,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/Fault_FoulingChillerBoiler_RefBldgLargeOfficeNew2004.idf b/testfiles/Fault_FoulingChillerBoiler_RefBldgLargeOfficeNew2004.idf index 306af1a8be1..53ab526e0b5 100644 --- a/testfiles/Fault_FoulingChillerBoiler_RefBldgLargeOfficeNew2004.idf +++ b/testfiles/Fault_FoulingChillerBoiler_RefBldgLargeOfficeNew2004.idf @@ -96,29 +96,31 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 7, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators RunPeriod, , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/Fault_FoulingCoolingTower.idf b/testfiles/Fault_FoulingCoolingTower.idf index d9c7b5e8c38..0d709d32185 100644 --- a/testfiles/Fault_FoulingCoolingTower.idf +++ b/testfiles/Fault_FoulingCoolingTower.idf @@ -144,8 +144,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/Fault_FoulingEvapCooler_StripMallZoneEvapCooler.idf b/testfiles/Fault_FoulingEvapCooler_StripMallZoneEvapCooler.idf index db0d565caab..bccd2628848 100644 --- a/testfiles/Fault_FoulingEvapCooler_StripMallZoneEvapCooler.idf +++ b/testfiles/Fault_FoulingEvapCooler_StripMallZoneEvapCooler.idf @@ -76,15 +76,16 @@ Annual, !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Monday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/Fault_HumidistatOffset_Supermarket.idf b/testfiles/Fault_HumidistatOffset_Supermarket.idf index fc73e76a16b..30c43decf3b 100644 --- a/testfiles/Fault_HumidistatOffset_Supermarket.idf +++ b/testfiles/Fault_HumidistatOffset_Supermarket.idf @@ -245,8 +245,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/Fault_HumidistatOffset_ThermostatOffset_Supermarket.idf b/testfiles/Fault_HumidistatOffset_ThermostatOffset_Supermarket.idf index a4df8ae741c..b09ac222f49 100644 --- a/testfiles/Fault_HumidistatOffset_ThermostatOffset_Supermarket.idf +++ b/testfiles/Fault_HumidistatOffset_ThermostatOffset_Supermarket.idf @@ -245,8 +245,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/Fault_ThermostatOffset_RefBldgMediumOfficeNew2004.idf b/testfiles/Fault_ThermostatOffset_RefBldgMediumOfficeNew2004.idf index 01eb62579cf..9f3087edef1 100644 --- a/testfiles/Fault_ThermostatOffset_RefBldgMediumOfficeNew2004.idf +++ b/testfiles/Fault_ThermostatOffset_RefBldgMediumOfficeNew2004.idf @@ -94,15 +94,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/Flr_Rf_8Sides.idf b/testfiles/Flr_Rf_8Sides.idf index 5713cf66f66..48534b359f0 100644 --- a/testfiles/Flr_Rf_8Sides.idf +++ b/testfiles/Flr_Rf_8Sides.idf @@ -120,9 +120,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/FluidCooler.idf b/testfiles/FluidCooler.idf index f67a898ada5..b159c96757a 100644 --- a/testfiles/FluidCooler.idf +++ b/testfiles/FluidCooler.idf @@ -124,8 +124,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -137,8 +139,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/FluidCoolerTwoSpeed.idf b/testfiles/FluidCoolerTwoSpeed.idf index 2f19a27b193..25a87cf6819 100644 --- a/testfiles/FluidCoolerTwoSpeed.idf +++ b/testfiles/FluidCoolerTwoSpeed.idf @@ -132,8 +132,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -145,8 +147,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/FourPipeBeamLargeOffice.idf b/testfiles/FourPipeBeamLargeOffice.idf index be2fcc78a05..f7bb3d3c22f 100644 --- a/testfiles/FourPipeBeamLargeOffice.idf +++ b/testfiles/FourPipeBeamLargeOffice.idf @@ -64,15 +64,16 @@ annual, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/FreeCoolingChiller.idf b/testfiles/FreeCoolingChiller.idf index dfc6c405026..eb436085894 100644 --- a/testfiles/FreeCoolingChiller.idf +++ b/testfiles/FreeCoolingChiller.idf @@ -147,8 +147,10 @@ , !- Name 4, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 4, !- End Month 15, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/Furnace.idf b/testfiles/Furnace.idf index 1165dc2619a..cf27c55a30a 100644 --- a/testfiles/Furnace.idf +++ b/testfiles/Furnace.idf @@ -130,8 +130,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/FurnaceFuelOil.idf b/testfiles/FurnaceFuelOil.idf index 28eced3a205..585e3d1c25e 100644 --- a/testfiles/FurnaceFuelOil.idf +++ b/testfiles/FurnaceFuelOil.idf @@ -131,8 +131,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/FurnacePLRHeatingCoil.idf b/testfiles/FurnacePLRHeatingCoil.idf index b9e88c4540a..ce45c9fc4d5 100644 --- a/testfiles/FurnacePLRHeatingCoil.idf +++ b/testfiles/FurnacePLRHeatingCoil.idf @@ -131,8 +131,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/FurnaceWithDXSystem.idf b/testfiles/FurnaceWithDXSystem.idf index cddb35fec68..bc5e6ac3ace 100644 --- a/testfiles/FurnaceWithDXSystem.idf +++ b/testfiles/FurnaceWithDXSystem.idf @@ -132,8 +132,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -145,8 +147,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/FurnaceWithDXSystemComfortControl.idf b/testfiles/FurnaceWithDXSystemComfortControl.idf index 389afb173eb..e6d36cafe9d 100644 --- a/testfiles/FurnaceWithDXSystemComfortControl.idf +++ b/testfiles/FurnaceWithDXSystemComfortControl.idf @@ -139,8 +139,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/FurnaceWithDXSystemRHcontrol.idf b/testfiles/FurnaceWithDXSystemRHcontrol.idf index 8ab2f1f39e8..d33524ef039 100644 --- a/testfiles/FurnaceWithDXSystemRHcontrol.idf +++ b/testfiles/FurnaceWithDXSystemRHcontrol.idf @@ -227,8 +227,10 @@ , !- Name 1, !- Begin Month 4, !- Begin Day of Month + , !- Begin Year 1, !- End Month 4, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -240,8 +242,10 @@ , !- Name 3, !- Begin Month 22, !- Begin Day of Month + , !- Begin Year 3, !- End Month 22, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -253,8 +257,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/FurnaceWithDXSystemRHcontrol_cyclingfan.idf b/testfiles/FurnaceWithDXSystemRHcontrol_cyclingfan.idf index 18e496b51e4..8e41cd4277d 100644 --- a/testfiles/FurnaceWithDXSystemRHcontrol_cyclingfan.idf +++ b/testfiles/FurnaceWithDXSystemRHcontrol_cyclingfan.idf @@ -141,8 +141,10 @@ , !- Name 1, !- Begin Month 4, !- Begin Day of Month + , !- Begin Year 1, !- End Month 11, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -154,8 +156,10 @@ , !- Name 7, !- Begin Month 10, !- Begin Day of Month + , !- Begin Year 7, !- End Month 17, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/FurnaceWithDXSystem_CoolingHXAssisted.idf b/testfiles/FurnaceWithDXSystem_CoolingHXAssisted.idf index 8fd328fe2c2..4773eea4f76 100644 --- a/testfiles/FurnaceWithDXSystem_CoolingHXAssisted.idf +++ b/testfiles/FurnaceWithDXSystem_CoolingHXAssisted.idf @@ -160,8 +160,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/GSHP-GLHE-CalcGFunctions.idf b/testfiles/GSHP-GLHE-CalcGFunctions.idf index 2a43738e3c8..e9ec737484b 100644 --- a/testfiles/GSHP-GLHE-CalcGFunctions.idf +++ b/testfiles/GSHP-GLHE-CalcGFunctions.idf @@ -143,8 +143,10 @@ Annual Run, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/GSHP-GLHE.idf b/testfiles/GSHP-GLHE.idf index ed3a651193e..5e731e543f8 100644 --- a/testfiles/GSHP-GLHE.idf +++ b/testfiles/GSHP-GLHE.idf @@ -128,8 +128,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -141,8 +143,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/GSHP-Slinky.idf b/testfiles/GSHP-Slinky.idf index 17488570cbc..c6875e02d94 100644 --- a/testfiles/GSHP-Slinky.idf +++ b/testfiles/GSHP-Slinky.idf @@ -128,8 +128,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -141,8 +143,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/GSHPSimple-GLHE.idf b/testfiles/GSHPSimple-GLHE.idf index f59fd9b7212..d31614019e1 100644 --- a/testfiles/GSHPSimple-GLHE.idf +++ b/testfiles/GSHPSimple-GLHE.idf @@ -126,9 +126,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 11, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule @@ -139,9 +141,11 @@ , !- Name 7, !- Begin Month 15, !- Begin Day of Month + , !- Begin Year 7, !- End Month 25, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/GasTurbChiller.idf b/testfiles/GasTurbChiller.idf index 667711d0fc5..7f4e7a1d04d 100644 --- a/testfiles/GasTurbChiller.idf +++ b/testfiles/GasTurbChiller.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -147,8 +149,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/GasTurbChillerHeatRecoveryAuto.idf b/testfiles/GasTurbChillerHeatRecoveryAuto.idf index 5433d040d94..228a754c4e3 100644 --- a/testfiles/GasTurbChillerHeatRecoveryAuto.idf +++ b/testfiles/GasTurbChillerHeatRecoveryAuto.idf @@ -130,8 +130,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -143,8 +145,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/Generators.idf b/testfiles/Generators.idf index 849cc9f327a..496dc324266 100644 --- a/testfiles/Generators.idf +++ b/testfiles/Generators.idf @@ -141,8 +141,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -154,8 +156,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/Generators_Transformer.idf b/testfiles/Generators_Transformer.idf index 3baa0319938..f6376977afd 100644 --- a/testfiles/Generators_Transformer.idf +++ b/testfiles/Generators_Transformer.idf @@ -226,8 +226,10 @@ WinterDay, !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -239,8 +241,10 @@ SummerDay, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/GeneratorswithPV.idf b/testfiles/GeneratorswithPV.idf index f82e81386e4..aecba2f4d50 100644 --- a/testfiles/GeneratorswithPV.idf +++ b/testfiles/GeneratorswithPV.idf @@ -115,9 +115,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 7, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule @@ -128,9 +130,11 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/GeneratorwithWindTurbine.idf b/testfiles/GeneratorwithWindTurbine.idf index 8117eace1a7..faf6f887b5d 100644 --- a/testfiles/GeneratorwithWindTurbine.idf +++ b/testfiles/GeneratorwithWindTurbine.idf @@ -116,8 +116,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -129,8 +131,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/GeometryTest.idf b/testfiles/GeometryTest.idf index c74c2a7a22d..6abbfeec62a 100644 --- a/testfiles/GeometryTest.idf +++ b/testfiles/GeometryTest.idf @@ -132,9 +132,11 @@ , !- Name 5, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 5, !- End Month 10, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/GroundTempOSCCompactSched.idf b/testfiles/GroundTempOSCCompactSched.idf index b41d9d6be01..7f5286937c2 100644 --- a/testfiles/GroundTempOSCCompactSched.idf +++ b/testfiles/GroundTempOSCCompactSched.idf @@ -27,8 +27,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year , !- Day of Week for Start Day , !- Use Weather File Holidays and Special Days , !- Use Weather File Daylight Saving Period diff --git a/testfiles/HAMT_DailyProfileReport.idf b/testfiles/HAMT_DailyProfileReport.idf index 2e7fb8523cb..e376e8eb316 100644 --- a/testfiles/HAMT_DailyProfileReport.idf +++ b/testfiles/HAMT_DailyProfileReport.idf @@ -227,29 +227,31 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule No, !- Use Weather File Rain Indicators - No, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + No; !- Use Weather File Snow Indicators RunPeriod, , !- Name 2, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 2, !- End Month 28, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule No, !- Use Weather File Rain Indicators - No, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + No; !- Use Weather File Snow Indicators !- =========== ALL OBJECTS IN CLASS: SITE:GROUNDTEMPERATURE:BUILDINGSURFACE =========== diff --git a/testfiles/HAMT_HourlyProfileReport.idf b/testfiles/HAMT_HourlyProfileReport.idf index dbdb94d2cd3..7d15e5a9137 100644 --- a/testfiles/HAMT_HourlyProfileReport.idf +++ b/testfiles/HAMT_HourlyProfileReport.idf @@ -227,15 +227,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule No, !- Use Weather File Rain Indicators - No, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + No; !- Use Weather File Snow Indicators !- =========== ALL OBJECTS IN CLASS: SITE:GROUNDTEMPERATURE:BUILDINGSURFACE =========== diff --git a/testfiles/HPAirToAir_wSolarCollectorHWCoil.idf b/testfiles/HPAirToAir_wSolarCollectorHWCoil.idf index 625a5398b44..2054074e38d 100644 --- a/testfiles/HPAirToAir_wSolarCollectorHWCoil.idf +++ b/testfiles/HPAirToAir_wSolarCollectorHWCoil.idf @@ -230,8 +230,10 @@ , !- Name 1, !- Begin Month 4, !- Begin Day of Month + , !- Begin Year 1, !- End Month 4, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -243,8 +245,10 @@ , !- Name 3, !- Begin Month 22, !- Begin Day of Month + , !- Begin Year 3, !- End Month 22, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -256,8 +260,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HP_wICSSolarCollector.idf b/testfiles/HP_wICSSolarCollector.idf index 9be6fa00447..c65925901ec 100644 --- a/testfiles/HP_wICSSolarCollector.idf +++ b/testfiles/HP_wICSSolarCollector.idf @@ -236,8 +236,10 @@ , !- Name 1, !- Begin Month 21, !- Begin Day of Month + , !- Begin Year 1, !- End Month 21, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -249,8 +251,10 @@ , !- Name 7, !- Begin Month 21, !- Begin Day of Month + , !- Begin Year 7, !- End Month 21, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HVACStandAloneERV_Economizer.idf b/testfiles/HVACStandAloneERV_Economizer.idf index 286a24d480d..690aa8a024b 100644 --- a/testfiles/HVACStandAloneERV_Economizer.idf +++ b/testfiles/HVACStandAloneERV_Economizer.idf @@ -222,8 +222,10 @@ , !- Name 1, !- Begin Month 9, !- Begin Day of Month + , !- Begin Year 1, !- End Month 9, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -235,8 +237,10 @@ , !- Name 6, !- Begin Month 25, !- Begin Day of Month + , !- Begin Year 6, !- End Month 25, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HVACTemplate-5ZoneBaseboardHeat.idf b/testfiles/HVACTemplate-5ZoneBaseboardHeat.idf index c2a36319b5e..d58039e1c64 100644 --- a/testfiles/HVACTemplate-5ZoneBaseboardHeat.idf +++ b/testfiles/HVACTemplate-5ZoneBaseboardHeat.idf @@ -164,8 +164,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -177,8 +179,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HVACTemplate-5ZoneConstantVolumeChillerBoiler.idf b/testfiles/HVACTemplate-5ZoneConstantVolumeChillerBoiler.idf index f632f3e8231..35a4e46a427 100644 --- a/testfiles/HVACTemplate-5ZoneConstantVolumeChillerBoiler.idf +++ b/testfiles/HVACTemplate-5ZoneConstantVolumeChillerBoiler.idf @@ -165,8 +165,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -178,8 +180,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HVACTemplate-5ZoneDualDuct.idf b/testfiles/HVACTemplate-5ZoneDualDuct.idf index 08156e61e03..e3251620729 100644 --- a/testfiles/HVACTemplate-5ZoneDualDuct.idf +++ b/testfiles/HVACTemplate-5ZoneDualDuct.idf @@ -163,8 +163,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -176,8 +178,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HVACTemplate-5ZoneFanCoil-DOAS.idf b/testfiles/HVACTemplate-5ZoneFanCoil-DOAS.idf index 5334db555c0..addc9938336 100644 --- a/testfiles/HVACTemplate-5ZoneFanCoil-DOAS.idf +++ b/testfiles/HVACTemplate-5ZoneFanCoil-DOAS.idf @@ -162,8 +162,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -175,8 +177,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HVACTemplate-5ZoneFanCoil.idf b/testfiles/HVACTemplate-5ZoneFanCoil.idf index d14b818fa37..af41fa55abb 100644 --- a/testfiles/HVACTemplate-5ZoneFanCoil.idf +++ b/testfiles/HVACTemplate-5ZoneFanCoil.idf @@ -174,8 +174,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -187,8 +189,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HVACTemplate-5ZoneFurnaceDX.idf b/testfiles/HVACTemplate-5ZoneFurnaceDX.idf index 7e97675ef50..11d839c5d77 100644 --- a/testfiles/HVACTemplate-5ZoneFurnaceDX.idf +++ b/testfiles/HVACTemplate-5ZoneFurnaceDX.idf @@ -126,8 +126,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -139,8 +141,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HVACTemplate-5ZonePTAC-DOAS.idf b/testfiles/HVACTemplate-5ZonePTAC-DOAS.idf index 59eb22bd659..2031260d2ec 100644 --- a/testfiles/HVACTemplate-5ZonePTAC-DOAS.idf +++ b/testfiles/HVACTemplate-5ZonePTAC-DOAS.idf @@ -162,8 +162,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -175,8 +177,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HVACTemplate-5ZonePTAC.idf b/testfiles/HVACTemplate-5ZonePTAC.idf index e9b219b3764..eae5163df1a 100644 --- a/testfiles/HVACTemplate-5ZonePTAC.idf +++ b/testfiles/HVACTemplate-5ZonePTAC.idf @@ -173,8 +173,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -186,8 +188,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HVACTemplate-5ZonePTHP.idf b/testfiles/HVACTemplate-5ZonePTHP.idf index ae14fd25046..a3c49039943 100644 --- a/testfiles/HVACTemplate-5ZonePTHP.idf +++ b/testfiles/HVACTemplate-5ZonePTHP.idf @@ -173,8 +173,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -186,8 +188,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HVACTemplate-5ZonePackagedVAV.idf b/testfiles/HVACTemplate-5ZonePackagedVAV.idf index a2131a59f6f..36e28b02a73 100644 --- a/testfiles/HVACTemplate-5ZonePackagedVAV.idf +++ b/testfiles/HVACTemplate-5ZonePackagedVAV.idf @@ -159,8 +159,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -172,8 +174,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HVACTemplate-5ZonePurchAir.idf b/testfiles/HVACTemplate-5ZonePurchAir.idf index 5c282ff7c61..f728d51810d 100644 --- a/testfiles/HVACTemplate-5ZonePurchAir.idf +++ b/testfiles/HVACTemplate-5ZonePurchAir.idf @@ -160,8 +160,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -173,8 +175,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HVACTemplate-5ZoneUnitaryHeatPump.idf b/testfiles/HVACTemplate-5ZoneUnitaryHeatPump.idf index 2de027c0847..e40dfedefe8 100644 --- a/testfiles/HVACTemplate-5ZoneUnitaryHeatPump.idf +++ b/testfiles/HVACTemplate-5ZoneUnitaryHeatPump.idf @@ -142,8 +142,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -155,8 +157,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HVACTemplate-5ZoneUnitarySystem.idf b/testfiles/HVACTemplate-5ZoneUnitarySystem.idf index d0ee6377f1e..a34cbd36878 100644 --- a/testfiles/HVACTemplate-5ZoneUnitarySystem.idf +++ b/testfiles/HVACTemplate-5ZoneUnitarySystem.idf @@ -164,8 +164,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -177,8 +179,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HVACTemplate-5ZoneVAVFanPowered.idf b/testfiles/HVACTemplate-5ZoneVAVFanPowered.idf index 15406f4e476..3a5af5a2612 100644 --- a/testfiles/HVACTemplate-5ZoneVAVFanPowered.idf +++ b/testfiles/HVACTemplate-5ZoneVAVFanPowered.idf @@ -180,8 +180,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -193,8 +195,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HVACTemplate-5ZoneVAVWaterCooled-ObjectReference.idf b/testfiles/HVACTemplate-5ZoneVAVWaterCooled-ObjectReference.idf index dd1770ba654..edcb9f3ab12 100644 --- a/testfiles/HVACTemplate-5ZoneVAVWaterCooled-ObjectReference.idf +++ b/testfiles/HVACTemplate-5ZoneVAVWaterCooled-ObjectReference.idf @@ -183,8 +183,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -196,8 +198,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HVACTemplate-5ZoneVAVWaterCooled.idf b/testfiles/HVACTemplate-5ZoneVAVWaterCooled.idf index 9460c0556e6..683daf9bac7 100644 --- a/testfiles/HVACTemplate-5ZoneVAVWaterCooled.idf +++ b/testfiles/HVACTemplate-5ZoneVAVWaterCooled.idf @@ -180,8 +180,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -193,8 +195,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HVACTemplate-5ZoneVRF.idf b/testfiles/HVACTemplate-5ZoneVRF.idf index c36a6aa856f..302388a8acb 100644 --- a/testfiles/HVACTemplate-5ZoneVRF.idf +++ b/testfiles/HVACTemplate-5ZoneVRF.idf @@ -163,8 +163,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -176,8 +178,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HVACTemplate-5ZoneWaterToAirHeatPumpTowerBoiler.idf b/testfiles/HVACTemplate-5ZoneWaterToAirHeatPumpTowerBoiler.idf index 566a7cac2b0..10dfdf86c96 100644 --- a/testfiles/HVACTemplate-5ZoneWaterToAirHeatPumpTowerBoiler.idf +++ b/testfiles/HVACTemplate-5ZoneWaterToAirHeatPumpTowerBoiler.idf @@ -174,8 +174,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -187,8 +189,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HeaderedPumpsConSpeed.idf b/testfiles/HeaderedPumpsConSpeed.idf index 62a7fa66ce8..7b8a7020f5d 100644 --- a/testfiles/HeaderedPumpsConSpeed.idf +++ b/testfiles/HeaderedPumpsConSpeed.idf @@ -129,8 +129,10 @@ , !- Name 7, !- Begin Month 15, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HeaderedPumpsVarSpeed.idf b/testfiles/HeaderedPumpsVarSpeed.idf index 8a5713e8d4c..057f6ce39a8 100644 --- a/testfiles/HeaderedPumpsVarSpeed.idf +++ b/testfiles/HeaderedPumpsVarSpeed.idf @@ -164,8 +164,10 @@ , !- Name 7, !- Begin Month 15, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HeatPump.idf b/testfiles/HeatPump.idf index e1b6f65e503..c8e8d7b4131 100644 --- a/testfiles/HeatPump.idf +++ b/testfiles/HeatPump.idf @@ -133,8 +133,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -146,8 +148,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HeatPumpAirToAirWithRHcontrol.idf b/testfiles/HeatPumpAirToAirWithRHcontrol.idf index 428921ece86..80b93f619c0 100644 --- a/testfiles/HeatPumpAirToAirWithRHcontrol.idf +++ b/testfiles/HeatPumpAirToAirWithRHcontrol.idf @@ -229,8 +229,10 @@ , !- Name 1, !- Begin Month 4, !- Begin Day of Month + , !- Begin Year 1, !- End Month 4, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -242,8 +244,10 @@ , !- Name 3, !- Begin Month 22, !- Begin Day of Month + , !- Begin Year 3, !- End Month 22, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -255,8 +259,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HeatPumpAuto.idf b/testfiles/HeatPumpAuto.idf index eb9ab356060..e0957506d00 100644 --- a/testfiles/HeatPumpAuto.idf +++ b/testfiles/HeatPumpAuto.idf @@ -133,8 +133,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -146,8 +148,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HeatPumpIAQP_DCV.idf b/testfiles/HeatPumpIAQP_DCV.idf index 37876c1889f..508a1b0f35c 100644 --- a/testfiles/HeatPumpIAQP_DCV.idf +++ b/testfiles/HeatPumpIAQP_DCV.idf @@ -139,8 +139,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HeatPumpIAQP_GenericContamControl.idf b/testfiles/HeatPumpIAQP_GenericContamControl.idf index b58b799622e..87399c3ca99 100644 --- a/testfiles/HeatPumpIAQP_GenericContamControl.idf +++ b/testfiles/HeatPumpIAQP_GenericContamControl.idf @@ -140,8 +140,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HeatPumpProportionalControl_DCV.idf b/testfiles/HeatPumpProportionalControl_DCV.idf index dd214f0a68d..9546281440c 100644 --- a/testfiles/HeatPumpProportionalControl_DCV.idf +++ b/testfiles/HeatPumpProportionalControl_DCV.idf @@ -139,8 +139,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HeatPumpProportionalControl_DCVDesignRate.idf b/testfiles/HeatPumpProportionalControl_DCVDesignRate.idf index c82f98a1998..dd2784c6e39 100644 --- a/testfiles/HeatPumpProportionalControl_DCVDesignRate.idf +++ b/testfiles/HeatPumpProportionalControl_DCVDesignRate.idf @@ -139,8 +139,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HeatPumpSecondaryCoil.idf b/testfiles/HeatPumpSecondaryCoil.idf index 3672cbebb6e..2da8e8cf0bc 100644 --- a/testfiles/HeatPumpSecondaryCoil.idf +++ b/testfiles/HeatPumpSecondaryCoil.idf @@ -138,8 +138,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -151,8 +153,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HeatPumpSimpleDCV.idf b/testfiles/HeatPumpSimpleDCV.idf index 726875bc566..4b5ef3a7b17 100644 --- a/testfiles/HeatPumpSimpleDCV.idf +++ b/testfiles/HeatPumpSimpleDCV.idf @@ -144,8 +144,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -157,8 +159,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HeatPumpVRP_DCV.idf b/testfiles/HeatPumpVRP_DCV.idf index 1166d866cc6..e3083bfa8ce 100644 --- a/testfiles/HeatPumpVRP_DCV.idf +++ b/testfiles/HeatPumpVRP_DCV.idf @@ -140,8 +140,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HeatPumpVSAS.idf b/testfiles/HeatPumpVSAS.idf index 6e364109197..2a24247b8dc 100644 --- a/testfiles/HeatPumpVSAS.idf +++ b/testfiles/HeatPumpVSAS.idf @@ -408,8 +408,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -421,8 +423,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HeatPumpWaterHeater.idf b/testfiles/HeatPumpWaterHeater.idf index 777f9c0cbfa..2e064832fc3 100644 --- a/testfiles/HeatPumpWaterHeater.idf +++ b/testfiles/HeatPumpWaterHeater.idf @@ -196,8 +196,10 @@ Jan14, !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -209,8 +211,10 @@ July7, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HeatPumpWaterHeaterStratified.idf b/testfiles/HeatPumpWaterHeaterStratified.idf index 75f152048c4..b0d58ee48ad 100644 --- a/testfiles/HeatPumpWaterHeaterStratified.idf +++ b/testfiles/HeatPumpWaterHeaterStratified.idf @@ -197,8 +197,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -210,8 +212,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HeatPumpWaterToAir.idf b/testfiles/HeatPumpWaterToAir.idf index 29c6ef31fa7..f6181f80249 100644 --- a/testfiles/HeatPumpWaterToAir.idf +++ b/testfiles/HeatPumpWaterToAir.idf @@ -168,8 +168,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -181,8 +183,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HeatPumpWaterToAirEquationFit.idf b/testfiles/HeatPumpWaterToAirEquationFit.idf index a35dd938815..bef5f7a317b 100644 --- a/testfiles/HeatPumpWaterToAirEquationFit.idf +++ b/testfiles/HeatPumpWaterToAirEquationFit.idf @@ -164,8 +164,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -177,8 +179,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HeatPumpWaterToAirWithRHControl.idf b/testfiles/HeatPumpWaterToAirWithRHControl.idf index 532a66a8de1..96b24a8cc73 100644 --- a/testfiles/HeatPumpWaterToAirWithRHControl.idf +++ b/testfiles/HeatPumpWaterToAirWithRHControl.idf @@ -172,8 +172,10 @@ , !- Name 1, !- Begin Month 3, !- Begin Day of Month + , !- Begin Year 1, !- End Month 3, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -185,8 +187,10 @@ , !- Name 7, !- Begin Month 3, !- Begin Day of Month + , !- Begin Year 7, !- End Month 3, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HeatPumpwithBiquadraticCurves.idf b/testfiles/HeatPumpwithBiquadraticCurves.idf index ca656e73e75..69b9032aad8 100644 --- a/testfiles/HeatPumpwithBiquadraticCurves.idf +++ b/testfiles/HeatPumpwithBiquadraticCurves.idf @@ -136,8 +136,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -149,8 +151,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HeatRecoveryElectricChiller.idf b/testfiles/HeatRecoveryElectricChiller.idf index 2640a73b3b1..9d2cbaddc3a 100644 --- a/testfiles/HeatRecoveryElectricChiller.idf +++ b/testfiles/HeatRecoveryElectricChiller.idf @@ -148,9 +148,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 2, !- End Month 5, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule @@ -161,9 +163,11 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 8, !- End Month 15, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/HeatRecoveryPlantLoop.idf b/testfiles/HeatRecoveryPlantLoop.idf index 3ad1249a5ea..2db56c842f5 100644 --- a/testfiles/HeatRecoveryPlantLoop.idf +++ b/testfiles/HeatRecoveryPlantLoop.idf @@ -151,9 +151,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 2, !- End Month 5, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule @@ -164,9 +166,11 @@ , !- Name 11, !- Begin Month 25, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/HeatRecoveryPlantLoopAuto.idf b/testfiles/HeatRecoveryPlantLoopAuto.idf index 09b91e5738e..4c2ae318724 100644 --- a/testfiles/HeatRecoveryPlantLoopAuto.idf +++ b/testfiles/HeatRecoveryPlantLoopAuto.idf @@ -147,9 +147,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 2, !- End Month 5, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule @@ -160,9 +162,11 @@ , !- Name 11, !- Begin Month 25, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/HeatRecoverywithStorageTank.idf b/testfiles/HeatRecoverywithStorageTank.idf index 84e1c21f0dd..fac2267468b 100644 --- a/testfiles/HeatRecoverywithStorageTank.idf +++ b/testfiles/HeatRecoverywithStorageTank.idf @@ -231,9 +231,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 2, !- End Month 5, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule @@ -244,9 +246,11 @@ , !- Name 11, !- Begin Month 25, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/HospitalBaseline.idf b/testfiles/HospitalBaseline.idf index e579865b182..3b24cd0cea8 100644 --- a/testfiles/HospitalBaseline.idf +++ b/testfiles/HospitalBaseline.idf @@ -115,15 +115,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators SurfaceConvectionAlgorithm:Inside,TARP; diff --git a/testfiles/HospitalBaselineReheatReportEMS.idf b/testfiles/HospitalBaselineReheatReportEMS.idf index bb08875b9a1..0c648097520 100644 --- a/testfiles/HospitalBaselineReheatReportEMS.idf +++ b/testfiles/HospitalBaselineReheatReportEMS.idf @@ -115,15 +115,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators SurfaceConvectionAlgorithm:Inside,TARP; diff --git a/testfiles/HospitalLowEnergy.idf b/testfiles/HospitalLowEnergy.idf index c3aece132e1..264e7a836b9 100644 --- a/testfiles/HospitalLowEnergy.idf +++ b/testfiles/HospitalLowEnergy.idf @@ -121,15 +121,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators SurfaceConvectionAlgorithm:Inside,TARP; diff --git a/testfiles/House-2FurnaceAC-SequentialLoad.idf b/testfiles/House-2FurnaceAC-SequentialLoad.idf index eb90b0c6170..c2cc3e86af5 100644 --- a/testfiles/House-2FurnaceAC-SequentialLoad.idf +++ b/testfiles/House-2FurnaceAC-SequentialLoad.idf @@ -103,8 +103,10 @@ RunPeriod, Jan14, !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -116,8 +118,10 @@ RunPeriod, May14, !- Name 5, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 5, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -129,8 +133,10 @@ RunPeriod, Jul07, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/House-2FurnaceAC-SequentialUniformPLR.idf b/testfiles/House-2FurnaceAC-SequentialUniformPLR.idf index 137c025d440..91ab026c268 100644 --- a/testfiles/House-2FurnaceAC-SequentialUniformPLR.idf +++ b/testfiles/House-2FurnaceAC-SequentialUniformPLR.idf @@ -103,8 +103,10 @@ RunPeriod, Jan14, !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -116,8 +118,10 @@ RunPeriod, May14, !- Name 5, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 5, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -129,8 +133,10 @@ RunPeriod, Jul07, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/House-2FurnaceAC-UniformLoad.idf b/testfiles/House-2FurnaceAC-UniformLoad.idf index 513b478375e..6560b615285 100644 --- a/testfiles/House-2FurnaceAC-UniformLoad.idf +++ b/testfiles/House-2FurnaceAC-UniformLoad.idf @@ -103,8 +103,10 @@ RunPeriod, Jan14, !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -116,8 +118,10 @@ RunPeriod, May14, !- Name 5, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 5, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -129,8 +133,10 @@ RunPeriod, Jul07, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/House-2FurnaceAC-UniformPLR.idf b/testfiles/House-2FurnaceAC-UniformPLR.idf index 60bae2bf935..60876c203fb 100644 --- a/testfiles/House-2FurnaceAC-UniformPLR.idf +++ b/testfiles/House-2FurnaceAC-UniformPLR.idf @@ -103,8 +103,10 @@ RunPeriod, Jan14, !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -116,8 +118,10 @@ RunPeriod, May14, !- Name 5, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 5, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -129,8 +133,10 @@ RunPeriod, Jul07, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HybridVentilationControl.idf b/testfiles/HybridVentilationControl.idf index 0c67c90540c..987e13e835e 100644 --- a/testfiles/HybridVentilationControl.idf +++ b/testfiles/HybridVentilationControl.idf @@ -171,8 +171,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -184,8 +186,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HybridVentilationControlGlobalSimple.idf b/testfiles/HybridVentilationControlGlobalSimple.idf index bdf8dd00e17..fbef0be3cfc 100644 --- a/testfiles/HybridVentilationControlGlobalSimple.idf +++ b/testfiles/HybridVentilationControlGlobalSimple.idf @@ -163,8 +163,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -176,8 +178,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 11, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/HybridZoneModel.idf b/testfiles/HybridZoneModel.idf index 0dd1b18404d..7df35f32787 100644 --- a/testfiles/HybridZoneModel.idf +++ b/testfiles/HybridZoneModel.idf @@ -384,9 +384,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/IceStorage-Parallel.idf b/testfiles/IceStorage-Parallel.idf index 2a1d5cda8f2..a1bd41258c7 100644 --- a/testfiles/IceStorage-Parallel.idf +++ b/testfiles/IceStorage-Parallel.idf @@ -167,8 +167,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -180,8 +182,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/IceStorage-Series-ChillerDownstream.idf b/testfiles/IceStorage-Series-ChillerDownstream.idf index c3222e0ca5f..a62e9887878 100644 --- a/testfiles/IceStorage-Series-ChillerDownstream.idf +++ b/testfiles/IceStorage-Series-ChillerDownstream.idf @@ -165,8 +165,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -178,8 +180,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/IceStorage-Series-ChillerUpstream.idf b/testfiles/IceStorage-Series-ChillerUpstream.idf index 16526bd82f1..1755ea036a0 100644 --- a/testfiles/IceStorage-Series-ChillerUpstream.idf +++ b/testfiles/IceStorage-Series-ChillerUpstream.idf @@ -165,8 +165,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -178,8 +180,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/IndEvapCoolerRTUoffice.idf b/testfiles/IndEvapCoolerRTUoffice.idf index 2bfc1b4764d..519db6dcd5e 100644 --- a/testfiles/IndEvapCoolerRTUoffice.idf +++ b/testfiles/IndEvapCoolerRTUoffice.idf @@ -54,8 +54,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/IndirectAbsorptionChiller.idf b/testfiles/IndirectAbsorptionChiller.idf index 558bfb7183f..07e2a2325ed 100644 --- a/testfiles/IndirectAbsorptionChiller.idf +++ b/testfiles/IndirectAbsorptionChiller.idf @@ -222,8 +222,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -235,8 +237,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/LBuilding-G000.idf b/testfiles/LBuilding-G000.idf index 0e8f840c75d..9b428dd4da7 100644 --- a/testfiles/LBuilding-G000.idf +++ b/testfiles/LBuilding-G000.idf @@ -87,8 +87,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year , !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/LBuilding-G090.idf b/testfiles/LBuilding-G090.idf index cf2b2f26324..2e1762cbafe 100644 --- a/testfiles/LBuilding-G090.idf +++ b/testfiles/LBuilding-G090.idf @@ -87,8 +87,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year , !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/LBuilding-G180.idf b/testfiles/LBuilding-G180.idf index 2b2d04c66a8..b3f7caddaef 100644 --- a/testfiles/LBuilding-G180.idf +++ b/testfiles/LBuilding-G180.idf @@ -87,8 +87,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year , !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/LBuilding-G270.idf b/testfiles/LBuilding-G270.idf index 6c5b03ee9cf..7b49f343255 100644 --- a/testfiles/LBuilding-G270.idf +++ b/testfiles/LBuilding-G270.idf @@ -87,8 +87,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year , !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/LBuildingAppGRotPar.idf b/testfiles/LBuildingAppGRotPar.idf index fb2402be31a..6dd2249c5f3 100644 --- a/testfiles/LBuildingAppGRotPar.idf +++ b/testfiles/LBuildingAppGRotPar.idf @@ -102,8 +102,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year , !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/LgOffVAV.idf b/testfiles/LgOffVAV.idf index 82e69c60f58..4c980e44cea 100644 --- a/testfiles/LgOffVAV.idf +++ b/testfiles/LgOffVAV.idf @@ -140,8 +140,10 @@ Jan, !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -153,8 +155,10 @@ Jul, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/LgOffVAVusingBasement.idf b/testfiles/LgOffVAVusingBasement.idf index 88cfe2d7e17..8fe8fdede83 100644 --- a/testfiles/LgOffVAVusingBasement.idf +++ b/testfiles/LgOffVAVusingBasement.idf @@ -132,8 +132,10 @@ Jan, !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -145,8 +147,10 @@ Jul, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/LookupTables.idf b/testfiles/LookupTables.idf index ba5026484f3..1fe4491af04 100644 --- a/testfiles/LookupTables.idf +++ b/testfiles/LookupTables.idf @@ -241,8 +241,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -254,8 +256,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/LrgOff_GridStorageDemandLeveling.idf b/testfiles/LrgOff_GridStorageDemandLeveling.idf index 4ff422fee10..deca1682d35 100644 --- a/testfiles/LrgOff_GridStorageDemandLeveling.idf +++ b/testfiles/LrgOff_GridStorageDemandLeveling.idf @@ -63,15 +63,16 @@ annual, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/LrgOff_GridStorageEMSSmoothing.idf b/testfiles/LrgOff_GridStorageEMSSmoothing.idf index 1fbac88eba5..77dc0d81175 100644 --- a/testfiles/LrgOff_GridStorageEMSSmoothing.idf +++ b/testfiles/LrgOff_GridStorageEMSSmoothing.idf @@ -63,15 +63,16 @@ annual, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/LrgOff_GridStorageScheduled.idf b/testfiles/LrgOff_GridStorageScheduled.idf index e6185e25d86..e5d296c1e4b 100644 --- a/testfiles/LrgOff_GridStorageScheduled.idf +++ b/testfiles/LrgOff_GridStorageScheduled.idf @@ -63,15 +63,16 @@ annual, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/MicroCogeneration.idf b/testfiles/MicroCogeneration.idf index 7e134572e14..cc08cc17981 100644 --- a/testfiles/MicroCogeneration.idf +++ b/testfiles/MicroCogeneration.idf @@ -264,8 +264,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/Minimal.idf b/testfiles/Minimal.idf index 3470a76239b..3b6ad097955 100644 --- a/testfiles/Minimal.idf +++ b/testfiles/Minimal.idf @@ -107,8 +107,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/MovableExtInsulationSimple.idf b/testfiles/MovableExtInsulationSimple.idf index fb6d38d8bbe..1f2f16761b4 100644 --- a/testfiles/MovableExtInsulationSimple.idf +++ b/testfiles/MovableExtInsulationSimple.idf @@ -43,8 +43,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/MovableIntInsulationLights.idf b/testfiles/MovableIntInsulationLights.idf index e1a802922bf..0a906aa146e 100644 --- a/testfiles/MovableIntInsulationLights.idf +++ b/testfiles/MovableIntInsulationLights.idf @@ -43,8 +43,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/MovableIntInsulationLightsLowE.idf b/testfiles/MovableIntInsulationLightsLowE.idf index e02a6e945ba..9e5dd9db748 100644 --- a/testfiles/MovableIntInsulationLightsLowE.idf +++ b/testfiles/MovableIntInsulationLightsLowE.idf @@ -43,8 +43,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/MovableIntInsulationSimple.idf b/testfiles/MovableIntInsulationSimple.idf index 827952912af..767cc514b14 100644 --- a/testfiles/MovableIntInsulationSimple.idf +++ b/testfiles/MovableIntInsulationSimple.idf @@ -43,8 +43,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/MultiSpeedACFurnace.idf b/testfiles/MultiSpeedACFurnace.idf index f8510dbc1f8..677328ab51e 100644 --- a/testfiles/MultiSpeedACFurnace.idf +++ b/testfiles/MultiSpeedACFurnace.idf @@ -122,8 +122,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -135,8 +137,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/MultiSpeedHP_StagedThermostat.idf b/testfiles/MultiSpeedHP_StagedThermostat.idf index a9a5f09d92a..e7b96893000 100644 --- a/testfiles/MultiSpeedHP_StagedThermostat.idf +++ b/testfiles/MultiSpeedHP_StagedThermostat.idf @@ -123,8 +123,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -136,8 +138,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/MultiSpeedHeatPump_MultiSolvers.idf b/testfiles/MultiSpeedHeatPump_MultiSolvers.idf index c96cea745cf..70b51eca4b0 100644 --- a/testfiles/MultiSpeedHeatPump_MultiSolvers.idf +++ b/testfiles/MultiSpeedHeatPump_MultiSolvers.idf @@ -126,8 +126,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -139,8 +141,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/MultiStory.idf b/testfiles/MultiStory.idf index bbf6dd896b7..de077f8ba2b 100644 --- a/testfiles/MultiStory.idf +++ b/testfiles/MultiStory.idf @@ -207,8 +207,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/MultispeedHeatPump.idf b/testfiles/MultispeedHeatPump.idf index 86ffaa2ff6b..964ea84f52a 100644 --- a/testfiles/MultispeedHeatPump.idf +++ b/testfiles/MultispeedHeatPump.idf @@ -122,8 +122,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -135,8 +137,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/Mundt_System_Always_On.idf b/testfiles/Mundt_System_Always_On.idf index 7b3f8d6130c..5957a515555 100644 --- a/testfiles/Mundt_System_Always_On.idf +++ b/testfiles/Mundt_System_Always_On.idf @@ -118,8 +118,10 @@ , !- Name 6, !- Begin Month 15, !- Begin Day of Month + , !- Begin Year 7, !- End Month 15, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/Mundt_System_On_During_the_Day.idf b/testfiles/Mundt_System_On_During_the_Day.idf index 12ba56f4924..69a591a2271 100644 --- a/testfiles/Mundt_System_On_During_the_Day.idf +++ b/testfiles/Mundt_System_On_During_the_Day.idf @@ -118,8 +118,10 @@ , !- Name 6, !- Begin Month 15, !- Begin Day of Month + , !- Begin Year 7, !- End Month 15, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/OptimalStart_RefBldgLargeOfficeNew2004_Chicago.idf b/testfiles/OptimalStart_RefBldgLargeOfficeNew2004_Chicago.idf index 1cee3d0a23b..1f4d5535435 100644 --- a/testfiles/OptimalStart_RefBldgLargeOfficeNew2004_Chicago.idf +++ b/testfiles/OptimalStart_RefBldgLargeOfficeNew2004_Chicago.idf @@ -97,29 +97,31 @@ , !- Name 1, !- Begin Month 23, !- Begin Day of Month + , !- Begin Year 2, !- End Month 6, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators RunPeriod, , !- Name 6, !- Begin Month 23, !- Begin Day of Month + , !- Begin Year 7, !- End Month 6, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/OutdoorAirUnit.idf b/testfiles/OutdoorAirUnit.idf index df416a77bfb..176f8411960 100644 --- a/testfiles/OutdoorAirUnit.idf +++ b/testfiles/OutdoorAirUnit.idf @@ -2135,8 +2135,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -2148,8 +2150,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/OutdoorAirUnitwithAirloopHVAC.idf b/testfiles/OutdoorAirUnitwithAirloopHVAC.idf index e8e3c384dc9..3e3200efd65 100644 --- a/testfiles/OutdoorAirUnitwithAirloopHVAC.idf +++ b/testfiles/OutdoorAirUnitwithAirloopHVAC.idf @@ -2026,8 +2026,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -2039,8 +2041,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PIUAuto.idf b/testfiles/PIUAuto.idf index edfbe5be80b..d9c1108074d 100644 --- a/testfiles/PIUAuto.idf +++ b/testfiles/PIUAuto.idf @@ -125,8 +125,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -138,8 +140,10 @@ , !- Name 4, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 4, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -151,8 +155,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PackagedTerminalAirConditioner.idf b/testfiles/PackagedTerminalAirConditioner.idf index e61a920eb6f..c314efe72bf 100644 --- a/testfiles/PackagedTerminalAirConditioner.idf +++ b/testfiles/PackagedTerminalAirConditioner.idf @@ -246,8 +246,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -259,8 +261,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PackagedTerminalAirConditionerVSAS.idf b/testfiles/PackagedTerminalAirConditionerVSAS.idf index 69ffc42fb5b..20a98808f3c 100644 --- a/testfiles/PackagedTerminalAirConditionerVSAS.idf +++ b/testfiles/PackagedTerminalAirConditionerVSAS.idf @@ -685,8 +685,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -698,8 +700,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PackagedTerminalHeatPump.idf b/testfiles/PackagedTerminalHeatPump.idf index 838867a6560..d632aff66f7 100644 --- a/testfiles/PackagedTerminalHeatPump.idf +++ b/testfiles/PackagedTerminalHeatPump.idf @@ -241,8 +241,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -254,8 +256,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PackagedTerminalHeatPumpVSAS.idf b/testfiles/PackagedTerminalHeatPumpVSAS.idf index 270ef32491a..1ac06cbf5f4 100644 --- a/testfiles/PackagedTerminalHeatPumpVSAS.idf +++ b/testfiles/PackagedTerminalHeatPumpVSAS.idf @@ -1008,8 +1008,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -1021,8 +1023,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ParametricInsulation-5ZoneAirCooled.idf b/testfiles/ParametricInsulation-5ZoneAirCooled.idf index 120afc049ff..846ff6abc2a 100644 --- a/testfiles/ParametricInsulation-5ZoneAirCooled.idf +++ b/testfiles/ParametricInsulation-5ZoneAirCooled.idf @@ -160,8 +160,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PassiveTrombeWall.idf b/testfiles/PassiveTrombeWall.idf index b4ee993faca..c9dc657e530 100644 --- a/testfiles/PassiveTrombeWall.idf +++ b/testfiles/PassiveTrombeWall.idf @@ -109,8 +109,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PipeHeatTransfer_Outair.idf b/testfiles/PipeHeatTransfer_Outair.idf index ae9c6f74d22..b61af102db6 100644 --- a/testfiles/PipeHeatTransfer_Outair.idf +++ b/testfiles/PipeHeatTransfer_Outair.idf @@ -137,8 +137,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PipeHeatTransfer_Schedule.idf b/testfiles/PipeHeatTransfer_Schedule.idf index dc3b32453fd..c340ecdb421 100644 --- a/testfiles/PipeHeatTransfer_Schedule.idf +++ b/testfiles/PipeHeatTransfer_Schedule.idf @@ -137,8 +137,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PipeHeatTransfer_Underground.idf b/testfiles/PipeHeatTransfer_Underground.idf index bfb9423c671..6cbf984dab8 100644 --- a/testfiles/PipeHeatTransfer_Underground.idf +++ b/testfiles/PipeHeatTransfer_Underground.idf @@ -137,8 +137,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PipeHeatTransfer_Zone.idf b/testfiles/PipeHeatTransfer_Zone.idf index d7bbaffabf3..204c5069f43 100644 --- a/testfiles/PipeHeatTransfer_Zone.idf +++ b/testfiles/PipeHeatTransfer_Zone.idf @@ -137,8 +137,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PipingSystem_Underground_FHX.idf b/testfiles/PipingSystem_Underground_FHX.idf index bd526bbb7c0..3b580ef349d 100644 --- a/testfiles/PipingSystem_Underground_FHX.idf +++ b/testfiles/PipingSystem_Underground_FHX.idf @@ -76,8 +76,10 @@ Annual Run, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PipingSystem_Underground_TwoPipe.idf b/testfiles/PipingSystem_Underground_TwoPipe.idf index 9d571c3641e..cf5b7cc7d73 100644 --- a/testfiles/PipingSystem_Underground_TwoPipe.idf +++ b/testfiles/PipingSystem_Underground_TwoPipe.idf @@ -74,8 +74,10 @@ Annual Run, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PipingSystem_Underground_TwoPipe_FD_GroundTemps.idf b/testfiles/PipingSystem_Underground_TwoPipe_FD_GroundTemps.idf index 9cda63b6510..dad75fc57e3 100644 --- a/testfiles/PipingSystem_Underground_TwoPipe_FD_GroundTemps.idf +++ b/testfiles/PipingSystem_Underground_TwoPipe_FD_GroundTemps.idf @@ -74,8 +74,10 @@ Annual Run, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PipingSystem_Underground_TwoPipe_Xing_GroundTemps.idf b/testfiles/PipingSystem_Underground_TwoPipe_Xing_GroundTemps.idf index bff38db8658..1779de49f01 100644 --- a/testfiles/PipingSystem_Underground_TwoPipe_Xing_GroundTemps.idf +++ b/testfiles/PipingSystem_Underground_TwoPipe_Xing_GroundTemps.idf @@ -74,8 +74,10 @@ Annual Run, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PlantApplicationsGuide_Example1.idf b/testfiles/PlantApplicationsGuide_Example1.idf index f7f2ddf2ff4..58edc9192c8 100644 --- a/testfiles/PlantApplicationsGuide_Example1.idf +++ b/testfiles/PlantApplicationsGuide_Example1.idf @@ -923,8 +923,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Monday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PlantApplicationsGuide_Example3.idf b/testfiles/PlantApplicationsGuide_Example3.idf index d942e7c8ea0..5e761639a9b 100644 --- a/testfiles/PlantApplicationsGuide_Example3.idf +++ b/testfiles/PlantApplicationsGuide_Example3.idf @@ -135,8 +135,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PlantComponentTemperatureSource.idf b/testfiles/PlantComponentTemperatureSource.idf index 76a0abee675..1a892a81781 100644 --- a/testfiles/PlantComponentTemperatureSource.idf +++ b/testfiles/PlantComponentTemperatureSource.idf @@ -98,8 +98,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PlantHorizontalGroundHX.idf b/testfiles/PlantHorizontalGroundHX.idf index d8e7546f837..f7baa45e949 100644 --- a/testfiles/PlantHorizontalGroundHX.idf +++ b/testfiles/PlantHorizontalGroundHX.idf @@ -74,8 +74,10 @@ Annual Run, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PlantLoadProfile.idf b/testfiles/PlantLoadProfile.idf index 2503e98e68e..b2f107a826a 100644 --- a/testfiles/PlantLoadProfile.idf +++ b/testfiles/PlantLoadProfile.idf @@ -100,8 +100,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PlantLoadProfileCoolingReturnReset.idf b/testfiles/PlantLoadProfileCoolingReturnReset.idf index 2449e73fe9a..db99c56abcb 100644 --- a/testfiles/PlantLoadProfileCoolingReturnReset.idf +++ b/testfiles/PlantLoadProfileCoolingReturnReset.idf @@ -102,8 +102,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PlantLoadProfileCoolingReturnResetLookup.idf b/testfiles/PlantLoadProfileCoolingReturnResetLookup.idf index b9aae717704..980db7b93b3 100644 --- a/testfiles/PlantLoadProfileCoolingReturnResetLookup.idf +++ b/testfiles/PlantLoadProfileCoolingReturnResetLookup.idf @@ -103,8 +103,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PlantLoadProfile_AutosizedDistrictHeating.idf b/testfiles/PlantLoadProfile_AutosizedDistrictHeating.idf index 6e4be2a26bf..f4c40a3bc81 100644 --- a/testfiles/PlantLoadProfile_AutosizedDistrictHeating.idf +++ b/testfiles/PlantLoadProfile_AutosizedDistrictHeating.idf @@ -100,8 +100,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PlantLoopChainCooling.idf b/testfiles/PlantLoopChainCooling.idf index e5e51f8cfe5..874666717a3 100644 --- a/testfiles/PlantLoopChainCooling.idf +++ b/testfiles/PlantLoopChainCooling.idf @@ -102,8 +102,10 @@ Annual, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PlantLoopChainDeadband.idf b/testfiles/PlantLoopChainDeadband.idf index 421a6367cae..4ba02ca8af3 100644 --- a/testfiles/PlantLoopChainDeadband.idf +++ b/testfiles/PlantLoopChainDeadband.idf @@ -103,8 +103,10 @@ Annual, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PlantLoopChainDualDeadband.idf b/testfiles/PlantLoopChainDualDeadband.idf index 65ea7c94ec1..993aca318b6 100644 --- a/testfiles/PlantLoopChainDualDeadband.idf +++ b/testfiles/PlantLoopChainDualDeadband.idf @@ -103,8 +103,10 @@ Annual, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PlantLoopChainHeating.idf b/testfiles/PlantLoopChainHeating.idf index 61b5d274142..284366eb9eb 100644 --- a/testfiles/PlantLoopChainHeating.idf +++ b/testfiles/PlantLoopChainHeating.idf @@ -102,8 +102,10 @@ Annual, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PlantPressureDrop.idf b/testfiles/PlantPressureDrop.idf index 03b08411da1..e8947193cb5 100644 --- a/testfiles/PlantPressureDrop.idf +++ b/testfiles/PlantPressureDrop.idf @@ -105,8 +105,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PlantPressure_PumpCurve.idf b/testfiles/PlantPressure_PumpCurve.idf index 9787861c22a..4edacb9abf3 100644 --- a/testfiles/PlantPressure_PumpCurve.idf +++ b/testfiles/PlantPressure_PumpCurve.idf @@ -112,8 +112,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PlantPressure_VFD_Scheduled.idf b/testfiles/PlantPressure_VFD_Scheduled.idf index 02427f316de..d953be9c7f4 100644 --- a/testfiles/PlantPressure_VFD_Scheduled.idf +++ b/testfiles/PlantPressure_VFD_Scheduled.idf @@ -136,8 +136,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PlateHeatExchanger.idf b/testfiles/PlateHeatExchanger.idf index a3b8daea7f5..381a1e8fabf 100644 --- a/testfiles/PlateHeatExchanger.idf +++ b/testfiles/PlateHeatExchanger.idf @@ -215,9 +215,11 @@ Jan_11-21, !- Name 1, !- Begin Month 11, !- Begin Day of Month + , !- Begin Year 1, !- End Month 21, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule @@ -228,9 +230,11 @@ Jul_11-31, !- Name 7, !- Begin Month 11, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/Plenum.idf b/testfiles/Plenum.idf index 9c0158e2ef0..41c31e329e6 100644 --- a/testfiles/Plenum.idf +++ b/testfiles/Plenum.idf @@ -102,8 +102,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PlenumwithRetAirHeatGain.idf b/testfiles/PlenumwithRetAirHeatGain.idf index 457bc5eb1e7..04f4079b8c8 100644 --- a/testfiles/PlenumwithRetAirHeatGain.idf +++ b/testfiles/PlenumwithRetAirHeatGain.idf @@ -100,8 +100,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PondGroundHeatExchanger.idf b/testfiles/PondGroundHeatExchanger.idf index ab28554187a..11ae9b4703a 100644 --- a/testfiles/PondGroundHeatExchanger.idf +++ b/testfiles/PondGroundHeatExchanger.idf @@ -142,8 +142,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -155,8 +157,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PurchAirTables.idf b/testfiles/PurchAirTables.idf index 58d145fb4bb..5235924b526 100644 --- a/testfiles/PurchAirTables.idf +++ b/testfiles/PurchAirTables.idf @@ -197,9 +197,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/PurchAirTables_SQL.idf b/testfiles/PurchAirTables_SQL.idf index b8f87585fdc..d663289f099 100644 --- a/testfiles/PurchAirTables_SQL.idf +++ b/testfiles/PurchAirTables_SQL.idf @@ -197,9 +197,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/PurchAirTables_wAnnual.idf b/testfiles/PurchAirTables_wAnnual.idf index 49b0f8e275d..346489ec40c 100644 --- a/testfiles/PurchAirTables_wAnnual.idf +++ b/testfiles/PurchAirTables_wAnnual.idf @@ -197,9 +197,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/PurchAirWindowBlind.idf b/testfiles/PurchAirWindowBlind.idf index 3ed9a6c7fa5..c43dbedb1f2 100644 --- a/testfiles/PurchAirWindowBlind.idf +++ b/testfiles/PurchAirWindowBlind.idf @@ -125,8 +125,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/PurchAirWindowBlind_BlockBeamSolar.idf b/testfiles/PurchAirWindowBlind_BlockBeamSolar.idf index 504c54cdb68..1f02e5d0629 100644 --- a/testfiles/PurchAirWindowBlind_BlockBeamSolar.idf +++ b/testfiles/PurchAirWindowBlind_BlockBeamSolar.idf @@ -124,8 +124,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/QTFtest.idf b/testfiles/QTFtest.idf index f2bf75bd54e..e9e09cb7508 100644 --- a/testfiles/QTFtest.idf +++ b/testfiles/QTFtest.idf @@ -38,8 +38,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/RadHiTempElecTermReheat.idf b/testfiles/RadHiTempElecTermReheat.idf index 06c198eade6..72dd979824c 100644 --- a/testfiles/RadHiTempElecTermReheat.idf +++ b/testfiles/RadHiTempElecTermReheat.idf @@ -137,8 +137,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/RadHiTempGasCtrlOpt.idf b/testfiles/RadHiTempGasCtrlOpt.idf index 1ff36b58029..e75d6af37f9 100644 --- a/testfiles/RadHiTempGasCtrlOpt.idf +++ b/testfiles/RadHiTempGasCtrlOpt.idf @@ -131,8 +131,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/RadHiTempGasTermReheat.idf b/testfiles/RadHiTempGasTermReheat.idf index c58d463814a..ad3f94020c3 100644 --- a/testfiles/RadHiTempGasTermReheat.idf +++ b/testfiles/RadHiTempGasTermReheat.idf @@ -137,8 +137,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/RadLoHydrHeatCoolAuto.idf b/testfiles/RadLoHydrHeatCoolAuto.idf index 63ced289245..397169b6a43 100644 --- a/testfiles/RadLoHydrHeatCoolAuto.idf +++ b/testfiles/RadLoHydrHeatCoolAuto.idf @@ -124,8 +124,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -137,8 +139,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/RadLoHydrHeatCoolAutoCondFD.idf b/testfiles/RadLoHydrHeatCoolAutoCondFD.idf index 6558c9e80be..a97611e12f7 100644 --- a/testfiles/RadLoHydrHeatCoolAutoCondFD.idf +++ b/testfiles/RadLoHydrHeatCoolAutoCondFD.idf @@ -216,8 +216,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -229,8 +231,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/RadLoTempCFloHeatCool.idf b/testfiles/RadLoTempCFloHeatCool.idf index 4e7f967acb1..84b7eb3cf97 100644 --- a/testfiles/RadLoTempCFloHeatCool.idf +++ b/testfiles/RadLoTempCFloHeatCool.idf @@ -130,8 +130,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/RadLoTempCFloHeatCoolCondFD.idf b/testfiles/RadLoTempCFloHeatCoolCondFD.idf index 61b86f39220..e8b104b2521 100644 --- a/testfiles/RadLoTempCFloHeatCoolCondFD.idf +++ b/testfiles/RadLoTempCFloHeatCoolCondFD.idf @@ -219,8 +219,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/RadLoTempCFloHeatCool_AddedAutosizing.idf b/testfiles/RadLoTempCFloHeatCool_AddedAutosizing.idf index 665e6aa673a..d5d0c534cbb 100644 --- a/testfiles/RadLoTempCFloHeatCool_AddedAutosizing.idf +++ b/testfiles/RadLoTempCFloHeatCool_AddedAutosizing.idf @@ -130,8 +130,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/RadLoTempCFloTermReheat.idf b/testfiles/RadLoTempCFloTermReheat.idf index dd043b196fc..0b21d0475d9 100644 --- a/testfiles/RadLoTempCFloTermReheat.idf +++ b/testfiles/RadLoTempCFloTermReheat.idf @@ -137,8 +137,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/RadLoTempElecTermReheat.idf b/testfiles/RadLoTempElecTermReheat.idf index a61f8602c02..216e378f0ee 100644 --- a/testfiles/RadLoTempElecTermReheat.idf +++ b/testfiles/RadLoTempElecTermReheat.idf @@ -146,8 +146,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/RadLoTempElecTermReheatCondFD.idf b/testfiles/RadLoTempElecTermReheatCondFD.idf index 1f2eb560a73..1af802d711e 100644 --- a/testfiles/RadLoTempElecTermReheatCondFD.idf +++ b/testfiles/RadLoTempElecTermReheatCondFD.idf @@ -226,8 +226,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/RadLoTempHydrCoolTower.idf b/testfiles/RadLoTempHydrCoolTower.idf index 0469a24cd1d..aaf3f81ae0e 100644 --- a/testfiles/RadLoTempHydrCoolTower.idf +++ b/testfiles/RadLoTempHydrCoolTower.idf @@ -128,8 +128,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/RadLoTempHydrCoolTowerCondFD.idf b/testfiles/RadLoTempHydrCoolTowerCondFD.idf index 989eaaebf88..2502e196a71 100644 --- a/testfiles/RadLoTempHydrCoolTowerCondFD.idf +++ b/testfiles/RadLoTempHydrCoolTowerCondFD.idf @@ -217,8 +217,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/RadLoTempHydrCtrlOpt.idf b/testfiles/RadLoTempHydrCtrlOpt.idf index d3e80d27075..6d9c9ff091c 100644 --- a/testfiles/RadLoTempHydrCtrlOpt.idf +++ b/testfiles/RadLoTempHydrCtrlOpt.idf @@ -138,8 +138,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/RadLoTempHydrCtrlOpt2.idf b/testfiles/RadLoTempHydrCtrlOpt2.idf index 92a04e3de01..e8957527dd1 100644 --- a/testfiles/RadLoTempHydrCtrlOpt2.idf +++ b/testfiles/RadLoTempHydrCtrlOpt2.idf @@ -136,8 +136,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/RadLoTempHydrHeatCool.idf b/testfiles/RadLoTempHydrHeatCool.idf index f42e9a50740..2f38a82409f 100644 --- a/testfiles/RadLoTempHydrHeatCool.idf +++ b/testfiles/RadLoTempHydrHeatCool.idf @@ -128,8 +128,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/RadLoTempHydrHeatCool2D.idf b/testfiles/RadLoTempHydrHeatCool2D.idf index 4edc5a7caa6..0705aa48764 100644 --- a/testfiles/RadLoTempHydrHeatCool2D.idf +++ b/testfiles/RadLoTempHydrHeatCool2D.idf @@ -128,8 +128,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/RadLoTempHydrHeatCoolDry.idf b/testfiles/RadLoTempHydrHeatCoolDry.idf index 79e232f4ae5..388b9163eb8 100644 --- a/testfiles/RadLoTempHydrHeatCoolDry.idf +++ b/testfiles/RadLoTempHydrHeatCoolDry.idf @@ -128,8 +128,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/RadLoTempHydrHeatCoolDryCondFD.idf b/testfiles/RadLoTempHydrHeatCoolDryCondFD.idf index ef3efa2d242..42726df8d00 100644 --- a/testfiles/RadLoTempHydrHeatCoolDryCondFD.idf +++ b/testfiles/RadLoTempHydrHeatCoolDryCondFD.idf @@ -217,8 +217,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/RadLoTempHydrInterMulti.idf b/testfiles/RadLoTempHydrInterMulti.idf index 7faac5cbfa4..d7b7b866d5f 100644 --- a/testfiles/RadLoTempHydrInterMulti.idf +++ b/testfiles/RadLoTempHydrInterMulti.idf @@ -130,8 +130,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/RadLoTempHydrMulti10.idf b/testfiles/RadLoTempHydrMulti10.idf index 246a3f477d2..2c2316b85e4 100644 --- a/testfiles/RadLoTempHydrMulti10.idf +++ b/testfiles/RadLoTempHydrMulti10.idf @@ -140,8 +140,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/RadLoTempHydrTermReheat.idf b/testfiles/RadLoTempHydrTermReheat.idf index c60915e5f25..5f31fe988cb 100644 --- a/testfiles/RadLoTempHydrTermReheat.idf +++ b/testfiles/RadLoTempHydrTermReheat.idf @@ -137,8 +137,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/RefBldgFullServiceRestaurantNew2004_Chicago.idf b/testfiles/RefBldgFullServiceRestaurantNew2004_Chicago.idf index 10dca9deba8..1912c5563ef 100644 --- a/testfiles/RefBldgFullServiceRestaurantNew2004_Chicago.idf +++ b/testfiles/RefBldgFullServiceRestaurantNew2004_Chicago.idf @@ -91,15 +91,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/RefBldgHospitalNew2004_Chicago.idf b/testfiles/RefBldgHospitalNew2004_Chicago.idf index 327b0672f58..5236094e575 100644 --- a/testfiles/RefBldgHospitalNew2004_Chicago.idf +++ b/testfiles/RefBldgHospitalNew2004_Chicago.idf @@ -111,15 +111,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/RefBldgLargeHotelNew2004_Chicago.idf b/testfiles/RefBldgLargeHotelNew2004_Chicago.idf index c39a5c63447..5b281880842 100644 --- a/testfiles/RefBldgLargeHotelNew2004_Chicago.idf +++ b/testfiles/RefBldgLargeHotelNew2004_Chicago.idf @@ -105,15 +105,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/RefBldgLargeOfficeNew2004_Chicago-ReturnReset.idf b/testfiles/RefBldgLargeOfficeNew2004_Chicago-ReturnReset.idf index de7f6477ac1..90641ca03ec 100644 --- a/testfiles/RefBldgLargeOfficeNew2004_Chicago-ReturnReset.idf +++ b/testfiles/RefBldgLargeOfficeNew2004_Chicago-ReturnReset.idf @@ -99,15 +99,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/RefBldgLargeOfficeNew2004_Chicago.idf b/testfiles/RefBldgLargeOfficeNew2004_Chicago.idf index e7dd2ed4baf..5725d69d2ef 100644 --- a/testfiles/RefBldgLargeOfficeNew2004_Chicago.idf +++ b/testfiles/RefBldgLargeOfficeNew2004_Chicago.idf @@ -98,15 +98,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/RefBldgMediumOfficeNew2004_Chicago.idf b/testfiles/RefBldgMediumOfficeNew2004_Chicago.idf index e30f8096759..49e409fdae4 100644 --- a/testfiles/RefBldgMediumOfficeNew2004_Chicago.idf +++ b/testfiles/RefBldgMediumOfficeNew2004_Chicago.idf @@ -92,15 +92,16 @@ annual, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/RefBldgMidriseApartmentNew2004_Chicago.idf b/testfiles/RefBldgMidriseApartmentNew2004_Chicago.idf index 507c6df467f..0b566e2abab 100644 --- a/testfiles/RefBldgMidriseApartmentNew2004_Chicago.idf +++ b/testfiles/RefBldgMidriseApartmentNew2004_Chicago.idf @@ -92,15 +92,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/RefBldgOutPatientNew2004_Chicago.idf b/testfiles/RefBldgOutPatientNew2004_Chicago.idf index b112fa2f468..7aeae2f4ff7 100644 --- a/testfiles/RefBldgOutPatientNew2004_Chicago.idf +++ b/testfiles/RefBldgOutPatientNew2004_Chicago.idf @@ -105,15 +105,16 @@ , !- Name 1, !- Begin Month 2, !- Begin Day of Month + , !- Begin Year 1, !- End Month 1, !- End Day of Month + , !- End Year Monday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/RefBldgPrimarySchoolNew2004_Chicago.idf b/testfiles/RefBldgPrimarySchoolNew2004_Chicago.idf index 907c2021573..b52d50eaccd 100644 --- a/testfiles/RefBldgPrimarySchoolNew2004_Chicago.idf +++ b/testfiles/RefBldgPrimarySchoolNew2004_Chicago.idf @@ -230,15 +230,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/RefBldgQuickServiceRestaurantNew2004_Chicago.idf b/testfiles/RefBldgQuickServiceRestaurantNew2004_Chicago.idf index e0a328d9d5d..039ddba27d3 100644 --- a/testfiles/RefBldgQuickServiceRestaurantNew2004_Chicago.idf +++ b/testfiles/RefBldgQuickServiceRestaurantNew2004_Chicago.idf @@ -96,15 +96,16 @@ Annual, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/RefBldgSecondarySchoolNew2004_Chicago.idf b/testfiles/RefBldgSecondarySchoolNew2004_Chicago.idf index 6cba8f57711..543cec840c1 100644 --- a/testfiles/RefBldgSecondarySchoolNew2004_Chicago.idf +++ b/testfiles/RefBldgSecondarySchoolNew2004_Chicago.idf @@ -108,15 +108,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/RefBldgSmallHotelNew2004_Chicago.idf b/testfiles/RefBldgSmallHotelNew2004_Chicago.idf index 783abc403ad..944e7a3d958 100644 --- a/testfiles/RefBldgSmallHotelNew2004_Chicago.idf +++ b/testfiles/RefBldgSmallHotelNew2004_Chicago.idf @@ -95,15 +95,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/RefBldgSmallOfficeNew2004_Chicago.idf b/testfiles/RefBldgSmallOfficeNew2004_Chicago.idf index 8132f5393a6..18c6c1bea2f 100644 --- a/testfiles/RefBldgSmallOfficeNew2004_Chicago.idf +++ b/testfiles/RefBldgSmallOfficeNew2004_Chicago.idf @@ -89,15 +89,16 @@ Annual, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/RefBldgStand-aloneRetailNew2004_Chicago.idf b/testfiles/RefBldgStand-aloneRetailNew2004_Chicago.idf index b6ef0e07c76..7ea33cec3e3 100644 --- a/testfiles/RefBldgStand-aloneRetailNew2004_Chicago.idf +++ b/testfiles/RefBldgStand-aloneRetailNew2004_Chicago.idf @@ -91,15 +91,16 @@ , !- Name 1, !- Begin Month 2, !- Begin Day of Month + , !- Begin Year 1, !- End Month 1, !- End Day of Month + , !- End Year Monday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/RefBldgStripMallNew2004_Chicago.idf b/testfiles/RefBldgStripMallNew2004_Chicago.idf index 327467a4072..14eba7d188f 100644 --- a/testfiles/RefBldgStripMallNew2004_Chicago.idf +++ b/testfiles/RefBldgStripMallNew2004_Chicago.idf @@ -91,15 +91,16 @@ , !- Name 1, !- Begin Month 2, !- Begin Day of Month + , !- Begin Year 1, !- End Month 1, !- End Day of Month + , !- End Year Monday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/RefBldgSuperMarketNew2004_Chicago.idf b/testfiles/RefBldgSuperMarketNew2004_Chicago.idf index 39a515ca098..a68d08a4e60 100644 --- a/testfiles/RefBldgSuperMarketNew2004_Chicago.idf +++ b/testfiles/RefBldgSuperMarketNew2004_Chicago.idf @@ -105,15 +105,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/RefBldgWarehouseNew2004_Chicago.idf b/testfiles/RefBldgWarehouseNew2004_Chicago.idf index 4d0386e57a0..1f2dc9ea386 100644 --- a/testfiles/RefBldgWarehouseNew2004_Chicago.idf +++ b/testfiles/RefBldgWarehouseNew2004_Chicago.idf @@ -90,15 +90,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/RefMedOffVAVAllDefVRP.idf b/testfiles/RefMedOffVAVAllDefVRP.idf index 7cf5087a480..5e18b97c1b7 100644 --- a/testfiles/RefMedOffVAVAllDefVRP.idf +++ b/testfiles/RefMedOffVAVAllDefVRP.idf @@ -95,15 +95,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/RefrigeratedWarehouse.idf b/testfiles/RefrigeratedWarehouse.idf index af9da9d26d0..3c6a62fa9f7 100644 --- a/testfiles/RefrigeratedWarehouse.idf +++ b/testfiles/RefrigeratedWarehouse.idf @@ -238,8 +238,10 @@ JanuaryWeek, !- Name 1, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -251,8 +253,10 @@ JulyWeek, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 14, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ReliefIndEvapCoolerRTUoffice.idf b/testfiles/ReliefIndEvapCoolerRTUoffice.idf index a284fa07eaf..6c2e3f18718 100644 --- a/testfiles/ReliefIndEvapCoolerRTUoffice.idf +++ b/testfiles/ReliefIndEvapCoolerRTUoffice.idf @@ -58,8 +58,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ReportDaylightFactors.idf b/testfiles/ReportDaylightFactors.idf index c54a3c99621..740f7650d9c 100644 --- a/testfiles/ReportDaylightFactors.idf +++ b/testfiles/ReportDaylightFactors.idf @@ -166,15 +166,16 @@ Annual, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/RetailPackagedTESCoil.idf b/testfiles/RetailPackagedTESCoil.idf index 5bddf85aa68..2ad0df3153a 100644 --- a/testfiles/RetailPackagedTESCoil.idf +++ b/testfiles/RetailPackagedTESCoil.idf @@ -64,15 +64,16 @@ RunPeriod 1, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Monday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/RoomAirflowNetwork.idf b/testfiles/RoomAirflowNetwork.idf index 6b355305f0b..d983f05afd4 100644 --- a/testfiles/RoomAirflowNetwork.idf +++ b/testfiles/RoomAirflowNetwork.idf @@ -191,9 +191,11 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 2, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/SeriesActiveBranch.idf b/testfiles/SeriesActiveBranch.idf index 29b1cd50d1e..bc799ccd0c6 100644 --- a/testfiles/SeriesActiveBranch.idf +++ b/testfiles/SeriesActiveBranch.idf @@ -182,8 +182,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -195,8 +197,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ShopWithPVandBattery.idf b/testfiles/ShopWithPVandBattery.idf index a1243d6c08e..de84786d8dd 100644 --- a/testfiles/ShopWithPVandBattery.idf +++ b/testfiles/ShopWithPVandBattery.idf @@ -69,8 +69,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 2, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ShopWithPVandStorage.idf b/testfiles/ShopWithPVandStorage.idf index 6b25cd36db5..185d99746b8 100644 --- a/testfiles/ShopWithPVandStorage.idf +++ b/testfiles/ShopWithPVandStorage.idf @@ -68,8 +68,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 1, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ShopWithSimplePVT.idf b/testfiles/ShopWithSimplePVT.idf index e95424cd768..b57923c1453 100644 --- a/testfiles/ShopWithSimplePVT.idf +++ b/testfiles/ShopWithSimplePVT.idf @@ -75,8 +75,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 7, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -88,8 +90,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SingleFamilyHouse_TwoSpeed_ZoneAirBalance.idf b/testfiles/SingleFamilyHouse_TwoSpeed_ZoneAirBalance.idf index 8a9786d8d92..143bd0c317a 100644 --- a/testfiles/SingleFamilyHouse_TwoSpeed_ZoneAirBalance.idf +++ b/testfiles/SingleFamilyHouse_TwoSpeed_ZoneAirBalance.idf @@ -132,8 +132,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -145,8 +147,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SmOffPSZ-MultiModeDX.idf b/testfiles/SmOffPSZ-MultiModeDX.idf index 6cf43ff72b7..293a3c5f373 100644 --- a/testfiles/SmOffPSZ-MultiModeDX.idf +++ b/testfiles/SmOffPSZ-MultiModeDX.idf @@ -89,8 +89,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -102,8 +104,10 @@ , !- Name 4, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 4, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -115,8 +119,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SmOffPSZ.idf b/testfiles/SmOffPSZ.idf index 67e6f2c4241..6c2c2035a4a 100644 --- a/testfiles/SmOffPSZ.idf +++ b/testfiles/SmOffPSZ.idf @@ -100,8 +100,10 @@ , !- Name 10, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 9, !- End Month 30, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SmOffPSZ_OnOffStagedControl.idf b/testfiles/SmOffPSZ_OnOffStagedControl.idf index 04bcd1b4e3e..010bc26686b 100644 --- a/testfiles/SmOffPSZ_OnOffStagedControl.idf +++ b/testfiles/SmOffPSZ_OnOffStagedControl.idf @@ -101,8 +101,10 @@ Annual, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SolarCollectorFlatPlateWater.idf b/testfiles/SolarCollectorFlatPlateWater.idf index 806ae17d931..90247c940f1 100644 --- a/testfiles/SolarCollectorFlatPlateWater.idf +++ b/testfiles/SolarCollectorFlatPlateWater.idf @@ -66,8 +66,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 7, !- End Day of Month + , !- End Year TUESDAY, !- Day of Week for Start Day YES, !- Use Weather File Holidays and Special Days YES, !- Use Weather File Daylight Saving Period @@ -79,8 +81,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year TUESDAY, !- Day of Week for Start Day YES, !- Use Weather File Holidays and Special Days YES, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SolarShadingTest.idf b/testfiles/SolarShadingTest.idf index bcf1896aa01..60ee57c4a88 100644 --- a/testfiles/SolarShadingTest.idf +++ b/testfiles/SolarShadingTest.idf @@ -111,8 +111,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SolarShadingTest_ExternalFraction.idf b/testfiles/SolarShadingTest_ExternalFraction.idf index cca89a1364a..f28ee603f4d 100644 --- a/testfiles/SolarShadingTest_ExternalFraction.idf +++ b/testfiles/SolarShadingTest_ExternalFraction.idf @@ -111,8 +111,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SolarShadingTest_SQL.idf b/testfiles/SolarShadingTest_SQL.idf index f8f864430bd..b22900f77b4 100644 --- a/testfiles/SolarShadingTest_SQL.idf +++ b/testfiles/SolarShadingTest_SQL.idf @@ -111,8 +111,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SpectralAngularOpticalProperties_TableData.idf b/testfiles/SpectralAngularOpticalProperties_TableData.idf index 23e3abda1f7..1055d1d2bce 100644 --- a/testfiles/SpectralAngularOpticalProperties_TableData.idf +++ b/testfiles/SpectralAngularOpticalProperties_TableData.idf @@ -163,8 +163,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -176,8 +178,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/StackedZonesWithInterzoneIRTLayers.idf b/testfiles/StackedZonesWithInterzoneIRTLayers.idf index 8b7f9f46063..7707f82b44d 100644 --- a/testfiles/StackedZonesWithInterzoneIRTLayers.idf +++ b/testfiles/StackedZonesWithInterzoneIRTLayers.idf @@ -81,15 +81,16 @@ , !- Name 6, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 6, !- End Month 2, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! Latitude {deg} ! Longitude {deg} diff --git a/testfiles/SteamSystemAutoSize.idf b/testfiles/SteamSystemAutoSize.idf index 2af63a03a92..648a6d20348 100644 --- a/testfiles/SteamSystemAutoSize.idf +++ b/testfiles/SteamSystemAutoSize.idf @@ -129,9 +129,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 12, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period , !- Apply Weekend Holiday Rule @@ -142,9 +144,11 @@ , !- Name 4, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 5, !- End Month 5, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period , !- Apply Weekend Holiday Rule diff --git a/testfiles/StripMallZoneEvapCooler.idf b/testfiles/StripMallZoneEvapCooler.idf index 2d7816934a1..2de011b4992 100644 --- a/testfiles/StripMallZoneEvapCooler.idf +++ b/testfiles/StripMallZoneEvapCooler.idf @@ -72,15 +72,16 @@ Annual, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Monday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/StripMallZoneEvapCoolerAutosized.idf b/testfiles/StripMallZoneEvapCoolerAutosized.idf index 2fb3cbe5dba..c3aff2c1b88 100644 --- a/testfiles/StripMallZoneEvapCoolerAutosized.idf +++ b/testfiles/StripMallZoneEvapCoolerAutosized.idf @@ -72,15 +72,16 @@ Annual, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Monday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/SuperMarketDetailed_DesuperHeatingCoil.idf b/testfiles/SuperMarketDetailed_DesuperHeatingCoil.idf index 46030df8573..971b429f2d0 100644 --- a/testfiles/SuperMarketDetailed_DesuperHeatingCoil.idf +++ b/testfiles/SuperMarketDetailed_DesuperHeatingCoil.idf @@ -245,8 +245,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -258,8 +260,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SuperMarket_DesuperHeatingCoil.idf b/testfiles/SuperMarket_DesuperHeatingCoil.idf index 86e51371584..b39cf3180d2 100644 --- a/testfiles/SuperMarket_DesuperHeatingCoil.idf +++ b/testfiles/SuperMarket_DesuperHeatingCoil.idf @@ -245,8 +245,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -258,8 +260,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SuperMarket_DetailedEvapCondenser.idf b/testfiles/SuperMarket_DetailedEvapCondenser.idf index 0098da9274e..11488403a33 100644 --- a/testfiles/SuperMarket_DetailedEvapCondenser.idf +++ b/testfiles/SuperMarket_DetailedEvapCondenser.idf @@ -254,8 +254,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -267,8 +269,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SuperMarket_DetailedWaterCondenser.idf b/testfiles/SuperMarket_DetailedWaterCondenser.idf index 9d7fc587eae..1b3d4036f23 100644 --- a/testfiles/SuperMarket_DetailedWaterCondenser.idf +++ b/testfiles/SuperMarket_DetailedWaterCondenser.idf @@ -259,8 +259,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -272,8 +274,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SuperMarket_EvapCondenser.idf b/testfiles/SuperMarket_EvapCondenser.idf index 632eebad107..13d9ce98919 100644 --- a/testfiles/SuperMarket_EvapCondenser.idf +++ b/testfiles/SuperMarket_EvapCondenser.idf @@ -245,8 +245,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -258,8 +260,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SuperMarket_SharedEvapCondenser.idf b/testfiles/SuperMarket_SharedEvapCondenser.idf index f64b0c00054..44db8d91ae8 100644 --- a/testfiles/SuperMarket_SharedEvapCondenser.idf +++ b/testfiles/SuperMarket_SharedEvapCondenser.idf @@ -254,8 +254,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -267,8 +269,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SuperMarket_WaterCondenser.idf b/testfiles/SuperMarket_WaterCondenser.idf index a766e65973f..e93b34a3222 100644 --- a/testfiles/SuperMarket_WaterCondenser.idf +++ b/testfiles/SuperMarket_WaterCondenser.idf @@ -252,8 +252,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -265,8 +267,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/Supermarket.idf b/testfiles/Supermarket.idf index 604d24d9970..0b16daf2eee 100644 --- a/testfiles/Supermarket.idf +++ b/testfiles/Supermarket.idf @@ -245,8 +245,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -258,8 +260,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SupermarketSecondary.idf b/testfiles/SupermarketSecondary.idf index 22306790cf7..729ba59c349 100644 --- a/testfiles/SupermarketSecondary.idf +++ b/testfiles/SupermarketSecondary.idf @@ -266,8 +266,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -279,8 +281,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SupermarketSubCoolersVariableSuction.idf b/testfiles/SupermarketSubCoolersVariableSuction.idf index 94459ef0dd2..5a80e1ae2f4 100644 --- a/testfiles/SupermarketSubCoolersVariableSuction.idf +++ b/testfiles/SupermarketSubCoolersVariableSuction.idf @@ -254,8 +254,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -267,8 +269,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SupermarketTranscriticalCO2.idf b/testfiles/SupermarketTranscriticalCO2.idf index 2763a0859e2..fe095a750a7 100644 --- a/testfiles/SupermarketTranscriticalCO2.idf +++ b/testfiles/SupermarketTranscriticalCO2.idf @@ -246,8 +246,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -259,8 +261,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SupermarketTwoStageFlashIntercooler.idf b/testfiles/SupermarketTwoStageFlashIntercooler.idf index 52d82784551..5f79deed9f2 100644 --- a/testfiles/SupermarketTwoStageFlashIntercooler.idf +++ b/testfiles/SupermarketTwoStageFlashIntercooler.idf @@ -249,8 +249,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -262,8 +264,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SupermarketTwoStageShellCoilIntercooler.idf b/testfiles/SupermarketTwoStageShellCoilIntercooler.idf index fe9708ec1a3..7aa7e28f8e7 100644 --- a/testfiles/SupermarketTwoStageShellCoilIntercooler.idf +++ b/testfiles/SupermarketTwoStageShellCoilIntercooler.idf @@ -249,8 +249,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -262,8 +264,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/Supermarket_CascadeCond.idf b/testfiles/Supermarket_CascadeCond.idf index 4808c2a9198..6802f3fcbdf 100644 --- a/testfiles/Supermarket_CascadeCond.idf +++ b/testfiles/Supermarket_CascadeCond.idf @@ -251,8 +251,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -264,8 +266,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/Supermarket_Detailed.idf b/testfiles/Supermarket_Detailed.idf index 174bb7c6de8..fed79afdaed 100644 --- a/testfiles/Supermarket_Detailed.idf +++ b/testfiles/Supermarket_Detailed.idf @@ -252,8 +252,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -265,8 +267,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/Supermarket_SharedAirCondenser.idf b/testfiles/Supermarket_SharedAirCondenser.idf index 75c3829fb34..739fdb3c949 100644 --- a/testfiles/Supermarket_SharedAirCondenser.idf +++ b/testfiles/Supermarket_SharedAirCondenser.idf @@ -252,8 +252,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -265,8 +267,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SupplyPlenumVAV.idf b/testfiles/SupplyPlenumVAV.idf index b6378bea2ef..2b4d62ebd3b 100644 --- a/testfiles/SupplyPlenumVAV.idf +++ b/testfiles/SupplyPlenumVAV.idf @@ -107,8 +107,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SurfaceGroundHeatExchanger.idf b/testfiles/SurfaceGroundHeatExchanger.idf index f685c0a2188..50776a1f1e9 100644 --- a/testfiles/SurfaceGroundHeatExchanger.idf +++ b/testfiles/SurfaceGroundHeatExchanger.idf @@ -135,8 +135,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -148,8 +150,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SurfacePropTest_SurfLWR.idf b/testfiles/SurfacePropTest_SurfLWR.idf index 72ae01f13be..81a8bc894e2 100644 --- a/testfiles/SurfacePropTest_SurfLWR.idf +++ b/testfiles/SurfacePropTest_SurfLWR.idf @@ -115,9 +115,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/SurfaceTest.idf b/testfiles/SurfaceTest.idf index 805de99fa21..83458e17b25 100644 --- a/testfiles/SurfaceTest.idf +++ b/testfiles/SurfaceTest.idf @@ -115,9 +115,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/SurfaceZonePropTest_LocalEnv.idf b/testfiles/SurfaceZonePropTest_LocalEnv.idf index dbeeb51d9f7..407fd03b91d 100644 --- a/testfiles/SurfaceZonePropTest_LocalEnv.idf +++ b/testfiles/SurfaceZonePropTest_LocalEnv.idf @@ -115,9 +115,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/TRHConstFlowChillerOneBranch.idf b/testfiles/TRHConstFlowChillerOneBranch.idf index 30dfa675ee5..c9be769a666 100644 --- a/testfiles/TRHConstFlowChillerOneBranch.idf +++ b/testfiles/TRHConstFlowChillerOneBranch.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -147,8 +149,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/TRHEvapCoolerOAStaged.idf b/testfiles/TRHEvapCoolerOAStaged.idf index 78e0d374b79..c97f8e524a9 100644 --- a/testfiles/TRHEvapCoolerOAStaged.idf +++ b/testfiles/TRHEvapCoolerOAStaged.idf @@ -136,8 +136,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/TRHEvapCoolerOAStagedWetCoil.idf b/testfiles/TRHEvapCoolerOAStagedWetCoil.idf index 06b0f525825..4f099a13d70 100644 --- a/testfiles/TRHEvapCoolerOAStagedWetCoil.idf +++ b/testfiles/TRHEvapCoolerOAStagedWetCoil.idf @@ -136,8 +136,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/TermRHDXSystem.idf b/testfiles/TermRHDXSystem.idf index d3ea3c49176..8498b14e8f0 100644 --- a/testfiles/TermRHDXSystem.idf +++ b/testfiles/TermRHDXSystem.idf @@ -139,8 +139,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -152,8 +154,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/TermRHGasElecCoils.idf b/testfiles/TermRHGasElecCoils.idf index 75e701f9f70..f06cf146ad8 100644 --- a/testfiles/TermRHGasElecCoils.idf +++ b/testfiles/TermRHGasElecCoils.idf @@ -131,8 +131,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -144,8 +146,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/TermReheat.idf b/testfiles/TermReheat.idf index 785fb1eb403..f6982b8bbb5 100644 --- a/testfiles/TermReheat.idf +++ b/testfiles/TermReheat.idf @@ -130,8 +130,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -143,8 +145,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/TermReheatPri-SecLoop.idf b/testfiles/TermReheatPri-SecLoop.idf index fcbdcdd734e..882c7248052 100644 --- a/testfiles/TermReheatPri-SecLoop.idf +++ b/testfiles/TermReheatPri-SecLoop.idf @@ -135,8 +135,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/TermReheatScheduledPump.idf b/testfiles/TermReheatScheduledPump.idf index cba5c4a18b7..ba010abf7d5 100644 --- a/testfiles/TermReheatScheduledPump.idf +++ b/testfiles/TermReheatScheduledPump.idf @@ -141,8 +141,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -154,8 +156,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/TermReheatSurfTC.idf b/testfiles/TermReheatSurfTC.idf index ee8d23e7d22..7fc8a86e13b 100644 --- a/testfiles/TermReheatSurfTC.idf +++ b/testfiles/TermReheatSurfTC.idf @@ -130,8 +130,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/TermRhDualSetpointWithDB.idf b/testfiles/TermRhDualSetpointWithDB.idf index ad9ba67fbf8..952180dfa2a 100644 --- a/testfiles/TermRhDualSetpointWithDB.idf +++ b/testfiles/TermRhDualSetpointWithDB.idf @@ -142,8 +142,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -155,8 +157,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/TermRhGenericOAHeatRecMinExh.idf b/testfiles/TermRhGenericOAHeatRecMinExh.idf index ba3ab99005d..3eb538b39df 100644 --- a/testfiles/TermRhGenericOAHeatRecMinExh.idf +++ b/testfiles/TermRhGenericOAHeatRecMinExh.idf @@ -127,8 +127,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -140,8 +142,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/TermRhGenericOAHeatRecPreheat.idf b/testfiles/TermRhGenericOAHeatRecPreheat.idf index 68eefb9d17e..723dbc6f531 100644 --- a/testfiles/TermRhGenericOAHeatRecPreheat.idf +++ b/testfiles/TermRhGenericOAHeatRecPreheat.idf @@ -127,8 +127,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -140,8 +142,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/TermRhSingleHeatCoolNoDB.idf b/testfiles/TermRhSingleHeatCoolNoDB.idf index 20de0a7da84..98eed939e06 100644 --- a/testfiles/TermRhSingleHeatCoolNoDB.idf +++ b/testfiles/TermRhSingleHeatCoolNoDB.idf @@ -136,8 +136,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -149,8 +151,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ThermalChimneyTest.idf b/testfiles/ThermalChimneyTest.idf index dbd29b2fcf7..68955de7bbb 100644 --- a/testfiles/ThermalChimneyTest.idf +++ b/testfiles/ThermalChimneyTest.idf @@ -180,8 +180,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ThermochromicWindow.idf b/testfiles/ThermochromicWindow.idf index 7d52f85436a..cb172ee531c 100644 --- a/testfiles/ThermochromicWindow.idf +++ b/testfiles/ThermochromicWindow.idf @@ -96,15 +96,16 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators SurfaceConvectionAlgorithm:Inside,TARP; diff --git a/testfiles/TranspiredCollectors.idf b/testfiles/TranspiredCollectors.idf index b40dd4c2a40..b49a7780ccf 100644 --- a/testfiles/TranspiredCollectors.idf +++ b/testfiles/TranspiredCollectors.idf @@ -45,8 +45,10 @@ , !- Name 2, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 2, !- End Month 14, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -58,8 +60,10 @@ , !- Name 2, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 2, !- End Month 14, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/TwoWayCommonPipe_Pri-Sec.idf b/testfiles/TwoWayCommonPipe_Pri-Sec.idf index 7ae873e52c6..a948236cce2 100644 --- a/testfiles/TwoWayCommonPipe_Pri-Sec.idf +++ b/testfiles/TwoWayCommonPipe_Pri-Sec.idf @@ -158,8 +158,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -171,8 +173,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/UnitHeater.idf b/testfiles/UnitHeater.idf index 927480e0b2b..fb4b09a2c25 100644 --- a/testfiles/UnitHeater.idf +++ b/testfiles/UnitHeater.idf @@ -137,8 +137,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/UnitHeaterAuto.idf b/testfiles/UnitHeaterAuto.idf index 5fc8253064f..d1db18c33c1 100644 --- a/testfiles/UnitHeaterAuto.idf +++ b/testfiles/UnitHeaterAuto.idf @@ -117,8 +117,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/UnitHeaterGasElec.idf b/testfiles/UnitHeaterGasElec.idf index 50ee841a74f..24d4cfda896 100644 --- a/testfiles/UnitHeaterGasElec.idf +++ b/testfiles/UnitHeaterGasElec.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/UnitVent5Zone.idf b/testfiles/UnitVent5Zone.idf index 7242adb3bda..1fa9f7dfde1 100644 --- a/testfiles/UnitVent5Zone.idf +++ b/testfiles/UnitVent5Zone.idf @@ -129,8 +129,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/UnitVent5ZoneAuto.idf b/testfiles/UnitVent5ZoneAuto.idf index e768bc36cf0..9e979051b30 100644 --- a/testfiles/UnitVent5ZoneAuto.idf +++ b/testfiles/UnitVent5ZoneAuto.idf @@ -129,8 +129,10 @@ Jan14, !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -142,8 +144,10 @@ July7, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/UnitVent5ZoneFixedOANoCoilOpt.idf b/testfiles/UnitVent5ZoneFixedOANoCoilOpt.idf index 706f435a2a0..89f90e45988 100644 --- a/testfiles/UnitVent5ZoneFixedOANoCoilOpt.idf +++ b/testfiles/UnitVent5ZoneFixedOANoCoilOpt.idf @@ -129,8 +129,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/UnitarySystem_5ZoneWaterLoopHeatPump.idf b/testfiles/UnitarySystem_5ZoneWaterLoopHeatPump.idf index 6c492bef056..0db08236e26 100644 --- a/testfiles/UnitarySystem_5ZoneWaterLoopHeatPump.idf +++ b/testfiles/UnitarySystem_5ZoneWaterLoopHeatPump.idf @@ -167,8 +167,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -180,8 +182,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/UnitarySystem_DXCoilSystemAuto.idf b/testfiles/UnitarySystem_DXCoilSystemAuto.idf index 0584c1c6016..11d92b2563c 100644 --- a/testfiles/UnitarySystem_DXCoilSystemAuto.idf +++ b/testfiles/UnitarySystem_DXCoilSystemAuto.idf @@ -131,8 +131,10 @@ Jan14, !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -144,8 +146,10 @@ July7, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/UnitarySystem_FurnaceWithDXSystemRHcontrol.idf b/testfiles/UnitarySystem_FurnaceWithDXSystemRHcontrol.idf index 44013d4ca28..2e7df3a0235 100644 --- a/testfiles/UnitarySystem_FurnaceWithDXSystemRHcontrol.idf +++ b/testfiles/UnitarySystem_FurnaceWithDXSystemRHcontrol.idf @@ -227,8 +227,10 @@ Jan4, !- Name 1, !- Begin Month 4, !- Begin Day of Month + , !- Begin Year 1, !- End Month 4, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -240,8 +242,10 @@ Mar22, !- Name 3, !- Begin Month 22, !- Begin Day of Month + , !- Begin Year 3, !- End Month 22, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -253,8 +257,10 @@ Jul7, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/UnitarySystem_HeatPumpAuto.idf b/testfiles/UnitarySystem_HeatPumpAuto.idf index 76c3cd090f5..937251a1add 100644 --- a/testfiles/UnitarySystem_HeatPumpAuto.idf +++ b/testfiles/UnitarySystem_HeatPumpAuto.idf @@ -133,8 +133,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -146,8 +148,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/UnitarySystem_MultiSpeedCoils_SingleMode.idf b/testfiles/UnitarySystem_MultiSpeedCoils_SingleMode.idf index 121ea7713c8..c67e2ff67f2 100644 --- a/testfiles/UnitarySystem_MultiSpeedCoils_SingleMode.idf +++ b/testfiles/UnitarySystem_MultiSpeedCoils_SingleMode.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -147,8 +149,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/UnitarySystem_VSHeatPumpWaterToAirEquationFit.idf b/testfiles/UnitarySystem_VSHeatPumpWaterToAirEquationFit.idf index 9b3ec02dbe8..950c3563235 100644 --- a/testfiles/UnitarySystem_VSHeatPumpWaterToAirEquationFit.idf +++ b/testfiles/UnitarySystem_VSHeatPumpWaterToAirEquationFit.idf @@ -1925,8 +1925,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -1938,8 +1940,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/UnitarySystem_WaterCoils_wMultiSpeedFan.idf b/testfiles/UnitarySystem_WaterCoils_wMultiSpeedFan.idf index c75e37ff569..0b542796e50 100644 --- a/testfiles/UnitarySystem_WaterCoils_wMultiSpeedFan.idf +++ b/testfiles/UnitarySystem_WaterCoils_wMultiSpeedFan.idf @@ -263,8 +263,10 @@ , !- Name 1, !- Begin Month 4, !- Begin Day of Month + , !- Begin Year 1, !- End Month 4, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -276,8 +278,10 @@ , !- Name 3, !- Begin Month 22, !- Begin Day of Month + , !- Begin Year 3, !- End Month 22, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period @@ -289,8 +293,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year , !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/UserDefinedRoomAirPatterns.idf b/testfiles/UserDefinedRoomAirPatterns.idf index 73f13a55eae..dbcdd658422 100644 --- a/testfiles/UserDefinedRoomAirPatterns.idf +++ b/testfiles/UserDefinedRoomAirPatterns.idf @@ -74,8 +74,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/VAVSingleDuctConstFlowBoiler.idf b/testfiles/VAVSingleDuctConstFlowBoiler.idf index 26bf5a2addb..51587366b7f 100644 --- a/testfiles/VAVSingleDuctConstFlowBoiler.idf +++ b/testfiles/VAVSingleDuctConstFlowBoiler.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -147,8 +149,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/VAVSingleDuctReheat.idf b/testfiles/VAVSingleDuctReheat.idf index ea943617bdb..127a5ddb99b 100644 --- a/testfiles/VAVSingleDuctReheat.idf +++ b/testfiles/VAVSingleDuctReheat.idf @@ -137,8 +137,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -150,8 +152,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/VAVSingleDuctReheatBaseboard.idf b/testfiles/VAVSingleDuctReheatBaseboard.idf index 7c5e8781edb..fda4a6969ca 100644 --- a/testfiles/VAVSingleDuctReheatBaseboard.idf +++ b/testfiles/VAVSingleDuctReheatBaseboard.idf @@ -135,8 +135,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -148,8 +150,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/VAVSingleDuctReheatNoReheat.idf b/testfiles/VAVSingleDuctReheatNoReheat.idf index d8bc9583c95..cb509a87b35 100644 --- a/testfiles/VAVSingleDuctReheatNoReheat.idf +++ b/testfiles/VAVSingleDuctReheatNoReheat.idf @@ -136,8 +136,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -149,8 +151,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/VAVSingleDuctReheat_DualMax.idf b/testfiles/VAVSingleDuctReheat_DualMax.idf index bac44c1e325..e13347f04e1 100644 --- a/testfiles/VAVSingleDuctReheat_DualMax.idf +++ b/testfiles/VAVSingleDuctReheat_DualMax.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -147,8 +149,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/VAVSingleDuctReheat_MaxSAT_ReverseActing.idf b/testfiles/VAVSingleDuctReheat_MaxSAT_ReverseActing.idf index b03f623787a..a82cdf0bc90 100644 --- a/testfiles/VAVSingleDuctReheat_MaxSAT_ReverseActing.idf +++ b/testfiles/VAVSingleDuctReheat_MaxSAT_ReverseActing.idf @@ -166,8 +166,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -179,8 +181,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/VAVSingleDuctVarFlowBoiler.idf b/testfiles/VAVSingleDuctVarFlowBoiler.idf index bdf2071faa4..04456dc6742 100644 --- a/testfiles/VAVSingleDuctVarFlowBoiler.idf +++ b/testfiles/VAVSingleDuctVarFlowBoiler.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -147,8 +149,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/VSDXCoilSystemAuto.idf b/testfiles/VSDXCoilSystemAuto.idf index e9035cb0552..8b0b8a1bac4 100644 --- a/testfiles/VSDXCoilSystemAuto.idf +++ b/testfiles/VSDXCoilSystemAuto.idf @@ -717,8 +717,10 @@ Jan14, !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -730,8 +732,10 @@ July7, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/VSHeatPumpWaterHeater.idf b/testfiles/VSHeatPumpWaterHeater.idf index a9b0e31aa84..5034c7c5040 100644 --- a/testfiles/VSHeatPumpWaterHeater.idf +++ b/testfiles/VSHeatPumpWaterHeater.idf @@ -194,8 +194,10 @@ Jan14, !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -207,8 +209,10 @@ July7, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/VSHeatPumpWaterToAirEquationFit.idf b/testfiles/VSHeatPumpWaterToAirEquationFit.idf index dd507ba056d..daf735d15ef 100644 --- a/testfiles/VSHeatPumpWaterToAirEquationFit.idf +++ b/testfiles/VSHeatPumpWaterToAirEquationFit.idf @@ -1884,8 +1884,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -1897,8 +1899,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/VSHeatPumpWaterToAirWithRHControl.idf b/testfiles/VSHeatPumpWaterToAirWithRHControl.idf index 7adc60a668f..40969f77f64 100644 --- a/testfiles/VSHeatPumpWaterToAirWithRHControl.idf +++ b/testfiles/VSHeatPumpWaterToAirWithRHControl.idf @@ -1897,8 +1897,10 @@ , !- Name 1, !- Begin Month 3, !- Begin Day of Month + , !- Begin Year 1, !- End Month 3, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -1910,8 +1912,10 @@ , !- Name 7, !- Begin Month 3, !- Begin Day of Month + , !- Begin Year 7, !- End Month 3, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/VSWaterHeaterHeatPumpStratifiedTank.idf b/testfiles/VSWaterHeaterHeatPumpStratifiedTank.idf index d83c6c38706..0b8813d3ec9 100644 --- a/testfiles/VSWaterHeaterHeatPumpStratifiedTank.idf +++ b/testfiles/VSWaterHeaterHeatPumpStratifiedTank.idf @@ -99,8 +99,10 @@ April, !- Name 4, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 4, !- End Month 3, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/VariableRefrigerantFlow_5Zone.idf b/testfiles/VariableRefrigerantFlow_5Zone.idf index 73db29f73d7..dee3ebe569c 100644 --- a/testfiles/VariableRefrigerantFlow_5Zone.idf +++ b/testfiles/VariableRefrigerantFlow_5Zone.idf @@ -974,8 +974,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 4, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -987,8 +989,10 @@ , !- Name 2, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 2, !- End Month 4, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/VariableRefrigerantFlow_FluidTCtrl_5Zone.idf b/testfiles/VariableRefrigerantFlow_FluidTCtrl_5Zone.idf index 0c57b865c30..4aa3bc8cd11 100644 --- a/testfiles/VariableRefrigerantFlow_FluidTCtrl_5Zone.idf +++ b/testfiles/VariableRefrigerantFlow_FluidTCtrl_5Zone.idf @@ -2055,8 +2055,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -2068,8 +2070,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/VariableRefrigerantFlow_FluidTCtrl_HR_5Zone.idf b/testfiles/VariableRefrigerantFlow_FluidTCtrl_HR_5Zone.idf index d7bb998eb4e..108d5b16834 100644 --- a/testfiles/VariableRefrigerantFlow_FluidTCtrl_HR_5Zone.idf +++ b/testfiles/VariableRefrigerantFlow_FluidTCtrl_HR_5Zone.idf @@ -2074,8 +2074,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -2087,8 +2089,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/VaryingLocationAndOrientation.idf b/testfiles/VaryingLocationAndOrientation.idf index 85089fedd3f..4b888e66a69 100644 --- a/testfiles/VaryingLocationAndOrientation.idf +++ b/testfiles/VaryingLocationAndOrientation.idf @@ -26,8 +26,10 @@ Annual Run, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 2, !- End Month 28, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/VentilatedSlab.idf b/testfiles/VentilatedSlab.idf index da180fd48b6..71b1865e4d2 100644 --- a/testfiles/VentilatedSlab.idf +++ b/testfiles/VentilatedSlab.idf @@ -209,8 +209,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/VentilatedSlab_SeriesSlabs.idf b/testfiles/VentilatedSlab_SeriesSlabs.idf index 0f61955d891..bab4cc3de9a 100644 --- a/testfiles/VentilatedSlab_SeriesSlabs.idf +++ b/testfiles/VentilatedSlab_SeriesSlabs.idf @@ -220,9 +220,11 @@ , !- Name 7, !- Begin Month 5, !- Begin Day of Month + , !- Begin Year 7, !- End Month 12, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/VentilationSimpleTest.idf b/testfiles/VentilationSimpleTest.idf index 4c0c899d167..f9af3c76b9e 100644 --- a/testfiles/VentilationSimpleTest.idf +++ b/testfiles/VentilationSimpleTest.idf @@ -53,8 +53,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/WWHPSimpleAuto.idf b/testfiles/WWHPSimpleAuto.idf index 90f83e11e2d..c6d8f9a09e3 100644 --- a/testfiles/WWHPSimpleAuto.idf +++ b/testfiles/WWHPSimpleAuto.idf @@ -131,9 +131,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 11, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule @@ -144,9 +146,11 @@ , !- Name 7, !- Begin Month 15, !- Begin Day of Month + , !- Begin Year 7, !- End Month 25, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/WaterHeaterDHWPlantLoop.idf b/testfiles/WaterHeaterDHWPlantLoop.idf index 725f723f2ce..df2dbea4ba6 100644 --- a/testfiles/WaterHeaterDHWPlantLoop.idf +++ b/testfiles/WaterHeaterDHWPlantLoop.idf @@ -103,8 +103,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 3, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/WaterHeaterHeatPumpStratifiedTank.idf b/testfiles/WaterHeaterHeatPumpStratifiedTank.idf index 199031b7fa8..f6f88f91e49 100644 --- a/testfiles/WaterHeaterHeatPumpStratifiedTank.idf +++ b/testfiles/WaterHeaterHeatPumpStratifiedTank.idf @@ -99,8 +99,10 @@ April, !- Name 4, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 4, !- End Month 3, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/WaterHeaterHeatPumpWrappedCondenser.idf b/testfiles/WaterHeaterHeatPumpWrappedCondenser.idf index 02dc39b9449..2c490b920bf 100644 --- a/testfiles/WaterHeaterHeatPumpWrappedCondenser.idf +++ b/testfiles/WaterHeaterHeatPumpWrappedCondenser.idf @@ -108,8 +108,10 @@ April, !- Name 4, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 4, !- End Month 3, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/WaterHeaterStandAlone.idf b/testfiles/WaterHeaterStandAlone.idf index 132a0abc2ac..3664a564337 100644 --- a/testfiles/WaterHeaterStandAlone.idf +++ b/testfiles/WaterHeaterStandAlone.idf @@ -111,8 +111,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/WaterSideEconomizer_Integrated.idf b/testfiles/WaterSideEconomizer_Integrated.idf index 3359204aa54..28a7c9fde36 100644 --- a/testfiles/WaterSideEconomizer_Integrated.idf +++ b/testfiles/WaterSideEconomizer_Integrated.idf @@ -169,8 +169,10 @@ April, !- Name 3, !- Begin Month 31, !- Begin Day of Month + , !- Begin Year 4, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/WaterSideEconomizer_NonIntegrated.idf b/testfiles/WaterSideEconomizer_NonIntegrated.idf index dfea871dbc2..0cc647878c1 100644 --- a/testfiles/WaterSideEconomizer_NonIntegrated.idf +++ b/testfiles/WaterSideEconomizer_NonIntegrated.idf @@ -169,8 +169,10 @@ April, !- Name 3, !- Begin Month 31, !- Begin Day of Month + , !- Begin Year 4, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/WeatherTimeBins.idf b/testfiles/WeatherTimeBins.idf index 5ff8fdf9c1d..7f44311eb47 100644 --- a/testfiles/WeatherTimeBins.idf +++ b/testfiles/WeatherTimeBins.idf @@ -114,8 +114,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year , !- Day of Week for Start Day , !- Use Weather File Holidays and Special Days , !- Use Weather File Daylight Saving Period diff --git a/testfiles/WindACAirtoAir.idf b/testfiles/WindACAirtoAir.idf index 8f78cdfa515..2d52f2cfdda 100644 --- a/testfiles/WindACAirtoAir.idf +++ b/testfiles/WindACAirtoAir.idf @@ -119,8 +119,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -132,8 +134,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/WindACAuto.idf b/testfiles/WindACAuto.idf index a2ba41634c4..a5464a16c71 100644 --- a/testfiles/WindACAuto.idf +++ b/testfiles/WindACAuto.idf @@ -122,8 +122,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -135,8 +137,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/WindACRHControl.idf b/testfiles/WindACRHControl.idf index d80ff06ae84..977205f7cc1 100644 --- a/testfiles/WindACRHControl.idf +++ b/testfiles/WindACRHControl.idf @@ -132,8 +132,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -145,8 +147,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/WindowTests.idf b/testfiles/WindowTests.idf index 5a4125721e0..87f7eb9241b 100644 --- a/testfiles/WindowTests.idf +++ b/testfiles/WindowTests.idf @@ -149,8 +149,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -162,8 +164,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/WindowTestsSimple.idf b/testfiles/WindowTestsSimple.idf index 1c18ece3413..5306975f481 100644 --- a/testfiles/WindowTestsSimple.idf +++ b/testfiles/WindowTestsSimple.idf @@ -150,8 +150,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -163,8 +165,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ZoneCoupledGroundHTBasement.idf b/testfiles/ZoneCoupledGroundHTBasement.idf index b0fe39c4021..047a01fe69a 100644 --- a/testfiles/ZoneCoupledGroundHTBasement.idf +++ b/testfiles/ZoneCoupledGroundHTBasement.idf @@ -167,8 +167,10 @@ Annual Run, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ZoneCoupledGroundHTSlabInGrade.idf b/testfiles/ZoneCoupledGroundHTSlabInGrade.idf index f89ee6b6cdc..7584080e6f8 100644 --- a/testfiles/ZoneCoupledGroundHTSlabInGrade.idf +++ b/testfiles/ZoneCoupledGroundHTSlabInGrade.idf @@ -146,8 +146,10 @@ Annual Run, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ZoneCoupledGroundHTSlabOnGrade.idf b/testfiles/ZoneCoupledGroundHTSlabOnGrade.idf index ba57eef5dbc..974a2eca46e 100644 --- a/testfiles/ZoneCoupledGroundHTSlabOnGrade.idf +++ b/testfiles/ZoneCoupledGroundHTSlabOnGrade.idf @@ -146,8 +146,10 @@ Annual Run, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ZoneCoupledKivaBasement.idf b/testfiles/ZoneCoupledKivaBasement.idf index f32bc75b5e4..0feb10edad9 100644 --- a/testfiles/ZoneCoupledKivaBasement.idf +++ b/testfiles/ZoneCoupledKivaBasement.idf @@ -166,8 +166,10 @@ Annual Run, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ZoneCoupledKivaRefBldgMediumOffice.idf b/testfiles/ZoneCoupledKivaRefBldgMediumOffice.idf index f65e6bbcc1d..3054e95ada3 100644 --- a/testfiles/ZoneCoupledKivaRefBldgMediumOffice.idf +++ b/testfiles/ZoneCoupledKivaRefBldgMediumOffice.idf @@ -92,15 +92,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/testfiles/ZoneCoupledKivaSlab.idf b/testfiles/ZoneCoupledKivaSlab.idf index 1e6e34a364f..74b3942ce77 100644 --- a/testfiles/ZoneCoupledKivaSlab.idf +++ b/testfiles/ZoneCoupledKivaSlab.idf @@ -146,8 +146,10 @@ Annual Run, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ZoneCoupledKivaWalkoutBasement.idf b/testfiles/ZoneCoupledKivaWalkoutBasement.idf index d2643e3430a..0236114ab61 100644 --- a/testfiles/ZoneCoupledKivaWalkoutBasement.idf +++ b/testfiles/ZoneCoupledKivaWalkoutBasement.idf @@ -166,8 +166,10 @@ Annual Run, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ZoneSysAvailManager.idf b/testfiles/ZoneSysAvailManager.idf index 7c99341374e..1645cf3c599 100644 --- a/testfiles/ZoneSysAvailManager.idf +++ b/testfiles/ZoneSysAvailManager.idf @@ -116,8 +116,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ZoneVSWSHP_wDOAS.idf b/testfiles/ZoneVSWSHP_wDOAS.idf index a80d16ede78..56fca9691cd 100644 --- a/testfiles/ZoneVSWSHP_wDOAS.idf +++ b/testfiles/ZoneVSWSHP_wDOAS.idf @@ -606,8 +606,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/ZoneWSHP_wDOAS.idf b/testfiles/ZoneWSHP_wDOAS.idf index c0b2e43d4f7..4c62bf9cbb5 100644 --- a/testfiles/ZoneWSHP_wDOAS.idf +++ b/testfiles/ZoneWSHP_wDOAS.idf @@ -117,8 +117,10 @@ annual, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_1ZoneUncontrolled_Feb29.idf b/testfiles/_1ZoneUncontrolled_Feb29.idf index 857d2a30e1b..8f64e80a880 100644 --- a/testfiles/_1ZoneUncontrolled_Feb29.idf +++ b/testfiles/_1ZoneUncontrolled_Feb29.idf @@ -119,8 +119,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_1ZoneUncontrolled_SineOSC.idf b/testfiles/_1ZoneUncontrolled_SineOSC.idf index 37f786e5f9c..eb102b0ef7a 100644 --- a/testfiles/_1ZoneUncontrolled_SineOSC.idf +++ b/testfiles/_1ZoneUncontrolled_SineOSC.idf @@ -115,8 +115,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_1ZoneUncontrolled_customrange.idf b/testfiles/_1ZoneUncontrolled_customrange.idf index 2c27c74cd80..8226d51aa2b 100644 --- a/testfiles/_1ZoneUncontrolled_customrange.idf +++ b/testfiles/_1ZoneUncontrolled_customrange.idf @@ -120,8 +120,10 @@ Windsor, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Thursday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_1Zone_Heavy_AdiabaticX2.idf b/testfiles/_1Zone_Heavy_AdiabaticX2.idf index 490e01d24d6..e8ea85e3c40 100644 --- a/testfiles/_1Zone_Heavy_AdiabaticX2.idf +++ b/testfiles/_1Zone_Heavy_AdiabaticX2.idf @@ -37,15 +37,16 @@ , !- Name 1, !- Begin Month 21, !- Begin Day of Month + , !- Begin Year 2, !- End Month 10, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! Denver Stapleton Intl Arpt CO USA Annual Heating Design Conditions Wind Speed=2.3m/s Wind Dir=180 ! Coldest Month=December diff --git a/testfiles/_1Zone_Heavy_MassX2.idf b/testfiles/_1Zone_Heavy_MassX2.idf index 81f13ddb414..6e9a5f2fd9e 100644 --- a/testfiles/_1Zone_Heavy_MassX2.idf +++ b/testfiles/_1Zone_Heavy_MassX2.idf @@ -37,15 +37,16 @@ , !- Name 1, !- Begin Month 21, !- Begin Day of Month + , !- Begin Year 2, !- End Month 10, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! Denver Stapleton Intl Arpt CO USA Annual Heating Design Conditions Wind Speed=2.3m/s Wind Dir=180 ! Coldest Month=December diff --git a/testfiles/_1Zone_Heavy_SelfRef.idf b/testfiles/_1Zone_Heavy_SelfRef.idf index b89fa20baf9..7e354aec41e 100644 --- a/testfiles/_1Zone_Heavy_SelfRef.idf +++ b/testfiles/_1Zone_Heavy_SelfRef.idf @@ -37,15 +37,16 @@ , !- Name 1, !- Begin Month 21, !- Begin Day of Month + , !- Begin Year 2, !- End Month 10, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! Denver Stapleton Intl Arpt CO USA Annual Heating Design Conditions Wind Speed=2.3m/s Wind Dir=180 ! Coldest Month=December diff --git a/testfiles/_5ZoneEvapCooled.idf b/testfiles/_5ZoneEvapCooled.idf index ef8d96f0ccc..b1dc9049396 100644 --- a/testfiles/_5ZoneEvapCooled.idf +++ b/testfiles/_5ZoneEvapCooled.idf @@ -163,8 +163,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 8, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_AllOffOpScheme.idf b/testfiles/_AllOffOpScheme.idf index 8b85681dac5..16fa0ad8efc 100644 --- a/testfiles/_AllOffOpScheme.idf +++ b/testfiles/_AllOffOpScheme.idf @@ -133,8 +133,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -146,8 +148,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_BranchPumpsWithCommonPipe.idf b/testfiles/_BranchPumpsWithCommonPipe.idf index a80adcab517..c62c26ff9af 100644 --- a/testfiles/_BranchPumpsWithCommonPipe.idf +++ b/testfiles/_BranchPumpsWithCommonPipe.idf @@ -136,8 +136,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_CTFTestsPart1.idf b/testfiles/_CTFTestsPart1.idf index 32a3393b065..d3439521442 100644 --- a/testfiles/_CTFTestsPart1.idf +++ b/testfiles/_CTFTestsPart1.idf @@ -48,8 +48,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_CTFTestsPart2.idf b/testfiles/_CTFTestsPart2.idf index 74866fe94ce..bca96e4dd9f 100644 --- a/testfiles/_CTFTestsPart2.idf +++ b/testfiles/_CTFTestsPart2.idf @@ -39,8 +39,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_ConvCoefftest.idf b/testfiles/_ConvCoefftest.idf index 40fe7c42c71..8e8e7dce6c1 100644 --- a/testfiles/_ConvCoefftest.idf +++ b/testfiles/_ConvCoefftest.idf @@ -95,8 +95,10 @@ , !- Name 8, !- Begin Month 21, !- Begin Day of Month + , !- Begin Year 8, !- End Month 21, !- End Day of Month + , !- End Year , !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_CoolingTowerDewPointRangeOp.idf b/testfiles/_CoolingTowerDewPointRangeOp.idf index 770327fe86b..fbca24b4ca5 100644 --- a/testfiles/_CoolingTowerDewPointRangeOp.idf +++ b/testfiles/_CoolingTowerDewPointRangeOp.idf @@ -163,8 +163,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -176,8 +178,10 @@ , !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_CoolingTowerWithDPDeltaTempOp.idf b/testfiles/_CoolingTowerWithDPDeltaTempOp.idf index 4236770d979..e84edf5a5dc 100644 --- a/testfiles/_CoolingTowerWithDPDeltaTempOp.idf +++ b/testfiles/_CoolingTowerWithDPDeltaTempOp.idf @@ -163,8 +163,10 @@ , !- Name 1, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -176,8 +178,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_DOASDXCOIL_wUserSHRMethod.idf b/testfiles/_DOASDXCOIL_wUserSHRMethod.idf index 995b4da3156..be4984010ca 100644 --- a/testfiles/_DOASDXCOIL_wUserSHRMethod.idf +++ b/testfiles/_DOASDXCOIL_wUserSHRMethod.idf @@ -162,8 +162,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -175,8 +177,10 @@ , !- Name 7, !- Begin Month 16, !- Begin Day of Month + , !- Begin Year 7, !- End Month 16, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_DemandVentilationFixedRateAndHighPriority.idf b/testfiles/_DemandVentilationFixedRateAndHighPriority.idf index 4c0031d9227..75ea77debb1 100644 --- a/testfiles/_DemandVentilationFixedRateAndHighPriority.idf +++ b/testfiles/_DemandVentilationFixedRateAndHighPriority.idf @@ -166,8 +166,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -179,8 +181,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_DemandVentilationReductionRatioAndHighPriority.idf b/testfiles/_DemandVentilationReductionRatioAndHighPriority.idf index a84feed33f1..9fb71c40a92 100644 --- a/testfiles/_DemandVentilationReductionRatioAndHighPriority.idf +++ b/testfiles/_DemandVentilationReductionRatioAndHighPriority.idf @@ -166,8 +166,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -179,8 +181,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_DemandVentilationReductionRatioAndLowPriority.idf b/testfiles/_DemandVentilationReductionRatioAndLowPriority.idf index 54f8a331b5d..77c607307aa 100644 --- a/testfiles/_DemandVentilationReductionRatioAndLowPriority.idf +++ b/testfiles/_DemandVentilationReductionRatioAndLowPriority.idf @@ -166,8 +166,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -179,8 +181,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_DualDuctConstVolDamperMultizoneAverageSetPointManager.idf b/testfiles/_DualDuctConstVolDamperMultizoneAverageSetPointManager.idf index 5a98ca495c1..0e674007a9d 100644 --- a/testfiles/_DualDuctConstVolDamperMultizoneAverageSetPointManager.idf +++ b/testfiles/_DualDuctConstVolDamperMultizoneAverageSetPointManager.idf @@ -144,8 +144,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -157,8 +159,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_ElectricREformulatedEIRChiller.idf b/testfiles/_ElectricREformulatedEIRChiller.idf index 812e4162215..21193712bb4 100644 --- a/testfiles/_ElectricREformulatedEIRChiller.idf +++ b/testfiles/_ElectricREformulatedEIRChiller.idf @@ -130,8 +130,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -143,8 +145,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_ExternalInterface-actuator.idf b/testfiles/_ExternalInterface-actuator.idf index e29a484af70..3b8f6616281 100644 --- a/testfiles/_ExternalInterface-actuator.idf +++ b/testfiles/_ExternalInterface-actuator.idf @@ -128,8 +128,10 @@ , !- Name 3, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 3, !- End Month 4, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_ExternalInterface-functionalmockupunit-to-actuator.idf b/testfiles/_ExternalInterface-functionalmockupunit-to-actuator.idf index c3f4eb117eb..8046cd16f34 100644 --- a/testfiles/_ExternalInterface-functionalmockupunit-to-actuator.idf +++ b/testfiles/_ExternalInterface-functionalmockupunit-to-actuator.idf @@ -136,8 +136,10 @@ , !- Name 3, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 3, !- End Month 4, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_ExternalInterface-functionalmockupunit-to-schedule.idf b/testfiles/_ExternalInterface-functionalmockupunit-to-schedule.idf index 9eb9adcddc2..02e814805b2 100644 --- a/testfiles/_ExternalInterface-functionalmockupunit-to-schedule.idf +++ b/testfiles/_ExternalInterface-functionalmockupunit-to-schedule.idf @@ -41,9 +41,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 2, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day yes, !- Use Weather File Holidays and Special Days yes, !- Use Weather File Daylight Saving Period no, !- Apply Weekend Holiday Rule diff --git a/testfiles/_ExternalInterface-functionalmockupunit-to-variable.idf b/testfiles/_ExternalInterface-functionalmockupunit-to-variable.idf index 2961584aef3..96e78ac2b26 100644 --- a/testfiles/_ExternalInterface-functionalmockupunit-to-variable.idf +++ b/testfiles/_ExternalInterface-functionalmockupunit-to-variable.idf @@ -136,8 +136,10 @@ , !- Name 3, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 3, !- End Month 4, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_ExternalInterface-schedule.idf b/testfiles/_ExternalInterface-schedule.idf index bb76c5d9230..098a2073251 100644 --- a/testfiles/_ExternalInterface-schedule.idf +++ b/testfiles/_ExternalInterface-schedule.idf @@ -108,8 +108,10 @@ , !- Name 6, !- Begin Month 16, !- Begin Day of Month + , !- Begin Year 6, !- End Month 19, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_ExternalInterface-variable.idf b/testfiles/_ExternalInterface-variable.idf index 636f8f24049..e8bb1ef1784 100644 --- a/testfiles/_ExternalInterface-variable.idf +++ b/testfiles/_ExternalInterface-variable.idf @@ -128,8 +128,10 @@ , !- Name 3, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 3, !- End Month 4, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_FanCoilHybridVentAFN.idf b/testfiles/_FanCoilHybridVentAFN.idf index 25d96501728..3d19a5e15fd 100644 --- a/testfiles/_FanCoilHybridVentAFN.idf +++ b/testfiles/_FanCoilHybridVentAFN.idf @@ -162,8 +162,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -175,8 +177,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 11, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_FollowSysNodeTemp.idf b/testfiles/_FollowSysNodeTemp.idf index fb7b4529378..5f61f8add0f 100644 --- a/testfiles/_FollowSysNodeTemp.idf +++ b/testfiles/_FollowSysNodeTemp.idf @@ -137,8 +137,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -150,8 +152,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_FuelCellTest200.idf b/testfiles/_FuelCellTest200.idf index d8a4c5ea3d4..4b8c063644b 100644 --- a/testfiles/_FuelCellTest200.idf +++ b/testfiles/_FuelCellTest200.idf @@ -39,15 +39,16 @@ , !- Name 1, !- Begin Month 9, !- Begin Day of Month + , !- Begin Year 1, !- End Month 9, !- End Day of Month + , !- End Year SUNDAY, !- Day of Week for Start Day NO, !- Use Weather File Holidays and Special Days NO, !- Use Weather File Daylight Saving Period NO, !- Apply Weekend Holiday Rule NO, !- Use Weather File Rain Indicators - NO, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + NO; !- Use Weather File Snow Indicators Timestep,12; diff --git a/testfiles/_HybridVentilationControlGlobalAN.idf b/testfiles/_HybridVentilationControlGlobalAN.idf index c18973adda6..3e49d17f01c 100644 --- a/testfiles/_HybridVentilationControlGlobalAN.idf +++ b/testfiles/_HybridVentilationControlGlobalAN.idf @@ -162,8 +162,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -175,8 +177,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 11, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_HybridVentilationControl_MinTime.idf b/testfiles/_HybridVentilationControl_MinTime.idf index ee5989e92b3..c64ae7a058a 100644 --- a/testfiles/_HybridVentilationControl_MinTime.idf +++ b/testfiles/_HybridVentilationControl_MinTime.idf @@ -160,8 +160,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -173,8 +175,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_MaterialTest.idf b/testfiles/_MaterialTest.idf index 9f49512e426..96fdea087bc 100644 --- a/testfiles/_MaterialTest.idf +++ b/testfiles/_MaterialTest.idf @@ -44,8 +44,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_MicroCHPTest301.idf b/testfiles/_MicroCHPTest301.idf index 156f9ed1621..5d7f31b856d 100644 --- a/testfiles/_MicroCHPTest301.idf +++ b/testfiles/_MicroCHPTest301.idf @@ -36,15 +36,16 @@ , !- Name 1, !- Begin Month 9, !- Begin Day of Month + , !- Begin Year 1, !- End Month 9, !- End Day of Month + , !- End Year SUNDAY, !- Day of Week for Start Day NO, !- Use Weather File Holidays and Special Days NO, !- Use Weather File Daylight Saving Period NO, !- Apply Weekend Holiday Rule NO, !- Use Weather File Rain Indicators - NO, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + NO; !- Use Weather File Snow Indicators Timestep,6; diff --git a/testfiles/_MultiSpeedACElecFurnace.idf b/testfiles/_MultiSpeedACElecFurnace.idf index bb9f6310eb5..9efe18bfaf7 100644 --- a/testfiles/_MultiSpeedACElecFurnace.idf +++ b/testfiles/_MultiSpeedACElecFurnace.idf @@ -122,8 +122,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -135,8 +137,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_PurchAirWindowBlind2.idf b/testfiles/_PurchAirWindowBlind2.idf index 3441edfde2e..e18d3107ecc 100644 --- a/testfiles/_PurchAirWindowBlind2.idf +++ b/testfiles/_PurchAirWindowBlind2.idf @@ -125,8 +125,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_PurchAirWindowBlind3.idf b/testfiles/_PurchAirWindowBlind3.idf index 4d65851c0dd..388426b6a3d 100644 --- a/testfiles/_PurchAirWindowBlind3.idf +++ b/testfiles/_PurchAirWindowBlind3.idf @@ -125,8 +125,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_PurchAirWindowBlind4.idf b/testfiles/_PurchAirWindowBlind4.idf index 7684f1e62c0..be6853a85a8 100644 --- a/testfiles/_PurchAirWindowBlind4.idf +++ b/testfiles/_PurchAirWindowBlind4.idf @@ -125,8 +125,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/_SmallOffice_Dulles.idf b/testfiles/_SmallOffice_Dulles.idf index c95aaa16776..6390f189b32 100644 --- a/testfiles/_SmallOffice_Dulles.idf +++ b/testfiles/_SmallOffice_Dulles.idf @@ -164,15 +164,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Wednesday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators RunPeriodControl:SpecialDays, New Years Day, !- Name diff --git a/testfiles/_VAVSingleDuctConstFlowBoiler_otherfuel.idf b/testfiles/_VAVSingleDuctConstFlowBoiler_otherfuel.idf index c42a0b7449c..dd65605189d 100644 --- a/testfiles/_VAVSingleDuctConstFlowBoiler_otherfuel.idf +++ b/testfiles/_VAVSingleDuctConstFlowBoiler_otherfuel.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 20, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -147,8 +149,10 @@ , !- Name 7, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 7, !- End Month 20, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period From 66cd2645160b1c102b573aab3990068796d1641c Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Wed, 14 Feb 2018 10:48:37 -0700 Subject: [PATCH 08/47] Address warnings, fix actual weather issue --- src/EnergyPlus/WeatherManager.cc | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/EnergyPlus/WeatherManager.cc b/src/EnergyPlus/WeatherManager.cc index ab98a42ccb1..846c026a9e9 100644 --- a/src/EnergyPlus/WeatherManager.cc +++ b/src/EnergyPlus/WeatherManager.cc @@ -1054,7 +1054,7 @@ namespace WeatherManager { RunStJDay = DataPeriods( Loop ).DataStJDay; RunEnJDay = DataPeriods( Loop ).DataEnJDay; if ( ! DataPeriods( Loop ).HasYearData ) { - ShowSevereError( "GetNextEnvironment: Runperiod:CustomRange has been entered but weatherfile DATA PERIOD does not have year included in start/end date." ); + ShowSevereError( "GetNextEnvironment: Runperiod has been entered but weatherfile DATA PERIOD does not have year included in start/end date." ); ShowContinueError( "...to match the RunPeriod, the DATA PERIOD should be mm/dd/yyyy for both." ); } if ( ! BetweenDates( Environment( Envrn ).StartDate, RunStJDay, RunEnJDay ) ) continue; @@ -5792,17 +5792,16 @@ Label9999: ; } // A8, \field Treat Weather as Actual - if ( lAlphaFieldBlanks( 8 ) || SameString( cAlphaArgs( 8 ), "YES" ) ) { - RunPeriodInput( Loop ).actualWeather = true; - } else if ( SameString( cAlphaArgs( 8 ), "NO" ) ) { - RunPeriodInput(Loop).actualWeather = false; + if ( lAlphaFieldBlanks( 8 ) || SameString( cAlphaArgs( 8 ), "NO" ) ) { + RunPeriodInput( Loop ).actualWeather = false; + } else if ( SameString( cAlphaArgs( 8 ), "YES" ) ) { + RunPeriodInput(Loop).actualWeather = true; } else { ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 8 ) + " invalid [" + cAlphaArgs( 8 ) + ']' ); ErrorsFound = true; } //calculate the annual start and end days from the user inputted month and day - //RunPeriodInput( Loop ).ActualWeather = true; RunPeriodInput( Loop ).MonWeekDay = 0; if ( RunPeriodInput( Loop ).DayOfWeek != 0 && ! ErrorsFound ) { SetupWeekDaysByMonth( RunPeriodInput( Loop ).StartMonth, RunPeriodInput( Loop ).StartDay, RunPeriodInput( Loop ).DayOfWeek, RunPeriodInput( Loop ).MonWeekDay ); @@ -9642,12 +9641,10 @@ Label9998: ; // na // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - int tdate; // integer*4 variable needed for double precision arithmetic int tyyyy; // integer*4 variable needed for double precision arithmetic int tmm; // integer*4 variable needed for double precision arithmetic int tdd; // integer*4 variable needed for double precision arithmetic int l; // temporary variable used in conversion. - int n; // temporary variable used in conversion. tyyyy = gyyyy; tmm = gmm; From 2530ca4685b8d3cc2b469e2669caf8c96cc20b55 Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Wed, 14 Feb 2018 21:57:48 -0700 Subject: [PATCH 09/47] Fix a few more issues and IDFs --- src/EnergyPlus/WeatherManager.cc | 16 ++++++---------- testfiles/AdvancedOutput/ExerciseOutput1.idf | 2 ++ .../AdvancedOutput/ExerciseOutput1A-Solution.idf | 2 ++ testfiles/BasicsFiles/AdultEducationCenter.idf | 2 ++ testfiles/BasicsFiles/Exercise1D-Solution.idf | 7 ++++--- testfiles/BasicsFiles/Exercise2.idf | 7 ++++--- testfiles/BasicsFiles/Exercise2A-Solution.idf | 7 ++++--- testfiles/BasicsFiles/Exercise2B-Solution.idf | 7 ++++--- testfiles/BasicsFiles/Exercise2C-Solution.idf | 7 ++++--- 9 files changed, 32 insertions(+), 25 deletions(-) diff --git a/src/EnergyPlus/WeatherManager.cc b/src/EnergyPlus/WeatherManager.cc index 846c026a9e9..5e522e3b152 100644 --- a/src/EnergyPlus/WeatherManager.cc +++ b/src/EnergyPlus/WeatherManager.cc @@ -1095,7 +1095,7 @@ namespace WeatherManager { EnDate += "/"; } if ( NumDataPeriods == 1 ) { - ShowContinueError( "Weather Data Period (Start=" + StDate + ",End=" + EnDate ); + ShowContinueError( "Weather Data Period (Start=" + StDate + ",End=" + EnDate + ')' ); } else { ShowContinueError( "Multiple Weather Data Periods 1st (Start=" + StDate + ",End=" + EnDate + ')' ); } @@ -5393,8 +5393,6 @@ Label9999: ; static bool ErrorsFound( false ); int RPD1; int RPD2; - int RP; // number of run periods - int RPAW; // number of run periods, actual weather // FLOW: @@ -5402,9 +5400,7 @@ Label9999: ; TotDesDays = GetNumObjectsFound( "SizingPeriod:DesignDay" ); RPD1 = GetNumObjectsFound( "SizingPeriod:WeatherFileDays" ); RPD2 = GetNumObjectsFound( "SizingPeriod:WeatherFileConditionType" ); - RP = GetNumObjectsFound( "RunPeriod" ); - RPAW = GetNumObjectsFound( "RunPeriod:CustomRange" ); - TotRunPers = RP + RPAW; + TotRunPers = GetNumObjectsFound("RunPeriod"); NumOfEnvrn = TotDesDays + TotRunPers + RPD1 + RPD2; if ( TotRunPers > 0 ) { WeathSimReq = true; @@ -7419,25 +7415,25 @@ Label9999: ; // Initialize Site:GroundTemperature:BuildingSurface object siteBuildingSurfaceGroundTempsPtr = GetGroundTempModelAndInit( "SITE:GROUNDTEMPERATURE:BUILDINGSURFACE", "" ); if ( siteBuildingSurfaceGroundTempsPtr ){ - ErrorsFound = siteBuildingSurfaceGroundTempsPtr->errorsFound; + ErrorsFound = siteBuildingSurfaceGroundTempsPtr->errorsFound ? true : ErrorsFound; } // Initialize Site:GroundTemperature:FCFactorMethod object siteFCFactorMethodGroundTempsPtr = GetGroundTempModelAndInit( "SITE:GROUNDTEMPERATURE:FCFACTORMETHOD", "" ); if ( siteFCFactorMethodGroundTempsPtr ) { - ErrorsFound = siteFCFactorMethodGroundTempsPtr->errorsFound; + ErrorsFound = siteFCFactorMethodGroundTempsPtr->errorsFound ? true : ErrorsFound; } // Initialize Site:GroundTemperature:Shallow object siteShallowGroundTempsPtr = GetGroundTempModelAndInit( "SITE:GROUNDTEMPERATURE:SHALLOW", "" ); if ( siteShallowGroundTempsPtr ) { - ErrorsFound = siteShallowGroundTempsPtr->errorsFound; + ErrorsFound = siteShallowGroundTempsPtr->errorsFound ? true : ErrorsFound; } // Initialize Site:GroundTemperature:Deep object siteDeepGroundTempsPtr = GetGroundTempModelAndInit( "SITE:GROUNDTEMPERATURE:DEEP", "" ); if ( siteDeepGroundTempsPtr ) { - ErrorsFound = siteDeepGroundTempsPtr->errorsFound; + ErrorsFound = siteDeepGroundTempsPtr->errorsFound ? true : ErrorsFound; } } diff --git a/testfiles/AdvancedOutput/ExerciseOutput1.idf b/testfiles/AdvancedOutput/ExerciseOutput1.idf index 26d0b015bcf..58713ed8e59 100644 --- a/testfiles/AdvancedOutput/ExerciseOutput1.idf +++ b/testfiles/AdvancedOutput/ExerciseOutput1.idf @@ -65,8 +65,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year , !- Day of Week for Start Day YES, !- Use Weather File Holidays and Special Days NO, !- Use Weather File Daylight Saving Period diff --git a/testfiles/AdvancedOutput/ExerciseOutput1A-Solution.idf b/testfiles/AdvancedOutput/ExerciseOutput1A-Solution.idf index 08602059035..78eb5275703 100644 --- a/testfiles/AdvancedOutput/ExerciseOutput1A-Solution.idf +++ b/testfiles/AdvancedOutput/ExerciseOutput1A-Solution.idf @@ -65,8 +65,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year , !- Day of Week for Start Day YES, !- Use Weather File Holidays and Special Days NO, !- Use Weather File Daylight Saving Period diff --git a/testfiles/BasicsFiles/AdultEducationCenter.idf b/testfiles/BasicsFiles/AdultEducationCenter.idf index 84f19c9b272..4fb3290f6a5 100644 --- a/testfiles/BasicsFiles/AdultEducationCenter.idf +++ b/testfiles/BasicsFiles/AdultEducationCenter.idf @@ -129,8 +129,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/BasicsFiles/Exercise1D-Solution.idf b/testfiles/BasicsFiles/Exercise1D-Solution.idf index 074872ccb19..b0323ab5234 100644 --- a/testfiles/BasicsFiles/Exercise1D-Solution.idf +++ b/testfiles/BasicsFiles/Exercise1D-Solution.idf @@ -7,15 +7,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators Output:Table:SummaryReports, AnnualBuildingUtilityPerformanceSummary, !- Report 1 Name diff --git a/testfiles/BasicsFiles/Exercise2.idf b/testfiles/BasicsFiles/Exercise2.idf index 810d719aca2..488dea88b5e 100644 --- a/testfiles/BasicsFiles/Exercise2.idf +++ b/testfiles/BasicsFiles/Exercise2.idf @@ -70,15 +70,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators Site:Location, CHICAGO_IL_USA TMY2-94846, !- Name diff --git a/testfiles/BasicsFiles/Exercise2A-Solution.idf b/testfiles/BasicsFiles/Exercise2A-Solution.idf index b1e300d3729..37681192e4b 100644 --- a/testfiles/BasicsFiles/Exercise2A-Solution.idf +++ b/testfiles/BasicsFiles/Exercise2A-Solution.idf @@ -166,15 +166,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators Site:Location, CHICAGO_IL_USA TMY2-94846, !- Name diff --git a/testfiles/BasicsFiles/Exercise2B-Solution.idf b/testfiles/BasicsFiles/Exercise2B-Solution.idf index 0567b2b0daf..07df2a993ba 100644 --- a/testfiles/BasicsFiles/Exercise2B-Solution.idf +++ b/testfiles/BasicsFiles/Exercise2B-Solution.idf @@ -445,15 +445,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators Site:Location, CHICAGO_IL_USA TMY2-94846, !- Name diff --git a/testfiles/BasicsFiles/Exercise2C-Solution.idf b/testfiles/BasicsFiles/Exercise2C-Solution.idf index 411473264e8..e5a6d46ab10 100644 --- a/testfiles/BasicsFiles/Exercise2C-Solution.idf +++ b/testfiles/BasicsFiles/Exercise2C-Solution.idf @@ -465,15 +465,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators Site:Location, CHICAGO_IL_USA TMY2-94846, !- Name From c88af6725295f4dadad71c644bb4248614dd730c Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Wed, 14 Feb 2018 23:20:28 -0700 Subject: [PATCH 10/47] Correct one more test file --- testfiles/AbsorptionChiller_Macro.imf | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/testfiles/AbsorptionChiller_Macro.imf b/testfiles/AbsorptionChiller_Macro.imf index 85014bf8e34..8c8585e1410 100644 --- a/testfiles/AbsorptionChiller_Macro.imf +++ b/testfiles/AbsorptionChiller_Macro.imf @@ -131,8 +131,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -144,8 +146,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period From cdf16ae5c0e100bb95a498f30fc2dc4595ebc50f Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Thu, 15 Feb 2018 13:15:40 -0700 Subject: [PATCH 11/47] Fix new test and example file --- .../SurfaceHeatSourceTerm_RefBldgSmallOfficeNew2004.idf | 5 +++-- tst/EnergyPlus/unit/HeatBalanceSurfaceManager.unit.cc | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/testfiles/SurfaceHeatSourceTerm_RefBldgSmallOfficeNew2004.idf b/testfiles/SurfaceHeatSourceTerm_RefBldgSmallOfficeNew2004.idf index 2e4a9810e38..3e60b41040e 100644 --- a/testfiles/SurfaceHeatSourceTerm_RefBldgSmallOfficeNew2004.idf +++ b/testfiles/SurfaceHeatSourceTerm_RefBldgSmallOfficeNew2004.idf @@ -91,15 +91,16 @@ Annual, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** diff --git a/tst/EnergyPlus/unit/HeatBalanceSurfaceManager.unit.cc b/tst/EnergyPlus/unit/HeatBalanceSurfaceManager.unit.cc index d99908f6ed5..403b81dc94f 100644 --- a/tst/EnergyPlus/unit/HeatBalanceSurfaceManager.unit.cc +++ b/tst/EnergyPlus/unit/HeatBalanceSurfaceManager.unit.cc @@ -2053,8 +2053,10 @@ namespace EnergyPlus { " , !- Name", " 1, !- Begin Month", " 14, !- Begin Day of Month", + " , !- Begin Year", " 1, !- End Month", " 14, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", " Yes, !- Use Weather File Holidays and Special Days", " Yes, !- Use Weather File Daylight Saving Period", @@ -2066,8 +2068,10 @@ namespace EnergyPlus { " , !- Name", " 7, !- Begin Month", " 7, !- Begin Day of Month", + " , !- Begin Year", " 7, !- End Month", " 7, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", " Yes, !- Use Weather File Holidays and Special Days", " Yes, !- Use Weather File Daylight Saving Period", From 245dfec1415a377922e4e0ca164a8a7ac74c59d8 Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Thu, 15 Feb 2018 13:25:50 -0700 Subject: [PATCH 12/47] Update another new example file --- testfiles/Generator_PVWatts.idf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/testfiles/Generator_PVWatts.idf b/testfiles/Generator_PVWatts.idf index d51ee692291..2cef3b73eb3 100644 --- a/testfiles/Generator_PVWatts.idf +++ b/testfiles/Generator_PVWatts.idf @@ -22,8 +22,8 @@ SimulationControl, RunPeriod, All Year, !- Name - 1, 1, !- Begin - 12, 31, !- End + 1, 1, , !- Begin + 12, 31, , !- End UseWeatherFile, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period From 497de503493d2e68cdb94646d48341e73062ddd3 Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Fri, 16 Feb 2018 08:11:32 -0700 Subject: [PATCH 13/47] Fix missed field change --- testfiles/1ZoneWith14ControlledHeat-CoolPanels.idf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testfiles/1ZoneWith14ControlledHeat-CoolPanels.idf b/testfiles/1ZoneWith14ControlledHeat-CoolPanels.idf index b7ba2464003..4e9cb9f7f56 100644 --- a/testfiles/1ZoneWith14ControlledHeat-CoolPanels.idf +++ b/testfiles/1ZoneWith14ControlledHeat-CoolPanels.idf @@ -515,7 +515,7 @@ 12, !- End Month 31, !- End Day of Month , !- End Year - UseWeatherFile, !- Day of Week for Start Day + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule From 0bd05e54386b14868347da0a547d1e62f2aade4f Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Fri, 16 Feb 2018 22:22:38 -0700 Subject: [PATCH 14/47] Documentation and object clean-up --- ...p-location-climate-weather-file-access.tex | 228 ++++++++-------- .../FiniteDifferenceGroundTemperatureModel.cc | 2 +- src/EnergyPlus/WeatherManager.cc | 246 +++++++++--------- src/EnergyPlus/WeatherManager.hh | 58 ++--- 4 files changed, 262 insertions(+), 272 deletions(-) diff --git a/doc/input-output-reference/src/overview/group-location-climate-weather-file-access.tex b/doc/input-output-reference/src/overview/group-location-climate-weather-file-access.tex index 64acd7c4125..e4ae699f54c 100644 --- a/doc/input-output-reference/src/overview/group-location-climate-weather-file-access.tex +++ b/doc/input-output-reference/src/overview/group-location-climate-weather-file-access.tex @@ -566,175 +566,165 @@ \subsubsection{Inputs}\label{inputs-3-020} \subsection{RunPeriod}\label{runperiod} -The RunPeriod object describes the elements necessary to create a weather file simulation. Multiple run periods may be input. EnergyPlus accepts weather files in the special EnergyPlus weather format (described briefly below this document and in more detail in the Auxiliary Programs document). These files can describe Daylight Saving Time periods as well as holidays within their definitions. The RunPeriod object allows the user to override the use of both the Daylight Saving Period (i.e. use or ignore) and holidays that are embedded within the weather file. Note that the weather file also may contain design condition information, typical and extreme period information, ground temperatures based on air temperature calculations. - -\subsubsection{Inputs}\label{inputs-4-018} - -\paragraph{Field: Name}\label{field-name-4-015} - -This optional field allows the RunPeriod to be named for output reporting. When left blank, the weather file location name is used. Note that the weather file location name will be appended to this name in tabular/summary reports. - -\paragraph{Field: Begin Month}\label{field-begin-month-1} - -This numeric field should contain the starting month number (1 = January, 2 = February, etc.) for the annual run period desired. - -\paragraph{Field: Begin Day of Month}\label{field-begin-day-of-month-1} - -This numeric field should contain the starting day of the starting month (must be valid for month) for the annual run period desired. - -\paragraph{Field: End Month}\label{field-end-month-1} - -This numeric field should contain the ending month number (1 = January, 2 = February, etc.) for the annual run period desired. - -\paragraph{Field: End Day of Month}\label{field-end-day-of-month-1} - -This numeric field should contain the ending day of the ending month (must be valid for month) for the annual run period desired. - -\paragraph{Field: Day of Week for Start Day}\label{field-day-of-week-for-start-day-2} - -For flexibility, the day of week indicated on the weather file can be overridden by this field's value. Valid days of the week (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday) must be entered in this field. To clarify, this value will be used as the Start Day (type) for this run period and subsequent days will be implemented. If a blank or UseWeatherFile is entered here, then the starting day type will be calculated from the weather file (ref: Auxiliary Programs document about Data Periods). - -\paragraph{Field: Use Weather File Holidays and Special Days}\label{field-use-weather-file-holidays-and-special-days} - -Weather files can contain holiday designations or other kinds of special days. These day types cause a corresponding day's schedule (see SCHEDULE definitions below) to be used during that day. This field should contain the word \textbf{Yes} if holidays or other special days indicated directly on the weather file should retain their ``day type'' or \textbf{No} if holidays or other special days on the weather file should be ignored. Reference the RunPeriodControl:SpecialDays object below to enter your own special days and holidays. - -Note that a blank or null field in this field will indicate \textbf{Yes}. - -\paragraph{Field: Use Weather File Daylight Saving Period}\label{field-use-weather-file-daylight-saving-period-2} - -Weather files can contain indicators of Daylight Saving period days. For flexibility, you may want to ignore these designations on the weather file. This field should contain the word \textbf{Yes} if you will accept daylight saving period days as contained on the weather file (note: not all weather files may actually have this period) or \textbf{No} if you wish to ignore Daylight Saving period days that may be on the weather file. - -Note that a blank or null field in this field will indicate \textbf{Yes}. - -\paragraph{Field: Apply Weekend Holiday Rule}\label{field-apply-weekend-holiday-rule} - -In some countries (notably the US), when holidays fall on weekends, they are often observed on a weekday close to the holiday day. (Usually if the specific day falls on a Saturday, the observed day is Friday; if on a Sunday, the observed day is Monday). EnergyPlus will represent this custom using the value in this field. If the field is \textbf{Yes}, then specific date holidays that have a duration of one day, will be ``observed'' on the Monday after the day. (Specific day holidays are such as January 1 -- a day-month combination). If the field is blank or \textbf{No}, then the holiday will be shown on the day-month as entered. As this option is listed at the RunPeriod, all applicable special days for the run will use the rule -- there is no override for individual special days. - -Note that a blank or null field in this field will indicate \textbf{No}. - -\begin{callout} -Note: EnergyPlus processed weather files available on the EnergyPlus web site: \url{https://www.energyplus.net/weather} have neither special days specified nor daylight saving period. However, DDY (Design Day) files produced from the ASHRAE Design Conditions that accompany the EPW files may include a DaylightSavingPeriod object for certain locations. -\end{callout} - -\paragraph{Field: Use Weather File Rain Indicators}\label{field-use-weather-file-rain-indicators} - -Weather files can contain ``rain'' indicators. (EPW field ``Present Weather Codes'' -- described in the AuxiliaryPrograms document). In turn, rain indicates wet surfaces which changes the film convection coefficient for the surface. Other models may use rain as well (Ground Heat Exchangers). Entering ``\textbf{Yes}'' in this field allows the weather file conditions to represent ``Rain''; entering ``\textbf{No}'' in the field ``turns off'' the rain indicator for this period. You might use this to be able to compare two ``same location'' weather files of different years, origins, etc. - -\paragraph{Field: Use Weather File Snow Indicators}\label{field-use-weather-file-snow-indicators} - -Weather files can contain ``snow'' indicators. (EPW field ``Snow Depth'' \textgreater{} 0 indicates ``Snow on the ground''). In turn, snow changes the reflectivity of the ground and cascades changes of this reflectivity. Entering ``\textbf{Yes}'' in this field allows the weather file conditions to represent ``Snow''; entering ``\textbf{No}'' in the field ``turns off'' the snow indicator for this period. You might use this to be able to compare two ``same location'' weather files of different years, origins, etc. - -\paragraph{Field: Number of Times Runperiod to be Repeated}\label{field-number-of-times-runperiod-to-be-repeated} - -This numeric field represents the number of times (usually years) the simulation has to be carried out in a multi runperiod simulation. The default value is set to 1. The number of years of simulation, in case of a Ground Loop Heat Exchanger (GLHE) simulation, should be equal to the length of simulation field in GLHE object. Note that you can specify a number of simulation years with a shorter run period (e.g. 1 week) and EnergyPlus will repeat the simulation of the shorter run period for that many times. Note that repeating will work with any weather file that contains the start date and end date in a ``Data Period'' (refer to Auxiliary Programs document for more documentation on weather file contents). - -\paragraph{Field: Increment Day of Week on Repeat}\label{field-increment-day-of-week-on-repeat} - -When repeating RunPeriods (see previous field), you can choose to increment the day of week at the end of the period to have a more continuous day type. Enter \textbf{Yes} to increment the day of the week (default). An entry of \textbf{No} will keep the same day of week values as in the first time through. - -\paragraph{Field: Start Year}\label{field-start-year} - -When repeating a period, you might (for whatever reason), choose to have a specific year as a starting year. Enter an appropriate 4 digit year in this field. Refer to Auxiliary Programs document for more documentation on weather file contents, particularly in using leap year data (or not) within weather files. - -And, as shown in an IDF: - -\begin{lstlisting} -RunPeriod, ! Winter Simulation - Winter Simulation, !- Name - 12, !- Begin Month - 1, !- Begin Day of Month - 3, !- End Month - 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day - Yes, !- Use Weather File Holidays and Special Days - Yes, !- Use Weather File Daylight Saving Period - No, !- Apply Weekend Holiday Rule - Yes, !- Use Weather File Rain Indicators - Yes; !- Use Weather File Snow Indicators - -! Multiple year simulation example -RunPeriod, - Multiple Years, !- Name - 1, !- Begin Month - 1, !- Begin Day of Month - 12, !- End Month - 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day - Yes, !- Use Weather File Holidays and Special Days - Yes, !- Use Weather File Daylight Saving Period - No, !- Apply Weekend Holiday Rule - Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 3; !- Number of Times Runperiod to be Repeated -\end{lstlisting} - -\subsection{RunPeriod:CustomRange}\label{runperiodcustomrange} - -The RunPeriod:CustomRange object describes the elements necessary to use a specially crafted (likely multiple year) weather file in a simulation. These kinds of weather files and simulations might be useful for matching utility periods or simulating several years of differing weather data. Multiple run periods may be input. EnergyPlus accepts weather files in the special EnergyPlus weather format (described briefly below this document and in more detail in the Auxiliary Programs document). In order to effectively use this object, however, you will need to use a text editor (EnergyPlus weather files area simple text files) or possibly a spreadsheet program and then save to a csv (comma separated variable) file. Weather files can describe Daylight Saving Time periods as well as holidays within their definitions. The RunPeriod:CustomRange object allows the user to override the use of both the Daylight Saving Period (i.e. use or ignore) and holidays that are embedded within the weather file. Note that the weather file also may contain design condition information, typical and extreme period information, ground temperatures based on air temperature calculations. +The RunPeriod object describes the elements necessary to create a weather file simulation. Multiple run +periods may be input. EnergyPlus accepts weather files in the special EnergyPlus weather format +(described briefly below this document and in more detail in the Auxiliary Programs document). These files +can describe Daylight Saving Time periods as well as holidays within their definitions. Note that the weather +file also may contain design condition information, typical and extreme period information, ground +temperatures based on air temperature calculations. The RunPeriod object allows the user to override the use +of both the Daylight Saving Period (i.e. use or ignore) and holidays that are embedded within the weather +file. The object also describes the elements necessary to use a specially crafted (likely multiple year) +weather file in a simulation. These kinds of weather files and simulations might be useful for matching +utility periods or simulating several years of differing weather data. \subsubsection{Inputs}\label{inputs-5-016} \paragraph{Field: Name}\label{field-name-5-012} -This optional field allows the RunPeriod to be named for output reporting. When left blank, the weather file location name is used. Note that the weather file location name will be appended to this name in tabular/summary reports. +This optional field allows the RunPeriod to be named for output reporting. When left blank, the weather file +location name is used. Note that the weather file location name will be appended to this name in +tabular/summary reports. \paragraph{Field: Begin Month}\label{field-begin-month-2} -This numeric field should contain the starting month number (1 = January, 2 = February, etc.) for the annual run period desired. +This numeric field should contain the starting month number (1 = January, 2 = February, etc.) for the annual +run period desired. \paragraph{Field: Begin Day of Month}\label{field-begin-day-of-month-2} -This numeric field should contain the starting day of the starting month (must be valid for month) for the annual run period desired. +This numeric field should contain the starting day of the starting month (must be valid for month) for the +annual run period desired. \paragraph{Field: Begin Year}\label{field-begin-year} -This numeric field should contain the beginning year for the custom range. Though all EnergyPlus (EPW) weather files contain a year/year field, the RunPeriod object does not use this field (previous object). The \textbf{RunPeriod:CustomRange} object causes the program to look specifically for the begin date specified by these three fields (i.e. Begin Month, Begin Day of Month, Begin Year). +This optional numeric field may contain the beginning year for the range. If this field is specified +along with the \textbf{Day of Week for Start Day}, the inputs are validated to make sure that the date is +valid. If this field is not specified, then a year will be selected based upon other inputs (which, in the +case of the day of the week, may be defaulted). \paragraph{Field: End Month}\label{field-end-month-2} -This numeric field should contain the ending month number (1 = January, 2 = February, etc.) for the annual run period desired. +This numeric field should contain the ending month number (1 = January, 2 = February, etc.) for the annual +run period desired. \paragraph{Field: End Day of Month}\label{field-end-day-of-month-2} -This numeric field should contain the ending day of the ending month (must be valid for month) for the annual run period desired. +This numeric field should contain the ending day of the ending month (must be valid for month) for the +annual run period desired. \paragraph{Field: End Year}\label{field-end-year} -This numeric field should contain the end year for the custom range. Though all EnergyPlus (EPW) weather files contain a year/year field, the RunPeriod object does not use this field (previous object). The \textbf{RunPeriod:CustomRange} object causes the program to look specifically for the end date specified by these three fields (i.e. End Month, End Day of Month, End Year). +This optional numeric field should contain the end year for the range. It is only allowed to be specified +when the \textbf{Begin Year} is given and must be after the \textbf{Begin Year}. If it is not specified, +it will be set to be the first occurrence of \textbf{End Month/End Day of Month} after the start date. Note +that this could be several years after the start date (e.g. if the end date is specified as a leap day 2/28). \paragraph{Field: Day of Week for Start Day}\label{field-day-of-week-for-start-day-3} -For flexibility, the day of week indicated on the weather file can be overridden by this field's value. Valid days of the week (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday) must be entered in this field. To clarify, this value will be used as the Start Day (type) for this run period and subsequent days will be implemented. If a blank or UseWeatherFile is entered here, then the starting day type will be calculated from the weather file (ref: Auxiliary Programs document about Data Periods). +This field allows the start day of the week to be specified. Valid days of the week (Sunday, Monday, Tuesday, +Wednesday, Thursday, Friday, Saturday) may be entered in this field. To clarify, this value will be used as +the Start Day (type) for this run period and subsequent days will be implemented. If the field is blank, +then the starting day type defaults to Sunday. \paragraph{Field: Use Weather File Holidays and Special Days}\label{field-use-weather-file-holidays-and-special-days-1} -Weather files can contain holiday designations or other kinds of special days. These day types cause a corresponding day's schedule (see SCHEDULE definitions below) to be used during that day. This field should contain the word \textbf{Yes} if holidays or other special days indicated directly on the weather file should retain their ``day type'' or \textbf{No} if holidays or other special days on the weather file should be ignored. Reference the RunPeriodControl:SpecialDays object below to enter your own special days and holidays. +Weather files can contain holiday designations or other kinds of special days. These day types cause a +corresponding day's schedule (see SCHEDULE definitions below) to be used during that day. This field +should contain the word \textbf{Yes} if holidays or other special days indicated directly on the weather +file should retain their ``day type'' or \textbf{No} if holidays or other special days on the weather file +should be ignored. Reference the RunPeriodControl:SpecialDays object below to enter your own special days +and holidays. Note that a blank or null field in this field will indicate \textbf{Yes}. \paragraph{Field: Use Weather File Daylight Saving Period}\label{field-use-weather-file-daylight-saving-period-3} -Weather files can contain indicators of Daylight Saving period days. For flexibility, you may want to ignore these designations on the weather file. This field should contain the word \textbf{Yes} if you will accept daylight saving period days as contained on the weather file (note: not all weather files may actually have this period) or \textbf{No} if you wish to ignore Daylight Saving period days that may be on the weather file. +Weather files can contain indicators of Daylight Saving period days. For flexibility, you may want to ignore +these designations on the weather file. This field should contain the word \textbf{Yes} if you will accept +daylight saving period days as contained on the weather file (note: not all weather files may actually have +this period) or \textbf{No} if you wish to ignore Daylight Saving period days that may be on the weather file. Note that a blank or null field in this field will indicate \textbf{Yes}. \paragraph{Field: Apply Weekend Holiday Rule}\label{field-apply-weekend-holiday-rule-1} -In some countries (notably the US), when holidays fall on weekends, they are often observed on a weekday close to the holiday day. (Usually if the specific day falls on a Saturday, the observed day is Friday; if on a Sunday, the observed day is Monday). EnergyPlus will represent this custom using the value in this field. If the field is \textbf{Yes}, then specific date holidays that have a duration of one day, will be ``observed'' on the Monday after the day. (Specific day holidays are such as January 1 -- a day-month combination). If the field is blank or \textbf{No}, then the holiday will be shown on the day-month as entered. As this option is listed at the RunPeriod, all applicable special days for the run will use the rule -- there is no override for individual special days. +In some countries (notably the US), when holidays fall on weekends, they are often observed on a weekday +close to the holiday day. (Usually if the specific day falls on a Saturday, the observed day is Friday; +if on a Sunday, the observed day is Monday). EnergyPlus will represent this custom using the value in +this field. If the field is \textbf{Yes}, then specific date holidays that have a duration of one day, +will be ``observed'' on the Monday after the day. (Specific day holidays are such as January 1 -- a +day-month combination). If the field is blank or \textbf{No}, then the holiday will be shown on the +day-month as entered. As this option is listed at the RunPeriod, all applicable special days for the run +will use the rule -- there is no override for individual special days. Note that a blank or null field in this field will indicate \textbf{No}. \begin{callout} -Note: EnergyPlus processed weather files available on the EnergyPlus web site: \url{https://www.energyplus.net/weather} have neither special days specified nor daylight saving period. However, DDY (Design Day) files produced from the ASHRAE Design Conditions that accompany the EPW files may include a DaylightSavingPeriod object for certain locations. +Note: EnergyPlus processed weather files available on the EnergyPlus web site: \url{https://www.energyplus.net/weather} +have neither special days specified nor daylight saving period. However, DDY (Design Day) files produced +from the ASHRAE Design Conditions that accompany the EPW files may include a DaylightSavingPeriod object +for certain locations. \end{callout} \paragraph{Field: Use Weather File Rain Indicators}\label{field-use-weather-file-rain-indicators-1} -Weather files can contain ``rain'' indicators. (EPW field ``Present Weather Codes'' -- described in the AuxiliaryPrograms document). In turn, rain indicates wet surfaces which changes the film convection coefficient for the surface. Other models may use rain as well (Ground Heat Exchangers). Entering ``\textbf{Yes}'' in this field allows the weather file conditions to represent ``Rain''; entering ``\textbf{No}'' in the field ``turns off'' the rain indicator for this period. You might use this to be able to compare two ``same location'' weather files of different years, origins, etc. +Weather files can contain ``rain'' indicators. (EPW field ``Present Weather Codes'' -- described in the +AuxiliaryPrograms document). In turn, rain indicates wet surfaces which changes the film convection +coefficient for the surface. Other models may use rain as well (Ground Heat Exchangers). Entering +``\textbf{Yes}'' in this field allows the weather file conditions to represent ``Rain''; entering +``\textbf{No}'' in the field ``turns off'' the rain indicator for this period. You might use this +to be able to compare two ``same location'' weather files of different years, origins, etc. \paragraph{Field: Use Weather File Snow Indicators}\label{field-use-weather-file-snow-indicators-1} -Weather files can contain ``snow'' indicators. (EPW field ``Snow Depth'' \textgreater{} 0 indicates ``Snow on the ground''). In turn, snow changes the reflectivity of the ground and cascades changes of this reflectivity. Entering ``\textbf{Yes}'' in this field allows the weather file conditions to represent ``Snow''; entering ``\textbf{No}'' in the field ``turns off'' the snow indicator for this period. You might use this to be able to compare two ``same location'' weather files of different years, origins, etc. +Weather files can contain ``snow'' indicators. (EPW field ``Snow Depth'' \textgreater{} 0 indicates +``Snow on the ground''). In turn, snow changes the reflectivity of the ground and cascades changes of this +reflectivity. Entering ``\textbf{Yes}'' in this field allows the weather file conditions to represent +``Snow''; entering ``\textbf{No}'' in the field ``turns off'' the snow indicator for this period. You might +use this to be able to compare two ``same location'' weather files of different years, origins, etc. + +\paragraph{Field: Treat Weather as Actual}\label{field-treat-weather-as-actual} + +This field determines how stringent date matching between this object and the weather file is. Though all +EnergyPlus (EPW) weather files contain a year/year field, this data is not typically used. Specifying +``\textbf{Yes}'' in this field causes the program to look specifically for the begin date (i.e. Begin Month, +Begin Day of Month, Begin Year) and for the end date (i.e. End Month, End Day of Month, End Year). + +And, as shown in an IDF: + +\begin{lstlisting} +RunPeriod, ! Winter Simulation +Winter Simulation, !- Name +12, !- Begin Month +1, !- Begin Day of Month +, !- Begin Year +3, !- End Month +31, !- End Day of Month +, !- End Year +UseWeatherFile, !- Day of Week for Start Day +Yes, !- Use Weather File Holidays and Special Days +Yes, !- Use Weather File Daylight Saving Period +No, !- Apply Weekend Holiday Rule +Yes, !- Use Weather File Rain Indicators +Yes; !- Use Weather File Snow Indicators + +! Actual weather simulation example +RunPeriod, +Multiple Years, !- Name +1, !- Begin Month +1, !- Begin Day of Month +2010, !- Begin Year +12, !- End Month +31, !- End Day of Month +, !- End Year +UseWeatherFile, !- Day of Week for Start Day +Yes, !- Use Weather File Holidays and Special Days +Yes, !- Use Weather File Daylight Saving Period +No, !- Apply Weekend Holiday Rule +Yes, !- Use Weather File Rain Indicators +Yes, !- Use Weather File Snow Indicators +Yes; !- Treat Weather as Actual +\end{lstlisting} \subsection{RunPeriodControl:SpecialDays}\label{runperiodcontrolspecialdays} diff --git a/src/EnergyPlus/GroundTemperatureModeling/FiniteDifferenceGroundTemperatureModel.cc b/src/EnergyPlus/GroundTemperatureModeling/FiniteDifferenceGroundTemperatureModel.cc index b278507b522..e53ee20ba4a 100644 --- a/src/EnergyPlus/GroundTemperatureModeling/FiniteDifferenceGroundTemperatureModel.cc +++ b/src/EnergyPlus/GroundTemperatureModeling/FiniteDifferenceGroundTemperatureModel.cc @@ -238,7 +238,7 @@ namespace EnergyPlus { WeathSimReq = true; RunPeriodInput( TotRunPers ).startJulianDate = 1; //JulianDay( 1, 1, 0 ); RunPeriodInput( TotRunPers ).endJulianDate = 365; //JulianDay( 12, 31, 0 ); - RunPeriodInput( TotRunPers ).MonWeekDay = 0; + RunPeriodInput( TotRunPers ).monWeekDay = 0; SetupEnvironmentTypes(); diff --git a/src/EnergyPlus/WeatherManager.cc b/src/EnergyPlus/WeatherManager.cc index 5e522e3b152..b0b10eb0b76 100644 --- a/src/EnergyPlus/WeatherManager.cc +++ b/src/EnergyPlus/WeatherManager.cc @@ -5569,7 +5569,7 @@ Label9999: ; if ( ! lAlphaFieldBlanks( 1 ) ) { IsNotOK = false; IsBlank = false; - VerifyName( cAlphaArgs( 1 ), RunPeriodInput, &RunPeriodData::Title, Count, IsNotOK, IsBlank, cCurrentModuleObject + " Name" ); + VerifyName( cAlphaArgs( 1 ), RunPeriodInput, &RunPeriodData::title, Count, IsNotOK, IsBlank, cCurrentModuleObject + " Name" ); if ( IsNotOK ) { ErrorsFound = true; if ( IsBlank ) cAlphaArgs( 1 ) = "xxxxx"; @@ -5578,7 +5578,7 @@ Label9999: ; ++Count; //Loop = RP + Ptr; - RunPeriodInput( Loop ).Title = cAlphaArgs( 1 ); + RunPeriodInput( Loop ).title = cAlphaArgs( 1 ); //set the start and end day of month from user input // N1 , \field Begin Month @@ -5587,8 +5587,8 @@ Label9999: ; // N4 , \field End Month // N5 , \field End Day of Month // N6, \field End Year - RunPeriodInput( Loop ).StartMonth = int( rNumericArgs( 1 ) ); - RunPeriodInput( Loop ).StartDay = int( rNumericArgs( 2 ) ); + RunPeriodInput( Loop ).startMonth = int( rNumericArgs( 1 ) ); + RunPeriodInput( Loop ).startDay = int( rNumericArgs( 2 ) ); RunPeriodInput( Loop ).startYear = int( rNumericArgs( 3 ) ); RunPeriodInput( Loop ).endMonth = int( rNumericArgs( 4 ) ); RunPeriodInput( Loop ).endDay = int( rNumericArgs( 5 ) ); @@ -5596,8 +5596,8 @@ Label9999: ; RunPeriodInput( Loop ).TreatYearsAsConsecutive = true; if ( FullAnnualRun && Loop == 1 ) { - RunPeriodInput( Loop ).StartMonth = 1; - RunPeriodInput( Loop ).StartDay = 1; + RunPeriodInput( Loop ).startMonth = 1; + RunPeriodInput( Loop ).startDay = 1; RunPeriodInput( Loop ).endMonth = 12; RunPeriodInput( Loop ).endDay = 31; } @@ -5634,17 +5634,17 @@ Label9999: ; } // Validate the dates now that the weekday field has been looked at - if ( RunPeriodInput( Loop ).StartMonth == 2 && RunPeriodInput( Loop ).StartDay == 29 ) { + if ( RunPeriodInput( Loop ).startMonth == 2 && RunPeriodInput( Loop ).startDay == 29 ) { // Requested start date is a leap year if ( RunPeriodInput( Loop ).startYear == 0 ) { // No input starting year - RunPeriodInput( Loop ).startYear = findLeapYearForWeekday( RunPeriodInput( Loop ).StartMonth, RunPeriodInput( Loop ).StartDay, + RunPeriodInput( Loop ).startYear = findLeapYearForWeekday( RunPeriodInput( Loop ).startMonth, RunPeriodInput( Loop ).startDay, RunPeriodInput( Loop).startWeekDay ); } else { // Have an input start year if ( !isLeapYear( RunPeriodInput( Loop ).startYear ) ) { // Start year is not a leap year ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", start year (" + std::to_string( RunPeriodInput( Loop ).startYear ) + ") is not a leap year but the requested start date is 2/29." ); ErrorsFound = true; } else { // Start year is a leap year - WeekDay weekday = calculateDayOfWeek( RunPeriodInput( Loop ).startYear, RunPeriodInput( Loop ).StartMonth, RunPeriodInput( Loop ).StartDay ); + WeekDay weekday = calculateDayOfWeek( RunPeriodInput( Loop ).startYear, RunPeriodInput( Loop ).startMonth, RunPeriodInput( Loop ).startDay ); if ( inputWeekday ) { // Check for correctness of input if ( weekday != RunPeriodInput( Loop ).startWeekDay ) { ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", start weekday (" + cAlphaArgs( 2 ) + ") does not match the start year (" + std::to_string( RunPeriodInput( Loop ).startYear ) + ")" ); @@ -5657,15 +5657,15 @@ Label9999: ; } } else { // Non leap-day start date - if ( !validMonthDay( RunPeriodInput( Loop ).StartMonth, RunPeriodInput( Loop ).StartDay ) ) { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", Invalid input start month/day (" + TrimSigDigits( RunPeriodInput( Loop ).StartMonth ) + '/' + TrimSigDigits( RunPeriodInput( Loop ).StartDay ) + ')' ); + if ( !validMonthDay( RunPeriodInput( Loop ).startMonth, RunPeriodInput( Loop ).startDay ) ) { + ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", Invalid input start month/day (" + TrimSigDigits( RunPeriodInput( Loop ).startMonth ) + '/' + TrimSigDigits( RunPeriodInput( Loop ).startDay ) + ')' ); ErrorsFound = true; } else { // Month/day is valid if ( RunPeriodInput( Loop ).startYear == 0 ) { // No input starting year - RunPeriodInput( Loop ).startYear = findYearForWeekday( RunPeriodInput( Loop ).StartMonth, RunPeriodInput( Loop ).StartDay, + RunPeriodInput( Loop ).startYear = findYearForWeekday( RunPeriodInput( Loop ).startMonth, RunPeriodInput( Loop ).startDay, RunPeriodInput( Loop).startWeekDay ); } else { // Have an input starting year - WeekDay weekday = calculateDayOfWeek( RunPeriodInput( Loop ).startYear, RunPeriodInput( Loop ).StartMonth, RunPeriodInput( Loop ).StartDay ); + WeekDay weekday = calculateDayOfWeek( RunPeriodInput( Loop ).startYear, RunPeriodInput( Loop ).startMonth, RunPeriodInput( Loop ).startDay ); if ( inputWeekday ) { // Check for correctness of input if ( weekday != RunPeriodInput( Loop ).startWeekDay ) { ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", start weekday (" + cAlphaArgs( 2 ) + ") does not match the start year (" + std::to_string( RunPeriodInput( Loop ).startYear ) + ")" ); @@ -5679,13 +5679,13 @@ Label9999: ; } // Compute the Julian date of the start date - RunPeriodInput( Loop ).startJulianDate = computeJulianDate( RunPeriodInput( Loop ).startYear, RunPeriodInput( Loop ).StartMonth, RunPeriodInput( Loop ).StartDay ); + RunPeriodInput( Loop ).startJulianDate = computeJulianDate( RunPeriodInput( Loop ).startYear, RunPeriodInput( Loop ).startMonth, RunPeriodInput( Loop ).startDay ); // Validate the end date if ( RunPeriodInput( Loop ).endMonth == 2 && RunPeriodInput( Loop ).endDay == 29 ) { // Requested end date is a leap year if ( RunPeriodInput( Loop ).endYear == 0 ) { // No input end year - if ( isLeapYear( RunPeriodInput( Loop ).startYear ) && RunPeriodInput( Loop ).StartMonth < 3 ) { + if ( isLeapYear( RunPeriodInput( Loop ).startYear ) && RunPeriodInput( Loop ).startMonth < 3 ) { // The run period is from some date on or before 2/29 through 2/29 RunPeriodInput(Loop).endYear = RunPeriodInput(Loop).startYear; } else { @@ -5712,7 +5712,7 @@ Label9999: ; } else { // Non leap-day end date if ( !validMonthDay( RunPeriodInput( Loop ).endMonth, RunPeriodInput( Loop ).endDay ) ) { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", Invalid input end month/day (" + TrimSigDigits( RunPeriodInput( Loop ).StartMonth ) + '/' + TrimSigDigits( RunPeriodInput( Loop ).StartDay ) + ')' ); + ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", Invalid input end month/day (" + TrimSigDigits( RunPeriodInput( Loop ).startMonth ) + '/' + TrimSigDigits( RunPeriodInput( Loop ).startDay ) + ')' ); ErrorsFound = true; } else { // Month/day is valid if ( RunPeriodInput( Loop ).endYear == 0 ) { // No input end year @@ -5739,9 +5739,9 @@ Label9999: ; // A3, \field Use Weather File Holidays and Special Days if ( lAlphaFieldBlanks( 3 ) || SameString( cAlphaArgs( 3 ), "YES" ) ) { - RunPeriodInput( Loop ).UseHolidays = true; + RunPeriodInput( Loop ).useHolidays = true; } else if ( SameString( cAlphaArgs( 3 ), "NO" ) ) { - RunPeriodInput( Loop ).UseHolidays = false; + RunPeriodInput( Loop ).useHolidays = false; } else { ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 3 ) + " invalid [" + cAlphaArgs( 3 ) + ']' ); ErrorsFound = true; @@ -5749,9 +5749,9 @@ Label9999: ; // A4, \field Use Weather File Daylight Saving Period if ( lAlphaFieldBlanks( 4 ) || SameString( cAlphaArgs( 4 ), "YES" ) ) { - RunPeriodInput( Loop ).UseDST = true; + RunPeriodInput( Loop ).useDST = true; } else if ( SameString( cAlphaArgs( 4 ), "NO" ) ) { - RunPeriodInput( Loop ).UseDST = false; + RunPeriodInput( Loop ).useDST = false; } else { ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 4 ) + " invalid [" + cAlphaArgs( 4 ) + ']' ); ErrorsFound = true; @@ -5759,9 +5759,9 @@ Label9999: ; // A5, \field Apply Weekend Holiday Rule if ( lAlphaFieldBlanks( 5 ) || SameString( cAlphaArgs( 5 ), "YES" ) ) { - RunPeriodInput( Loop ).ApplyWeekendRule = true; + RunPeriodInput( Loop ).applyWeekendRule = true; } else if ( SameString( cAlphaArgs( 5 ), "NO" ) ) { - RunPeriodInput( Loop ).ApplyWeekendRule = false; + RunPeriodInput( Loop ).applyWeekendRule = false; } else { ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 5 ) + " invalid [" + cAlphaArgs( 5 ) + ']' ); ErrorsFound = true; @@ -5769,9 +5769,9 @@ Label9999: ; // A6, \field Use Weather File Rain Indicators if ( lAlphaFieldBlanks( 6 ) || SameString( cAlphaArgs( 6 ), "YES" ) ) { - RunPeriodInput( Loop ).UseRain = true; + RunPeriodInput( Loop ).useRain = true; } else if ( SameString( cAlphaArgs( 6 ), "NO" ) ) { - RunPeriodInput( Loop ).UseRain = false; + RunPeriodInput( Loop ).useRain = false; } else { ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 6 ) + " invalid [" + cAlphaArgs( 6 ) + ']' ); ErrorsFound = true; @@ -5779,9 +5779,9 @@ Label9999: ; // A7, \field Use Weather File Snow Indicators if ( lAlphaFieldBlanks( 7 ) || SameString( cAlphaArgs( 7 ), "YES" ) ) { - RunPeriodInput( Loop ).UseSnow = true; + RunPeriodInput( Loop ).useSnow = true; } else if ( SameString( cAlphaArgs( 7 ), "NO" ) ) { - RunPeriodInput( Loop ).UseSnow = false; + RunPeriodInput( Loop ).useSnow = false; } else { ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 7 ) + " invalid [" + cAlphaArgs( 7 ) + ']' ); ErrorsFound = true; @@ -5798,9 +5798,9 @@ Label9999: ; } //calculate the annual start and end days from the user inputted month and day - RunPeriodInput( Loop ).MonWeekDay = 0; - if ( RunPeriodInput( Loop ).DayOfWeek != 0 && ! ErrorsFound ) { - SetupWeekDaysByMonth( RunPeriodInput( Loop ).StartMonth, RunPeriodInput( Loop ).StartDay, RunPeriodInput( Loop ).DayOfWeek, RunPeriodInput( Loop ).MonWeekDay ); + RunPeriodInput( Loop ).monWeekDay = 0; + if ( RunPeriodInput( Loop ).dayOfWeek != 0 && ! ErrorsFound ) { + SetupWeekDaysByMonth( RunPeriodInput( Loop ).startMonth, RunPeriodInput( Loop ).startDay, RunPeriodInput( Loop ).dayOfWeek, RunPeriodInput( Loop ).monWeekDay ); } } @@ -5811,11 +5811,11 @@ Label9999: ; TotRunPers = 1; WeathSimReq = true; RunPeriodInput.allocate( TotRunPers ); - RunPeriodInput( 1 ).startJulianDate = JulianDay( RunPeriodInput( 1 ).StartMonth, RunPeriodInput( 1 ).StartDay, LeapYearAdd ); + RunPeriodInput( 1 ).startJulianDate = JulianDay( RunPeriodInput( 1 ).startMonth, RunPeriodInput( 1 ).startDay, LeapYearAdd ); RunPeriodInput( 1 ).endJulianDate = JulianDay( RunPeriodInput( 1 ).endMonth, RunPeriodInput( 1 ).endDay, LeapYearAdd ); - RunPeriodInput( 1 ).MonWeekDay = 0; - if ( RunPeriodInput( 1 ).DayOfWeek != 0 && ! ErrorsFound ) { - SetupWeekDaysByMonth( RunPeriodInput( 1 ).StartMonth, RunPeriodInput( 1 ).StartDay, RunPeriodInput( 1 ).DayOfWeek, RunPeriodInput( 1 ).MonWeekDay ); + RunPeriodInput( 1 ).monWeekDay = 0; + if ( RunPeriodInput( 1 ).dayOfWeek != 0 && ! ErrorsFound ) { + SetupWeekDaysByMonth( RunPeriodInput( 1 ).startMonth, RunPeriodInput( 1 ).startDay, RunPeriodInput( 1 ).dayOfWeek, RunPeriodInput( 1 ).monWeekDay ); } } } @@ -5891,84 +5891,84 @@ Label9999: ; IsNotOK = false; IsBlank = false; - VerifyName( cAlphaArgs( 1 ), RunPeriodDesignInput, &RunPeriodData::Title, Count, IsNotOK, IsBlank, cCurrentModuleObject + " Name" ); + VerifyName( cAlphaArgs( 1 ), RunPeriodDesignInput, &RunPeriodData::title, Count, IsNotOK, IsBlank, cCurrentModuleObject + " Name" ); if ( IsNotOK ) { ErrorsFound = true; if ( IsBlank ) cAlphaArgs( 1 ) = "xxxxx"; } ++Count; - RunPeriodDesignInput( Count ).Title = cAlphaArgs( 1 ); - RunPeriodDesignInput( Count ).PeriodType = "User Selected WeatherFile RunPeriod (Design)"; + RunPeriodDesignInput( Count ).title = cAlphaArgs( 1 ); + RunPeriodDesignInput( Count ).periodType = "User Selected WeatherFile RunPeriod (Design)"; //set the start and end day of month from user input - RunPeriodDesignInput( Count ).StartMonth = int( rNumericArgs( 1 ) ); - RunPeriodDesignInput( Count ).StartDay = int( rNumericArgs( 2 ) ); + RunPeriodDesignInput( Count ).startMonth = int( rNumericArgs( 1 ) ); + RunPeriodDesignInput( Count ).startDay = int( rNumericArgs( 2 ) ); RunPeriodDesignInput( Count ).endMonth = int( rNumericArgs( 3 ) ); RunPeriodDesignInput( Count ).endDay = int( rNumericArgs( 4 ) ); - { auto const SELECT_CASE_var( RunPeriodDesignInput( Count ).StartMonth ); + { auto const SELECT_CASE_var( RunPeriodDesignInput( Count ).startMonth ); if ( ( SELECT_CASE_var == 1 ) || ( SELECT_CASE_var == 3 ) || ( SELECT_CASE_var == 5 ) || ( SELECT_CASE_var == 7 ) || ( SELECT_CASE_var == 8 ) || ( SELECT_CASE_var == 10 ) || ( SELECT_CASE_var == 12 ) ) { - if ( RunPeriodDesignInput( Count ).StartDay > 31 ) { - ShowSevereError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).Title + ' ' + cNumericFieldNames( 2 ) + " invalid (Day of Month) [" + TrimSigDigits( RunPeriodInput( Loop ).StartDay ) + ']' ); + if ( RunPeriodDesignInput( Count ).startDay > 31 ) { + ShowSevereError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).title + ' ' + cNumericFieldNames( 2 ) + " invalid (Day of Month) [" + TrimSigDigits( RunPeriodInput( Loop ).startDay ) + ']' ); ErrorsFound = true; } } else if ( ( SELECT_CASE_var == 4 ) || ( SELECT_CASE_var == 6 ) || ( SELECT_CASE_var == 9 ) || ( SELECT_CASE_var == 11 ) ) { - if ( RunPeriodDesignInput( Count ).StartDay > 30 ) { - ShowSevereError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).Title + ' ' + cNumericFieldNames( 2 ) + " invalid (Day of Month) [" + TrimSigDigits( RunPeriodInput( Loop ).StartDay ) + ']' ); + if ( RunPeriodDesignInput( Count ).startDay > 30 ) { + ShowSevereError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).title + ' ' + cNumericFieldNames( 2 ) + " invalid (Day of Month) [" + TrimSigDigits( RunPeriodInput( Loop ).startDay ) + ']' ); ErrorsFound = true; } } else if ( SELECT_CASE_var == 2 ) { - if ( RunPeriodDesignInput( Count ).StartDay > 28 + LeapYearAdd ) { - ShowSevereError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).Title + ' ' + cNumericFieldNames( 2 ) + " invalid (Day of Month) [" + TrimSigDigits( RunPeriodInput( Loop ).StartDay ) + ']' ); + if ( RunPeriodDesignInput( Count ).startDay > 28 + LeapYearAdd ) { + ShowSevereError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).title + ' ' + cNumericFieldNames( 2 ) + " invalid (Day of Month) [" + TrimSigDigits( RunPeriodInput( Loop ).startDay ) + ']' ); ErrorsFound = true; } } else { - ShowSevereError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).Title + ' ' + cNumericFieldNames( 1 ) + " invalid (Month) [" + TrimSigDigits( RunPeriodInput( Loop ).StartMonth ) + ']' ); + ShowSevereError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).title + ' ' + cNumericFieldNames( 1 ) + " invalid (Month) [" + TrimSigDigits( RunPeriodInput( Loop ).startMonth ) + ']' ); ErrorsFound = true; }} if ( lAlphaFieldBlanks( 2 ) ) { - RunPeriodDesignInput( Count ).DayOfWeek = 2; // Defaults to Monday + RunPeriodDesignInput( Count ).dayOfWeek = 2; // Defaults to Monday } else { - RunPeriodDesignInput( Count ).DayOfWeek = FindItemInList( cAlphaArgs( 2 ), ValidNames, 12 ); - if ( RunPeriodDesignInput( Count ).DayOfWeek == 0 || RunPeriodDesignInput( Count ).DayOfWeek == 8 ) { - ShowWarningError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).Title + ' ' + cAlphaFieldNames( 1 ) + " invalid (Day of Week) [" + cAlphaArgs( 1 ) + " for Start is not Valid, Monday will be Used." ); - RunPeriodDesignInput( Count ).DayOfWeek = 2; // Defaults to Monday + RunPeriodDesignInput( Count ).dayOfWeek = FindItemInList( cAlphaArgs( 2 ), ValidNames, 12 ); + if ( RunPeriodDesignInput( Count ).dayOfWeek == 0 || RunPeriodDesignInput( Count ).dayOfWeek == 8 ) { + ShowWarningError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).title + ' ' + cAlphaFieldNames( 1 ) + " invalid (Day of Week) [" + cAlphaArgs( 1 ) + " for Start is not Valid, Monday will be Used." ); + RunPeriodDesignInput( Count ).dayOfWeek = 2; // Defaults to Monday } } if ( lAlphaFieldBlanks( 3 ) || SameString( cAlphaArgs( 3 ), "YES" ) ) { - RunPeriodDesignInput( Count ).UseDST = true; + RunPeriodDesignInput( Count ).useDST = true; } else if ( SameString( cAlphaArgs( 3 ), "NO" ) ) { - RunPeriodDesignInput( Count ).UseDST = false; + RunPeriodDesignInput( Count ).useDST = false; } else { ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 3 ) + " invalid [" + cAlphaArgs( 3 ) + ']' ); ErrorsFound = true; } if ( lAlphaFieldBlanks( 4 ) || SameString( cAlphaArgs( 4 ), "YES" ) ) { - RunPeriodDesignInput( Count ).UseRain = true; - RunPeriodDesignInput( Count ).UseSnow = true; + RunPeriodDesignInput( Count ).useRain = true; + RunPeriodDesignInput( Count ).useSnow = true; } else if ( SameString( cAlphaArgs( 4 ), "NO" ) ) { - RunPeriodDesignInput( Count ).UseRain = false; - RunPeriodDesignInput( Count ).UseSnow = false; + RunPeriodDesignInput( Count ).useRain = false; + RunPeriodDesignInput( Count ).useSnow = false; } else { ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 4 ) + " invalid [" + cAlphaArgs( 4 ) + ']' ); ErrorsFound = true; } //calculate the annual start and end days from the user inputted month and day - RunPeriodDesignInput( Count ).startJulianDate = JulianDay( RunPeriodDesignInput( Count ).StartMonth, RunPeriodDesignInput( Count ).StartDay, LeapYearAdd ); + RunPeriodDesignInput( Count ).startJulianDate = JulianDay( RunPeriodDesignInput( Count ).startMonth, RunPeriodDesignInput( Count ).startDay, LeapYearAdd ); RunPeriodDesignInput( Count ).endJulianDate = JulianDay( RunPeriodDesignInput( Count ).endMonth, RunPeriodDesignInput( Count ).endDay, LeapYearAdd ); if ( RunPeriodDesignInput( Count ).startJulianDate <= RunPeriodDesignInput( Count ).endJulianDate ) { - RunPeriodDesignInput( Count ).TotalDays = ( RunPeriodDesignInput( Count ).endJulianDate - RunPeriodDesignInput( Count ).startJulianDate + 1 ) * RunPeriodDesignInput( Count ).NumSimYears; + RunPeriodDesignInput( Count ).totalDays = ( RunPeriodDesignInput( Count ).endJulianDate - RunPeriodDesignInput( Count ).startJulianDate + 1 ) * RunPeriodDesignInput( Count ).numSimYears; } else { - RunPeriodDesignInput( Count ).TotalDays = ( JulianDay( 12, 31, LeapYearAdd ) - RunPeriodDesignInput( Count ).startJulianDate + 1 + RunPeriodDesignInput( Count ).endJulianDate ) * RunPeriodDesignInput( Count ).NumSimYears; + RunPeriodDesignInput( Count ).totalDays = ( JulianDay( 12, 31, LeapYearAdd ) - RunPeriodDesignInput( Count ).startJulianDate + 1 + RunPeriodDesignInput( Count ).endJulianDate ) * RunPeriodDesignInput( Count ).numSimYears; } - RunPeriodDesignInput( Count ).MonWeekDay = 0; - if ( RunPeriodDesignInput( 1 ).DayOfWeek != 0 && ! ErrorsFound ) { - SetupWeekDaysByMonth( RunPeriodDesignInput( 1 ).StartMonth, RunPeriodDesignInput( 1 ).StartDay, RunPeriodDesignInput( 1 ).DayOfWeek, RunPeriodDesignInput( 1 ).MonWeekDay ); + RunPeriodDesignInput( Count ).monWeekDay = 0; + if ( RunPeriodDesignInput( 1 ).dayOfWeek != 0 && ! ErrorsFound ) { + SetupWeekDaysByMonth( RunPeriodDesignInput( 1 ).startMonth, RunPeriodDesignInput( 1 ).startDay, RunPeriodDesignInput( 1 ).dayOfWeek, RunPeriodDesignInput( 1 ).monWeekDay ); } } @@ -5978,91 +5978,91 @@ Label9999: ; IsNotOK = false; IsBlank = false; - VerifyName( cAlphaArgs( 1 ), RunPeriodDesignInput, &RunPeriodData::Title, Count, IsNotOK, IsBlank, cCurrentModuleObject + " Title" ); + VerifyName( cAlphaArgs( 1 ), RunPeriodDesignInput, &RunPeriodData::title, Count, IsNotOK, IsBlank, cCurrentModuleObject + " Title" ); if ( IsNotOK ) { ErrorsFound = true; if ( IsBlank ) cAlphaArgs( 1 ) = "xxxxx"; } ++Count; - RunPeriodDesignInput( Count ).Title = cAlphaArgs( 1 ); - RunPeriodDesignInput( Count ).PeriodType = "User Selected WeatherFile Typical/Extreme Period (Design)=" + cAlphaArgs( 2 ); + RunPeriodDesignInput( Count ).title = cAlphaArgs( 1 ); + RunPeriodDesignInput( Count ).periodType = "User Selected WeatherFile Typical/Extreme Period (Design)=" + cAlphaArgs( 2 ); // Period Selection if ( ! lAlphaFieldBlanks( 2 ) ) { WhichPeriod = FindItem( cAlphaArgs( 2 ), TypicalExtremePeriods, &TypicalExtremeData::MatchValue ); if ( WhichPeriod != 0 ) { - RunPeriodDesignInput( Count ).StartDay = TypicalExtremePeriods( WhichPeriod ).StartDay; - RunPeriodDesignInput( Count ).StartMonth = TypicalExtremePeriods( WhichPeriod ).StartMonth; + RunPeriodDesignInput( Count ).startDay = TypicalExtremePeriods( WhichPeriod ).StartDay; + RunPeriodDesignInput( Count ).startMonth = TypicalExtremePeriods( WhichPeriod ).StartMonth; RunPeriodDesignInput( Count ).startJulianDate = TypicalExtremePeriods( WhichPeriod ).StartJDay; RunPeriodDesignInput( Count ).endDay = TypicalExtremePeriods( WhichPeriod ).EndDay; RunPeriodDesignInput( Count ).endMonth = TypicalExtremePeriods( WhichPeriod ).EndMonth; RunPeriodDesignInput( Count ).endJulianDate = TypicalExtremePeriods( WhichPeriod ).EndJDay; - RunPeriodDesignInput( Count ).TotalDays = TypicalExtremePeriods( WhichPeriod ).TotalDays; + RunPeriodDesignInput( Count ).totalDays = TypicalExtremePeriods( WhichPeriod ).TotalDays; } else { WhichPeriod = FindItem( cAlphaArgs( 2 ), TypicalExtremePeriods, &TypicalExtremeData::MatchValue1 ); if ( WhichPeriod != 0 ) { - RunPeriodDesignInput( Count ).StartDay = TypicalExtremePeriods( WhichPeriod ).StartDay; - RunPeriodDesignInput( Count ).StartMonth = TypicalExtremePeriods( WhichPeriod ).StartMonth; + RunPeriodDesignInput( Count ).startDay = TypicalExtremePeriods( WhichPeriod ).StartDay; + RunPeriodDesignInput( Count ).startMonth = TypicalExtremePeriods( WhichPeriod ).StartMonth; RunPeriodDesignInput( Count ).startJulianDate = TypicalExtremePeriods( WhichPeriod ).StartJDay; RunPeriodDesignInput( Count ).endDay = TypicalExtremePeriods( WhichPeriod ).EndDay; RunPeriodDesignInput( Count ).endMonth = TypicalExtremePeriods( WhichPeriod ).EndMonth; RunPeriodDesignInput( Count ).endJulianDate = TypicalExtremePeriods( WhichPeriod ).EndJDay; - RunPeriodDesignInput( Count ).TotalDays = TypicalExtremePeriods( WhichPeriod ).TotalDays; - ShowWarningError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).Title + ' ' + cAlphaFieldNames( 2 ) + '=' + cAlphaArgs( 2 ) + " matched to " + TypicalExtremePeriods( WhichPeriod ).MatchValue ); + RunPeriodDesignInput( Count ).totalDays = TypicalExtremePeriods( WhichPeriod ).TotalDays; + ShowWarningError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).title + ' ' + cAlphaFieldNames( 2 ) + '=' + cAlphaArgs( 2 ) + " matched to " + TypicalExtremePeriods( WhichPeriod ).MatchValue ); } else { WhichPeriod = FindItem( cAlphaArgs( 2 ), TypicalExtremePeriods, &TypicalExtremeData::MatchValue2 ); if ( WhichPeriod != 0 ) { - RunPeriodDesignInput( Count ).StartDay = TypicalExtremePeriods( WhichPeriod ).StartDay; - RunPeriodDesignInput( Count ).StartMonth = TypicalExtremePeriods( WhichPeriod ).StartMonth; + RunPeriodDesignInput( Count ).startDay = TypicalExtremePeriods( WhichPeriod ).StartDay; + RunPeriodDesignInput( Count ).startMonth = TypicalExtremePeriods( WhichPeriod ).StartMonth; RunPeriodDesignInput( Count ).startJulianDate = TypicalExtremePeriods( WhichPeriod ).StartJDay; RunPeriodDesignInput( Count ).endDay = TypicalExtremePeriods( WhichPeriod ).EndDay; RunPeriodDesignInput( Count ).endMonth = TypicalExtremePeriods( WhichPeriod ).EndMonth; RunPeriodDesignInput( Count ).endJulianDate = TypicalExtremePeriods( WhichPeriod ).EndJDay; - RunPeriodDesignInput( Count ).TotalDays = TypicalExtremePeriods( WhichPeriod ).TotalDays; - ShowWarningError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).Title + ' ' + cAlphaFieldNames( 2 ) + '=' + cAlphaArgs( 2 ) + " matched to " + TypicalExtremePeriods( WhichPeriod ).MatchValue ); + RunPeriodDesignInput( Count ).totalDays = TypicalExtremePeriods( WhichPeriod ).TotalDays; + ShowWarningError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).title + ' ' + cAlphaFieldNames( 2 ) + '=' + cAlphaArgs( 2 ) + " matched to " + TypicalExtremePeriods( WhichPeriod ).MatchValue ); } else { - ShowSevereError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).Title + ' ' + cAlphaFieldNames( 2 ) + " invalid (not on Weather File)=" + cAlphaArgs( 2 ) ); + ShowSevereError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).title + ' ' + cAlphaFieldNames( 2 ) + " invalid (not on Weather File)=" + cAlphaArgs( 2 ) ); ErrorsFound = true; } } } } else { - ShowSevereError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).Title + ' ' + cAlphaFieldNames( 2 ) + " invalid (blank)." ); + ShowSevereError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).title + ' ' + cAlphaFieldNames( 2 ) + " invalid (blank)." ); ErrorsFound = true; } if ( lAlphaFieldBlanks( 3 ) ) { - RunPeriodDesignInput( Count ).DayOfWeek = 2; // Defaults to Monday + RunPeriodDesignInput( Count ).dayOfWeek = 2; // Defaults to Monday } else { - RunPeriodDesignInput( Count ).DayOfWeek = FindItemInList( cAlphaArgs( 3 ), ValidNames, 12 ); - if ( RunPeriodDesignInput( Count ).DayOfWeek == 0 || RunPeriodDesignInput( Count ).DayOfWeek == 8 ) { - ShowWarningError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).Title + ' ' + cAlphaFieldNames( 3 ) + " invalid (Day of Week) [" + cAlphaArgs( 3 ) + " for Start is not Valid, Monday will be Used." ); - RunPeriodDesignInput( Count ).DayOfWeek = 2; // Defaults to Monday + RunPeriodDesignInput( Count ).dayOfWeek = FindItemInList( cAlphaArgs( 3 ), ValidNames, 12 ); + if ( RunPeriodDesignInput( Count ).dayOfWeek == 0 || RunPeriodDesignInput( Count ).dayOfWeek == 8 ) { + ShowWarningError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).title + ' ' + cAlphaFieldNames( 3 ) + " invalid (Day of Week) [" + cAlphaArgs( 3 ) + " for Start is not Valid, Monday will be Used." ); + RunPeriodDesignInput( Count ).dayOfWeek = 2; // Defaults to Monday } } if ( lAlphaFieldBlanks( 4 ) || SameString( cAlphaArgs( 4 ), "YES" ) ) { - RunPeriodDesignInput( Count ).UseDST = true; + RunPeriodDesignInput( Count ).useDST = true; } else if ( SameString( cAlphaArgs( 4 ), "NO" ) ) { - RunPeriodDesignInput( Count ).UseDST = false; + RunPeriodDesignInput( Count ).useDST = false; } else { ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 4 ) + " invalid [" + cAlphaArgs( 4 ) + ']' ); ErrorsFound = true; } if ( lAlphaFieldBlanks( 5 ) || SameString( cAlphaArgs( 5 ), "YES" ) ) { - RunPeriodDesignInput( Count ).UseRain = true; - RunPeriodDesignInput( Count ).UseSnow = true; + RunPeriodDesignInput( Count ).useRain = true; + RunPeriodDesignInput( Count ).useSnow = true; } else if ( SameString( cAlphaArgs( 5 ), "NO" ) ) { - RunPeriodDesignInput( Count ).UseRain = false; - RunPeriodDesignInput( Count ).UseSnow = false; + RunPeriodDesignInput( Count ).useRain = false; + RunPeriodDesignInput( Count ).useSnow = false; } else { ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 5 ) + " invalid [" + cAlphaArgs( 5 ) + ']' ); ErrorsFound = true; } - RunPeriodDesignInput( 1 ).MonWeekDay = 0; - if ( RunPeriodDesignInput( 1 ).DayOfWeek != 0 && ! ErrorsFound ) { - SetupWeekDaysByMonth( RunPeriodDesignInput( 1 ).StartMonth, RunPeriodDesignInput( 1 ).StartDay, RunPeriodDesignInput( 1 ).DayOfWeek, RunPeriodDesignInput( 1 ).MonWeekDay ); + RunPeriodDesignInput( 1 ).monWeekDay = 0; + if ( RunPeriodDesignInput( 1 ).dayOfWeek != 0 && ! ErrorsFound ) { + SetupWeekDaysByMonth( RunPeriodDesignInput( 1 ).startMonth, RunPeriodDesignInput( 1 ).startDay, RunPeriodDesignInput( 1 ).dayOfWeek, RunPeriodDesignInput( 1 ).monWeekDay ); } } @@ -9332,33 +9332,33 @@ Label9998: ; auto & env = Environment( Envrn ); auto & runPer = RunPeriodDesignInput( Loop ); - env.StartMonth = runPer.StartMonth; - env.StartDay = runPer.StartDay; - env.StartJDay = JulianDay( runPer.StartMonth, runPer.StartDay, LeapYearAdd ); - env.TotalDays = runPer.TotalDays; + env.StartMonth = runPer.startMonth; + env.StartDay = runPer.startDay; + env.StartJDay = JulianDay( runPer.startMonth, runPer.startDay, LeapYearAdd ); + env.TotalDays = runPer.totalDays; env.EndMonth = runPer.endMonth; env.EndDay = runPer.endDay; env.EndJDay = JulianDay( runPer.endMonth, runPer.endDay, LeapYearAdd ); - env.NumSimYears = runPer.NumSimYears; + env.NumSimYears = runPer.numSimYears; if ( env.StartJDay <= env.EndJDay ) { env.TotalDays = ( env.EndJDay - env.StartJDay + 1 ) * env.NumSimYears; } else { env.TotalDays = ( JulianDay( 12, 31, LeapYearAdd ) - env.StartJDay + 1 + env.EndJDay ) * env.NumSimYears; } TotRunDesPersDays += env.TotalDays; - env.UseDST = runPer.UseDST; - env.UseHolidays = runPer.UseHolidays; - env.Title = runPer.Title; - env.cKindOfEnvrn = runPer.PeriodType; + env.UseDST = runPer.useDST; + env.UseHolidays = runPer.useHolidays; + env.Title = runPer.title; + env.cKindOfEnvrn = runPer.periodType; env.KindOfEnvrn = ksRunPeriodDesign; env.DesignDayNum = 0; env.RunPeriodDesignNum = Loop; - env.DayOfWeek = runPer.DayOfWeek; - env.MonWeekDay = runPer.MonWeekDay; + env.DayOfWeek = runPer.dayOfWeek; + env.MonWeekDay = runPer.monWeekDay; env.SetWeekDays = false; - env.ApplyWeekendRule = runPer.ApplyWeekendRule; - env.UseRain = runPer.UseRain; - env.UseSnow = runPer.UseSnow; + env.ApplyWeekendRule = runPer.applyWeekendRule; + env.UseRain = runPer.useRain; + env.UseSnow = runPer.useSnow; ++Envrn; } @@ -9367,11 +9367,11 @@ Label9998: ; auto & env = Environment( Envrn ); auto & runPer = RunPeriodInput( Loop ); - env.StartMonth = runPer.StartMonth; - env.StartDay = runPer.StartDay; + env.StartMonth = runPer.startMonth; + env.StartDay = runPer.startDay; env.EndMonth = runPer.endMonth; env.EndDay = runPer.endDay; - env.NumSimYears = runPer.NumSimYears; + env.NumSimYears = runPer.numSimYears; if ( runPer.actualWeather ) { env.CurrentYear = runPer.startYear; env.IsLeapYear = isLeapYear( runPer.startYear ); @@ -9397,7 +9397,7 @@ Label9998: ; } env.TreatYearsAsConsecutive = false; env.RollDayTypeOnRepeat = runPer.RollDayTypeOnRepeat; - env.StartJDay = JulianDay( runPer.StartMonth, runPer.StartDay, LocalLeapYearAdd ); + env.StartJDay = JulianDay( runPer.startMonth, runPer.startDay, LocalLeapYearAdd ); env.EndJDay = JulianDay( runPer.endMonth, runPer.endDay, LocalLeapYearAdd ); // need message if isleapyear and wfleapyearind=0 if ( env.StartJDay <= env.EndJDay ) { @@ -9413,12 +9413,12 @@ Label9998: ; env.IsLeapYear = isLeapYear( env.CurrentYear ); env.TreatYearsAsConsecutive = true; env.RollDayTypeOnRepeat = runPer.RollDayTypeOnRepeat; - env.StartJDay = JulianDay( runPer.StartMonth, runPer.StartDay, LeapYearAdd ); + env.StartJDay = JulianDay( runPer.startMonth, runPer.startDay, LeapYearAdd ); env.EndJDay = JulianDay( runPer.endMonth, runPer.endDay, LeapYearAdd ); env.TotalDays = 0; for ( Loop1 = 1; Loop1 <= env.NumSimYears; ++Loop1 ) { if ( ! isLeapYear( runPer.BeginYear - 1 + Loop1 ) || ! WFAllowsLeapYears ) { - JDay1 = JulianDay( runPer.StartMonth, runPer.StartDay, 0 ); + JDay1 = JulianDay( runPer.startMonth, runPer.startDay, 0 ); JDay2 = JulianDay( runPer.endMonth, runPer.endDay, 0 ); if ( JDay1 <= JDay2 ) { if ( Loop1 == 1 ) env.RawSimDays = ( JDay2 - JDay1 + 1 ); @@ -9428,7 +9428,7 @@ Label9998: ; env.TotalDays += JulianDay( 12, 31, 0 ) - JDay1 + 1 + JDay2; } } else { // Leap Year - JDay1 = JulianDay( runPer.StartMonth, runPer.StartDay, 1 ); + JDay1 = JulianDay( runPer.startMonth, runPer.startDay, 1 ); JDay2 = JulianDay( runPer.endMonth, runPer.endDay, 1 ); if ( JDay1 <= JDay2 ) { env.TotalDays += ( JDay2 - JDay1 + 1 ); @@ -9438,12 +9438,12 @@ Label9998: ; } } } - env.UseDST = runPer.UseDST; - env.UseHolidays = runPer.UseHolidays; - if ( runPer.Title == BlankString ) { + env.UseDST = runPer.useDST; + env.UseHolidays = runPer.useHolidays; + if ( runPer.title == BlankString ) { env.Title = WeatherFileLocationTitle; } else { - env.Title = runPer.Title; + env.Title = runPer.title; } if ( env.KindOfEnvrn == ksReadAllWeatherData ) { env.cKindOfEnvrn = "ReadAllWeatherDataRunPeriod"; @@ -9451,12 +9451,12 @@ Label9998: ; env.cKindOfEnvrn = "WeatherFileRunPeriod"; env.KindOfEnvrn = ksRunPeriodWeather; } - env.DayOfWeek = runPer.DayOfWeek; - env.MonWeekDay = runPer.MonWeekDay; + env.DayOfWeek = runPer.dayOfWeek; + env.MonWeekDay = runPer.monWeekDay; env.SetWeekDays = false; - env.ApplyWeekendRule = runPer.ApplyWeekendRule; - env.UseRain = runPer.UseRain; - env.UseSnow = runPer.UseSnow; + env.ApplyWeekendRule = runPer.applyWeekendRule; + env.UseRain = runPer.useRain; + env.UseSnow = runPer.useSnow; ++Envrn; } diff --git a/src/EnergyPlus/WeatherManager.hh b/src/EnergyPlus/WeatherManager.hh index a11f87a914e..7aebced7b59 100644 --- a/src/EnergyPlus/WeatherManager.hh +++ b/src/EnergyPlus/WeatherManager.hh @@ -407,57 +407,57 @@ namespace WeatherManager { struct RunPeriodData { // Members - std::string Title; - std::string PeriodType; - int TotalDays; // total number of days in requested period - int StartMonth; - int StartDay; + std::string title; + std::string periodType; + int totalDays; // total number of days in requested period + int startMonth; + int startDay; int startJulianDate; // Calculated start date (Julian or ordinal) for a weather file run period int startYear; // entered in "consecutive"/real runperiod object int endMonth; int endDay; int endJulianDate; // Calculated end date (Julian or ordinal) for a weather file run period int endYear; // entered in "consecutive"/real runperiod object - int DayOfWeek; // Day of Week that the RunPeriod will start on (User Input) + int dayOfWeek; // Day of Week that the RunPeriod will start on (User Input) WeekDay startWeekDay; // Day of the week that the RunPeriod will start on (User Input) - bool UseDST; // True if DaylightSavingTime is used for this RunPeriod - bool UseHolidays; // True if Holidays are used for this RunPeriod (from WeatherFile) - bool ApplyWeekendRule; // True if "Weekend Rule" is to be applied to RunPeriod - bool UseRain; // True if Rain from weather file should be used (set rain to true) - bool UseSnow; // True if Snow from weather file should be used (set Snow to true) - Array1D_int MonWeekDay; - int NumSimYears; // Total Number of years of simulation to be performed - int BeginYear; // Start year entered in regular RunPeriod object - bool IsLeapYear; // True if Begin Year is leap year. + bool useDST; // True if DaylightSavingTime is used for this RunPeriod + bool useHolidays; // True if Holidays are used for this RunPeriod (from WeatherFile) + bool applyWeekendRule; // True if "Weekend Rule" is to be applied to RunPeriod + bool useRain; // True if Rain from weather file should be used (set rain to true) + bool useSnow; // True if Snow from weather file should be used (set Snow to true) + Array1D_int monWeekDay; + int numSimYears; // Total Number of years of simulation to be performed + bool isLeapYear; // True if Begin Year is leap year. bool RollDayTypeOnRepeat; // If repeating run period, increment day type on repeat. bool TreatYearsAsConsecutive; // When year rolls over, increment year and recalculate Leap Year bool actualWeather; // true when using actual weather data + int BeginYear; // Default Constructor RunPeriodData() : - TotalDays( 0 ), - StartMonth( 1 ), - StartDay( 1 ), + totalDays( 0 ), + startMonth( 1 ), + startDay( 1 ), startJulianDate( 0 ), startYear( 2017 ), endMonth( 12 ), endDay( 31 ), endJulianDate( 0 ), endYear( 0 ), - DayOfWeek( 0 ), + dayOfWeek( 0 ), startWeekDay( WeekDay::Sunday ), - UseDST( false ), - UseHolidays( false ), - ApplyWeekendRule( false ), - UseRain( true ), - UseSnow( true ), - MonWeekDay( 12, 0 ), - NumSimYears( 1 ), - BeginYear( 0 ), - IsLeapYear( false ), + useDST( false ), + useHolidays( false ), + applyWeekendRule( false ), + useRain( true ), + useSnow( true ), + monWeekDay( 12, 0 ), + numSimYears( 1 ), + isLeapYear( false ), RollDayTypeOnRepeat( true ), TreatYearsAsConsecutive( true ), - actualWeather( false ) + actualWeather( false ), + BeginYear( 0 ) {} }; From d07a44470bf822cd3d8af50af61d62a908a8b97d Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Thu, 22 Feb 2018 09:41:56 -0700 Subject: [PATCH 15/47] Fix merge issues and update example files --- testfiles/1ZoneDataCenterCRAC_wApproachTemp.idf | 4 ++++ testfiles/1ZoneUncontrolledAnnualOutputs.idf | 2 ++ testfiles/SingleFamilyHouse_TwoSpeed_CutoutTemperature.idf | 4 ++++ testfiles/SolarShadingTest_DisableSelfShading.idf | 2 ++ testfiles/SolarShadingTest_DisableSelfShadingGroup.idf | 2 ++ testfiles/SolarShadingTest_ImportedShading.idf | 2 ++ testfiles/UnitaryHybridAC_DedicatedOutsideAir.idf | 2 ++ tst/EnergyPlus/unit/RunPeriod.unit.cc | 4 ++-- 8 files changed, 20 insertions(+), 2 deletions(-) diff --git a/testfiles/1ZoneDataCenterCRAC_wApproachTemp.idf b/testfiles/1ZoneDataCenterCRAC_wApproachTemp.idf index f7c3ef7e163..4c761444504 100644 --- a/testfiles/1ZoneDataCenterCRAC_wApproachTemp.idf +++ b/testfiles/1ZoneDataCenterCRAC_wApproachTemp.idf @@ -57,8 +57,10 @@ Jan, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -70,8 +72,10 @@ Jul, !- Name 7, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 7, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/1ZoneUncontrolledAnnualOutputs.idf b/testfiles/1ZoneUncontrolledAnnualOutputs.idf index d3fd4c523e4..d7008d2fee4 100644 --- a/testfiles/1ZoneUncontrolledAnnualOutputs.idf +++ b/testfiles/1ZoneUncontrolledAnnualOutputs.idf @@ -119,8 +119,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SingleFamilyHouse_TwoSpeed_CutoutTemperature.idf b/testfiles/SingleFamilyHouse_TwoSpeed_CutoutTemperature.idf index e86179cfce4..8b6ecf0be65 100644 --- a/testfiles/SingleFamilyHouse_TwoSpeed_CutoutTemperature.idf +++ b/testfiles/SingleFamilyHouse_TwoSpeed_CutoutTemperature.idf @@ -132,8 +132,10 @@ , !- Name 1, !- Begin Month 14, !- Begin Day of Month + , !- Begin Year 1, !- End Month 14, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period @@ -145,8 +147,10 @@ , !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SolarShadingTest_DisableSelfShading.idf b/testfiles/SolarShadingTest_DisableSelfShading.idf index 865e9e3e41d..c7a1197b5af 100644 --- a/testfiles/SolarShadingTest_DisableSelfShading.idf +++ b/testfiles/SolarShadingTest_DisableSelfShading.idf @@ -111,8 +111,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SolarShadingTest_DisableSelfShadingGroup.idf b/testfiles/SolarShadingTest_DisableSelfShadingGroup.idf index 289cf25aa91..5254c1ce885 100644 --- a/testfiles/SolarShadingTest_DisableSelfShadingGroup.idf +++ b/testfiles/SolarShadingTest_DisableSelfShadingGroup.idf @@ -111,8 +111,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/SolarShadingTest_ImportedShading.idf b/testfiles/SolarShadingTest_ImportedShading.idf index 7771badfa00..149d7044b82 100644 --- a/testfiles/SolarShadingTest_ImportedShading.idf +++ b/testfiles/SolarShadingTest_ImportedShading.idf @@ -111,8 +111,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/UnitaryHybridAC_DedicatedOutsideAir.idf b/testfiles/UnitaryHybridAC_DedicatedOutsideAir.idf index adce7f17ebc..be6fd398c0c 100644 --- a/testfiles/UnitaryHybridAC_DedicatedOutsideAir.idf +++ b/testfiles/UnitaryHybridAC_DedicatedOutsideAir.idf @@ -152,8 +152,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/tst/EnergyPlus/unit/RunPeriod.unit.cc b/tst/EnergyPlus/unit/RunPeriod.unit.cc index 6cd83685e86..8ad2f74f92e 100644 --- a/tst/EnergyPlus/unit/RunPeriod.unit.cc +++ b/tst/EnergyPlus/unit/RunPeriod.unit.cc @@ -135,7 +135,7 @@ TEST_F(EnergyPlusFixture, RunPeriod_YearTests) }); - ASSERT_FALSE( process_idf( idf_objects ) ); + ASSERT_TRUE( process_idf( idf_objects ) ); bool errors_in_input( false ); int totalrps( 4 ); WeatherManager::GetRunPeriodData( totalrps, errors_in_input ); @@ -192,7 +192,7 @@ TEST_F( EnergyPlusFixture, RunPeriod_EndYearOnly ) "BUILDING, Simple One Zone (Wireframe DXF), 0.0, Suburbs, .04, .004, MinimalShadowing, 30, 6;", }); - ASSERT_FALSE( process_idf( idf_objects ) ); + ASSERT_TRUE( process_idf( idf_objects ) ); bool errors_in_input( false ); int totalrps( 1 ); WeatherManager::GetRunPeriodData( totalrps, errors_in_input ); From ada781c42c5ed8af42ba87b3f109b4b7b6763a9b Mon Sep 17 00:00:00 2001 From: energyplus-style-bot Date: Fri, 23 Mar 2018 22:00:17 -0600 Subject: [PATCH 16/47] apply clang-format --- src/EnergyPlus/DXCoils.cc | 6 +- src/EnergyPlus/DaylightingManager.cc | 2 +- src/EnergyPlus/ExternalInterface.cc | 3 +- src/EnergyPlus/FanCoilUnits.cc | 13 +- .../FiniteDifferenceGroundTemperatureModel.cc | 1890 +- src/EnergyPlus/HVACUnitarySystem.cc | 4 +- src/EnergyPlus/HeatBalanceSurfaceManager.cc | 5 +- src/EnergyPlus/HybridEvapCoolingModel.cc | 8 +- src/EnergyPlus/PackagedTerminalHeatPump.cc | 3 +- src/EnergyPlus/SurfaceGeometry.cc | 5 +- src/EnergyPlus/TranspiredCollector.cc | 6 +- src/EnergyPlus/WaterCoils.cc | 3 +- src/EnergyPlus/WeatherManager.cc | 17059 ++++++++-------- src/EnergyPlus/WeatherManager.hh | 1274 +- 14 files changed, 10157 insertions(+), 10124 deletions(-) diff --git a/src/EnergyPlus/DXCoils.cc b/src/EnergyPlus/DXCoils.cc index 1939990856c..cd34a0b1b87 100644 --- a/src/EnergyPlus/DXCoils.cc +++ b/src/EnergyPlus/DXCoils.cc @@ -6345,8 +6345,8 @@ namespace DXCoils { // DataBypassFrac = DXCoil ( DXCoilNum ).BypassedFlowFrac ( Mode ); // } else if ( DXCoil( DXCoilNum ).DXCoilType_Num == CoilDX_HeatingEmpirical ) { // SizingMethod = HeatingAirflowSizing; - //// DataCoolCoilCap = DXCoolCap; // pass global variable used only for heat pumps (i.e., DX - ///cooling and heating coils) + //// DataCoolCoilCap = DXCoolCap; // pass global variable used only for heat pumps (i.e., + ///DX cooling and heating coils) // } else if ( DXCoil( DXCoilNum ).DXCoilType_Num == CoilVRF_Heating ) { // SizingMethod = HeatingAirflowSizing; // } else if ( DXCoil( DXCoilNum ).DXCoilType_Num == CoilVRF_Cooling ) { @@ -6365,7 +6365,7 @@ namespace DXCoils { // RoutineName //); DataFlowUsedForSizing = TempSize; // DataIsDXCoil = false; // don't need this and next 2, they are just overwritten below. Delete - //on next pass so testing will show problems if any. DataEMSOverrideON = false; + // on next pass so testing will show problems if any. DataEMSOverrideON = false; // DataEMSOverride = 0.0; // DataBypassFrac = 0.0; // } diff --git a/src/EnergyPlus/DaylightingManager.cc b/src/EnergyPlus/DaylightingManager.cc index f1602894ce9..ab4b263d949 100644 --- a/src/EnergyPlus/DaylightingManager.cc +++ b/src/EnergyPlus/DaylightingManager.cc @@ -6571,7 +6571,7 @@ namespace DaylightingManager { // If switchable glazing, set switching factor to 1: fully switched. if (SurfaceWindow(IWin).ShadingFlag == SwitchableGlazing) { // tmpSWFactor0 = SurfaceWindow( IWin ).SwitchingFactor; // save original - //switching factor + // switching factor ////Unused Set but never used SurfaceWindow(IWin).SwitchingFactor = 1.0; SurfaceWindow(IWin).VisTransSelected = TVIS2; diff --git a/src/EnergyPlus/ExternalInterface.cc b/src/EnergyPlus/ExternalInterface.cc index 79eccfc8e53..4920609b725 100644 --- a/src/EnergyPlus/ExternalInterface.cc +++ b/src/EnergyPlus/ExternalInterface.cc @@ -1313,7 +1313,8 @@ namespace ExternalInterface { // verify whether we have duplicate FMU input variables in the idf GlobalNames::VerifyUniqueInterObjectName(UniqueFMUInputVarNames, FMU(i).Instance(j).fmuInputVariable(k).Name, cCurrentModuleObject, FMU(i).Instance(j).Name, ErrorsFound); - // UtilityRoutines::VerifyName( FMU( i ).Instance( j ).fmuInputVariable( k ).Name, FMU( i + // UtilityRoutines::VerifyName( FMU( i ).Instance( j ).fmuInputVariable( k ).Name, FMU( + //i //).Instance( // j //).checkfmuInputVariable, NumFMUInputVariables, IsNotOK, IsBlank, "The FMU input variable \"" + FMU( i ).Instance( j diff --git a/src/EnergyPlus/FanCoilUnits.cc b/src/EnergyPlus/FanCoilUnits.cc index 59278bb8954..6127d5c5f4d 100644 --- a/src/EnergyPlus/FanCoilUnits.cc +++ b/src/EnergyPlus/FanCoilUnits.cc @@ -3170,8 +3170,8 @@ namespace FanCoilUnits { // air flow). For now SA temperature will limit output. The following would increase SA flow and/or water flow to meet load. // Not sure that's required at this point. // // if temperature control reduced capacity so that zone load is not met, iterate on - //air and water flow (an attempt to hold outlet temp constant) if ( ( QZnReq - - //QUnitOut ) > 0.0 && Node( InletNode ).MassFlowRate < FanCoil( FanCoilNum + // air and water flow (an attempt to hold outlet temp constant) if ( ( QZnReq - + // QUnitOut ) > 0.0 && Node( InletNode ).MassFlowRate < FanCoil( FanCoilNum //).MaxAirMassFlow ) { // //solve for the hot water and air flow rate that meets zone load // Par( 1 ) = double( FanCoilNum ); @@ -3196,20 +3196,21 @@ namespace FanCoilUnits { // CalcFanCoilAirAndWaterInStepResidual, 0.0, 1.0, Par ); // PLR = Par( 6 ) + ( PLR * ( 1.0 - Par( 6 ) ) ); // Calc4PipeFanCoil( FanCoilNum, ControlledZoneNum, FirstHVACIteration, - //QUnitOut, PLR + // QUnitOut, PLR //); // } // if ( SolFlag == -1 ) { // ShowWarningError( "Heating Coil control failed in fan coil unit " + // FanCoil( FanCoilNum ).Name ); ShowContinueError( " Iteration limit // exceeded in calculating heating coil output " ); - // ShowRecurringWarningErrorAtEnd( "Heating coil Iteration limit exceeded in - //fan coil unit " + FanCoil( FanCoilNum ).Name, FanCoil( FanCoilNum ).MaxIterIndexC ); + // ShowRecurringWarningErrorAtEnd( "Heating coil Iteration limit exceeded + //in fan coil unit " + FanCoil( FanCoilNum ).Name, FanCoil( FanCoilNum ).MaxIterIndexC ); // } else if ( SolFlag == -2 ) { // ShowWarningError( "Heating coil control failed in fan coil unit " + // FanCoil( FanCoilNum ).Name ); ShowContinueError( " Bad starting // values for electric heating coil control to meet zone load at constant temperature." ); - // ShowRecurringWarningErrorAtEnd( "Heating coil control failed in fan coil unit + // ShowRecurringWarningErrorAtEnd( "Heating coil control failed in fan coil + //unit //" //+ FanCoil( FanCoilNum ).Name, FanCoil( FanCoilNum ).MaxIterIndexC ); // Node( FanCoil( FanCoilNum ).AirInNode ).MassFlowRate = diff --git a/src/EnergyPlus/GroundTemperatureModeling/FiniteDifferenceGroundTemperatureModel.cc b/src/EnergyPlus/GroundTemperatureModeling/FiniteDifferenceGroundTemperatureModel.cc index 04c72a5aed6..39a6d6259f4 100644 --- a/src/EnergyPlus/GroundTemperatureModeling/FiniteDifferenceGroundTemperatureModel.cc +++ b/src/EnergyPlus/GroundTemperatureModeling/FiniteDifferenceGroundTemperatureModel.cc @@ -68,1151 +68,1151 @@ namespace EnergyPlus { - using DataGlobals::SecsInDay; - using WeatherManager::NumDaysInYear; - int simDay = 0; - int numIterYears = 0; - int const maxYearsToIterate = 10; - Real64 finalTempConvergenceCriteria = 0.05; - Real64 iterationTempConvergenceCriteria = 0.00001; +using DataGlobals::SecsInDay; +using WeatherManager::NumDaysInYear; +int simDay = 0; +int numIterYears = 0; +int const maxYearsToIterate = 10; +Real64 finalTempConvergenceCriteria = 0.05; +Real64 iterationTempConvergenceCriteria = 0.00001; - //****************************************************************************** +//****************************************************************************** - // Finite difference model factory +// Finite difference model factory std::shared_ptr FiniteDiffGroundTempsModel::FiniteDiffGTMFactory(int objectType, std::string objectName) - { - // SUBROUTINE INFORMATION: - // AUTHOR Matt Mitchell - // DATE WRITTEN Summer 2015 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // Read input and creates instance of finite difference ground temp model - - // USE STATEMENTS: - using namespace DataIPShortCuts; - using namespace GroundTemperatureManager; - - // Locals - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - bool found = false; - int NumNums; - int NumAlphas; - int IOStat; - bool ErrorsFound = false; - - // New shared pointer for this model object - std::shared_ptr< FiniteDiffGroundTempsModel > thisModel( new FiniteDiffGroundTempsModel() ); - - // Search through finite diff models here - std::string const cCurrentModuleObject = CurrentModuleObjects( objectType_FiniteDiffGroundTemp ); - int numCurrModels = inputProcessor->getNumObjectsFound( cCurrentModuleObject ); - - for ( int modelNum = 1; modelNum <= numCurrModels; ++modelNum ) { - - inputProcessor->getObjectItem( cCurrentModuleObject, modelNum, cAlphaArgs, NumAlphas, rNumericArgs, NumNums, IOStat ); - - if ( objectName == cAlphaArgs( 1 ) ) { - // Read input into object here - - thisModel->objectType = objectType; - thisModel->objectName = cAlphaArgs( 1 ); - thisModel->baseConductivity = rNumericArgs( 1 ); - thisModel->baseDensity = rNumericArgs( 2 ); - thisModel->baseSpecificHeat = rNumericArgs( 3 ); - thisModel->waterContent = rNumericArgs( 4 ) / 100.0; - thisModel->saturatedWaterContent = rNumericArgs( 5 ) / 100.0; - thisModel->evapotransCoeff = rNumericArgs( 6 ); - - found = true; - break; - } - } - - if ( found && !ErrorsFound ) { - groundTempModels.push_back( thisModel ); - - // Simulate - thisModel->initAndSim(); - - // Return the pointer - return thisModel; - } else { - ShowFatalError( "Site:GroundTemperature:Undisturbed:FiniteDifference--Errors getting input for ground temperature model" ); - return nullptr; - } - } - - //****************************************************************************** +{ + // SUBROUTINE INFORMATION: + // AUTHOR Matt Mitchell + // DATE WRITTEN Summer 2015 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // Read input and creates instance of finite difference ground temp model + + // USE STATEMENTS: + using namespace DataIPShortCuts; + using namespace GroundTemperatureManager; + + // Locals + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + bool found = false; + int NumNums; + int NumAlphas; + int IOStat; + bool ErrorsFound = false; + + // New shared pointer for this model object + std::shared_ptr thisModel(new FiniteDiffGroundTempsModel()); + + // Search through finite diff models here + std::string const cCurrentModuleObject = CurrentModuleObjects(objectType_FiniteDiffGroundTemp); + int numCurrModels = inputProcessor->getNumObjectsFound(cCurrentModuleObject); + + for (int modelNum = 1; modelNum <= numCurrModels; ++modelNum) { + + inputProcessor->getObjectItem(cCurrentModuleObject, modelNum, cAlphaArgs, NumAlphas, rNumericArgs, NumNums, IOStat); + + if (objectName == cAlphaArgs(1)) { + // Read input into object here + + thisModel->objectType = objectType; + thisModel->objectName = cAlphaArgs(1); + thisModel->baseConductivity = rNumericArgs(1); + thisModel->baseDensity = rNumericArgs(2); + thisModel->baseSpecificHeat = rNumericArgs(3); + thisModel->waterContent = rNumericArgs(4) / 100.0; + thisModel->saturatedWaterContent = rNumericArgs(5) / 100.0; + thisModel->evapotransCoeff = rNumericArgs(6); + + found = true; + break; + } + } + + if (found && !ErrorsFound) { + groundTempModels.push_back(thisModel); + + // Simulate + thisModel->initAndSim(); + + // Return the pointer + return thisModel; + } else { + ShowFatalError("Site:GroundTemperature:Undisturbed:FiniteDifference--Errors getting input for ground temperature model"); + return nullptr; + } +} + +//****************************************************************************** void FiniteDiffGroundTempsModel::initAndSim() - { - // SUBROUTINE INFORMATION: - // AUTHOR Matt Mitchell - // DATE WRITTEN Summer 2015 - // MODIFIED na - // RE-ENGINEERED na +{ + // SUBROUTINE INFORMATION: + // AUTHOR Matt Mitchell + // DATE WRITTEN Summer 2015 + // MODIFIED na + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // Initalizes and simulated finite difference ground temps model + // PURPOSE OF THIS SUBROUTINE: + // Initalizes and simulated finite difference ground temps model - FiniteDiffGroundTempsModel::getWeatherData(); + FiniteDiffGroundTempsModel::getWeatherData(); - FiniteDiffGroundTempsModel::developMesh(); + FiniteDiffGroundTempsModel::developMesh(); - FiniteDiffGroundTempsModel::performSimulation(); - } + FiniteDiffGroundTempsModel::performSimulation(); +} - //****************************************************************************** +//****************************************************************************** void FiniteDiffGroundTempsModel::getWeatherData() - { - // SUBROUTINE INFORMATION: - // AUTHOR Matt Mitchell - // DATE WRITTEN Summer 2015 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // Finds correct environment for reading all weather data. Loops over all weather data in weather file - // and data structure containing daily average of required weather data. - - // USE STATEMENTS: - using General::JulianDay; - using WeatherManager::GetNextEnvironment; - using WeatherManager::ManageWeather; - using WeatherManager::RPReadAllWeatherData; +{ + // SUBROUTINE INFORMATION: + // AUTHOR Matt Mitchell + // DATE WRITTEN Summer 2015 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // Finds correct environment for reading all weather data. Loops over all weather data in weather file + // and data structure containing daily average of required weather data. + + // USE STATEMENTS: + using General::JulianDay; + using WeatherManager::GetNextEnvironment; + using WeatherManager::ManageWeather; + using WeatherManager::RPReadAllWeatherData; using WeatherManager::ResetEnvironmentCounter; - using namespace DataEnvironment; - using namespace DataGlobals; - using namespace DataReportingFlags; - using namespace WeatherManager; - - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: - bool Available; // an environment is available to process - bool ErrorsFound; - Real64 outDryBulbTemp_num; - Real64 relHum_num; - Real64 windSpeed_num; - Real64 horizSolarRad_num; - Real64 airDensity_num; - Real64 annualAveAirTemp_num; - int denominator; - - // Save current environment so we can revert back when done - int Envrn_reset = Envrn; - int KindOfSim_reset = KindOfSim; - int TimeStep_reset = TimeStep; - int HourOfDay_reset = HourOfDay; - bool BeginEnvrnFlag_reset = BeginEnvrnFlag; - bool EndEnvrnFlag_reset = EndEnvrnFlag; - bool EndMonthFlag_reset = EndMonthFlag; - bool WarmupFlag_reset = WarmupFlag; - int DayOfSim_reset = DayOfSim; - std::string DayOfSimChr_reset = DayOfSimChr; - int NumOfWarmupDays_reset = NumOfWarmupDays; - bool BeginDayFlag_reset = BeginDayFlag; - bool EndDayFlag_reset = EndDayFlag; - bool BeginHourFlag_reset = BeginHourFlag; - bool EndHourFlag_reset = EndHourFlag; - - if ( !WeatherFileExists ){ - ShowContinueError( "Site:GroundTemperature:Undisturbed:FiniteDifference -- using this model requires specification of a weather file." ); - ShowContinueError( "Either place in.epw in the working directory or specify a weather file on the command line using -w /path/to/weather.epw"); - ShowFatalError( "Simulation halted due to input error in ground temperaure model." ); - } - - ++NumOfEnvrn; - ++TotRunPers; - Environment.redimension( NumOfEnvrn ); - RunPeriodInput.redimension( TotRunPers ); - Environment( NumOfEnvrn ).KindOfEnvrn = ksReadAllWeatherData; - RPReadAllWeatherData = true; - WeathSimReq = true; - RunPeriodInput( TotRunPers ).startJulianDate = 1; //JulianDay( 1, 1, 0 ); - RunPeriodInput( TotRunPers ).endJulianDate = 365; //JulianDay( 12, 31, 0 ); - RunPeriodInput( TotRunPers ).monWeekDay = 0; - - SetupEnvironmentTypes(); - - ResetEnvironmentCounter(); - - Available = true; - ErrorsFound = false; - - for ( int i = 1; i <= NumOfEnvrn; ++i ) { // loop over environments - - GetNextEnvironment( Available, ErrorsFound ); - - if ( KindOfSim != ksReadAllWeatherData ) continue; - - weatherDataArray.dimension( NumDaysInYear ); - - BeginEnvrnFlag = true; - EndEnvrnFlag = false; - EndMonthFlag = false; - WarmupFlag = false; - DayOfSim = 0; - DayOfSimChr = "0"; - NumOfWarmupDays = 0; - - annualAveAirTemp_num = 0.0; - - while ( ( DayOfSim < NumOfDayInEnvrn ) || ( WarmupFlag ) ) { // Begin day loop ... - - ++DayOfSim; - - // Reset daily values - outDryBulbTemp_num = 0.0; - relHum_num = 0.0; - windSpeed_num = 0.0; - horizSolarRad_num = 0.0; - airDensity_num = 0.0; - denominator = 0; - - auto & tdwd = weatherDataArray( DayOfSim ); // "This day weather data" - - BeginDayFlag = true; - EndDayFlag = false; - - for ( HourOfDay = 1; HourOfDay <= 24; ++HourOfDay ) { // Begin hour loop ... - - BeginHourFlag = true; - EndHourFlag = false; - - for ( TimeStep = 1; TimeStep <= NumOfTimeStepInHour; ++TimeStep ) { - - BeginTimeStepFlag = true; - - // Set the End__Flag variables to true if necessary. Note that - // each flag builds on the previous level. EndDayFlag cannot be - // .TRUE. unless EndHourFlag is also .TRUE., etc. Note that the - // EndEnvrnFlag and the EndSimFlag cannot be set during warmup. - // Note also that BeginTimeStepFlag, EndTimeStepFlag, and the - // SubTimeStepFlags can/will be set/reset in the HVAC Manager. - - if ( TimeStep == NumOfTimeStepInHour ) { - EndHourFlag = true; - if ( HourOfDay == 24 ) { - EndDayFlag = true; - if ( !WarmupFlag && (DayOfSim == NumOfDayInEnvrn) ) { - EndEnvrnFlag = true; - } - } - } - - ManageWeather(); - - outDryBulbTemp_num += OutDryBulbTemp; - airDensity_num += OutAirDensity; - relHum_num += OutRelHumValue; - windSpeed_num += WindSpeed; - horizSolarRad_num += BeamSolarRad + DifSolarRad; - - BeginHourFlag = false; - BeginDayFlag = false; - BeginEnvrnFlag = false; - BeginSimFlag = false; - BeginFullSimFlag = false; + using namespace DataEnvironment; + using namespace DataGlobals; + using namespace DataReportingFlags; + using namespace WeatherManager; + + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + bool Available; // an environment is available to process + bool ErrorsFound; + Real64 outDryBulbTemp_num; + Real64 relHum_num; + Real64 windSpeed_num; + Real64 horizSolarRad_num; + Real64 airDensity_num; + Real64 annualAveAirTemp_num; + int denominator; + + // Save current environment so we can revert back when done + int Envrn_reset = Envrn; + int KindOfSim_reset = KindOfSim; + int TimeStep_reset = TimeStep; + int HourOfDay_reset = HourOfDay; + bool BeginEnvrnFlag_reset = BeginEnvrnFlag; + bool EndEnvrnFlag_reset = EndEnvrnFlag; + bool EndMonthFlag_reset = EndMonthFlag; + bool WarmupFlag_reset = WarmupFlag; + int DayOfSim_reset = DayOfSim; + std::string DayOfSimChr_reset = DayOfSimChr; + int NumOfWarmupDays_reset = NumOfWarmupDays; + bool BeginDayFlag_reset = BeginDayFlag; + bool EndDayFlag_reset = EndDayFlag; + bool BeginHourFlag_reset = BeginHourFlag; + bool EndHourFlag_reset = EndHourFlag; + + if (!WeatherFileExists) { + ShowContinueError("Site:GroundTemperature:Undisturbed:FiniteDifference -- using this model requires specification of a weather file."); + ShowContinueError("Either place in.epw in the working directory or specify a weather file on the command line using -w /path/to/weather.epw"); + ShowFatalError("Simulation halted due to input error in ground temperaure model."); + } + + ++NumOfEnvrn; + ++TotRunPers; + Environment.redimension(NumOfEnvrn); + RunPeriodInput.redimension(TotRunPers); + Environment(NumOfEnvrn).KindOfEnvrn = ksReadAllWeatherData; + RPReadAllWeatherData = true; + WeathSimReq = true; + RunPeriodInput(TotRunPers).startJulianDate = 1; // JulianDay( 1, 1, 0 ); + RunPeriodInput(TotRunPers).endJulianDate = 365; // JulianDay( 12, 31, 0 ); + RunPeriodInput(TotRunPers).monWeekDay = 0; + + SetupEnvironmentTypes(); + + ResetEnvironmentCounter(); + + Available = true; + ErrorsFound = false; + + for (int i = 1; i <= NumOfEnvrn; ++i) { // loop over environments + + GetNextEnvironment(Available, ErrorsFound); + + if (KindOfSim != ksReadAllWeatherData) continue; + + weatherDataArray.dimension(NumDaysInYear); + + BeginEnvrnFlag = true; + EndEnvrnFlag = false; + EndMonthFlag = false; + WarmupFlag = false; + DayOfSim = 0; + DayOfSimChr = "0"; + NumOfWarmupDays = 0; + + annualAveAirTemp_num = 0.0; + + while ((DayOfSim < NumOfDayInEnvrn) || (WarmupFlag)) { // Begin day loop ... + + ++DayOfSim; + + // Reset daily values + outDryBulbTemp_num = 0.0; + relHum_num = 0.0; + windSpeed_num = 0.0; + horizSolarRad_num = 0.0; + airDensity_num = 0.0; + denominator = 0; + + auto &tdwd = weatherDataArray(DayOfSim); // "This day weather data" + + BeginDayFlag = true; + EndDayFlag = false; + + for (HourOfDay = 1; HourOfDay <= 24; ++HourOfDay) { // Begin hour loop ... + + BeginHourFlag = true; + EndHourFlag = false; + + for (TimeStep = 1; TimeStep <= NumOfTimeStepInHour; ++TimeStep) { + + BeginTimeStepFlag = true; + + // Set the End__Flag variables to true if necessary. Note that + // each flag builds on the previous level. EndDayFlag cannot be + // .TRUE. unless EndHourFlag is also .TRUE., etc. Note that the + // EndEnvrnFlag and the EndSimFlag cannot be set during warmup. + // Note also that BeginTimeStepFlag, EndTimeStepFlag, and the + // SubTimeStepFlags can/will be set/reset in the HVAC Manager. + + if (TimeStep == NumOfTimeStepInHour) { + EndHourFlag = true; + if (HourOfDay == 24) { + EndDayFlag = true; + if (!WarmupFlag && (DayOfSim == NumOfDayInEnvrn)) { + EndEnvrnFlag = true; + } + } + } + + ManageWeather(); + + outDryBulbTemp_num += OutDryBulbTemp; + airDensity_num += OutAirDensity; + relHum_num += OutRelHumValue; + windSpeed_num += WindSpeed; + horizSolarRad_num += BeamSolarRad + DifSolarRad; + + BeginHourFlag = false; + BeginDayFlag = false; + BeginEnvrnFlag = false; + BeginSimFlag = false; + BeginFullSimFlag = false; - ++denominator; - - } // TimeStep loop + ++denominator; + + } // TimeStep loop - PreviousHour = HourOfDay; + PreviousHour = HourOfDay; - } // ... End hour loop. + } // ... End hour loop. - tdwd.dryBulbTemp = outDryBulbTemp_num / denominator; - tdwd.relativeHumidity = relHum_num / denominator; - tdwd.windSpeed = windSpeed_num / denominator; - tdwd.horizontalRadiation = horizSolarRad_num / denominator; - tdwd.airDensity = airDensity_num / denominator; + tdwd.dryBulbTemp = outDryBulbTemp_num / denominator; + tdwd.relativeHumidity = relHum_num / denominator; + tdwd.windSpeed = windSpeed_num / denominator; + tdwd.horizontalRadiation = horizSolarRad_num / denominator; + tdwd.airDensity = airDensity_num / denominator; - // Log data for domain initialization using KA model - annualAveAirTemp_num += tdwd.dryBulbTemp; + // Log data for domain initialization using KA model + annualAveAirTemp_num += tdwd.dryBulbTemp; - if (tdwd.dryBulbTemp < minDailyAirTemp ) { - minDailyAirTemp = tdwd.dryBulbTemp; - dayOfMinDailyAirTemp = DayOfSim; - } + if (tdwd.dryBulbTemp < minDailyAirTemp) { + minDailyAirTemp = tdwd.dryBulbTemp; + dayOfMinDailyAirTemp = DayOfSim; + } - if (tdwd.dryBulbTemp > maxDailyAirTemp ) { - maxDailyAirTemp = tdwd.dryBulbTemp; - } + if (tdwd.dryBulbTemp > maxDailyAirTemp) { + maxDailyAirTemp = tdwd.dryBulbTemp; + } - } // ... End day loop. + } // ... End day loop. - } // ... End environment loop. - - annualAveAirTemp = annualAveAirTemp_num / NumDaysInYear; // Used for initalizing domain - - // Reset Envrionment when done reading data - --NumOfEnvrn; // May need better way of eliminating the extra envrionment that was added to read the data - --TotRunPers; - KindOfSim = KindOfSim_reset; - RPReadAllWeatherData = false; - Environment.redimension( NumOfEnvrn ); - RunPeriodInput.redimension( TotRunPers ); - Envrn = Envrn_reset; - TimeStep = TimeStep_reset; - HourOfDay = HourOfDay_reset; - BeginEnvrnFlag = BeginEnvrnFlag_reset; - EndEnvrnFlag = EndEnvrnFlag_reset; - EndMonthFlag = EndMonthFlag_reset; - WarmupFlag = WarmupFlag_reset; - DayOfSim = DayOfSim_reset; - DayOfSimChr = DayOfSimChr_reset; - NumOfWarmupDays = NumOfWarmupDays_reset; - BeginDayFlag = BeginDayFlag_reset; - EndDayFlag = EndDayFlag_reset; - BeginHourFlag = BeginHourFlag_reset; - EndHourFlag = EndHourFlag_reset; - } + } // ... End environment loop. + + annualAveAirTemp = annualAveAirTemp_num / NumDaysInYear; // Used for initalizing domain + + // Reset Envrionment when done reading data + --NumOfEnvrn; // May need better way of eliminating the extra envrionment that was added to read the data + --TotRunPers; + KindOfSim = KindOfSim_reset; + RPReadAllWeatherData = false; + Environment.redimension(NumOfEnvrn); + RunPeriodInput.redimension(TotRunPers); + Envrn = Envrn_reset; + TimeStep = TimeStep_reset; + HourOfDay = HourOfDay_reset; + BeginEnvrnFlag = BeginEnvrnFlag_reset; + EndEnvrnFlag = EndEnvrnFlag_reset; + EndMonthFlag = EndMonthFlag_reset; + WarmupFlag = WarmupFlag_reset; + DayOfSim = DayOfSim_reset; + DayOfSimChr = DayOfSimChr_reset; + NumOfWarmupDays = NumOfWarmupDays_reset; + BeginDayFlag = BeginDayFlag_reset; + EndDayFlag = EndDayFlag_reset; + BeginHourFlag = BeginHourFlag_reset; + EndHourFlag = EndHourFlag_reset; +} - //****************************************************************************** +//****************************************************************************** void FiniteDiffGroundTempsModel::developMesh() - { - // SUBROUTINE INFORMATION: - // AUTHOR Matt Mitchell - // DATE WRITTEN Summer 2015 - // MODIFIED na - // RE-ENGINEERED na +{ + // SUBROUTINE INFORMATION: + // AUTHOR Matt Mitchell + // DATE WRITTEN Summer 2015 + // MODIFIED na + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // Creates static mesh used for model + // PURPOSE OF THIS SUBROUTINE: + // Creates static mesh used for model - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - // Surface layer parameters - Real64 surfaceLayerThickness = 2.0; - Real64 surfaceLayerCellThickness = 0.015; - int surfaceLayerNumCells = surfaceLayerThickness / surfaceLayerCellThickness; + // Surface layer parameters + Real64 surfaceLayerThickness = 2.0; + Real64 surfaceLayerCellThickness = 0.015; + int surfaceLayerNumCells = surfaceLayerThickness / surfaceLayerCellThickness; - // Center layer parameters - Real64 centerLayerExpansionCoeff = 1.10879; - int centerLayerNumCells = 80; + // Center layer parameters + Real64 centerLayerExpansionCoeff = 1.10879; + int centerLayerNumCells = 80; - // Deep layer parameters - Real64 deepLayerThickness = 0.2; - Real64 deepLayerCellThickness = surfaceLayerCellThickness; - int deepLayerNumCells = deepLayerThickness / deepLayerCellThickness; + // Deep layer parameters + Real64 deepLayerThickness = 0.2; + Real64 deepLayerCellThickness = surfaceLayerCellThickness; + int deepLayerNumCells = deepLayerThickness / deepLayerCellThickness; - // Other - Real64 currentCellDepth = 0.0; + // Other + Real64 currentCellDepth = 0.0; - totalNumCells = surfaceLayerNumCells + centerLayerNumCells + deepLayerNumCells; + totalNumCells = surfaceLayerNumCells + centerLayerNumCells + deepLayerNumCells; - // Allocate arrays - cellArray.allocate( totalNumCells ); - cellDepths.allocate( totalNumCells ); + // Allocate arrays + cellArray.allocate(totalNumCells); + cellDepths.allocate(totalNumCells); - for ( int i = 1; i <= totalNumCells; ++i ) { + for (int i = 1; i <= totalNumCells; ++i) { - // Reference to thisCell - auto & thisCell = cellArray( i ); + // Reference to thisCell + auto &thisCell = cellArray(i); - // Set the index - thisCell.index = i; + // Set the index + thisCell.index = i; - // Give thickness to the cells - if ( i <= surfaceLayerNumCells ) { - // Constant thickness mesh here - thisCell.thickness = surfaceLayerCellThickness; + // Give thickness to the cells + if (i <= surfaceLayerNumCells) { + // Constant thickness mesh here + thisCell.thickness = surfaceLayerCellThickness; - } else if ( i > surfaceLayerNumCells && i <= ( centerLayerNumCells + surfaceLayerNumCells ) ) { - // Geometric expansion/contraction here - int numCenterCell = i - surfaceLayerNumCells; + } else if (i > surfaceLayerNumCells && i <= (centerLayerNumCells + surfaceLayerNumCells)) { + // Geometric expansion/contraction here + int numCenterCell = i - surfaceLayerNumCells; - if ( numCenterCell <= ( centerLayerNumCells / 2 ) ) { - thisCell.thickness = surfaceLayerCellThickness * std::pow( centerLayerExpansionCoeff, numCenterCell ); - } else { + if (numCenterCell <= (centerLayerNumCells / 2)) { + thisCell.thickness = surfaceLayerCellThickness * std::pow(centerLayerExpansionCoeff, numCenterCell); + } else { thisCell.thickness = cellArray((surfaceLayerNumCells + (centerLayerNumCells / 2)) - (numCenterCell - (centerLayerNumCells / 2))).thickness; - } - } else if ( i > ( centerLayerNumCells + surfaceLayerNumCells ) ) { - // Constant thickness mesh here - thisCell.thickness = deepLayerCellThickness; - } + } + } else if (i > (centerLayerNumCells + surfaceLayerNumCells)) { + // Constant thickness mesh here + thisCell.thickness = deepLayerCellThickness; + } - // Set minimum z value - thisCell.minZValue = currentCellDepth; + // Set minimum z value + thisCell.minZValue = currentCellDepth; - // Populate depth array for use later when looking up temperatures - cellDepths( i ) = currentCellDepth + thisCell.thickness / 2.0 ; + // Populate depth array for use later when looking up temperatures + cellDepths(i) = currentCellDepth + thisCell.thickness / 2.0; - // Update local counter - currentCellDepth += thisCell.thickness; + // Update local counter + currentCellDepth += thisCell.thickness; - // Set maximum z value - thisCell.maxZValue = currentCellDepth; + // Set maximum z value + thisCell.maxZValue = currentCellDepth; - // Set base properties - thisCell.props.conductivity = baseConductivity; - thisCell.props.density = baseDensity; - thisCell.props.specificHeat = baseSpecificHeat; - thisCell.props.diffusivity = baseConductivity / ( baseDensity * baseSpecificHeat ); - } - } + // Set base properties + thisCell.props.conductivity = baseConductivity; + thisCell.props.density = baseDensity; + thisCell.props.specificHeat = baseSpecificHeat; + thisCell.props.diffusivity = baseConductivity / (baseDensity * baseSpecificHeat); + } +} - //****************************************************************************** +//****************************************************************************** void FiniteDiffGroundTempsModel::performSimulation() - { - // SUBROUTINE INFORMATION: - // AUTHOR Matt Mitchell - // DATE WRITTEN Summer 2015 - // MODIFIED na - // RE-ENGINEERED na +{ + // SUBROUTINE INFORMATION: + // AUTHOR Matt Mitchell + // DATE WRITTEN Summer 2015 + // MODIFIED na + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // Simulates model, repeating years, until steady-periodic temperatures are determined. + // PURPOSE OF THIS SUBROUTINE: + // Simulates model, repeating years, until steady-periodic temperatures are determined. - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - timeStepInSeconds = SecsInDay; - bool convergedFinal = false; + timeStepInSeconds = SecsInDay; + bool convergedFinal = false; - initDomain(); + initDomain(); - // Loop until converged - do { + // Loop until converged + do { - // loop over all days - for ( simDay = 1; simDay <= NumDaysInYear; ++simDay ) { + // loop over all days + for (simDay = 1; simDay <= NumDaysInYear; ++simDay) { - bool iterationConverged = false; + bool iterationConverged = false; - doStartOfTimeStepInits(); + doStartOfTimeStepInits(); - // Loop until iteration temperature converges - do { + // Loop until iteration temperature converges + do { - // For all cells - for ( int cell = 1; cell <= totalNumCells; ++cell ) { + // For all cells + for (int cell = 1; cell <= totalNumCells; ++cell) { - if ( cell == 1 ) { - updateSurfaceCellTemperature(); - } else if ( cell > 1 && cell < totalNumCells ) { - updateGeneralDomainCellTemperature( cell ); - } else if ( cell == totalNumCells ) { - updateBottomCellTemperature(); - } - } + if (cell == 1) { + updateSurfaceCellTemperature(); + } else if (cell > 1 && cell < totalNumCells) { + updateGeneralDomainCellTemperature(cell); + } else if (cell == totalNumCells) { + updateBottomCellTemperature(); + } + } - // Check iteration temperature convergence - iterationConverged = checkIterationTemperatureConvergence(); + // Check iteration temperature convergence + iterationConverged = checkIterationTemperatureConvergence(); - if ( !iterationConverged ) { - // Shift temperatures for next iteration - updateIterationTemperatures(); - } + if (!iterationConverged) { + // Shift temperatures for next iteration + updateIterationTemperatures(); + } - } while ( !iterationConverged ); + } while (!iterationConverged); - // Shift temperatures for next timestep - updateTimeStepTemperatures(); - } + // Shift temperatures for next timestep + updateTimeStepTemperatures(); + } - // Check final temperature convergence - convergedFinal = checkFinalTemperatureConvergence(); + // Check final temperature convergence + convergedFinal = checkFinalTemperatureConvergence(); - } while ( !convergedFinal ); - } + } while (!convergedFinal); +} - //****************************************************************************** +//****************************************************************************** void FiniteDiffGroundTempsModel::updateSurfaceCellTemperature() - { - // SUBROUTINE INFORMATION: - // AUTHOR Matt Mitchell - // DATE WRITTEN Summer 2015 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // Determines heat transfer to surface. Updates surface cell temperature. - - // FUNCTION LOCAL VARIABLE DECLARATIONS: - Real64 numerator( 0.0 ); - Real64 denominator( 0.0 ); - Real64 resistance( 0.0 ); - Real64 incidentHeatGain; - Real64 incidentSolar_MJhrmin; - Real64 evapotransHeatLoss_Wm2; - Real64 absorbedIncidentSolar_MJhrmin; - Real64 vaporPressureSaturated_kPa; - Real64 vaporPressureActual_kPa; - Real64 currAirTempK; - Real64 QRAD_NL; - Real64 netIncidentRadiation_MJhr; - Real64 netIncidentRadiation_Wm2; - Real64 slope_S; - Real64 CN; - Real64 G_hr; - Real64 Cd; - Real64 pressure; - Real64 psychrometricConstant; - Real64 evapotransFluidLoss_mmhr; - Real64 evapotransFluidLoss_mhr; - Real64 latentHeatVaporization; - Real64 evapotransHeatLoss_MJhrmin; - - Real64 const rho_water( 998.0 ); // [kg/m3] - Real64 const airSpecificHeat( 1003 ); // '[J/kg-K] - // evapotranspiration parameters - Real64 const absor_Corrected( 0.77 ); - Real64 const convert_Wm2_To_MJhrmin( 3600.0 / 1000000.0 ); - Real64 const convert_MJhrmin_To_Wm2( 1.0 / convert_Wm2_To_MJhrmin ); - - auto & thisCell = cellArray( 1 ); - auto & cellBelow_thisCell = cellArray( 2 ); - auto & cwd = weatherDataArray( simDay ); // "Current Weather Day" - - // Add effect from previous time step - numerator += thisCell.temperature_prevTimeStep; - ++denominator; - - // Conduction to lower cell +{ + // SUBROUTINE INFORMATION: + // AUTHOR Matt Mitchell + // DATE WRITTEN Summer 2015 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // Determines heat transfer to surface. Updates surface cell temperature. + + // FUNCTION LOCAL VARIABLE DECLARATIONS: + Real64 numerator(0.0); + Real64 denominator(0.0); + Real64 resistance(0.0); + Real64 incidentHeatGain; + Real64 incidentSolar_MJhrmin; + Real64 evapotransHeatLoss_Wm2; + Real64 absorbedIncidentSolar_MJhrmin; + Real64 vaporPressureSaturated_kPa; + Real64 vaporPressureActual_kPa; + Real64 currAirTempK; + Real64 QRAD_NL; + Real64 netIncidentRadiation_MJhr; + Real64 netIncidentRadiation_Wm2; + Real64 slope_S; + Real64 CN; + Real64 G_hr; + Real64 Cd; + Real64 pressure; + Real64 psychrometricConstant; + Real64 evapotransFluidLoss_mmhr; + Real64 evapotransFluidLoss_mhr; + Real64 latentHeatVaporization; + Real64 evapotransHeatLoss_MJhrmin; + + Real64 const rho_water(998.0); // [kg/m3] + Real64 const airSpecificHeat(1003); // '[J/kg-K] + // evapotranspiration parameters + Real64 const absor_Corrected(0.77); + Real64 const convert_Wm2_To_MJhrmin(3600.0 / 1000000.0); + Real64 const convert_MJhrmin_To_Wm2(1.0 / convert_Wm2_To_MJhrmin); + + auto &thisCell = cellArray(1); + auto &cellBelow_thisCell = cellArray(2); + auto &cwd = weatherDataArray(simDay); // "Current Weather Day" + + // Add effect from previous time step + numerator += thisCell.temperature_prevTimeStep; + ++denominator; + + // Conduction to lower cell resistance = (thisCell.thickness / 2.0) / (thisCell.props.conductivity * thisCell.conductionArea) + (cellBelow_thisCell.thickness / 2.0) / (cellBelow_thisCell.props.conductivity * cellBelow_thisCell.conductionArea); - numerator += ( thisCell.beta / resistance ) * cellBelow_thisCell.temperature; - denominator += ( thisCell.beta / resistance ); + numerator += (thisCell.beta / resistance) * cellBelow_thisCell.temperature; + denominator += (thisCell.beta / resistance); - // Convection to atmosphere - if ( cwd.windSpeed > 0.1 ) { - resistance = 208.0 / ( cwd.airDensity * airSpecificHeat * cwd.windSpeed * thisCell.conductionArea ); - } else { - // Future development should include additional natural convection effects here - } - numerator += ( thisCell.beta / resistance ) * cwd.dryBulbTemp; - denominator += ( thisCell.beta / resistance ); + // Convection to atmosphere + if (cwd.windSpeed > 0.1) { + resistance = 208.0 / (cwd.airDensity * airSpecificHeat * cwd.windSpeed * thisCell.conductionArea); + } else { + // Future development should include additional natural convection effects here + } + numerator += (thisCell.beta / resistance) * cwd.dryBulbTemp; + denominator += (thisCell.beta / resistance); - // Initialize, this variable is used for both evapotranspiration and non-ET cases, [W] - incidentHeatGain = 0.0; + // Initialize, this variable is used for both evapotranspiration and non-ET cases, [W] + incidentHeatGain = 0.0; - // For convenience convert to Kelvin once - currAirTempK = cwd.dryBulbTemp + 273.15; + // For convenience convert to Kelvin once + currAirTempK = cwd.dryBulbTemp + 273.15; - // Convert input solar radiation [w/m2] into units for ET model, [MJ/hr-min] - // Diffuse + Direct Beam Radation - incidentSolar_MJhrmin = cwd.horizontalRadiation * convert_Wm2_To_MJhrmin; + // Convert input solar radiation [w/m2] into units for ET model, [MJ/hr-min] + // Diffuse + Direct Beam Radation + incidentSolar_MJhrmin = cwd.horizontalRadiation * convert_Wm2_To_MJhrmin; - // Absorbed solar radiation, [MJ/hr-min] - absorbedIncidentSolar_MJhrmin = absor_Corrected * incidentSolar_MJhrmin; + // Absorbed solar radiation, [MJ/hr-min] + absorbedIncidentSolar_MJhrmin = absor_Corrected * incidentSolar_MJhrmin; - // Calculate saturated vapor pressure, [kPa] - vaporPressureSaturated_kPa = 0.6108 * std::exp( 17.27 * cwd.dryBulbTemp / ( cwd.dryBulbTemp + 237.3 ) ); + // Calculate saturated vapor pressure, [kPa] + vaporPressureSaturated_kPa = 0.6108 * std::exp(17.27 * cwd.dryBulbTemp / (cwd.dryBulbTemp + 237.3)); - // Calculate actual vapor pressure, [kPa] - vaporPressureActual_kPa = vaporPressureSaturated_kPa * cwd.relativeHumidity; + // Calculate actual vapor pressure, [kPa] + vaporPressureActual_kPa = vaporPressureSaturated_kPa * cwd.relativeHumidity; - // Calculate another Q term, [MJ/m2-hr] - QRAD_NL = 2.042E-10 * pow_4( currAirTempK ) * ( 0.34 - 0.14 * std::sqrt( vaporPressureActual_kPa ) ); + // Calculate another Q term, [MJ/m2-hr] + QRAD_NL = 2.042E-10 * pow_4(currAirTempK) * (0.34 - 0.14 * std::sqrt(vaporPressureActual_kPa)); - // Calculate another Q term, [MJ/hr] - netIncidentRadiation_MJhr = absorbedIncidentSolar_MJhrmin - QRAD_NL; + // Calculate another Q term, [MJ/hr] + netIncidentRadiation_MJhr = absorbedIncidentSolar_MJhrmin - QRAD_NL; - // constant - CN = 37.0; + // constant + CN = 37.0; - // Check whether there was sun - if ( netIncidentRadiation_MJhr < 0.0 ) { - G_hr = 0.5 * netIncidentRadiation_MJhr; - Cd = 0.96; - } else { - G_hr = 0.1 * netIncidentRadiation_MJhr; - Cd = 0.24; - } + // Check whether there was sun + if (netIncidentRadiation_MJhr < 0.0) { + G_hr = 0.5 * netIncidentRadiation_MJhr; + Cd = 0.96; + } else { + G_hr = 0.1 * netIncidentRadiation_MJhr; + Cd = 0.24; + } - slope_S = 2503.0 * std::exp( 17.27 * cwd.dryBulbTemp / ( cwd.dryBulbTemp + 237.3 ) ) / pow_2( cwd.dryBulbTemp + 237.3 ); - pressure = 98.0; - psychrometricConstant = 0.665e-3 * pressure; + slope_S = 2503.0 * std::exp(17.27 * cwd.dryBulbTemp / (cwd.dryBulbTemp + 237.3)) / pow_2(cwd.dryBulbTemp + 237.3); + pressure = 98.0; + psychrometricConstant = 0.665e-3 * pressure; - // Evapotranspiration constant, [mm/hr] + // Evapotranspiration constant, [mm/hr] evapotransFluidLoss_mmhr = (evapotransCoeff * slope_S * (netIncidentRadiation_MJhr - G_hr) + psychrometricConstant * (CN / currAirTempK) * cwd.windSpeed * (vaporPressureSaturated_kPa - vaporPressureActual_kPa)) / (slope_S + psychrometricConstant * (1 + Cd * cwd.windSpeed)); - // Convert units, [m/hr] - evapotransFluidLoss_mhr = evapotransFluidLoss_mmhr / 1000.0; + // Convert units, [m/hr] + evapotransFluidLoss_mhr = evapotransFluidLoss_mmhr / 1000.0; - // Calculate latent heat, [MJ/kg] - // Full formulation is cubic: L(T) = -0.0000614342 * T**3 + 0.00158927 * T**2 - 2.36418 * T + 2500.79[5] - // In: Cubic fit to Table 2.1,p.16, Textbook: R.R.Rogers & M.K. Yau, A Short Course in Cloud Physics, 3e,(1989), Pergamon press - // But a linear relation should suffice; - // note-for now using the previous time step temperature as an approximation to help ensure stability - latentHeatVaporization = 2.501 - 2.361e-3 * thisCell.temperature_prevTimeStep; + // Calculate latent heat, [MJ/kg] + // Full formulation is cubic: L(T) = -0.0000614342 * T**3 + 0.00158927 * T**2 - 2.36418 * T + 2500.79[5] + // In: Cubic fit to Table 2.1,p.16, Textbook: R.R.Rogers & M.K. Yau, A Short Course in Cloud Physics, 3e,(1989), Pergamon press + // But a linear relation should suffice; + // note-for now using the previous time step temperature as an approximation to help ensure stability + latentHeatVaporization = 2.501 - 2.361e-3 * thisCell.temperature_prevTimeStep; - // Calculate evapotranspiration heat loss, [MJ/m2-hr] - evapotransHeatLoss_MJhrmin = rho_water * evapotransFluidLoss_mhr * latentHeatVaporization; + // Calculate evapotranspiration heat loss, [MJ/m2-hr] + evapotransHeatLoss_MJhrmin = rho_water * evapotransFluidLoss_mhr * latentHeatVaporization; - // Convert net incident solar units, [W/m2] - netIncidentRadiation_Wm2 = netIncidentRadiation_MJhr * convert_MJhrmin_To_Wm2; + // Convert net incident solar units, [W/m2] + netIncidentRadiation_Wm2 = netIncidentRadiation_MJhr * convert_MJhrmin_To_Wm2; - // Convert evapotranspiration units, [W/m2] - evapotransHeatLoss_Wm2 = evapotransHeatLoss_MJhrmin * convert_MJhrmin_To_Wm2; + // Convert evapotranspiration units, [W/m2] + evapotransHeatLoss_Wm2 = evapotransHeatLoss_MJhrmin * convert_MJhrmin_To_Wm2; - // Calculate overall net heat ?gain? into the cell, [W] - incidentHeatGain = ( netIncidentRadiation_Wm2 - evapotransHeatLoss_Wm2 ) * thisCell.conductionArea; + // Calculate overall net heat ?gain? into the cell, [W] + incidentHeatGain = (netIncidentRadiation_Wm2 - evapotransHeatLoss_Wm2) * thisCell.conductionArea; - // Add any solar/evapotranspiration heat gain here - numerator += thisCell.beta * incidentHeatGain; + // Add any solar/evapotranspiration heat gain here + numerator += thisCell.beta * incidentHeatGain; - // Calculate the return temperature and leave - cellArray( 1 ).temperature = numerator / denominator; - } + // Calculate the return temperature and leave + cellArray(1).temperature = numerator / denominator; +} - //****************************************************************************** +//****************************************************************************** void FiniteDiffGroundTempsModel::updateGeneralDomainCellTemperature(int const cell) - { - // SUBROUTINE INFORMATION: - // AUTHOR Matt Mitchell - // DATE WRITTEN Summer 2015 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // Update cell temperature based on HT from cells above and below - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - Real64 numerator( 0.0 ); - Real64 denominator( 0.0 ); - Real64 resistance( 0.0 ); - - auto & thisCell = cellArray( cell ); - auto & cellAbove_thisCell = cellArray( cell - 1 ); - auto & cellBelow_thisCell = cellArray( cell + 1 ); - - // add effect from cell history - numerator += thisCell.temperature_prevTimeStep; - ++denominator; - - // Conduction resistance between this cell and above cell +{ + // SUBROUTINE INFORMATION: + // AUTHOR Matt Mitchell + // DATE WRITTEN Summer 2015 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // Update cell temperature based on HT from cells above and below + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + Real64 numerator(0.0); + Real64 denominator(0.0); + Real64 resistance(0.0); + + auto &thisCell = cellArray(cell); + auto &cellAbove_thisCell = cellArray(cell - 1); + auto &cellBelow_thisCell = cellArray(cell + 1); + + // add effect from cell history + numerator += thisCell.temperature_prevTimeStep; + ++denominator; + + // Conduction resistance between this cell and above cell resistance = ((thisCell.thickness / 2.0) / (thisCell.conductionArea * thisCell.props.conductivity)) + ((cellAbove_thisCell.thickness / 2.0) / (cellAbove_thisCell.conductionArea * cellAbove_thisCell.props.conductivity)); - numerator += ( thisCell.beta / resistance ) * cellAbove_thisCell.temperature; - denominator += thisCell.beta / resistance; + numerator += (thisCell.beta / resistance) * cellAbove_thisCell.temperature; + denominator += thisCell.beta / resistance; - // Conduction resitance between this cell and below cell + // Conduction resitance between this cell and below cell resistance = ((thisCell.thickness / 2.0) / (thisCell.conductionArea * thisCell.props.conductivity)) + ((cellBelow_thisCell.thickness / 2.0) / (cellBelow_thisCell.conductionArea * cellBelow_thisCell.props.conductivity)); - numerator += ( thisCell.beta / resistance ) * cellBelow_thisCell.temperature; - denominator += thisCell.beta / resistance; + numerator += (thisCell.beta / resistance) * cellBelow_thisCell.temperature; + denominator += thisCell.beta / resistance; - //'now that we have passed all directions, update the temperature - thisCell.temperature = numerator / denominator; - } + //'now that we have passed all directions, update the temperature + thisCell.temperature = numerator / denominator; +} - //****************************************************************************** +//****************************************************************************** void FiniteDiffGroundTempsModel::updateBottomCellTemperature() - { - // SUBROUTINE INFORMATION: - // AUTHOR Matt Mitchell - // DATE WRITTEN Summer 2015 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // Updates bottom cell temperature based on earth heat flux HT from cell above - - // REFERENCES: - // Fridleifsson, I.B., R. Bertani, E.Huenges, J.W. Lund, A. Ragnarsson, L. Rybach. 2008 - // 'The possible role and contribution of geothermal energy to the mitigation of climate change.' - // IPCC scoping meeting on renewable energy sources: 59-80. - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - Real64 numerator( 0.0 ); - Real64 denominator( 0.0 ); - Real64 resistance( 0.0 ); - Real64 HTBottom; - Real64 geothermalGradient( 0.025 ); // C/m - - auto & thisCell = cellArray( totalNumCells ); - auto & cellAbove_thisCell = cellArray( totalNumCells - 1 ); - - // Initialize - numerator += thisCell.temperature_prevTimeStep; - ++denominator; - - // Conduction resistance between this cell and above cell +{ + // SUBROUTINE INFORMATION: + // AUTHOR Matt Mitchell + // DATE WRITTEN Summer 2015 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // Updates bottom cell temperature based on earth heat flux HT from cell above + + // REFERENCES: + // Fridleifsson, I.B., R. Bertani, E.Huenges, J.W. Lund, A. Ragnarsson, L. Rybach. 2008 + // 'The possible role and contribution of geothermal energy to the mitigation of climate change.' + // IPCC scoping meeting on renewable energy sources: 59-80. + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + Real64 numerator(0.0); + Real64 denominator(0.0); + Real64 resistance(0.0); + Real64 HTBottom; + Real64 geothermalGradient(0.025); // C/m + + auto &thisCell = cellArray(totalNumCells); + auto &cellAbove_thisCell = cellArray(totalNumCells - 1); + + // Initialize + numerator += thisCell.temperature_prevTimeStep; + ++denominator; + + // Conduction resistance between this cell and above cell resistance = ((thisCell.thickness / 2.0) / (thisCell.conductionArea * thisCell.props.conductivity)) + ((cellAbove_thisCell.thickness / 2.0) / (cellAbove_thisCell.conductionArea * cellAbove_thisCell.props.conductivity)); - numerator += ( thisCell.beta / resistance ) * cellAbove_thisCell.temperature; - denominator += thisCell.beta / resistance; + numerator += (thisCell.beta / resistance) * cellAbove_thisCell.temperature; + denominator += thisCell.beta / resistance; - // Geothermal gradient heat transfer - HTBottom = geothermalGradient * thisCell.props.conductivity * thisCell.conductionArea; + // Geothermal gradient heat transfer + HTBottom = geothermalGradient * thisCell.props.conductivity * thisCell.conductionArea; - numerator += thisCell.beta * HTBottom; + numerator += thisCell.beta * HTBottom; - cellArray( totalNumCells ).temperature = numerator / denominator; - } + cellArray(totalNumCells).temperature = numerator / denominator; +} - //****************************************************************************** +//****************************************************************************** bool FiniteDiffGroundTempsModel::checkFinalTemperatureConvergence() - { - // SUBROUTINE INFORMATION: - // AUTHOR Matt Mitchell - // DATE WRITTEN Summer 2015 - // MODIFIED na - // RE-ENGINEERED na +{ + // SUBROUTINE INFORMATION: + // AUTHOR Matt Mitchell + // DATE WRITTEN Summer 2015 + // MODIFIED na + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // Checks final temperature convergence + // PURPOSE OF THIS SUBROUTINE: + // Checks final temperature convergence - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - bool converged = true; + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + bool converged = true; - if ( numIterYears == maxYearsToIterate ) return converged; + if (numIterYears == maxYearsToIterate) return converged; - for ( int cell = 1; cell <= totalNumCells; ++ cell ) { + for (int cell = 1; cell <= totalNumCells; ++cell) { - auto & thisCell = cellArray( cell ); + auto &thisCell = cellArray(cell); - if ( std::abs( thisCell.temperature - thisCell.temperature_finalConvergence ) >= finalTempConvergenceCriteria ) { - converged = false; - } + if (std::abs(thisCell.temperature - thisCell.temperature_finalConvergence) >= finalTempConvergenceCriteria) { + converged = false; + } - thisCell.temperature_finalConvergence = thisCell.temperature; - } + thisCell.temperature_finalConvergence = thisCell.temperature; + } - ++ numIterYears; + ++numIterYears; - return converged; - } + return converged; +} - //****************************************************************************** +//****************************************************************************** bool FiniteDiffGroundTempsModel::checkIterationTemperatureConvergence() - { - // SUBROUTINE INFORMATION: - // AUTHOR Matt Mitchell - // DATE WRITTEN Summer 2015 - // MODIFIED na - // RE-ENGINEERED na +{ + // SUBROUTINE INFORMATION: + // AUTHOR Matt Mitchell + // DATE WRITTEN Summer 2015 + // MODIFIED na + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // Checks iteration temperature convergence + // PURPOSE OF THIS SUBROUTINE: + // Checks iteration temperature convergence - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - bool converged = true; + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + bool converged = true; - for ( int cell = 1; cell <= totalNumCells; ++ cell ) { + for (int cell = 1; cell <= totalNumCells; ++cell) { - if ( std::abs( cellArray( cell ).temperature - cellArray( cell ).temperature_prevIteration ) >= iterationTempConvergenceCriteria ) { - converged = false; - break; - } - } + if (std::abs(cellArray(cell).temperature - cellArray(cell).temperature_prevIteration) >= iterationTempConvergenceCriteria) { + converged = false; + break; + } + } - return converged; - } + return converged; +} - //****************************************************************************** +//****************************************************************************** void FiniteDiffGroundTempsModel::initDomain() - { - // SUBROUTINE INFORMATION: - // AUTHOR Matt Mitchell - // DATE WRITTEN Summer 2015 - // MODIFIED na - // RE-ENGINEERED na +{ + // SUBROUTINE INFORMATION: + // AUTHOR Matt Mitchell + // DATE WRITTEN Summer 2015 + // MODIFIED na + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // Initalizes model using Kusuda-Achenbach model. - // Average ground temp initialized to average annual air temperature + // PURPOSE OF THIS SUBROUTINE: + // Initalizes model using Kusuda-Achenbach model. + // Average ground temp initialized to average annual air temperature - // USE STATEMENTS: - using DataGlobals::SecsInDay; - using namespace GroundTemperatureManager; + // USE STATEMENTS: + using DataGlobals::SecsInDay; + using namespace GroundTemperatureManager; - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - // Temporary KA model for initialization - std::unique_ptr< KusudaGroundTempsModel > tempModel( new KusudaGroundTempsModel() ); + // Temporary KA model for initialization + std::unique_ptr tempModel(new KusudaGroundTempsModel()); - tempModel->objectName = "KAModelForFDModel"; - tempModel->objectType = objectType_KusudaGroundTemp; - tempModel->aveGroundTemp = annualAveAirTemp; + tempModel->objectName = "KAModelForFDModel"; + tempModel->objectType = objectType_KusudaGroundTemp; + tempModel->aveGroundTemp = annualAveAirTemp; tempModel->aveGroundTempAmplitude = (maxDailyAirTemp - minDailyAirTemp) / 4.0; // Rough estimate here. Ground temps will not swing as far as the air temp. - tempModel->phaseShiftInSecs = dayOfMinDailyAirTemp * SecsInDay; - tempModel->groundThermalDiffisivity = baseConductivity / ( baseDensity * baseSpecificHeat ); + tempModel->phaseShiftInSecs = dayOfMinDailyAirTemp * SecsInDay; + tempModel->groundThermalDiffisivity = baseConductivity / (baseDensity * baseSpecificHeat); - // Intialize temperatures and volume - for ( int cell = 1; cell <= totalNumCells; ++cell ) { - auto & thisCell = cellArray( cell ); + // Intialize temperatures and volume + for (int cell = 1; cell <= totalNumCells; ++cell) { + auto &thisCell = cellArray(cell); - Real64 depth = ( thisCell.maxZValue + thisCell.minZValue ) / 2.0; + Real64 depth = (thisCell.maxZValue + thisCell.minZValue) / 2.0; - // Initialize temperatures - if ( tempModel ) { - thisCell.temperature = tempModel->getGroundTempAtTimeInSeconds( depth, 0.0 ); // Initialized at first day of year - } - thisCell.temperature_finalConvergence = thisCell.temperature; - thisCell.temperature_prevIteration = thisCell.temperature; - thisCell.temperature_prevTimeStep = thisCell.temperature; + // Initialize temperatures + if (tempModel) { + thisCell.temperature = tempModel->getGroundTempAtTimeInSeconds(depth, 0.0); // Initialized at first day of year + } + thisCell.temperature_finalConvergence = thisCell.temperature; + thisCell.temperature_prevIteration = thisCell.temperature; + thisCell.temperature_prevTimeStep = thisCell.temperature; - // Set cell volume - thisCell.volume = thisCell.thickness * thisCell.conductionArea; - } + // Set cell volume + thisCell.volume = thisCell.thickness * thisCell.conductionArea; + } - // Initialize freezing calculation variables - evaluateSoilRhoCp( _, true ); + // Initialize freezing calculation variables + evaluateSoilRhoCp(_, true); - // Initialize the groundTemps array - groundTemps.dimension( { 1, NumDaysInYear }, { 1, totalNumCells }, 0.0 ); + // Initialize the groundTemps array + groundTemps.dimension({1, NumDaysInYear}, {1, totalNumCells}, 0.0); - tempModel.reset(); - } + tempModel.reset(); +} - //****************************************************************************** +//****************************************************************************** void FiniteDiffGroundTempsModel::updateIterationTemperatures() - { - // SUBROUTINE INFORMATION: - // AUTHOR Matt Mitchell - // DATE WRITTEN Summer 2015 - // MODIFIED na - // RE-ENGINEERED na +{ + // SUBROUTINE INFORMATION: + // AUTHOR Matt Mitchell + // DATE WRITTEN Summer 2015 + // MODIFIED na + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // Updates iteration temperatures for convergence checks + // PURPOSE OF THIS SUBROUTINE: + // Updates iteration temperatures for convergence checks - for ( int cell = 1; cell <= totalNumCells; ++cell ) { - cellArray( cell ).temperature_prevIteration = cellArray( cell ).temperature; - } - } + for (int cell = 1; cell <= totalNumCells; ++cell) { + cellArray(cell).temperature_prevIteration = cellArray(cell).temperature; + } +} - //****************************************************************************** +//****************************************************************************** void FiniteDiffGroundTempsModel::updateTimeStepTemperatures() - { - // SUBROUTINE INFORMATION: - // AUTHOR Matt Mitchell - // DATE WRITTEN Summer 2015 - // MODIFIED na - // RE-ENGINEERED na +{ + // SUBROUTINE INFORMATION: + // AUTHOR Matt Mitchell + // DATE WRITTEN Summer 2015 + // MODIFIED na + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // Updates timestep temperatures for convergence checks. + // PURPOSE OF THIS SUBROUTINE: + // Updates timestep temperatures for convergence checks. - for ( int cell = 1; cell <= totalNumCells; ++cell ) { + for (int cell = 1; cell <= totalNumCells; ++cell) { - auto & thisCell = cellArray( cell ); + auto &thisCell = cellArray(cell); - thisCell.temperature_prevTimeStep = thisCell.temperature; + thisCell.temperature_prevTimeStep = thisCell.temperature; - // Log temps for later use - groundTemps( simDay, cell ) = thisCell.temperature; - } - } + // Log temps for later use + groundTemps(simDay, cell) = thisCell.temperature; + } +} - //****************************************************************************** +//****************************************************************************** void FiniteDiffGroundTempsModel::doStartOfTimeStepInits() - { - // SUBROUTINE INFORMATION: - // AUTHOR Matt Mitchell - // DATE WRITTEN Summer 2015 - // MODIFIED na - // RE-ENGINEERED na +{ + // SUBROUTINE INFORMATION: + // AUTHOR Matt Mitchell + // DATE WRITTEN Summer 2015 + // MODIFIED na + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // Updates cell properties for each timestep + // PURPOSE OF THIS SUBROUTINE: + // Updates cell properties for each timestep - for ( int cell = 1; cell <= totalNumCells; ++cell ) { + for (int cell = 1; cell <= totalNumCells; ++cell) { - auto & thisCell = cellArray( cell ); + auto &thisCell = cellArray(cell); - evaluateSoilRhoCp( cell ); + evaluateSoilRhoCp(cell); - thisCell.beta = ( timeStepInSeconds / ( thisCell.props.rhoCp * thisCell.volume ) ); - } - } + thisCell.beta = (timeStepInSeconds / (thisCell.props.rhoCp * thisCell.volume)); + } +} - //****************************************************************************** +//****************************************************************************** Real64 FiniteDiffGroundTempsModel::interpolate(Real64 const x, Real64 const x_hi, Real64 const x_low, Real64 const y_hi, Real64 const y_low) - { - return ( x - x_low ) / ( x_hi - x_low ) * ( y_hi - y_low ) + y_low; - } +{ + return (x - x_low) / (x_hi - x_low) * (y_hi - y_low) + y_low; +} - //****************************************************************************** +//****************************************************************************** Real64 FiniteDiffGroundTempsModel::getGroundTemp() - { - - // SUBROUTINE INFORMATION: - // AUTHOR Matt Mitchell - // DATE WRITTEN Summer 2015 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // Interpolates between days and depths to find correct ground temperature - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - // Interpolation variables - int i0; // First day - int i1; // Next day - int j0; // Cell index with depth less than y-depth - int j1; // Next cell index (with depth greater than y-depth - Real64 T_i0_j0; // Temp at int( x-day ); cell lower_bound( y-depth ) - Real64 T_i1_j0; // Temp at int( x-day ) + 1; cell lower_bound( y-depth ) - Real64 T_i0_j1; // Temp at int( x-day ); cell lower_bound( y-depth ) + 1 - Real64 T_i1_j1; // Temp at int( x-day ) + 1; cell lower_bound( y-depth ) + 1 - Real64 T_ix_j0; // Temp at x-day; cell lower_bound( y-depth ) - Real64 T_ix_j1; // Temp at x-day; cell lower_bound( y-depth ) + 1 - Real64 T_ix_jy; // Final Temperature--Temp at x-day; y-depth - Real64 dayFrac; // Fraction of day - - if ( depth < 0.0 ) { - depth = 0.0; - } - - // Get index of nearest cell with depth less than depth - auto it = std::lower_bound( cellDepths.begin(), cellDepths.end(), depth ); - j0 = std::distance( cellDepths.begin(), it ); - - // Compensate for 1-based array - ++j0; - - // Fraction of day - dayFrac = simTimeInDays - int( simTimeInDays ); - - if ( j0 < totalNumCells - 1 ) { - // All depths within domain - j1 = j0 + 1; - - if ( simTimeInDays <= 1 || simTimeInDays >= NumDaysInYear) { - // First day of year, last day of year, and leap day - // Interpolate between first and last day - i0 = NumDaysInYear; - i1 = 1; - - // Lookup ground temps - T_i0_j0 = groundTemps( i0, j0 ); - T_i0_j1 = groundTemps( i0, j1 ); - T_i1_j0 = groundTemps( i1, j0 ); - T_i1_j1 = groundTemps( i1, j1 ); - - // Interpolate between days holding depth constant - T_ix_j0 = interpolate( dayFrac, 1, 0, T_i1_j0, T_i0_j0 ); - T_ix_j1 = interpolate( dayFrac, 1, 0, T_i1_j1, T_i0_j1 ); - - // Interpolate to correct depth now that we're at the right time - T_ix_jy = interpolate( depth, cellDepths( j1 ), cellDepths( j0 ), T_ix_j1, T_ix_j0 ); - - } else { - // All other days - i0 = int( simTimeInDays ); - i1 = i0 + 1; - - // Lookup ground temps - T_i0_j0 = groundTemps( i0, j0 ); - T_i0_j1 = groundTemps( i0, j1 ); - T_i1_j0 = groundTemps( i1, j0 ); - T_i1_j1 = groundTemps( i1, j1 ); - - // Interpolate between days holding depth constant - T_ix_j0 = interpolate( dayFrac, 1, 0, T_i1_j0, T_i0_j0 ); - T_ix_j1 = interpolate( dayFrac, 1, 0, T_i1_j1, T_i0_j1 ); - - // Interpolate to correct depth now that we're at the right time - T_ix_jy = interpolate( depth, cellDepths( j1 ), cellDepths( j0 ), T_ix_j1, T_ix_j0 ); - } - - } else { - // Requesting a temperature deeper than domain. Pass deepest point in domain. - j0 = totalNumCells; - j1 = j0; - - if ( simTimeInDays <= 1 || simTimeInDays >= NumDaysInYear) { - // First day of year, last day of year, and leap day - // Interpolate between first and last day - i0 = NumDaysInYear; - i1 = 1; - - // Lookup ground temps - T_i0_j1 = groundTemps( i0, j1 ); - T_i1_j1 = groundTemps( i1, j1 ); - - // Interpolate between days holding depth constant - T_ix_jy = interpolate( dayFrac, 1, 0, T_i1_j1, T_i0_j1 ); - - } else { - // All other days - i0 = int( simTimeInDays ); - i1 = i0 + 1; - - // Lookup ground temps - T_i0_j1 = groundTemps( i0, j1 ); - T_i1_j1 = groundTemps( i1, j1 ); - - // Interpolate between days holding depth constant - T_ix_jy = interpolate( dayFrac, 1, 0, T_i1_j1, T_i0_j1 ); - } - } - - return T_ix_jy; - } - - //****************************************************************************** +{ + + // SUBROUTINE INFORMATION: + // AUTHOR Matt Mitchell + // DATE WRITTEN Summer 2015 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // Interpolates between days and depths to find correct ground temperature + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + // Interpolation variables + int i0; // First day + int i1; // Next day + int j0; // Cell index with depth less than y-depth + int j1; // Next cell index (with depth greater than y-depth + Real64 T_i0_j0; // Temp at int( x-day ); cell lower_bound( y-depth ) + Real64 T_i1_j0; // Temp at int( x-day ) + 1; cell lower_bound( y-depth ) + Real64 T_i0_j1; // Temp at int( x-day ); cell lower_bound( y-depth ) + 1 + Real64 T_i1_j1; // Temp at int( x-day ) + 1; cell lower_bound( y-depth ) + 1 + Real64 T_ix_j0; // Temp at x-day; cell lower_bound( y-depth ) + Real64 T_ix_j1; // Temp at x-day; cell lower_bound( y-depth ) + 1 + Real64 T_ix_jy; // Final Temperature--Temp at x-day; y-depth + Real64 dayFrac; // Fraction of day + + if (depth < 0.0) { + depth = 0.0; + } + + // Get index of nearest cell with depth less than depth + auto it = std::lower_bound(cellDepths.begin(), cellDepths.end(), depth); + j0 = std::distance(cellDepths.begin(), it); + + // Compensate for 1-based array + ++j0; + + // Fraction of day + dayFrac = simTimeInDays - int(simTimeInDays); + + if (j0 < totalNumCells - 1) { + // All depths within domain + j1 = j0 + 1; + + if (simTimeInDays <= 1 || simTimeInDays >= NumDaysInYear) { + // First day of year, last day of year, and leap day + // Interpolate between first and last day + i0 = NumDaysInYear; + i1 = 1; + + // Lookup ground temps + T_i0_j0 = groundTemps(i0, j0); + T_i0_j1 = groundTemps(i0, j1); + T_i1_j0 = groundTemps(i1, j0); + T_i1_j1 = groundTemps(i1, j1); + + // Interpolate between days holding depth constant + T_ix_j0 = interpolate(dayFrac, 1, 0, T_i1_j0, T_i0_j0); + T_ix_j1 = interpolate(dayFrac, 1, 0, T_i1_j1, T_i0_j1); + + // Interpolate to correct depth now that we're at the right time + T_ix_jy = interpolate(depth, cellDepths(j1), cellDepths(j0), T_ix_j1, T_ix_j0); + + } else { + // All other days + i0 = int(simTimeInDays); + i1 = i0 + 1; + + // Lookup ground temps + T_i0_j0 = groundTemps(i0, j0); + T_i0_j1 = groundTemps(i0, j1); + T_i1_j0 = groundTemps(i1, j0); + T_i1_j1 = groundTemps(i1, j1); + + // Interpolate between days holding depth constant + T_ix_j0 = interpolate(dayFrac, 1, 0, T_i1_j0, T_i0_j0); + T_ix_j1 = interpolate(dayFrac, 1, 0, T_i1_j1, T_i0_j1); + + // Interpolate to correct depth now that we're at the right time + T_ix_jy = interpolate(depth, cellDepths(j1), cellDepths(j0), T_ix_j1, T_ix_j0); + } + + } else { + // Requesting a temperature deeper than domain. Pass deepest point in domain. + j0 = totalNumCells; + j1 = j0; + + if (simTimeInDays <= 1 || simTimeInDays >= NumDaysInYear) { + // First day of year, last day of year, and leap day + // Interpolate between first and last day + i0 = NumDaysInYear; + i1 = 1; + + // Lookup ground temps + T_i0_j1 = groundTemps(i0, j1); + T_i1_j1 = groundTemps(i1, j1); + + // Interpolate between days holding depth constant + T_ix_jy = interpolate(dayFrac, 1, 0, T_i1_j1, T_i0_j1); + + } else { + // All other days + i0 = int(simTimeInDays); + i1 = i0 + 1; + + // Lookup ground temps + T_i0_j1 = groundTemps(i0, j1); + T_i1_j1 = groundTemps(i1, j1); + + // Interpolate between days holding depth constant + T_ix_jy = interpolate(dayFrac, 1, 0, T_i1_j1, T_i0_j1); + } + } + + return T_ix_jy; +} + +//****************************************************************************** Real64 FiniteDiffGroundTempsModel::getGroundTempAtTimeInSeconds(Real64 const _depth, Real64 const seconds) - { - // SUBROUTINE INFORMATION: - // AUTHOR Matt Mitchell - // DATE WRITTEN Summer 2015 - // MODIFIED na - // RE-ENGINEERED na +{ + // SUBROUTINE INFORMATION: + // AUTHOR Matt Mitchell + // DATE WRITTEN Summer 2015 + // MODIFIED na + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // Retrieves ground tempeature when input time is in seconds + // PURPOSE OF THIS SUBROUTINE: + // Retrieves ground tempeature when input time is in seconds - //Using - using DataGlobals::SecsInDay; + // Using + using DataGlobals::SecsInDay; - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - depth = _depth; + depth = _depth; - simTimeInDays = seconds / SecsInDay; + simTimeInDays = seconds / SecsInDay; - if ( simTimeInDays > NumDaysInYear ) { - simTimeInDays = remainder( simTimeInDays, NumDaysInYear ); - } + if (simTimeInDays > NumDaysInYear) { + simTimeInDays = remainder(simTimeInDays, NumDaysInYear); + } - return getGroundTemp(); - } + return getGroundTemp(); +} - //****************************************************************************** +//****************************************************************************** Real64 FiniteDiffGroundTempsModel::getGroundTempAtTimeInMonths(Real64 const _depth, int const month) - { - // SUBROUTINE INFORMATION: - // AUTHOR Matt Mitchell - // DATE WRITTEN Summer 2015 - // MODIFIED na - // RE-ENGINEERED na +{ + // SUBROUTINE INFORMATION: + // AUTHOR Matt Mitchell + // DATE WRITTEN Summer 2015 + // MODIFIED na + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // Returns ground temperature when input time is in months + // PURPOSE OF THIS SUBROUTINE: + // Returns ground temperature when input time is in months - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - Real64 const aveDaysInMonth = NumDaysInYear / 12; + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + Real64 const aveDaysInMonth = NumDaysInYear / 12; - depth = _depth; + depth = _depth; - // Convert months to days. Puts time in middle of specified month - simTimeInDays = aveDaysInMonth * ( ( month - 1 ) + 0.5 ); + // Convert months to days. Puts time in middle of specified month + simTimeInDays = aveDaysInMonth * ((month - 1) + 0.5); - if ( simTimeInDays > NumDaysInYear ) { - simTimeInDays = remainder( simTimeInDays, NumDaysInYear ); - } + if (simTimeInDays > NumDaysInYear) { + simTimeInDays = remainder(simTimeInDays, NumDaysInYear); + } - // Get and return ground temperature - return getGroundTemp(); - } + // Get and return ground temperature + return getGroundTemp(); +} - //****************************************************************************** +//****************************************************************************** void FiniteDiffGroundTempsModel::evaluateSoilRhoCp(Optional cell, Optional_bool_const InitOnly) - { - // SUBROUTINE INFORMATION: - // AUTHOR Edwin Lee - // DATE WRITTEN Summer 2011 - // MODIFIED Matt Mitchell, Summer 2015 - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // Evaluates the soil properties - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - static Real64 Theta_ice; - static Real64 Theta_liq; - static Real64 Theta_sat; - static Real64 rho_ice; - static Real64 rho_liq; - static Real64 rhoCp_soil_liq_1; - static Real64 CP_liq; - static Real64 CP_ice; - static Real64 Lat_fus; - static Real64 Cp_transient; - static Real64 rhoCP_soil_liq; - static Real64 rhoCP_soil_transient; - static Real64 rhoCP_soil_ice; - // other variables - Real64 frzAllIce; - Real64 frzIceTrans; - Real64 frzLiqTrans; - Real64 frzAllLiq; - Real64 rhoCP_soil; - - // These vary by domain now, so we must be careful to retrieve them every time - Theta_liq = waterContent; - Theta_sat = saturatedWaterContent; - - // Assumption - Theta_ice = Theta_liq; - - if ( present( InitOnly ) ) { - //'Cp (freezing) calculations - rho_ice = 917.0; //'Kg / m3 - rho_liq = 1000.0; //'kg / m3 - rhoCp_soil_liq_1 = 1225000.0 / ( 1.0 - Theta_sat ); //'J/m3K - //'from( " An improved model for predicting soil thermal conductivity from water content at room temperature, Fig 4" ) - CP_liq = 4180.0; //'J / KgK - CP_ice = 2066.0; //'J / KgK - Lat_fus = 334000.0; //'J / Kg - Cp_transient = Lat_fus / 0.4 + ( 0.5 * CP_ice - ( CP_liq + CP_ice ) / 2.0 * 0.1 ) / 0.4; - //'from( " Numerical and experimental investigation of melting and freezing processes in phase change material storage" ) - rhoCP_soil_liq = rhoCp_soil_liq_1 * ( 1.0 - Theta_sat ) + rho_liq * CP_liq * Theta_liq; - rhoCP_soil_transient = rhoCp_soil_liq_1 * ( 1.0 - Theta_sat ) + ( ( rho_liq + rho_ice ) / 2.0 ) * Cp_transient * Theta_ice; - rhoCP_soil_ice = rhoCp_soil_liq_1 * ( 1.0 - Theta_sat ) + rho_ice * CP_ice * Theta_ice; //'!J / m3K - return; - } - - auto & thisCell = cellArray( cell ); - - //'set some temperatures here for generalization -- these could be set in the input file - frzAllIce = -0.5; - frzIceTrans = -0.4; - frzLiqTrans = -0.1; - frzAllLiq = 0.0; - - //'calculate this cell's new Cp value based on the cell temperature - if ( thisCell.temperature >= frzAllLiq ) { - rhoCP_soil = rhoCp_soil_liq_1; - } else if ( thisCell.temperature <= frzAllIce ) { - rhoCP_soil = rhoCP_soil_ice; - } else if ( ( thisCell.temperature < frzAllLiq ) && ( thisCell.temperature > frzLiqTrans ) ) { - rhoCP_soil = rhoCp_soil_liq_1 + ( rhoCP_soil_transient - rhoCP_soil_liq ) / ( frzAllLiq - frzLiqTrans ) * ( frzAllLiq - thisCell.temperature ); - } else if ( ( thisCell.temperature <= frzLiqTrans ) && ( thisCell.temperature >= frzIceTrans ) ) { - rhoCP_soil = rhoCP_soil_transient; - } else if ( ( thisCell.temperature < frzIceTrans ) && ( thisCell.temperature > frzAllIce ) ) { - rhoCP_soil = rhoCP_soil_ice + ( rhoCP_soil_transient - rhoCP_soil_ice ) / ( frzIceTrans - frzAllIce ) * ( thisCell.temperature - frzAllIce ); - } else { - assert( false ); // Shouldn't get here - } - - thisCell.props.rhoCp = baseDensity * baseSpecificHeat; //rhoCP_soil; - - thisCell.props.specificHeat = thisCell.props.rhoCp / thisCell.props.density; - } - - //****************************************************************************** +{ + // SUBROUTINE INFORMATION: + // AUTHOR Edwin Lee + // DATE WRITTEN Summer 2011 + // MODIFIED Matt Mitchell, Summer 2015 + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // Evaluates the soil properties + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + static Real64 Theta_ice; + static Real64 Theta_liq; + static Real64 Theta_sat; + static Real64 rho_ice; + static Real64 rho_liq; + static Real64 rhoCp_soil_liq_1; + static Real64 CP_liq; + static Real64 CP_ice; + static Real64 Lat_fus; + static Real64 Cp_transient; + static Real64 rhoCP_soil_liq; + static Real64 rhoCP_soil_transient; + static Real64 rhoCP_soil_ice; + // other variables + Real64 frzAllIce; + Real64 frzIceTrans; + Real64 frzLiqTrans; + Real64 frzAllLiq; + Real64 rhoCP_soil; + + // These vary by domain now, so we must be careful to retrieve them every time + Theta_liq = waterContent; + Theta_sat = saturatedWaterContent; + + // Assumption + Theta_ice = Theta_liq; + + if (present(InitOnly)) { + //'Cp (freezing) calculations + rho_ice = 917.0; //'Kg / m3 + rho_liq = 1000.0; //'kg / m3 + rhoCp_soil_liq_1 = 1225000.0 / (1.0 - Theta_sat); //'J/m3K + //'from( " An improved model for predicting soil thermal conductivity from water content at room temperature, Fig 4" ) + CP_liq = 4180.0; //'J / KgK + CP_ice = 2066.0; //'J / KgK + Lat_fus = 334000.0; //'J / Kg + Cp_transient = Lat_fus / 0.4 + (0.5 * CP_ice - (CP_liq + CP_ice) / 2.0 * 0.1) / 0.4; + //'from( " Numerical and experimental investigation of melting and freezing processes in phase change material storage" ) + rhoCP_soil_liq = rhoCp_soil_liq_1 * (1.0 - Theta_sat) + rho_liq * CP_liq * Theta_liq; + rhoCP_soil_transient = rhoCp_soil_liq_1 * (1.0 - Theta_sat) + ((rho_liq + rho_ice) / 2.0) * Cp_transient * Theta_ice; + rhoCP_soil_ice = rhoCp_soil_liq_1 * (1.0 - Theta_sat) + rho_ice * CP_ice * Theta_ice; //'!J / m3K + return; + } + + auto &thisCell = cellArray(cell); + + //'set some temperatures here for generalization -- these could be set in the input file + frzAllIce = -0.5; + frzIceTrans = -0.4; + frzLiqTrans = -0.1; + frzAllLiq = 0.0; + + //'calculate this cell's new Cp value based on the cell temperature + if (thisCell.temperature >= frzAllLiq) { + rhoCP_soil = rhoCp_soil_liq_1; + } else if (thisCell.temperature <= frzAllIce) { + rhoCP_soil = rhoCP_soil_ice; + } else if ((thisCell.temperature < frzAllLiq) && (thisCell.temperature > frzLiqTrans)) { + rhoCP_soil = rhoCp_soil_liq_1 + (rhoCP_soil_transient - rhoCP_soil_liq) / (frzAllLiq - frzLiqTrans) * (frzAllLiq - thisCell.temperature); + } else if ((thisCell.temperature <= frzLiqTrans) && (thisCell.temperature >= frzIceTrans)) { + rhoCP_soil = rhoCP_soil_transient; + } else if ((thisCell.temperature < frzIceTrans) && (thisCell.temperature > frzAllIce)) { + rhoCP_soil = rhoCP_soil_ice + (rhoCP_soil_transient - rhoCP_soil_ice) / (frzIceTrans - frzAllIce) * (thisCell.temperature - frzAllIce); + } else { + assert(false); // Shouldn't get here + } + + thisCell.props.rhoCp = baseDensity * baseSpecificHeat; // rhoCP_soil; + + thisCell.props.specificHeat = thisCell.props.rhoCp / thisCell.props.density; +} + +//****************************************************************************** } // namespace EnergyPlus diff --git a/src/EnergyPlus/HVACUnitarySystem.cc b/src/EnergyPlus/HVACUnitarySystem.cc index 68c8f404b69..0b729b287be 100644 --- a/src/EnergyPlus/HVACUnitarySystem.cc +++ b/src/EnergyPlus/HVACUnitarySystem.cc @@ -4542,9 +4542,9 @@ namespace HVACUnitarySystem { // **** How to get this info **** // UnitarySystem( UnitarySysNum ).DesignHeatingCapacity = GetWtoAHPCoilCapacity( - //CoolingCoilType, CoolingCoilName, errFlag ); if ( errFlag ) { + // CoolingCoilType, CoolingCoilName, errFlag ); if ( errFlag ) { // ShowContinueError( "Occurs in " + CurrentModuleObject + " = " + UnitarySystem( - //UnitarySysNum + // UnitarySysNum //).Name //); ErrorsFound = true; // errFlag = false; diff --git a/src/EnergyPlus/HeatBalanceSurfaceManager.cc b/src/EnergyPlus/HeatBalanceSurfaceManager.cc index 315dd44db60..8fc4bc4d224 100644 --- a/src/EnergyPlus/HeatBalanceSurfaceManager.cc +++ b/src/EnergyPlus/HeatBalanceSurfaceManager.cc @@ -4717,10 +4717,11 @@ namespace HeatBalanceSurfaceManager { QSteamBaseboardSurf(SurfNum) + QElecBaseboardSurf(SurfNum); QdotRadHVACInRep(SurfNum) = QdotRadHVACInRepPerArea(SurfNum) * Surface(SurfNum).Area; // Tuned Replaced by one line form below for speed - // QdotRadHVACInRepPerArea( SurfNum ) = QHTRadSysSurf( SurfNum ) + QHWBaseboardSurf( SurfNum ) + QSteamBaseboardSurf( SurfNum + // QdotRadHVACInRepPerArea( SurfNum ) = QHTRadSysSurf( SurfNum ) + QHWBaseboardSurf( SurfNum ) + QSteamBaseboardSurf( + //SurfNum //) //+ QElecBaseboardSurf( SurfNum ); QdotRadHVACInRep( SurfNum ) = QdotRadHVACInRepPerArea( SurfNum ) * - //surfaceArea; + // surfaceArea; QdotRadHVACInRep(SurfNum) = (QdotRadHVACInRepPerArea(SurfNum) = QHTRadSysSurf(SurfNum) + QCoolingPanelSurf(SurfNum) + QHWBaseboardSurf(SurfNum) + QSteamBaseboardSurf(SurfNum) + QElecBaseboardSurf(SurfNum)) * diff --git a/src/EnergyPlus/HybridEvapCoolingModel.cc b/src/EnergyPlus/HybridEvapCoolingModel.cc index e24397aef97..18cd001c50c 100644 --- a/src/EnergyPlus/HybridEvapCoolingModel.cc +++ b/src/EnergyPlus/HybridEvapCoolingModel.cc @@ -1345,14 +1345,14 @@ namespace HybridEvapCoolingModel { // -> if so // -> check if this setting meets the conditioning load (only) // -> if so - // ->check to see if this setting is better at meeting the dehumidification or humidification lad than - // any previous setting this step. + // ->check to see if this setting is better at meeting the dehumidification or humidification lad + // than any previous setting this step. // -> if its not, ignore it. // -> if not // ->check to see if any previous setting met the conditioning load // ->if not: - // ->see if this setting is better at meeting the conditioning load than any - // previous setting this calculation step. + // ->see if this setting is better at meeting the conditioning load than + // any previous setting this calculation step. // -> if so save as current optimal // -> if its not, ignore it. // -> if so: then ignore it. diff --git a/src/EnergyPlus/PackagedTerminalHeatPump.cc b/src/EnergyPlus/PackagedTerminalHeatPump.cc index ec3dd7f5a0c..f8038aed446 100644 --- a/src/EnergyPlus/PackagedTerminalHeatPump.cc +++ b/src/EnergyPlus/PackagedTerminalHeatPump.cc @@ -1325,7 +1325,8 @@ namespace PackagedTerminalHeatPump { } // if ( PTUnit( PTUnitNum ).MaxOATSupHeat > 21.0 ) { - // ShowWarningError( CurrentModuleObject + " = " + PTUnit( PTUnitNum ).Name + ": " + cNumericFields( 11 ) + " should be + // ShowWarningError( CurrentModuleObject + " = " + PTUnit( PTUnitNum ).Name + ": " + cNumericFields( 11 ) + " should + //be //<= to 21." //); ShowContinueError( "..." + cNumericFields( 11 ) + " = " + TrimSigDigits( Numbers( 11 ), 1 ) ); // } diff --git a/src/EnergyPlus/SurfaceGeometry.cc b/src/EnergyPlus/SurfaceGeometry.cc index c2dff313cdd..903b06d094c 100644 --- a/src/EnergyPlus/SurfaceGeometry.cc +++ b/src/EnergyPlus/SurfaceGeometry.cc @@ -5865,7 +5865,8 @@ namespace SurfaceGeometry { // are they all similar tilt and azimuth? Issue warnings so people can do it if they really want Real64 const surfaceArea(sum_sub(Surface, &SurfaceData::Area, ExtVentedCavity(Item).SurfPtrs)); - // AvgAzimuth = sum( Surface( ExtVentedCavity( Item ).SurfPtrs ).Azimuth * Surface( ExtVentedCavity( Item ).SurfPtrs ).Area ) + // AvgAzimuth = sum( Surface( ExtVentedCavity( Item ).SurfPtrs ).Azimuth * Surface( ExtVentedCavity( Item ).SurfPtrs ).Area + //) /// sum( Surface( ExtVentedCavity( Item ).SurfPtrs ).Area ); //Autodesk:F2C++ Array subscript usage: Replaced by below AvgAzimuth = sum_product_sub(Surface, &SurfaceData::Azimuth, &SurfaceData::Area, ExtVentedCavity(Item).SurfPtrs) / surfaceArea; // Autodesk:F2C++ Functions handle array subscript usage @@ -5895,7 +5896,7 @@ namespace SurfaceGeometry { // find area weighted centroid. // ExtVentedCavity( Item ).Centroid.z = sum( Surface( ExtVentedCavity( Item ).SurfPtrs ).Centroid.z * Surface( - //ExtVentedCavity( Item + // ExtVentedCavity( Item //).SurfPtrs ).Area ) / sum( Surface( ExtVentedCavity( Item ).SurfPtrs ).Area ); //Autodesk:F2C++ Array subscript usage: Replaced by below ExtVentedCavity(Item).Centroid.z = sum_product_sub(Surface, &SurfaceData::Centroid, &Vector::z, Surface, &SurfaceData::Area, ExtVentedCavity(Item).SurfPtrs) / diff --git a/src/EnergyPlus/TranspiredCollector.cc b/src/EnergyPlus/TranspiredCollector.cc index 0a1ee76ebbd..78a195d0b1f 100644 --- a/src/EnergyPlus/TranspiredCollector.cc +++ b/src/EnergyPlus/TranspiredCollector.cc @@ -542,7 +542,7 @@ namespace TranspiredCollector { // are they all similar tilt and azimuth? Issue warnings so people can do it if they really want Real64 const surfaceArea(sum_sub(Surface, &SurfaceData::Area, UTSC(Item).SurfPtrs)); // AvgAzimuth = sum( Surface( UTSC( Item ).SurfPtrs ).Azimuth * Surface( UTSC( Item ).SurfPtrs ).Area ) / sum( Surface( - //UTSC( Item + // UTSC( Item //).SurfPtrs ).Area ); //Autodesk:F2C++ Array subscript usage: Replaced by below AvgAzimuth = sum_product_sub(Surface, &SurfaceData::Azimuth, &SurfaceData::Area, UTSC(Item).SurfPtrs) / surfaceArea; // Autodesk:F2C++ Functions handle array subscript usage @@ -929,13 +929,13 @@ namespace TranspiredCollector { Real64 const surfaceArea(sum_sub(Surface, &SurfaceData::Area, UTSC(UTSCNum).SurfPtrs)); if (!IsRain) { // Tamb = sum( Surface( UTSC( UTSCNum ).SurfPtrs ).OutDryBulbTemp * Surface( UTSC( UTSCNum ).SurfPtrs ).Area ) / sum( - //Surface( UTSC( UTSCNum ).SurfPtrs ).Area ); //Autodesk:F2C++ Array subscript usage: Replaced by below + // Surface( UTSC( UTSCNum ).SurfPtrs ).Area ); //Autodesk:F2C++ Array subscript usage: Replaced by below Tamb = sum_product_sub(Surface, &SurfaceData::OutDryBulbTemp, &SurfaceData::Area, UTSC(UTSCNum).SurfPtrs) / surfaceArea; // Autodesk:F2C++ Functions handle array subscript usage } else { // when raining we use wet bulb not drybulb // Tamb = sum( Surface( UTSC( UTSCNum ).SurfPtrs ).OutWetBulbTemp * Surface( UTSC( UTSCNum ).SurfPtrs ).Area ) / sum( - //Surface( UTSC( UTSCNum ).SurfPtrs ).Area ); //Autodesk:F2C++ Array subscript usage: Replaced by below + // Surface( UTSC( UTSCNum ).SurfPtrs ).Area ); //Autodesk:F2C++ Array subscript usage: Replaced by below Tamb = sum_product_sub(Surface, &SurfaceData::OutWetBulbTemp, &SurfaceData::Area, UTSC(UTSCNum).SurfPtrs) / surfaceArea; // Autodesk:F2C++ Functions handle array subscript usage } diff --git a/src/EnergyPlus/WaterCoils.cc b/src/EnergyPlus/WaterCoils.cc index 66057e1c575..c617ee96c7c 100644 --- a/src/EnergyPlus/WaterCoils.cc +++ b/src/EnergyPlus/WaterCoils.cc @@ -2881,7 +2881,8 @@ namespace WaterCoils { DryCoilEfficiency = 0.0; // Tuned Replaced by below to eliminate pow calls // for ( CoefPointer = 1; CoefPointer <= 5; ++CoefPointer ) { - // DryCoilEfficiency += WaterCoil( CoilNum ).DryFinEfficncyCoef( CoefPointer ) * std::pow( DryFinEfficncy, CoefPointer + // DryCoilEfficiency += WaterCoil( CoilNum ).DryFinEfficncyCoef( CoefPointer ) * std::pow( DryFinEfficncy, + //CoefPointer //- // 1 //); } // CoefPointer diff --git a/src/EnergyPlus/WeatherManager.cc b/src/EnergyPlus/WeatherManager.cc index 7432c3d47db..8caa85d5004 100644 --- a/src/EnergyPlus/WeatherManager.cc +++ b/src/EnergyPlus/WeatherManager.cc @@ -46,10 +46,10 @@ // POSSIBILITY OF SUCH DAMAGE. // C++ Headers +#include #include #include #include -#include // ObjexxFCL Headers #include @@ -89,243 +89,244 @@ namespace EnergyPlus { namespace WeatherManager { - // MODULE INFORMATION: - // AUTHOR Rick Strand - // DATE WRITTEN May 1997 - // MODIFIED December 1998, FW; December 1999, LKL. - // RE-ENGINEERED na - - // PURPOSE OF THIS MODULE: - // This module contains all of the weather handling routines for - // EnergyPlus. That includes getting user input, defining design day - // weather, retrieving data from weather files, and supplying the - // outdoor environment for each time step. - - // METHODOLOGY EMPLOYED: - // Setting up the design days is similar to BLAST/IBLAST. Reading the - // BLAST weather files is similar to that code in BLAST/IBLAST. The EnergyPlus - // Weather file (EPW) is new code. - - // REFERENCES: - // (I)BLAST legacy code, internal Reverse Engineering documentation, - // and internal Evolutionary Engineering documentation. - - // USE STATEMENTS: - // Use statements for data only modules - // Using/Aliasing - using namespace DataPrecisionGlobals; - using namespace DataGlobals; - using namespace DataEnvironment; - using namespace GroundTemperatureManager; - using namespace DataReportingFlags; - using DataSystemVariables::iASCII_CR; - using DataSystemVariables::iUnicode_end; - using General::ProcessDateString; // , ValidateMonthDay - using General::RoundSigDigits; - using namespace Psychrometrics; - - // Data - // MODULE PARAMETER DEFINITIONS: - // Following are Date Types read in from EPW file or IDF - int const InvalidDate( -1 ); - int const MonthDay( 1 ); - int const NthDayInMonth( 2 ); - int const LastDayInMonth( 3 ); - - int const ScheduleMethod( 1 ); // Constant for water mains temperatures calculation methods - int const CorrelationMethod( 2 ); // Constant for water mains temperatures calculation methods - - int const InvalidWeatherFile( 0 ); - int const EPlusWeatherFile( 1 ); - - int const ASHRAE_ClearSky( 0 ); // Design Day solar model ASHRAE ClearSky (default) - int const Zhang_Huang( 1 ); // Design Day solar model Zhang Huang - int const SolarModel_Schedule( 2 ); // Design Day solar model (beam and diffuse) from user entered schedule - int const ASHRAE_Tau( 3 ); // Design Day solar model ASHRAE tau (per 2009 HOF) - - int const DDHumIndType_WetBulb( 0 ); // Design Day Humidity Indicating Type = Wetbulb (default) - int const DDHumIndType_DewPoint( 1 ); // Design Day Humidity Indicating Type = Dewpoint - int const DDHumIndType_Enthalpy( 2 ); // Design Day Humidity Indicating Type = Enthalpy - int const DDHumIndType_HumRatio( 3 ); // Design Day Humidity Indicating Type = Humidity Ratio - int const DDHumIndType_RelHumSch( 4 ); // Design Day Humidity Indicating Type = relhum schedule - int const DDHumIndType_WBProfDef( 5 ); // Design Day Humidity Indicating Type = Wetbulb default profile - int const DDHumIndType_WBProfDif( 6 ); // Design Day Humidity Indicating Type = Wetbulb difference profile - int const DDHumIndType_WBProfMul( 7 ); // Design Day Humidity Indicating Type = Wetbulb multiplier profile - int const DDHumIndType_Count( 8 ); // # of DDHumIndTypes - - int const DDDBRangeType_Default( 0 ); // Design Day DryBulb Range Type = Default Multipliers - int const DDDBRangeType_Multiplier( 1 ); // Design Day DryBulb Range Type = Multiplier Schedule - int const DDDBRangeType_Difference( 2 ); // Design Day DryBulb Range Type = Difference Schedule - int const DDDBRangeType_Profile( 3 ); // Design Day DryBulb Range Type = Temperature Profile - - int const WP_ScheduleValue( 1 ); // User entered Schedule value for Weather Property - int const WP_DryBulbDelta( 2 ); // User entered DryBulb difference Schedule value for Weather Property - int const WP_DewPointDelta( 3 ); // User entered Dewpoint difference Schedule value for Weather Property - int const WP_SkyTAlgorithmA( 4 ); // place holder - - int const GregorianToJulian( 1 ); // JGDate argument for Gregorian to Julian Date conversion - int const JulianToGregorian( 2 ); // JGDate argument for Julian to Gregorian Date conversion - - Real64 const Sigma( 5.6697e-8 ); // Stefan-Boltzmann constant - Real64 const TKelvin( KelvinConv ); // conversion from Kelvin to Celsius - - static std::string const BlankString; - Array1D_string const DaysOfWeek( 7, { "SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY" } ); - std::map weekDayLookUp{ { "SUNDAY", WeekDay::Sunday }, { "MONDAY", WeekDay::Monday }, { "TUESDAY", WeekDay::Tuesday }, - { "WEDNESDAY", WeekDay::Wednesday }, { "THURSDAY", WeekDay::Thursday }, { "FRIDAY", WeekDay::Friday }, { "SATURDAY", WeekDay::Saturday } }; - - bool Debugout( false ); - - // DERIVED TYPE DEFINITIONS: - - // INTERFACE BLOCK SPECIFICATIONS: - // na - - // MODULE VARIABLE DECLARATIONS: - - int YearOfSim( 1 ); // The Present year of Simulation. - int const NumDaysInYear( 365 ); - int EnvironmentReportNbr( 0 ); // Report number for the environment stamp - std::string EnvironmentReportChr; // Report number for the environment stamp (character -- for printing) - int TimeStampReportNbr( 0 ); // Report number for the time stamp - std::string TimeStampReportChr; // Report number for the time stamp (character -- for printing) - int WeatherDataReport( 0 ); // Report number for the weather data - bool WeatherFileExists( false ); // Set to true if a weather file exists - std::string LocationTitle; // Location Title from input File - bool LocationGathered( false ); // flag to show if Location exists on Input File (we assume one is there and - // correct on weather file) - namespace { - // These were static variables within different functions. They were pulled out into the namespace - // to facilitate easier unit testing of those functions. - // These are purposefully not in the header file as an extern variable. No one outside of this should - // use these. They are cleared by clear_state() for use by unit tests, but normal simulations should be unaffected. - // This is purposefully in an anonymous namespace so nothing outside this implementation file can use it. - bool GetBranchInputOneTimeFlag( true ); - bool GetEnvironmentFirstCall( true ); - bool PrntEnvHeaders( true ); + // MODULE INFORMATION: + // AUTHOR Rick Strand + // DATE WRITTEN May 1997 + // MODIFIED December 1998, FW; December 1999, LKL. + // RE-ENGINEERED na + + // PURPOSE OF THIS MODULE: + // This module contains all of the weather handling routines for + // EnergyPlus. That includes getting user input, defining design day + // weather, retrieving data from weather files, and supplying the + // outdoor environment for each time step. + + // METHODOLOGY EMPLOYED: + // Setting up the design days is similar to BLAST/IBLAST. Reading the + // BLAST weather files is similar to that code in BLAST/IBLAST. The EnergyPlus + // Weather file (EPW) is new code. + + // REFERENCES: + // (I)BLAST legacy code, internal Reverse Engineering documentation, + // and internal Evolutionary Engineering documentation. + + // USE STATEMENTS: + // Use statements for data only modules + // Using/Aliasing + using namespace DataPrecisionGlobals; + using namespace DataGlobals; + using namespace DataEnvironment; + using namespace GroundTemperatureManager; + using namespace DataReportingFlags; + using DataSystemVariables::iASCII_CR; + using DataSystemVariables::iUnicode_end; + using General::ProcessDateString; // , ValidateMonthDay + using General::RoundSigDigits; + using namespace Psychrometrics; + + // Data + // MODULE PARAMETER DEFINITIONS: + // Following are Date Types read in from EPW file or IDF + int const InvalidDate(-1); + int const MonthDay(1); + int const NthDayInMonth(2); + int const LastDayInMonth(3); + + int const ScheduleMethod(1); // Constant for water mains temperatures calculation methods + int const CorrelationMethod(2); // Constant for water mains temperatures calculation methods + + int const InvalidWeatherFile(0); + int const EPlusWeatherFile(1); + + int const ASHRAE_ClearSky(0); // Design Day solar model ASHRAE ClearSky (default) + int const Zhang_Huang(1); // Design Day solar model Zhang Huang + int const SolarModel_Schedule(2); // Design Day solar model (beam and diffuse) from user entered schedule + int const ASHRAE_Tau(3); // Design Day solar model ASHRAE tau (per 2009 HOF) + + int const DDHumIndType_WetBulb(0); // Design Day Humidity Indicating Type = Wetbulb (default) + int const DDHumIndType_DewPoint(1); // Design Day Humidity Indicating Type = Dewpoint + int const DDHumIndType_Enthalpy(2); // Design Day Humidity Indicating Type = Enthalpy + int const DDHumIndType_HumRatio(3); // Design Day Humidity Indicating Type = Humidity Ratio + int const DDHumIndType_RelHumSch(4); // Design Day Humidity Indicating Type = relhum schedule + int const DDHumIndType_WBProfDef(5); // Design Day Humidity Indicating Type = Wetbulb default profile + int const DDHumIndType_WBProfDif(6); // Design Day Humidity Indicating Type = Wetbulb difference profile + int const DDHumIndType_WBProfMul(7); // Design Day Humidity Indicating Type = Wetbulb multiplier profile + int const DDHumIndType_Count(8); // # of DDHumIndTypes + + int const DDDBRangeType_Default(0); // Design Day DryBulb Range Type = Default Multipliers + int const DDDBRangeType_Multiplier(1); // Design Day DryBulb Range Type = Multiplier Schedule + int const DDDBRangeType_Difference(2); // Design Day DryBulb Range Type = Difference Schedule + int const DDDBRangeType_Profile(3); // Design Day DryBulb Range Type = Temperature Profile + + int const WP_ScheduleValue(1); // User entered Schedule value for Weather Property + int const WP_DryBulbDelta(2); // User entered DryBulb difference Schedule value for Weather Property + int const WP_DewPointDelta(3); // User entered Dewpoint difference Schedule value for Weather Property + int const WP_SkyTAlgorithmA(4); // place holder + + int const GregorianToJulian(1); // JGDate argument for Gregorian to Julian Date conversion + int const JulianToGregorian(2); // JGDate argument for Julian to Gregorian Date conversion + + Real64 const Sigma(5.6697e-8); // Stefan-Boltzmann constant + Real64 const TKelvin(KelvinConv); // conversion from Kelvin to Celsius + + static std::string const BlankString; + Array1D_string const DaysOfWeek(7, {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"}); + std::map weekDayLookUp{{"SUNDAY", WeekDay::Sunday}, {"MONDAY", WeekDay::Monday}, {"TUESDAY", WeekDay::Tuesday}, + {"WEDNESDAY", WeekDay::Wednesday}, {"THURSDAY", WeekDay::Thursday}, {"FRIDAY", WeekDay::Friday}, + {"SATURDAY", WeekDay::Saturday}}; + + bool Debugout(false); + + // DERIVED TYPE DEFINITIONS: + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // MODULE VARIABLE DECLARATIONS: + + int YearOfSim(1); // The Present year of Simulation. + int const NumDaysInYear(365); + int EnvironmentReportNbr(0); // Report number for the environment stamp + std::string EnvironmentReportChr; // Report number for the environment stamp (character -- for printing) + int TimeStampReportNbr(0); // Report number for the time stamp + std::string TimeStampReportChr; // Report number for the time stamp (character -- for printing) + int WeatherDataReport(0); // Report number for the weather data + bool WeatherFileExists(false); // Set to true if a weather file exists + std::string LocationTitle; // Location Title from input File + bool LocationGathered(false); // flag to show if Location exists on Input File (we assume one is there and + // correct on weather file) + namespace { + // These were static variables within different functions. They were pulled out into the namespace + // to facilitate easier unit testing of those functions. + // These are purposefully not in the header file as an extern variable. No one outside of this should + // use these. They are cleared by clear_state() for use by unit tests, but normal simulations should be unaffected. + // This is purposefully in an anonymous namespace so nothing outside this implementation file can use it. + bool GetBranchInputOneTimeFlag(true); + bool GetEnvironmentFirstCall(true); + bool PrntEnvHeaders(true); } // namespace - Real64 WeatherFileLatitude( 0.0 ); - Real64 WeatherFileLongitude( 0.0 ); - Real64 WeatherFileTimeZone( 0.0 ); - Real64 WeatherFileElevation( 0.0 ); - int WeatherFileUnitNumber; // File unit number for the weather file - Array1D< Real64 > GroundTempsFCFromEPWHeader( 12, 0.0 ); // F or C factor method - Array1D< Real64 > GroundReflectances( 12, 0.2 ); // User Specified Ground Reflectances !EPTeam: Using DP causes big diffs - Real64 SnowGndRefModifier( 1.0 ); // Modifier to ground reflectance during snow - Real64 SnowGndRefModifierForDayltg( 1.0 ); // Modifier to ground reflectance during snow for daylighting - int WaterMainsTempsMethod( 0 ); // Water mains temperature calculation method - int WaterMainsTempsSchedule( 0 ); // Water mains temperature schedule - Real64 WaterMainsTempsAnnualAvgAirTemp( 0.0 ); // Annual average outdoor air temperature (C) - Real64 WaterMainsTempsMaxDiffAirTemp( 0.0 ); // Maximum difference in monthly average outdoor air temperatures (deltaC) - bool wthFCGroundTemps( false ); - Real64 RainAmount( 0.0 ); - Real64 SnowAmount( 0.0 ); - - int TotRunPers( 0 ); // Total number of Run Periods (Weather data) to Setup - int TotRunDesPers( 0 ); // Total number of Run Design Periods (Weather data) to Setup - - int NumSpecialDays( 0 ); - Array1D_int SpecialDayTypes( 366, 0 ); // To hold holiday types given in input file - Array1D_int WeekDayTypes( 366, 0 ); // To hold Week day types using specified first day - Array1D_int DSTIndex( 366, 0 ); // To hold DST Index based on weather file or input - - int NumDataPeriods( 0 ); - - int NumIntervalsPerHour( 1 ); - - bool UseDaylightSaving( true ); // True if user says to use Weather File specified DaylightSaving Period - bool UseSpecialDays( true ); // True if user says to use Weather File specified Special Days for current RunPeriod - bool UseRainValues( true ); // True if rain values from weather file are to be used - bool UseSnowValues( true ); // True if snow values from weather file are to be used - bool EPWDaylightSaving( false ); // True if a DaylightSaving Time Period is input (EPW files) - bool IDFDaylightSaving( false ); // True if a DaylightSaving Time Period is input (IDF files) - bool DaylightSavingIsActive( false ); // True if a DaylightSavingPeriod should be used for Environment - bool WFAllowsLeapYears( false ); // True if the Weather File (WF) header has "Yes" for Leap Years - int WFLeapYearInd( 0 ); // Indicator for current Weather file "Leap Year", used in DayOfYear calculations and others. - int curSimDayForEndOfRunPeriod( 0 ); // normal=number days in sim, but different when repeating runperiods or multi-year files - int Envrn( 0 ); // Counter for environments - int NumOfEnvrn( 0 ); // Number of environments to be simulated - int NumEPWTypExtSets( 0 ); // Number of Typical/Extreme on weather file. - int NumWPSkyTemperatures( 0 ); // Number of WeatherProperty:SkyTemperature items in input file - - Array2D_bool TodayIsRain; // Rain indicator, true=rain - Array2D_bool TodayIsSnow; // Snow indicator, true=snow - Array2D< Real64 > TodayRainAmount; // ficitious indicator of Rain - Array2D< Real64 > TodaySnowAmount; // ficitious indicator of Snow - Array2D< Real64 > TodayOutDryBulbTemp; // Dry bulb temperature of outside air - Array2D< Real64 > TodayOutWetBulbTemp; // Wet bulb temperature of outside air - Array2D< Real64 > TodayOutDewPointTemp; // Dew Point Temperature of outside air - Array2D< Real64 > TodayOutBaroPress; // Barometric pressure of outside air - Array2D< Real64 > TodayOutHumRat; // Humidity ratio of outside air - Array2D< Real64 > TodayOutRelHum; // Relative Humidity of outside air - Array2D< Real64 > TodayWindSpeed; // Wind speed of outside air - Array2D< Real64 > TodayWindDir; // Wind direction of outside air - Array2D< Real64 > TodaySkyTemp; // Sky temperature - Array2D< Real64 > TodayHorizIRSky; // Horizontal IR from Sky - Array2D< Real64 > TodayBeamSolarRad; // Direct normal solar irradiance - Array2D< Real64 > TodayDifSolarRad; // Sky diffuse horizontal solar irradiance - Array2D< Real64 > TodayAlbedo; // Albedo - Array2D< Real64 > TodayLiquidPrecip; // Liquid Precipitation Depth (mm) - - Array2D_bool TomorrowIsRain; // Rain indicator, true=rain - Array2D_bool TomorrowIsSnow; // Snow indicator, true=snow - Array2D< Real64 > TomorrowRainAmount; // ficitious indicator of Rain - Array2D< Real64 > TomorrowSnowAmount; // ficitious indicator of Snow - Array2D< Real64 > TomorrowOutDryBulbTemp; // Dry bulb temperature of outside air - Array2D< Real64 > TomorrowOutDewPointTemp; // Dew Point Temperature of outside air - Array2D< Real64 > TomorrowOutBaroPress; // Barometric pressure of outside air - Array2D< Real64 > TomorrowOutRelHum; // Relative Humidity of outside air - Array2D< Real64 > TomorrowWindSpeed; // Wind speed of outside air - Array2D< Real64 > TomorrowWindDir; // Wind direction of outside air - Array2D< Real64 > TomorrowSkyTemp; // Sky temperature - Array2D< Real64 > TomorrowHorizIRSky; // Horizontal IR from Sky - Array2D< Real64 > TomorrowBeamSolarRad; // Direct normal solar irradiance - Array2D< Real64 > TomorrowDifSolarRad; // Sky diffuse horizontal solar irradiance - Array2D< Real64 > TomorrowAlbedo; // Albedo - Array2D< Real64 > TomorrowLiquidPrecip; // Liquid Precipitation Depth - - Array3D< Real64 > DDDBRngModifier; // Design Day Dry-bulb Temperature Range Modifier - Array3D< Real64 > DDHumIndModifier; // Design Day relative humidity values - // or wet-bulb modifiers (per HumIndType) - Array3D< Real64 > DDBeamSolarValues; // Design Day Beam Solar Values - Array3D< Real64 > DDDiffuseSolarValues; // Design Day Relative Humidity Values - - Array3D< Real64 > DDSkyTempScheduleValues; // Sky temperature - DesignDay input - - int RptIsRain( 0 ); // Rain Report Value - int RptIsSnow( 0 ); // Snow Report Value - int RptDayType( 0 ); // DayType Report Value - - Real64 HrAngle( 0.0 ); // Current Hour Angle - Real64 SolarAltitudeAngle( 0.0 ); // Angle of Solar Altitude (degrees) - Real64 SolarAzimuthAngle( 0.0 ); // Angle of Solar Azimuth (degrees) - Real64 HorizIRSky( 0.0 ); // Horizontal Infrared Radiation Intensity (W/m2) - Real64 TimeStepFraction( 0.0 ); // Fraction of hour each time step represents - Array1D< Real64 > SPSiteDryBulbRangeModScheduleValue; // reporting Drybulb Temperature Range Modifier Schedule Value - Array1D< Real64 > SPSiteHumidityConditionScheduleValue; // reporting Humidity Condition Schedule Value - Array1D< Real64 > SPSiteBeamSolarScheduleValue; // reporting Beam Solar Schedule Value - Array1D< Real64 > SPSiteDiffuseSolarScheduleValue; // reporting Diffuse Solar Schedule Value - Array1D< Real64 > SPSiteSkyTemperatureScheduleValue; // reporting SkyTemperature Modifier Schedule Value - Array1D_int SPSiteScheduleNamePtr; // SP Site Schedule Name Ptrs - Array1D_string SPSiteScheduleUnits; // SP Site Schedule Units - int NumSPSiteScheduleNamePtrs( 0 ); // Number of SP Site Schedules (DesignDay only) - int NumMissing( 0 ); // Number of hours of missing data - Array1D< Real64 > Interpolation; // Interpolation values based on Number of Time Steps in Hour - Array1D< Real64 > SolarInterpolation; // Solar Interpolation values based on - // Number of Time Steps in Hour - Array1D_int EndDayOfMonth( 12, { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } ); - bool ErrorInWeatherFile( false ); // Set to TRUE when there is a problem with dates - int LeapYearAdd( 0 ); // Set during environment if leap year is active (adds 1 to number days in Feb) - bool DatesShouldBeReset( false ); // True when weekdays should be reset - bool StartDatesCycleShouldBeReset( false ); // True when start dates on repeat should be reset - bool Jan1DatesShouldBeReset( false ); // True if Jan 1 should signal reset of dates - bool RPReadAllWeatherData( false ); // True if need to read all weather data prior to simulation - - // SUBROUTINE SPECIFICATIONS FOR MODULE WeatherManager - //PUBLIC ProcessDateString - // Get Input from Input File - - // Object Data + Real64 WeatherFileLatitude(0.0); + Real64 WeatherFileLongitude(0.0); + Real64 WeatherFileTimeZone(0.0); + Real64 WeatherFileElevation(0.0); + int WeatherFileUnitNumber; // File unit number for the weather file + Array1D GroundTempsFCFromEPWHeader(12, 0.0); // F or C factor method + Array1D GroundReflectances(12, 0.2); // User Specified Ground Reflectances !EPTeam: Using DP causes big diffs + Real64 SnowGndRefModifier(1.0); // Modifier to ground reflectance during snow + Real64 SnowGndRefModifierForDayltg(1.0); // Modifier to ground reflectance during snow for daylighting + int WaterMainsTempsMethod(0); // Water mains temperature calculation method + int WaterMainsTempsSchedule(0); // Water mains temperature schedule + Real64 WaterMainsTempsAnnualAvgAirTemp(0.0); // Annual average outdoor air temperature (C) + Real64 WaterMainsTempsMaxDiffAirTemp(0.0); // Maximum difference in monthly average outdoor air temperatures (deltaC) + bool wthFCGroundTemps(false); + Real64 RainAmount(0.0); + Real64 SnowAmount(0.0); + + int TotRunPers(0); // Total number of Run Periods (Weather data) to Setup + int TotRunDesPers(0); // Total number of Run Design Periods (Weather data) to Setup + + int NumSpecialDays(0); + Array1D_int SpecialDayTypes(366, 0); // To hold holiday types given in input file + Array1D_int WeekDayTypes(366, 0); // To hold Week day types using specified first day + Array1D_int DSTIndex(366, 0); // To hold DST Index based on weather file or input + + int NumDataPeriods(0); + + int NumIntervalsPerHour(1); + + bool UseDaylightSaving(true); // True if user says to use Weather File specified DaylightSaving Period + bool UseSpecialDays(true); // True if user says to use Weather File specified Special Days for current RunPeriod + bool UseRainValues(true); // True if rain values from weather file are to be used + bool UseSnowValues(true); // True if snow values from weather file are to be used + bool EPWDaylightSaving(false); // True if a DaylightSaving Time Period is input (EPW files) + bool IDFDaylightSaving(false); // True if a DaylightSaving Time Period is input (IDF files) + bool DaylightSavingIsActive(false); // True if a DaylightSavingPeriod should be used for Environment + bool WFAllowsLeapYears(false); // True if the Weather File (WF) header has "Yes" for Leap Years + int WFLeapYearInd(0); // Indicator for current Weather file "Leap Year", used in DayOfYear calculations and others. + int curSimDayForEndOfRunPeriod(0); // normal=number days in sim, but different when repeating runperiods or multi-year files + int Envrn(0); // Counter for environments + int NumOfEnvrn(0); // Number of environments to be simulated + int NumEPWTypExtSets(0); // Number of Typical/Extreme on weather file. + int NumWPSkyTemperatures(0); // Number of WeatherProperty:SkyTemperature items in input file + + Array2D_bool TodayIsRain; // Rain indicator, true=rain + Array2D_bool TodayIsSnow; // Snow indicator, true=snow + Array2D TodayRainAmount; // ficitious indicator of Rain + Array2D TodaySnowAmount; // ficitious indicator of Snow + Array2D TodayOutDryBulbTemp; // Dry bulb temperature of outside air + Array2D TodayOutWetBulbTemp; // Wet bulb temperature of outside air + Array2D TodayOutDewPointTemp; // Dew Point Temperature of outside air + Array2D TodayOutBaroPress; // Barometric pressure of outside air + Array2D TodayOutHumRat; // Humidity ratio of outside air + Array2D TodayOutRelHum; // Relative Humidity of outside air + Array2D TodayWindSpeed; // Wind speed of outside air + Array2D TodayWindDir; // Wind direction of outside air + Array2D TodaySkyTemp; // Sky temperature + Array2D TodayHorizIRSky; // Horizontal IR from Sky + Array2D TodayBeamSolarRad; // Direct normal solar irradiance + Array2D TodayDifSolarRad; // Sky diffuse horizontal solar irradiance + Array2D TodayAlbedo; // Albedo + Array2D TodayLiquidPrecip; // Liquid Precipitation Depth (mm) + + Array2D_bool TomorrowIsRain; // Rain indicator, true=rain + Array2D_bool TomorrowIsSnow; // Snow indicator, true=snow + Array2D TomorrowRainAmount; // ficitious indicator of Rain + Array2D TomorrowSnowAmount; // ficitious indicator of Snow + Array2D TomorrowOutDryBulbTemp; // Dry bulb temperature of outside air + Array2D TomorrowOutDewPointTemp; // Dew Point Temperature of outside air + Array2D TomorrowOutBaroPress; // Barometric pressure of outside air + Array2D TomorrowOutRelHum; // Relative Humidity of outside air + Array2D TomorrowWindSpeed; // Wind speed of outside air + Array2D TomorrowWindDir; // Wind direction of outside air + Array2D TomorrowSkyTemp; // Sky temperature + Array2D TomorrowHorizIRSky; // Horizontal IR from Sky + Array2D TomorrowBeamSolarRad; // Direct normal solar irradiance + Array2D TomorrowDifSolarRad; // Sky diffuse horizontal solar irradiance + Array2D TomorrowAlbedo; // Albedo + Array2D TomorrowLiquidPrecip; // Liquid Precipitation Depth + + Array3D DDDBRngModifier; // Design Day Dry-bulb Temperature Range Modifier + Array3D DDHumIndModifier; // Design Day relative humidity values + // or wet-bulb modifiers (per HumIndType) + Array3D DDBeamSolarValues; // Design Day Beam Solar Values + Array3D DDDiffuseSolarValues; // Design Day Relative Humidity Values + + Array3D DDSkyTempScheduleValues; // Sky temperature - DesignDay input + + int RptIsRain(0); // Rain Report Value + int RptIsSnow(0); // Snow Report Value + int RptDayType(0); // DayType Report Value + + Real64 HrAngle(0.0); // Current Hour Angle + Real64 SolarAltitudeAngle(0.0); // Angle of Solar Altitude (degrees) + Real64 SolarAzimuthAngle(0.0); // Angle of Solar Azimuth (degrees) + Real64 HorizIRSky(0.0); // Horizontal Infrared Radiation Intensity (W/m2) + Real64 TimeStepFraction(0.0); // Fraction of hour each time step represents + Array1D SPSiteDryBulbRangeModScheduleValue; // reporting Drybulb Temperature Range Modifier Schedule Value + Array1D SPSiteHumidityConditionScheduleValue; // reporting Humidity Condition Schedule Value + Array1D SPSiteBeamSolarScheduleValue; // reporting Beam Solar Schedule Value + Array1D SPSiteDiffuseSolarScheduleValue; // reporting Diffuse Solar Schedule Value + Array1D SPSiteSkyTemperatureScheduleValue; // reporting SkyTemperature Modifier Schedule Value + Array1D_int SPSiteScheduleNamePtr; // SP Site Schedule Name Ptrs + Array1D_string SPSiteScheduleUnits; // SP Site Schedule Units + int NumSPSiteScheduleNamePtrs(0); // Number of SP Site Schedules (DesignDay only) + int NumMissing(0); // Number of hours of missing data + Array1D Interpolation; // Interpolation values based on Number of Time Steps in Hour + Array1D SolarInterpolation; // Solar Interpolation values based on + // Number of Time Steps in Hour + Array1D_int EndDayOfMonth(12, {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}); + bool ErrorInWeatherFile(false); // Set to TRUE when there is a problem with dates + int LeapYearAdd(0); // Set during environment if leap year is active (adds 1 to number days in Feb) + bool DatesShouldBeReset(false); // True when weekdays should be reset + bool StartDatesCycleShouldBeReset(false); // True when start dates on repeat should be reset + bool Jan1DatesShouldBeReset(false); // True if Jan 1 should signal reset of dates + bool RPReadAllWeatherData(false); // True if need to read all weather data prior to simulation + + // SUBROUTINE SPECIFICATIONS FOR MODULE WeatherManager + // PUBLIC ProcessDateString + // Get Input from Input File + + // Object Data DayWeatherVariables TodayVariables; // Today's daily weather variables | Derived Type for Storing Weather "Header" Data | Day of year for weather // data | Year of weather data | Month of weather data | Day of month for weather data | Day of week for // weather data | Daylight Saving Time Period indicator (0=no,1=yes) | Holiday indicator (0=no holiday, @@ -336,974 +337,975 @@ namespace WeatherManager { // week for weather data | Daylight Saving Time Period indicator (0=no,1=yes) | Holiday indicator (0=no // holiday, non-zero=holiday type) | Sine of the solar declination angle | Cosine of the solar declination // angle | Value of the equation of time formula - Array1D< DayWeatherVariables > DesignDay; // Design day environments + Array1D DesignDay; // Design day environments MissingData Missing; // Dry Bulb Temperature (C) | Dew Point Temperature (C) | Relative Humidity (%) | Atmospheric Pressure (Pa) | Wind Direction // (deg) | Wind Speed/Velocity (m/s) | Total Sky Cover (tenths) | Opaque Sky Cover (tenths) | Visibility (km) | Ceiling // Height (m) | Precipitable Water (mm) | Aerosol Optical Depth | Snow Depth (cm) | Number of Days since last snow | Albedo | // Rain/Liquid Precipitation (mm) - MissingDataCounts Missed; - RangeDataCounts OutOfRange; - Array1D< DesignDayData > DesDayInput; // Design day Input Data - Array1D< EnvironmentData > Environment; // Environment data - Array1D< RunPeriodData > RunPeriodInput; - std::unordered_map RunPeriodInputUniqueNames; - Array1D< RunPeriodData > RunPeriodDesignInput; - std::unordered_map RunPeriodDesignInputUniqueNames; - Array1D< TypicalExtremeData > TypicalExtremePeriods; - DaylightSavingPeriodData EPWDST; // Daylight Saving Period Data from EPW file - DaylightSavingPeriodData IDFDST; // Daylight Saving Period Data from IDF file - DaylightSavingPeriodData DST; // Daylight Saving Period Data, if active - Array1D< WeatherProperties > WPSkyTemperature; - Array1D< SpecialDayData > SpecialDays; - Array1D< DataPeriodData > DataPeriods; - - std::shared_ptr< BaseGroundTempsModel > siteShallowGroundTempsPtr; - std::shared_ptr< BaseGroundTempsModel > siteBuildingSurfaceGroundTempsPtr; - std::shared_ptr< BaseGroundTempsModel > siteFCFactorMethodGroundTempsPtr; - std::shared_ptr< BaseGroundTempsModel > siteDeepGroundTempsPtr; - - static gio::Fmt fmtA( "(A)" ); - static gio::Fmt fmtAN( "(A,$)" ); - - std::vector< UnderwaterBoundary > underwaterBoundaries; - - // MODULE SUBROUTINES: - - // Functions + MissingDataCounts Missed; + RangeDataCounts OutOfRange; + Array1D DesDayInput; // Design day Input Data + Array1D Environment; // Environment data + Array1D RunPeriodInput; + std::unordered_map RunPeriodInputUniqueNames; + Array1D RunPeriodDesignInput; + std::unordered_map RunPeriodDesignInputUniqueNames; + Array1D TypicalExtremePeriods; + DaylightSavingPeriodData EPWDST; // Daylight Saving Period Data from EPW file + DaylightSavingPeriodData IDFDST; // Daylight Saving Period Data from IDF file + DaylightSavingPeriodData DST; // Daylight Saving Period Data, if active + Array1D WPSkyTemperature; + Array1D SpecialDays; + Array1D DataPeriods; + + std::shared_ptr siteShallowGroundTempsPtr; + std::shared_ptr siteBuildingSurfaceGroundTempsPtr; + std::shared_ptr siteFCFactorMethodGroundTempsPtr; + std::shared_ptr siteDeepGroundTempsPtr; + + static gio::Fmt fmtA("(A)"); + static gio::Fmt fmtAN("(A,$)"); + + std::vector underwaterBoundaries; + + // MODULE SUBROUTINES: + + // Functions void clear_state() - { - Debugout = false ; - YearOfSim = 1 ; // The Present year of Simulation. - EnvironmentReportNbr = 0 ; // Report number for the environment stamp - EnvironmentReportChr = ""; // Report number for the environment stamp (character -- for printing) - TimeStampReportNbr = 0; // Report number for the time stamp - TimeStampReportChr = ""; // Report number for the time stamp (character -- for printing) - WeatherDataReport = 0 ; // Report number for the weather data - WeatherFileExists = false ; // Set to true if a weather file exists - LocationTitle = ""; // Location Title from input File - LocationGathered = false; // flag to show if Location exists on Input File (we assume one is - - GetBranchInputOneTimeFlag = true ; - GetEnvironmentFirstCall = true ; - PrntEnvHeaders = true ; - WeatherFileLatitude = 0.0 ; - WeatherFileLongitude = 0.0 ; - WeatherFileTimeZone = 0.0 ; - WeatherFileElevation = 0.0 ; - WeatherFileUnitNumber = 0 ; // File unit number for the weather file - siteShallowGroundTempsPtr.reset(); - siteBuildingSurfaceGroundTempsPtr.reset(); - siteFCFactorMethodGroundTempsPtr.reset(); - siteDeepGroundTempsPtr.reset(); - GroundTempsFCFromEPWHeader = Array1D< Real64 > ( 12, 0.0 ); - GroundReflectances = Array1D< Real64 >( 12, 0.2 ); - - SnowGndRefModifier = 1.0 ; // Modifier to ground reflectance during snow - SnowGndRefModifierForDayltg = 1.0 ; // Modifier to ground reflectance during snow for daylighting - WaterMainsTempsMethod = 0 ; // Water mains temperature calculation method - WaterMainsTempsSchedule = 0 ; // Water mains temperature schedule - WaterMainsTempsAnnualAvgAirTemp = 0.0 ; // Annual average outdoor air temperature (C) - WaterMainsTempsMaxDiffAirTemp = 0.0 ; // Maximum difference in monthly average outdoor air temperatures (deltaC) - wthFCGroundTemps = false; - RainAmount = 0.0 ; - SnowAmount = 0.0 ; - TotRunPers = 0 ; // Total number of Run Periods (Weather data) to Setup - TotRunDesPers = 0 ; // Total number of Run Design Periods (Weather data) to Setup - NumSpecialDays = 0 ; - - SpecialDayTypes = Array1D< int >(366, 0 ); - WeekDayTypes = Array1D< int >(366, 0 ); - DSTIndex = Array1D< int >(366, 0 ); - - NumDataPeriods = 0; - NumIntervalsPerHour = 1; - UseDaylightSaving = true ; // True if user says to use Weather File specified DaylightSaving Period - UseSpecialDays = true; // True if user says to use Weather File specified Special Days for current RunPeriod - UseRainValues = true ; // True if rain values from weather file are to be used - UseSnowValues = true ; // True if snow values from weather file are to be used - EPWDaylightSaving = false ; // True if a DaylightSaving Time Period is input (EPW files) - IDFDaylightSaving = false ; // True if a DaylightSaving Time Period is input (IDF files) - DaylightSavingIsActive = false ; // True if a DaylightSavingPeriod should be used for Environment - WFAllowsLeapYears = false; // True if the Weather File (WF) header has "Yes" for Leap Years - WFLeapYearInd = 0 ; // Indicator for current Weather file "Leap Year", used in DayOfYear calculations and others. - curSimDayForEndOfRunPeriod = 0 ; // normal=number days in sim, but different when repeating runperiods or multi-year files - Envrn = 0 ; // Counter for environments - NumOfEnvrn = 0 ; // Number of environments to be simulated - NumEPWTypExtSets = 0 ; // Number of Typical/Extreme on weather file. - NumWPSkyTemperatures = 0 ; // Number of WeatherProperty:SkyTemperature items in input file - TodayIsRain.deallocate(); // Rain indicator, true=rain - TodayIsSnow.deallocate(); // Snow indicator, true=snow - TodayRainAmount.deallocate(); // ficitious indicator of Rain - TodaySnowAmount.deallocate(); // ficitious indicator of Snow - TodayOutDryBulbTemp.deallocate(); // Dry bulb temperature of outside air - TodayOutWetBulbTemp.deallocate(); // Wet bulb temperature of outside air - TodayOutDewPointTemp.deallocate(); // Dew Point Temperature of outside air - TodayOutBaroPress.deallocate(); // Barometric pressure of outside air - TodayOutHumRat.deallocate(); // Humidity ratio of outside air - TodayOutRelHum.deallocate(); // Relative Humidity of outside air - TodayWindSpeed.deallocate(); // Wind speed of outside air - TodayWindDir.deallocate(); // Wind direction of outside air - TodaySkyTemp.deallocate(); // Sky temperature - TodayHorizIRSky.deallocate(); // Horizontal IR from Sky - TodayBeamSolarRad.deallocate(); // Direct normal solar irradiance - TodayDifSolarRad.deallocate(); // Sky diffuse horizontal solar irradiance - TodayAlbedo.deallocate(); // Albedo - TodayLiquidPrecip.deallocate(); // Liquid Precipitation Depth (mm) - TomorrowIsRain.deallocate(); // Rain indicator, true=rain - TomorrowIsSnow.deallocate(); // Snow indicator, true=snow - TomorrowRainAmount.deallocate(); // ficitious indicator of Rain - TomorrowSnowAmount.deallocate(); // ficitious indicator of Snow - TomorrowOutDryBulbTemp.deallocate(); // Dry bulb temperature of outside air - TomorrowOutDewPointTemp.deallocate(); // Dew Point Temperature of outside air - TomorrowOutBaroPress.deallocate(); // Barometric pressure of outside air - TomorrowOutRelHum.deallocate(); // Relative Humidity of outside air - TomorrowWindSpeed.deallocate(); // Wind speed of outside air - TomorrowWindDir.deallocate(); // Wind direction of outside air - TomorrowSkyTemp.deallocate(); // Sky temperature - TomorrowHorizIRSky.deallocate(); // Horizontal IR from Sky - TomorrowBeamSolarRad.deallocate(); // Direct normal solar irradiance - TomorrowDifSolarRad.deallocate(); // Sky diffuse horizontal solar irradiance - TomorrowAlbedo.deallocate(); // Albedo - TomorrowLiquidPrecip.deallocate(); // Liquid Precipitation Depth - DDDBRngModifier.deallocate(); // Design Day Dry-bulb Temperature Range Modifier - DDHumIndModifier.deallocate(); // Design Day relative humidity values - DDBeamSolarValues.deallocate(); // Design Day Beam Solar Values - DDDiffuseSolarValues.deallocate(); // Design Day Relative Humidity Values - DDSkyTempScheduleValues.deallocate(); // Sky temperature - DesignDay input - RptIsRain = 0 ; // Rain Report Value - RptIsSnow = 0 ; // Snow Report Value - RptDayType = 0 ; // DayType Report Value - - HrAngle = 0.0 ; // Current Hour Angle - SolarAltitudeAngle = 0.0 ; // Angle of Solar Altitude (degrees) - SolarAzimuthAngle = 0.0 ; // Angle of Solar Azimuth (degrees) - HorizIRSky = 0.0 ; // Horizontal Infrared Radiation Intensity (W/m2) - TimeStepFraction = 0.0 ; // Fraction of hour each time step represents - SPSiteDryBulbRangeModScheduleValue.deallocate(); // reporting Drybulb Temperature Range Modifier Schedule Value - SPSiteHumidityConditionScheduleValue.deallocate(); // reporting Humidity Condition Schedule Value - SPSiteBeamSolarScheduleValue.deallocate(); // reporting Beam Solar Schedule Value - SPSiteDiffuseSolarScheduleValue.deallocate(); // reporting Diffuse Solar Schedule Value - SPSiteSkyTemperatureScheduleValue.deallocate(); // reporting SkyTemperature Modifier Schedule Value - SPSiteScheduleNamePtr.deallocate(); // SP Site Schedule Name Ptrs - SPSiteScheduleUnits.deallocate(); // SP Site Schedule Units - NumSPSiteScheduleNamePtrs = 0 ; // Number of SP Site Schedules (DesignDay only) - NumMissing = 0 ; // Number of hours of missing data - Interpolation.deallocate(); // Interpolation values based on Number of Time Steps in Hour - SolarInterpolation.deallocate(); // Solar Interpolation values based on - - ErrorInWeatherFile = false ; // Set to TRUE when there is a problem with dates - LeapYearAdd = 0 ; - DatesShouldBeReset = false; - StartDatesCycleShouldBeReset = false; // True when start dates on repeat should be reset - Jan1DatesShouldBeReset = false; // True if Jan 1 should signal reset of dates - TodayVariables = DayWeatherVariables(); - TomorrowVariables = DayWeatherVariables(); - DesignDay.deallocate(); - Missing = MissingData(); - Missed = MissingDataCounts(); - OutOfRange = RangeDataCounts(); - DesDayInput.deallocate(); // Design day Input Data - Environment.deallocate(); // Environment data - RunPeriodInput.deallocate(); - RunPeriodInputUniqueNames.clear(); - RunPeriodDesignInput.deallocate(); - RunPeriodDesignInputUniqueNames.clear(); - TypicalExtremePeriods.deallocate(); - - EPWDST.StDateType = 0 ; - EPWDST.StWeekDay = 0 ; - EPWDST.StMon = 0 ; - EPWDST.StDay = 0 ; - EPWDST.EnDateType = 0 ; - EPWDST.EnMon = 0 ; - EPWDST.EnDay = 0 ; - EPWDST.EnWeekDay = 0 ; - - IDFDST.StDateType = 0 ; - IDFDST.StWeekDay = 0 ; - IDFDST.StMon = 0 ; - IDFDST.StDay = 0 ; - IDFDST.EnDateType = 0 ; - IDFDST.EnMon = 0 ; - IDFDST.EnDay = 0 ; - IDFDST.EnWeekDay = 0 ; - - DST.StDateType = 0 ; - DST.StWeekDay = 0 ; - DST.StMon = 0 ; - DST.StDay = 0 ; - DST.EnDateType = 0 ; - DST.EnMon = 0 ; - DST.EnDay = 0 ; - DST.EnWeekDay = 0 ; - WPSkyTemperature.deallocate(); - SpecialDays.deallocate(); - DataPeriods.deallocate(); - - underwaterBoundaries.clear(); - - } //clear_state, for unit tests + { + Debugout = false; + YearOfSim = 1; // The Present year of Simulation. + EnvironmentReportNbr = 0; // Report number for the environment stamp + EnvironmentReportChr = ""; // Report number for the environment stamp (character -- for printing) + TimeStampReportNbr = 0; // Report number for the time stamp + TimeStampReportChr = ""; // Report number for the time stamp (character -- for printing) + WeatherDataReport = 0; // Report number for the weather data + WeatherFileExists = false; // Set to true if a weather file exists + LocationTitle = ""; // Location Title from input File + LocationGathered = false; // flag to show if Location exists on Input File (we assume one is + + GetBranchInputOneTimeFlag = true; + GetEnvironmentFirstCall = true; + PrntEnvHeaders = true; + WeatherFileLatitude = 0.0; + WeatherFileLongitude = 0.0; + WeatherFileTimeZone = 0.0; + WeatherFileElevation = 0.0; + WeatherFileUnitNumber = 0; // File unit number for the weather file + siteShallowGroundTempsPtr.reset(); + siteBuildingSurfaceGroundTempsPtr.reset(); + siteFCFactorMethodGroundTempsPtr.reset(); + siteDeepGroundTempsPtr.reset(); + GroundTempsFCFromEPWHeader = Array1D(12, 0.0); + GroundReflectances = Array1D(12, 0.2); + + SnowGndRefModifier = 1.0; // Modifier to ground reflectance during snow + SnowGndRefModifierForDayltg = 1.0; // Modifier to ground reflectance during snow for daylighting + WaterMainsTempsMethod = 0; // Water mains temperature calculation method + WaterMainsTempsSchedule = 0; // Water mains temperature schedule + WaterMainsTempsAnnualAvgAirTemp = 0.0; // Annual average outdoor air temperature (C) + WaterMainsTempsMaxDiffAirTemp = 0.0; // Maximum difference in monthly average outdoor air temperatures (deltaC) + wthFCGroundTemps = false; + RainAmount = 0.0; + SnowAmount = 0.0; + TotRunPers = 0; // Total number of Run Periods (Weather data) to Setup + TotRunDesPers = 0; // Total number of Run Design Periods (Weather data) to Setup + NumSpecialDays = 0; + + SpecialDayTypes = Array1D(366, 0); + WeekDayTypes = Array1D(366, 0); + DSTIndex = Array1D(366, 0); + + NumDataPeriods = 0; + NumIntervalsPerHour = 1; + UseDaylightSaving = true; // True if user says to use Weather File specified DaylightSaving Period + UseSpecialDays = true; // True if user says to use Weather File specified Special Days for current RunPeriod + UseRainValues = true; // True if rain values from weather file are to be used + UseSnowValues = true; // True if snow values from weather file are to be used + EPWDaylightSaving = false; // True if a DaylightSaving Time Period is input (EPW files) + IDFDaylightSaving = false; // True if a DaylightSaving Time Period is input (IDF files) + DaylightSavingIsActive = false; // True if a DaylightSavingPeriod should be used for Environment + WFAllowsLeapYears = false; // True if the Weather File (WF) header has "Yes" for Leap Years + WFLeapYearInd = 0; // Indicator for current Weather file "Leap Year", used in DayOfYear calculations and others. + curSimDayForEndOfRunPeriod = 0; // normal=number days in sim, but different when repeating runperiods or multi-year files + Envrn = 0; // Counter for environments + NumOfEnvrn = 0; // Number of environments to be simulated + NumEPWTypExtSets = 0; // Number of Typical/Extreme on weather file. + NumWPSkyTemperatures = 0; // Number of WeatherProperty:SkyTemperature items in input file + TodayIsRain.deallocate(); // Rain indicator, true=rain + TodayIsSnow.deallocate(); // Snow indicator, true=snow + TodayRainAmount.deallocate(); // ficitious indicator of Rain + TodaySnowAmount.deallocate(); // ficitious indicator of Snow + TodayOutDryBulbTemp.deallocate(); // Dry bulb temperature of outside air + TodayOutWetBulbTemp.deallocate(); // Wet bulb temperature of outside air + TodayOutDewPointTemp.deallocate(); // Dew Point Temperature of outside air + TodayOutBaroPress.deallocate(); // Barometric pressure of outside air + TodayOutHumRat.deallocate(); // Humidity ratio of outside air + TodayOutRelHum.deallocate(); // Relative Humidity of outside air + TodayWindSpeed.deallocate(); // Wind speed of outside air + TodayWindDir.deallocate(); // Wind direction of outside air + TodaySkyTemp.deallocate(); // Sky temperature + TodayHorizIRSky.deallocate(); // Horizontal IR from Sky + TodayBeamSolarRad.deallocate(); // Direct normal solar irradiance + TodayDifSolarRad.deallocate(); // Sky diffuse horizontal solar irradiance + TodayAlbedo.deallocate(); // Albedo + TodayLiquidPrecip.deallocate(); // Liquid Precipitation Depth (mm) + TomorrowIsRain.deallocate(); // Rain indicator, true=rain + TomorrowIsSnow.deallocate(); // Snow indicator, true=snow + TomorrowRainAmount.deallocate(); // ficitious indicator of Rain + TomorrowSnowAmount.deallocate(); // ficitious indicator of Snow + TomorrowOutDryBulbTemp.deallocate(); // Dry bulb temperature of outside air + TomorrowOutDewPointTemp.deallocate(); // Dew Point Temperature of outside air + TomorrowOutBaroPress.deallocate(); // Barometric pressure of outside air + TomorrowOutRelHum.deallocate(); // Relative Humidity of outside air + TomorrowWindSpeed.deallocate(); // Wind speed of outside air + TomorrowWindDir.deallocate(); // Wind direction of outside air + TomorrowSkyTemp.deallocate(); // Sky temperature + TomorrowHorizIRSky.deallocate(); // Horizontal IR from Sky + TomorrowBeamSolarRad.deallocate(); // Direct normal solar irradiance + TomorrowDifSolarRad.deallocate(); // Sky diffuse horizontal solar irradiance + TomorrowAlbedo.deallocate(); // Albedo + TomorrowLiquidPrecip.deallocate(); // Liquid Precipitation Depth + DDDBRngModifier.deallocate(); // Design Day Dry-bulb Temperature Range Modifier + DDHumIndModifier.deallocate(); // Design Day relative humidity values + DDBeamSolarValues.deallocate(); // Design Day Beam Solar Values + DDDiffuseSolarValues.deallocate(); // Design Day Relative Humidity Values + DDSkyTempScheduleValues.deallocate(); // Sky temperature - DesignDay input + RptIsRain = 0; // Rain Report Value + RptIsSnow = 0; // Snow Report Value + RptDayType = 0; // DayType Report Value + + HrAngle = 0.0; // Current Hour Angle + SolarAltitudeAngle = 0.0; // Angle of Solar Altitude (degrees) + SolarAzimuthAngle = 0.0; // Angle of Solar Azimuth (degrees) + HorizIRSky = 0.0; // Horizontal Infrared Radiation Intensity (W/m2) + TimeStepFraction = 0.0; // Fraction of hour each time step represents + SPSiteDryBulbRangeModScheduleValue.deallocate(); // reporting Drybulb Temperature Range Modifier Schedule Value + SPSiteHumidityConditionScheduleValue.deallocate(); // reporting Humidity Condition Schedule Value + SPSiteBeamSolarScheduleValue.deallocate(); // reporting Beam Solar Schedule Value + SPSiteDiffuseSolarScheduleValue.deallocate(); // reporting Diffuse Solar Schedule Value + SPSiteSkyTemperatureScheduleValue.deallocate(); // reporting SkyTemperature Modifier Schedule Value + SPSiteScheduleNamePtr.deallocate(); // SP Site Schedule Name Ptrs + SPSiteScheduleUnits.deallocate(); // SP Site Schedule Units + NumSPSiteScheduleNamePtrs = 0; // Number of SP Site Schedules (DesignDay only) + NumMissing = 0; // Number of hours of missing data + Interpolation.deallocate(); // Interpolation values based on Number of Time Steps in Hour + SolarInterpolation.deallocate(); // Solar Interpolation values based on + + ErrorInWeatherFile = false; // Set to TRUE when there is a problem with dates + LeapYearAdd = 0; + DatesShouldBeReset = false; + StartDatesCycleShouldBeReset = false; // True when start dates on repeat should be reset + Jan1DatesShouldBeReset = false; // True if Jan 1 should signal reset of dates + TodayVariables = DayWeatherVariables(); + TomorrowVariables = DayWeatherVariables(); + DesignDay.deallocate(); + Missing = MissingData(); + Missed = MissingDataCounts(); + OutOfRange = RangeDataCounts(); + DesDayInput.deallocate(); // Design day Input Data + Environment.deallocate(); // Environment data + RunPeriodInput.deallocate(); + RunPeriodInputUniqueNames.clear(); + RunPeriodDesignInput.deallocate(); + RunPeriodDesignInputUniqueNames.clear(); + TypicalExtremePeriods.deallocate(); + + EPWDST.StDateType = 0; + EPWDST.StWeekDay = 0; + EPWDST.StMon = 0; + EPWDST.StDay = 0; + EPWDST.EnDateType = 0; + EPWDST.EnMon = 0; + EPWDST.EnDay = 0; + EPWDST.EnWeekDay = 0; + + IDFDST.StDateType = 0; + IDFDST.StWeekDay = 0; + IDFDST.StMon = 0; + IDFDST.StDay = 0; + IDFDST.EnDateType = 0; + IDFDST.EnMon = 0; + IDFDST.EnDay = 0; + IDFDST.EnWeekDay = 0; + + DST.StDateType = 0; + DST.StWeekDay = 0; + DST.StMon = 0; + DST.StDay = 0; + DST.EnDateType = 0; + DST.EnMon = 0; + DST.EnDay = 0; + DST.EnWeekDay = 0; + WPSkyTemperature.deallocate(); + SpecialDays.deallocate(); + DataPeriods.deallocate(); + + underwaterBoundaries.clear(); + + } // clear_state, for unit tests void ManageWeather() - { + { - // SUBROUTINE INFORMATION: - // AUTHOR Rick Strand - // DATE WRITTEN May 1997 - // MODIFIED June 1997 (general clean-up) - // RE-ENGINEERED na + // SUBROUTINE INFORMATION: + // AUTHOR Rick Strand + // DATE WRITTEN May 1997 + // MODIFIED June 1997 (general clean-up) + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // This subroutine is the main driver of the weather manager module. - // It controls the assignment of weather related global variables as - // well as the reads and writes for weather information. + // PURPOSE OF THIS SUBROUTINE: + // This subroutine is the main driver of the weather manager module. + // It controls the assignment of weather related global variables as + // well as the reads and writes for weather information. - // METHODOLOGY EMPLOYED: - // Standard EnergyPlus "manager" methodology. + // METHODOLOGY EMPLOYED: + // Standard EnergyPlus "manager" methodology. - // REFERENCES: - // na + // REFERENCES: + // na - // USE STATEMENTS: - // na + // USE STATEMENTS: + // na - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: - // na + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + // na - // SUBROUTINE PARAMETER DEFINITIONS: - // na + // SUBROUTINE PARAMETER DEFINITIONS: + // na - // INTERFACE BLOCK SPECIFICATIONS: - // na + // INTERFACE BLOCK SPECIFICATIONS: + // na - // DERIVED TYPE DEFINITIONS: - // na + // DERIVED TYPE DEFINITIONS: + // na - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - static bool PrintEnvrnStamp( false ); // Set to true when the environment header should be printed + static bool PrintEnvrnStamp(false); // Set to true when the environment header should be printed - // FLOW: + // FLOW: - InitializeWeather( PrintEnvrnStamp ); + InitializeWeather(PrintEnvrnStamp); - SetCurrentWeather(); + SetCurrentWeather(); - ReportWeatherAndTimeInformation( PrintEnvrnStamp ); - } + ReportWeatherAndTimeInformation(PrintEnvrnStamp); + } void ResetEnvironmentCounter() - { + { - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN August 2010 - // MODIFIED na - // RE-ENGINEERED na + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN August 2010 + // MODIFIED na + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // This routine provides an easy method to assure that the environment - // counter (used by GetNextEnvironment) is reset before SetupSimulation or - // Simulating. May not be necessary, but just in case. + // PURPOSE OF THIS SUBROUTINE: + // This routine provides an easy method to assure that the environment + // counter (used by GetNextEnvironment) is reset before SetupSimulation or + // Simulating. May not be necessary, but just in case. - Envrn = 0; - } + Envrn = 0; + } bool CheckIfAnyUnderwaterBoundaries() - { - bool errorsFound = false; - int NumAlpha = 0, NumNumber = 0, IOStat = 0; - DataIPShortCuts::cCurrentModuleObject = "SurfaceProperty:Underwater"; - int Num = inputProcessor->getNumObjectsFound( DataIPShortCuts::cCurrentModuleObject ); - for ( int i = 1; i <= Num; i++ ) { + { + bool errorsFound = false; + int NumAlpha = 0, NumNumber = 0, IOStat = 0; + DataIPShortCuts::cCurrentModuleObject = "SurfaceProperty:Underwater"; + int Num = inputProcessor->getNumObjectsFound(DataIPShortCuts::cCurrentModuleObject); + for (int i = 1; i <= Num; i++) { inputProcessor->getObjectItem(DataIPShortCuts::cCurrentModuleObject, i, DataIPShortCuts::cAlphaArgs, NumAlpha, DataIPShortCuts::rNumericArgs, NumNumber, IOStat, DataIPShortCuts::lNumericFieldBlanks, DataIPShortCuts::lAlphaFieldBlanks, DataIPShortCuts::cAlphaFieldNames, DataIPShortCuts::cNumericFieldNames); - underwaterBoundaries.push_back( UnderwaterBoundary() ); - underwaterBoundaries[ i-1 ].Name = DataIPShortCuts::cAlphaArgs( 1 ); - underwaterBoundaries[ i-1 ].distanceFromLeadingEdge = DataIPShortCuts::rNumericArgs( 1 ); - underwaterBoundaries[ i-1 ].OSCMIndex = UtilityRoutines::FindItemInList( underwaterBoundaries[ i-1 ].Name, DataSurfaces::OSCM ); - if ( underwaterBoundaries[ i-1 ].OSCMIndex <= 0 ) { - ShowSevereError( "Could not match underwater boundary condition object with an Other Side Conditions Model input object." ); - errorsFound = true; - } - underwaterBoundaries[ i-1 ].WaterTempScheduleIndex = ScheduleManager::GetScheduleIndex( DataIPShortCuts::cAlphaArgs( 2 ) ); - if ( underwaterBoundaries[ i-1 ].WaterTempScheduleIndex == 0 ) { + underwaterBoundaries.push_back(UnderwaterBoundary()); + underwaterBoundaries[i - 1].Name = DataIPShortCuts::cAlphaArgs(1); + underwaterBoundaries[i - 1].distanceFromLeadingEdge = DataIPShortCuts::rNumericArgs(1); + underwaterBoundaries[i - 1].OSCMIndex = UtilityRoutines::FindItemInList(underwaterBoundaries[i - 1].Name, DataSurfaces::OSCM); + if (underwaterBoundaries[i - 1].OSCMIndex <= 0) { + ShowSevereError("Could not match underwater boundary condition object with an Other Side Conditions Model input object."); + errorsFound = true; + } + underwaterBoundaries[i - 1].WaterTempScheduleIndex = ScheduleManager::GetScheduleIndex(DataIPShortCuts::cAlphaArgs(2)); + if (underwaterBoundaries[i - 1].WaterTempScheduleIndex == 0) { ShowSevereError("Water temperature schedule for \"SurfaceProperty:Underwater\" named \"" + underwaterBoundaries[i - 1].Name + "\" not found"); - errorsFound = true; - } - if ( DataIPShortCuts::lAlphaFieldBlanks( 3 ) ) { - // that's OK, we can have a blank schedule, the water will just have no free stream velocity - underwaterBoundaries[ i-1 ].VelocityScheduleIndex = 0; - } else { - underwaterBoundaries[ i-1 ].VelocityScheduleIndex = ScheduleManager::GetScheduleIndex( DataIPShortCuts::cAlphaArgs( 3 ) ); - if ( underwaterBoundaries[ i-1 ].WaterTempScheduleIndex == 0 ) { + errorsFound = true; + } + if (DataIPShortCuts::lAlphaFieldBlanks(3)) { + // that's OK, we can have a blank schedule, the water will just have no free stream velocity + underwaterBoundaries[i - 1].VelocityScheduleIndex = 0; + } else { + underwaterBoundaries[i - 1].VelocityScheduleIndex = ScheduleManager::GetScheduleIndex(DataIPShortCuts::cAlphaArgs(3)); + if (underwaterBoundaries[i - 1].WaterTempScheduleIndex == 0) { ShowSevereError("Free streawm velocity schedule for \"SurfaceProperty:Underwater\" named \"" + underwaterBoundaries[i - 1].Name + "\" not found"); - errorsFound = true; - } - } - if ( errorsFound ) break; - } - if ( errorsFound ) { - ShowFatalError( "Previous input problems cause program termination" ); - } - return ( Num > 0 ); - } - - Real64 + errorsFound = true; + } + } + if (errorsFound) break; + } + if (errorsFound) { + ShowFatalError("Previous input problems cause program termination"); + } + return (Num > 0); + } + + Real64 calculateWaterBoundaryConvectionCoefficient(Real64 const curWaterTemp, Real64 const freeStreamVelocity, Real64 const distanceFromLeadingEdge) { - Real64 const waterKinematicViscosity = 1e-6; // m2/s - Real64 const waterPrandtlNumber = 6; // - - Real64 const waterThermalConductivity = 0.6; // W/mK - // do some calculation for forced convection from the leading edge of the ship - Real64 const localReynoldsNumber = freeStreamVelocity * distanceFromLeadingEdge / waterKinematicViscosity; - Real64 const localNusseltNumber = 0.0296 * pow( localReynoldsNumber, 0.8 ) * pow( waterPrandtlNumber, 1.0 / 3.0 ); - Real64 const localConvectionCoeff = localNusseltNumber * waterThermalConductivity / distanceFromLeadingEdge; - - // do some calculations for natural convection from the bottom of the ship - Real64 const distanceFromBottomOfHull = 12; // meters, assumed for now - // this Prandtl correction is from Incropera & Dewitt, Intro to HT, eq 9.20 + Real64 const waterKinematicViscosity = 1e-6; // m2/s + Real64 const waterPrandtlNumber = 6; // - + Real64 const waterThermalConductivity = 0.6; // W/mK + // do some calculation for forced convection from the leading edge of the ship + Real64 const localReynoldsNumber = freeStreamVelocity * distanceFromLeadingEdge / waterKinematicViscosity; + Real64 const localNusseltNumber = 0.0296 * pow(localReynoldsNumber, 0.8) * pow(waterPrandtlNumber, 1.0 / 3.0); + Real64 const localConvectionCoeff = localNusseltNumber * waterThermalConductivity / distanceFromLeadingEdge; + + // do some calculations for natural convection from the bottom of the ship + Real64 const distanceFromBottomOfHull = 12; // meters, assumed for now + // this Prandtl correction is from Incropera & Dewitt, Intro to HT, eq 9.20 Real64 const prandtlCorrection = (0.75 * pow(waterPrandtlNumber, 0.5)) / pow(0.609 + 1.221 * pow(waterPrandtlNumber, 0.5) + 1.238 * waterPrandtlNumber, 0.25); - // calculate the Grashof number - Real64 const gravity = 9.81; // m/s2 - Real64 const beta = 0.000214; // water thermal expansion coefficient, from engineeringtoolbox.com, 1/C - Real64 const assumedSurfaceTemp = 25; // Grashof requires a surface temp, this should suffice + // calculate the Grashof number + Real64 const gravity = 9.81; // m/s2 + Real64 const beta = 0.000214; // water thermal expansion coefficient, from engineeringtoolbox.com, 1/C + Real64 const assumedSurfaceTemp = 25; // Grashof requires a surface temp, this should suffice Real64 const localGrashofNumber = (gravity * beta * (assumedSurfaceTemp - curWaterTemp) * pow(distanceFromBottomOfHull, 3)) / pow(waterKinematicViscosity, 2); - Real64 const localNusseltFreeConvection = pow( localGrashofNumber / 4, 0.25 ) * prandtlCorrection; - Real64 const localConvectionCoeffFreeConv = localNusseltFreeConvection * waterThermalConductivity / distanceFromBottomOfHull; - return max( localConvectionCoeff, localConvectionCoeffFreeConv ); - } + Real64 const localNusseltFreeConvection = pow(localGrashofNumber / 4, 0.25) * prandtlCorrection; + Real64 const localConvectionCoeffFreeConv = localNusseltFreeConvection * waterThermalConductivity / distanceFromBottomOfHull; + return max(localConvectionCoeff, localConvectionCoeffFreeConv); + } void UpdateUnderwaterBoundaries() - { - for ( auto & thisBoundary : underwaterBoundaries ) { - Real64 const curWaterTemp = ScheduleManager::GetCurrentScheduleValue( thisBoundary.WaterTempScheduleIndex ); // C - Real64 freeStreamVelocity = 0; - if ( thisBoundary.VelocityScheduleIndex > 0 ) { - freeStreamVelocity = ScheduleManager::GetCurrentScheduleValue( thisBoundary.VelocityScheduleIndex ); // m/s - } - DataSurfaces::OSCM( thisBoundary.OSCMIndex ).TConv = curWaterTemp; + { + for (auto &thisBoundary : underwaterBoundaries) { + Real64 const curWaterTemp = ScheduleManager::GetCurrentScheduleValue(thisBoundary.WaterTempScheduleIndex); // C + Real64 freeStreamVelocity = 0; + if (thisBoundary.VelocityScheduleIndex > 0) { + freeStreamVelocity = ScheduleManager::GetCurrentScheduleValue(thisBoundary.VelocityScheduleIndex); // m/s + } + DataSurfaces::OSCM(thisBoundary.OSCMIndex).TConv = curWaterTemp; DataSurfaces::OSCM(thisBoundary.OSCMIndex).HConv = WeatherManager::calculateWaterBoundaryConvectionCoefficient(curWaterTemp, freeStreamVelocity, thisBoundary.distanceFromLeadingEdge); - DataSurfaces::OSCM( thisBoundary.OSCMIndex ).TRad = curWaterTemp; - DataSurfaces::OSCM( thisBoundary.OSCMIndex ).HRad = 0.0; - } - } + DataSurfaces::OSCM(thisBoundary.OSCMIndex).TRad = curWaterTemp; + DataSurfaces::OSCM(thisBoundary.OSCMIndex).HRad = 0.0; + } + } void ReadVariableLocationOrientation() - { - int NumAlpha = 0, NumNumber = 0, IOStat = 0; - DataIPShortCuts::cCurrentModuleObject = "Site:VariableLocation"; - if ( inputProcessor->getNumObjectsFound( DataIPShortCuts::cCurrentModuleObject ) == 0 ) return; + { + int NumAlpha = 0, NumNumber = 0, IOStat = 0; + DataIPShortCuts::cCurrentModuleObject = "Site:VariableLocation"; + if (inputProcessor->getNumObjectsFound(DataIPShortCuts::cCurrentModuleObject) == 0) return; inputProcessor->getObjectItem(DataIPShortCuts::cCurrentModuleObject, 1, DataIPShortCuts::cAlphaArgs, NumAlpha, DataIPShortCuts::rNumericArgs, NumNumber, IOStat, DataIPShortCuts::lNumericFieldBlanks, DataIPShortCuts::lAlphaFieldBlanks, DataIPShortCuts::cAlphaFieldNames, DataIPShortCuts::cNumericFieldNames); - DataEnvironment::varyingLocationSchedIndexLat = ScheduleManager::GetScheduleIndex( DataIPShortCuts::cAlphaArgs( 1 ) ); - DataEnvironment::varyingLocationSchedIndexLong = ScheduleManager::GetScheduleIndex( DataIPShortCuts::cAlphaArgs( 2 ) ); - DataEnvironment::varyingOrientationSchedIndex = ScheduleManager::GetScheduleIndex( DataIPShortCuts::cAlphaArgs( 3 ) ); - } + DataEnvironment::varyingLocationSchedIndexLat = ScheduleManager::GetScheduleIndex(DataIPShortCuts::cAlphaArgs(1)); + DataEnvironment::varyingLocationSchedIndexLong = ScheduleManager::GetScheduleIndex(DataIPShortCuts::cAlphaArgs(2)); + DataEnvironment::varyingOrientationSchedIndex = ScheduleManager::GetScheduleIndex(DataIPShortCuts::cAlphaArgs(3)); + } void UpdateLocationAndOrientation() - { - if ( DataEnvironment::varyingLocationSchedIndexLat > 0 ) { - DataEnvironment::Latitude = ScheduleManager::GetCurrentScheduleValue( DataEnvironment::varyingLocationSchedIndexLat ); - } - if ( DataEnvironment::varyingLocationSchedIndexLong > 0 ) { - DataEnvironment::Longitude = ScheduleManager::GetCurrentScheduleValue( DataEnvironment::varyingLocationSchedIndexLong ); - } - CheckLocationValidity(); - if ( DataEnvironment::varyingOrientationSchedIndex > 0 ) { - DataHeatBalance::BuildingAzimuth = mod( ScheduleManager::GetCurrentScheduleValue( DataEnvironment::varyingOrientationSchedIndex ), 360.0 ); + { + if (DataEnvironment::varyingLocationSchedIndexLat > 0) { + DataEnvironment::Latitude = ScheduleManager::GetCurrentScheduleValue(DataEnvironment::varyingLocationSchedIndexLat); + } + if (DataEnvironment::varyingLocationSchedIndexLong > 0) { + DataEnvironment::Longitude = ScheduleManager::GetCurrentScheduleValue(DataEnvironment::varyingLocationSchedIndexLong); + } + CheckLocationValidity(); + if (DataEnvironment::varyingOrientationSchedIndex > 0) { + DataHeatBalance::BuildingAzimuth = mod(ScheduleManager::GetCurrentScheduleValue(DataEnvironment::varyingOrientationSchedIndex), 360.0); SurfaceGeometry::CosBldgRelNorth = std::cos(-(DataHeatBalance::BuildingAzimuth + DataHeatBalance::BuildingRotationAppendixG) * DataGlobals::DegToRadians); SurfaceGeometry::SinBldgRelNorth = std::sin(-(DataHeatBalance::BuildingAzimuth + DataHeatBalance::BuildingRotationAppendixG) * DataGlobals::DegToRadians); - for ( size_t SurfNum = 1; SurfNum < DataSurfaces::Surface.size(); ++SurfNum ) { - for ( int n = 1; n <= DataSurfaces::Surface( SurfNum ).Sides; ++n ) { - Real64 Xb = DataSurfaces::Surface( SurfNum ).Vertex( n ).x; - Real64 Yb = DataSurfaces::Surface( SurfNum ).Vertex( n ).y; - DataSurfaces::Surface( SurfNum ).NewVertex( n ).x = Xb * SurfaceGeometry::CosBldgRelNorth - Yb * SurfaceGeometry::SinBldgRelNorth; - DataSurfaces::Surface( SurfNum ).NewVertex( n ).y = Xb * SurfaceGeometry::SinBldgRelNorth + Yb * SurfaceGeometry::CosBldgRelNorth; - DataSurfaces::Surface( SurfNum ).NewVertex( n ).z = DataSurfaces::Surface( SurfNum ).Vertex( n ).z; - } + for (size_t SurfNum = 1; SurfNum < DataSurfaces::Surface.size(); ++SurfNum) { + for (int n = 1; n <= DataSurfaces::Surface(SurfNum).Sides; ++n) { + Real64 Xb = DataSurfaces::Surface(SurfNum).Vertex(n).x; + Real64 Yb = DataSurfaces::Surface(SurfNum).Vertex(n).y; + DataSurfaces::Surface(SurfNum).NewVertex(n).x = Xb * SurfaceGeometry::CosBldgRelNorth - Yb * SurfaceGeometry::SinBldgRelNorth; + DataSurfaces::Surface(SurfNum).NewVertex(n).y = Xb * SurfaceGeometry::SinBldgRelNorth + Yb * SurfaceGeometry::CosBldgRelNorth; + DataSurfaces::Surface(SurfNum).NewVertex(n).z = DataSurfaces::Surface(SurfNum).Vertex(n).z; + } Vectors::CreateNewellSurfaceNormalVector(DataSurfaces::Surface(SurfNum).NewVertex, DataSurfaces::Surface(SurfNum).Sides, DataSurfaces::Surface(SurfNum).NewellSurfaceNormalVector); - Real64 SurfWorldAz = 0.0; - Real64 SurfTilt = 0.0; + Real64 SurfWorldAz = 0.0; + Real64 SurfTilt = 0.0; Vectors::DetermineAzimuthAndTilt(DataSurfaces::Surface(SurfNum).NewVertex, DataSurfaces::Surface(SurfNum).Sides, SurfWorldAz, SurfTilt, DataSurfaces::Surface(SurfNum).lcsx, DataSurfaces::Surface(SurfNum).lcsy, DataSurfaces::Surface(SurfNum).lcsz, DataSurfaces::Surface(SurfNum).GrossArea, DataSurfaces::Surface(SurfNum).NewellSurfaceNormalVector); - DataSurfaces::Surface( SurfNum ).Azimuth = SurfWorldAz; - DataSurfaces::Surface( SurfNum ).SinAzim = std::sin( SurfWorldAz * DegToRadians ); - DataSurfaces::Surface( SurfNum ).CosAzim = std::cos( SurfWorldAz * DegToRadians ); - DataSurfaces::Surface( SurfNum ).OutNormVec = DataSurfaces::Surface( SurfNum ).NewellSurfaceNormalVector; - } - } - } + DataSurfaces::Surface(SurfNum).Azimuth = SurfWorldAz; + DataSurfaces::Surface(SurfNum).SinAzim = std::sin(SurfWorldAz * DegToRadians); + DataSurfaces::Surface(SurfNum).CosAzim = std::cos(SurfWorldAz * DegToRadians); + DataSurfaces::Surface(SurfNum).OutNormVec = DataSurfaces::Surface(SurfNum).NewellSurfaceNormalVector; + } + } + } void GetNextEnvironment(bool &Available, // true if there is another environment, false if the end - bool & ErrorsFound // will be set to true if severe errors are found in inputs - ) - { - - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN August 2000 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // This subroutine is called from the outer simulation manager and determines - // if another environment is available in the "run list" or if the end has been - // reached. - - // Using/Aliasing + bool &ErrorsFound // will be set to true if severe errors are found in inputs + ) + { + + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN August 2000 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // This subroutine is called from the outer simulation manager and determines + // if another environment is available in the "run list" or if the end has been + // reached. + + // Using/Aliasing using General::BetweenDates; - using General::InvJulianDay; - using General::JulianDay; - using namespace DataSystemVariables; - using DataHeatBalance::AdaptiveComfortRequested_ASH55; - using DataHeatBalance::AdaptiveComfortRequested_CEN15251; - using ThermalComfort::CalcThermalComfortAdaptiveASH55; - using ThermalComfort::CalcThermalComfortAdaptiveCEN15251; - - // SUBROUTINE PARAMETER DEFINITIONS: - static std::string const RoutineName( "GetNextEnvironment: " ); + using General::InvJulianDay; + using General::JulianDay; + using namespace DataSystemVariables; + using DataHeatBalance::AdaptiveComfortRequested_ASH55; + using DataHeatBalance::AdaptiveComfortRequested_CEN15251; + using ThermalComfort::CalcThermalComfortAdaptiveASH55; + using ThermalComfort::CalcThermalComfortAdaptiveCEN15251; + + // SUBROUTINE PARAMETER DEFINITIONS: + static std::string const RoutineName("GetNextEnvironment: "); static gio::Fmt EnvironFormat("('! ,Environment Name,Environment Type, Start Date, End Date,', ' Start DayOfWeek, Duration " "{#days}, Source:Start DayOfWeek, ', ' Use Daylight Saving, Use Holidays, Apply Weekend Holiday Rule, " "', ' Use Rain Values, Use Snow Values',/, '! , " "Special Day Name, Special Day Type, Source, ', 'Start Date, Duration {#days}',/, " " '! , Daylight Saving Indicator, Source,', ' Start Date, End " "Date',/, '! , NumberofWarmupDays')"); - static gio::Fmt EnvNameFormat( "('Environment',12(',',A))" ); - static gio::Fmt EnvDSTNFormat( "('Environment:Daylight Saving,No,',A)" ); - static gio::Fmt EnvDSTYFormat( "('Environment:Daylight Saving,Yes',3(',',A))" ); - static gio::Fmt EnvSpDyFormat( "('Environment:Special Days',4(',',A),',',I3)" ); - static gio::Fmt DateFormat( "(I2.2,'/',I2.2)" ); - static gio::Fmt DateFormatwithYear( "(I2.2,'/',I2.2,'/',I4.4)" ); - static Array1D_string const SpecialDayNames( 5, { "Holiday", "SummerDesignDay", "WinterDesignDay", "CustomDay1", "CustomDay2" } ); + static gio::Fmt EnvNameFormat("('Environment',12(',',A))"); + static gio::Fmt EnvDSTNFormat("('Environment:Daylight Saving,No,',A)"); + static gio::Fmt EnvDSTYFormat("('Environment:Daylight Saving,Yes',3(',',A))"); + static gio::Fmt EnvSpDyFormat("('Environment:Special Days',4(',',A),',',I3)"); + static gio::Fmt DateFormat("(I2.2,'/',I2.2)"); + static gio::Fmt DateFormatwithYear("(I2.2,'/',I2.2,'/',I4.4)"); + static Array1D_string const SpecialDayNames(5, {"Holiday", "SummerDesignDay", "WinterDesignDay", "CustomDay1", "CustomDay2"}); static Array1D_string const ValidDayNames(12, {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Holiday", "SummerDesignDay", "WinterDesignDay", "CustomDay1", "CustomDay2"}); - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - //////////// hoisted into namespace changed to GetBranchInputOneTimeFlag//////////// - // static bool GetInputFlag( true ); // Set to true before execution starts changed to GetEnvironmentInputOneTimeFlag - // static bool FirstCall( true ); // changed to GetEnvironmentFirstCall - //static bool PrntEnvHeaders( true ); - //////////////////////////////////////////////// - int Loop; - std::string StDate; - std::string EnDate; - std::string string; - std::string cTotalEnvDays; - int NumDays; - int DSTActStMon; - int DSTActStDay; - int DSTActEnMon; - int DSTActEnDay; - int RunStJDay; - int RunEnJDay; - bool OkRun; - int ThisWeekDay; - int TWeekDay; - Array1D_int MonWeekDay( 12 ); - Array1D_int ActEndDayOfMonth( 12 ); - int JDay5Start; - int JDay5End; - std::string Source; - std::string ApWkRule; - std::string AlpUseDST; - std::string AlpUseSpec; - std::string AlpUseRain; - std::string AlpUseSnow; - std::string kindOfRunPeriod; - Real64 GrossApproxAvgDryBulb; - - if ( BeginSimFlag && GetEnvironmentFirstCall ) { - - PrintEndDataDictionary = true; - - ReportOutputFileHeaders(); // Write the output file header information - - // SetupOutputVariables, CurrentModuleObject='All Simulations' - - SetupOutputVariable( "Site Outdoor Air Drybulb Temperature", OutputProcessor::Unit::C, OutDryBulbTemp, "Zone", "Average", "Environment" ); - SetupOutputVariable( "Site Outdoor Air Dewpoint Temperature", OutputProcessor::Unit::C, OutDewPointTemp, "Zone", "Average", "Environment" ); - SetupOutputVariable( "Site Outdoor Air Wetbulb Temperature", OutputProcessor::Unit::C, OutWetBulbTemp, "Zone", "Average", "Environment" ); + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + //////////// hoisted into namespace changed to GetBranchInputOneTimeFlag//////////// + // static bool GetInputFlag( true ); // Set to true before execution starts changed to GetEnvironmentInputOneTimeFlag + // static bool FirstCall( true ); // changed to GetEnvironmentFirstCall + // static bool PrntEnvHeaders( true ); + //////////////////////////////////////////////// + int Loop; + std::string StDate; + std::string EnDate; + std::string string; + std::string cTotalEnvDays; + int NumDays; + int DSTActStMon; + int DSTActStDay; + int DSTActEnMon; + int DSTActEnDay; + int RunStJDay; + int RunEnJDay; + bool OkRun; + int ThisWeekDay; + int TWeekDay; + Array1D_int MonWeekDay(12); + Array1D_int ActEndDayOfMonth(12); + int JDay5Start; + int JDay5End; + std::string Source; + std::string ApWkRule; + std::string AlpUseDST; + std::string AlpUseSpec; + std::string AlpUseRain; + std::string AlpUseSnow; + std::string kindOfRunPeriod; + Real64 GrossApproxAvgDryBulb; + + if (BeginSimFlag && GetEnvironmentFirstCall) { + + PrintEndDataDictionary = true; + + ReportOutputFileHeaders(); // Write the output file header information + + // SetupOutputVariables, CurrentModuleObject='All Simulations' + + SetupOutputVariable("Site Outdoor Air Drybulb Temperature", OutputProcessor::Unit::C, OutDryBulbTemp, "Zone", "Average", "Environment"); + SetupOutputVariable("Site Outdoor Air Dewpoint Temperature", OutputProcessor::Unit::C, OutDewPointTemp, "Zone", "Average", "Environment"); + SetupOutputVariable("Site Outdoor Air Wetbulb Temperature", OutputProcessor::Unit::C, OutWetBulbTemp, "Zone", "Average", "Environment"); SetupOutputVariable("Site Outdoor Air Humidity Ratio", OutputProcessor::Unit::kgWater_kgDryAir, OutHumRat, "Zone", "Average", "Environment"); - SetupOutputVariable( "Site Outdoor Air Relative Humidity", OutputProcessor::Unit::Perc, OutRelHum, "Zone", "Average", "Environment" ); - SetupOutputVariable( "Site Outdoor Air Barometric Pressure", OutputProcessor::Unit::Pa, OutBaroPress, "Zone", "Average", "Environment" ); - SetupOutputVariable( "Site Wind Speed", OutputProcessor::Unit::m_s, WindSpeed, "Zone", "Average", "Environment" ); - SetupOutputVariable( "Site Wind Direction", OutputProcessor::Unit::deg, WindDir, "Zone", "Average", "Environment" ); - SetupOutputVariable( "Site Sky Temperature", OutputProcessor::Unit::C, SkyTemp, "Zone", "Average", "Environment" ); + SetupOutputVariable("Site Outdoor Air Relative Humidity", OutputProcessor::Unit::Perc, OutRelHum, "Zone", "Average", "Environment"); + SetupOutputVariable("Site Outdoor Air Barometric Pressure", OutputProcessor::Unit::Pa, OutBaroPress, "Zone", "Average", "Environment"); + SetupOutputVariable("Site Wind Speed", OutputProcessor::Unit::m_s, WindSpeed, "Zone", "Average", "Environment"); + SetupOutputVariable("Site Wind Direction", OutputProcessor::Unit::deg, WindDir, "Zone", "Average", "Environment"); + SetupOutputVariable("Site Sky Temperature", OutputProcessor::Unit::C, SkyTemp, "Zone", "Average", "Environment"); SetupOutputVariable("Site Horizontal Infrared Radiation Rate per Area", OutputProcessor::Unit::W_m2, HorizIRSky, "Zone", "Average", "Environment"); SetupOutputVariable("Site Diffuse Solar Radiation Rate per Area", OutputProcessor::Unit::W_m2, DifSolarRad, "Zone", "Average", "Environment"); SetupOutputVariable("Site Direct Solar Radiation Rate per Area", OutputProcessor::Unit::W_m2, BeamSolarRad, "Zone", "Average", "Environment"); - SetupOutputVariable( "Site Precipitation Depth", OutputProcessor::Unit::m, LiquidPrecipitation, "Zone", "Sum", "Environment" ); + SetupOutputVariable("Site Precipitation Depth", OutputProcessor::Unit::m, LiquidPrecipitation, "Zone", "Sum", "Environment"); SetupOutputVariable("Site Ground Reflected Solar Radiation Rate per Area", OutputProcessor::Unit::W_m2, GndSolarRad, "Zone", "Average", "Environment"); - SetupOutputVariable( "Site Ground Temperature", OutputProcessor::Unit::C, GroundTemp, "Zone", "Average", "Environment" ); - SetupOutputVariable( "Site Surface Ground Temperature", OutputProcessor::Unit::C, GroundTemp_Surface, "Zone", "Average", "Environment" ); - SetupOutputVariable( "Site Deep Ground Temperature", OutputProcessor::Unit::C, GroundTemp_Deep, "Zone", "Average", "Environment" ); + SetupOutputVariable("Site Ground Temperature", OutputProcessor::Unit::C, GroundTemp, "Zone", "Average", "Environment"); + SetupOutputVariable("Site Surface Ground Temperature", OutputProcessor::Unit::C, GroundTemp_Surface, "Zone", "Average", "Environment"); + SetupOutputVariable("Site Deep Ground Temperature", OutputProcessor::Unit::C, GroundTemp_Deep, "Zone", "Average", "Environment"); SetupOutputVariable("Site Simple Factor Model Ground Temperature", OutputProcessor::Unit::C, GroundTempFC, "Zone", "Average", "Environment"); - SetupOutputVariable( "Site Outdoor Air Enthalpy", OutputProcessor::Unit::J_kg, OutEnthalpy, "Zone", "Average", "Environment" ); - SetupOutputVariable( "Site Outdoor Air Density", OutputProcessor::Unit::kg_m3, OutAirDensity, "Zone", "Average", "Environment" ); - SetupOutputVariable( "Site Solar Azimuth Angle", OutputProcessor::Unit::deg, SolarAzimuthAngle, "Zone", "Average", "Environment" ); - SetupOutputVariable( "Site Solar Altitude Angle", OutputProcessor::Unit::deg, SolarAltitudeAngle, "Zone", "Average", "Environment" ); - SetupOutputVariable( "Site Solar Hour Angle", OutputProcessor::Unit::deg, HrAngle, "Zone", "Average", "Environment" ); - SetupOutputVariable( "Site Rain Status", OutputProcessor::Unit::None, RptIsRain, "Zone", "Average", "Environment" ); - SetupOutputVariable( "Site Snow on Ground Status", OutputProcessor::Unit::None, RptIsSnow, "Zone", "Average", "Environment" ); - SetupOutputVariable( "Site Exterior Horizontal Sky Illuminance", OutputProcessor::Unit::lux, HISKF, "Zone", "Average", "Environment" ); - SetupOutputVariable( "Site Exterior Horizontal Beam Illuminance", OutputProcessor::Unit::lux, HISUNF, "Zone", "Average", "Environment" ); - SetupOutputVariable( "Site Exterior Beam Normal Illuminance", OutputProcessor::Unit::lux, HISUNFnorm, "Zone", "Average", "Environment" ); + SetupOutputVariable("Site Outdoor Air Enthalpy", OutputProcessor::Unit::J_kg, OutEnthalpy, "Zone", "Average", "Environment"); + SetupOutputVariable("Site Outdoor Air Density", OutputProcessor::Unit::kg_m3, OutAirDensity, "Zone", "Average", "Environment"); + SetupOutputVariable("Site Solar Azimuth Angle", OutputProcessor::Unit::deg, SolarAzimuthAngle, "Zone", "Average", "Environment"); + SetupOutputVariable("Site Solar Altitude Angle", OutputProcessor::Unit::deg, SolarAltitudeAngle, "Zone", "Average", "Environment"); + SetupOutputVariable("Site Solar Hour Angle", OutputProcessor::Unit::deg, HrAngle, "Zone", "Average", "Environment"); + SetupOutputVariable("Site Rain Status", OutputProcessor::Unit::None, RptIsRain, "Zone", "Average", "Environment"); + SetupOutputVariable("Site Snow on Ground Status", OutputProcessor::Unit::None, RptIsSnow, "Zone", "Average", "Environment"); + SetupOutputVariable("Site Exterior Horizontal Sky Illuminance", OutputProcessor::Unit::lux, HISKF, "Zone", "Average", "Environment"); + SetupOutputVariable("Site Exterior Horizontal Beam Illuminance", OutputProcessor::Unit::lux, HISUNF, "Zone", "Average", "Environment"); + SetupOutputVariable("Site Exterior Beam Normal Illuminance", OutputProcessor::Unit::lux, HISUNFnorm, "Zone", "Average", "Environment"); SetupOutputVariable("Site Sky Diffuse Solar Radiation Luminous Efficacy", OutputProcessor::Unit::lum_W, PDIFLW, "Zone", "Average", "Environment"); SetupOutputVariable("Site Beam Solar Radiation Luminous Efficacy", OutputProcessor::Unit::lum_W, PDIRLW, "Zone", "Average", "Environment"); - SetupOutputVariable( "Site Daylighting Model Sky Clearness", OutputProcessor::Unit::None, SkyClearness, "Zone", "Average", "Environment" ); + SetupOutputVariable("Site Daylighting Model Sky Clearness", OutputProcessor::Unit::None, SkyClearness, "Zone", "Average", "Environment"); SetupOutputVariable("Site Daylighting Model Sky Brightness", OutputProcessor::Unit::None, SkyBrightness, "Zone", "Average", "Environment"); - SetupOutputVariable( "Site Daylight Saving Time Status", OutputProcessor::Unit::None, DSTIndicator, "Zone", "State", "Environment" ); - SetupOutputVariable( "Site Day Type Index", OutputProcessor::Unit::None, RptDayType, "Zone", "State", "Environment" ); - SetupOutputVariable( "Site Mains Water Temperature", OutputProcessor::Unit::C, WaterMainsTemp, "Zone", "Average", "Environment" ); + SetupOutputVariable("Site Daylight Saving Time Status", OutputProcessor::Unit::None, DSTIndicator, "Zone", "State", "Environment"); + SetupOutputVariable("Site Day Type Index", OutputProcessor::Unit::None, RptDayType, "Zone", "State", "Environment"); + SetupOutputVariable("Site Mains Water Temperature", OutputProcessor::Unit::C, WaterMainsTemp, "Zone", "Average", "Environment"); - if ( AnyEnergyManagementSystemInModel ) { - SetupEMSActuator( "Weather Data", "Environment", "Outdoor Dry Bulb", "[C]", EMSOutDryBulbOverrideOn, EMSOutDryBulbOverrideValue ); + if (AnyEnergyManagementSystemInModel) { + SetupEMSActuator("Weather Data", "Environment", "Outdoor Dry Bulb", "[C]", EMSOutDryBulbOverrideOn, EMSOutDryBulbOverrideValue); SetupEMSActuator("Weather Data", "Environment", "Outdoor Dew Point", "[C]", EMSOutDewPointTempOverrideOn, EMSOutDewPointTempOverrideValue); SetupEMSActuator("Weather Data", "Environment", "Outdoor Relative Humidity", "[%]", EMSOutRelHumOverrideOn, EMSOutRelHumOverrideValue); - SetupEMSActuator( "Weather Data", "Environment", "Diffuse Solar", "[W/m2]", EMSDifSolarRadOverrideOn, EMSDifSolarRadOverrideValue ); - SetupEMSActuator( "Weather Data", "Environment", "Direct Solar", "[W/m2]", EMSBeamSolarRadOverrideOn, EMSBeamSolarRadOverrideValue ); - SetupEMSActuator( "Weather Data", "Environment", "Wind Speed", "[m/s]", EMSWindSpeedOverrideOn, EMSWindSpeedOverrideValue ); - SetupEMSActuator( "Weather Data", "Environment", "Wind Direction", "[deg]", EMSWindDirOverrideOn, EMSWindDirOverrideValue ); - } - - GetEnvironmentFirstCall = false; - - } // ... end of BeginSimFlag IF-THEN block. - - if ( GetBranchInputOneTimeFlag ) { - - SetupInterpolationValues(); - TimeStepFraction = 1.0 / double( NumOfTimeStepInHour ); - rhoAirSTP = Psychrometrics::PsyRhoAirFnPbTdbW( StdPressureSeaLevel, constant_twenty, constant_zero ); - OpenWeatherFile( ErrorsFound ); // moved here because of possibility of special days on EPW file - CloseWeatherFile(); - ReadUserWeatherInput(); - AllocateWeatherData(); - if ( NumIntervalsPerHour != 1 ) { - if ( NumIntervalsPerHour != NumOfTimeStepInHour ) { + SetupEMSActuator("Weather Data", "Environment", "Diffuse Solar", "[W/m2]", EMSDifSolarRadOverrideOn, EMSDifSolarRadOverrideValue); + SetupEMSActuator("Weather Data", "Environment", "Direct Solar", "[W/m2]", EMSBeamSolarRadOverrideOn, EMSBeamSolarRadOverrideValue); + SetupEMSActuator("Weather Data", "Environment", "Wind Speed", "[m/s]", EMSWindSpeedOverrideOn, EMSWindSpeedOverrideValue); + SetupEMSActuator("Weather Data", "Environment", "Wind Direction", "[deg]", EMSWindDirOverrideOn, EMSWindDirOverrideValue); + } + + GetEnvironmentFirstCall = false; + + } // ... end of BeginSimFlag IF-THEN block. + + if (GetBranchInputOneTimeFlag) { + + SetupInterpolationValues(); + TimeStepFraction = 1.0 / double(NumOfTimeStepInHour); + rhoAirSTP = Psychrometrics::PsyRhoAirFnPbTdbW(StdPressureSeaLevel, constant_twenty, constant_zero); + OpenWeatherFile(ErrorsFound); // moved here because of possibility of special days on EPW file + CloseWeatherFile(); + ReadUserWeatherInput(); + AllocateWeatherData(); + if (NumIntervalsPerHour != 1) { + if (NumIntervalsPerHour != NumOfTimeStepInHour) { ShowSevereError(RoutineName + "Number of intervals per hour on Weather file does not match specified number of Time Steps Per Hour"); - ErrorsFound = true; - } - } - GetBranchInputOneTimeFlag = false; - Envrn = 0; - if ( NumOfEnvrn > 0 ) { - ResolveLocationInformation( ErrorsFound ); // Obtain weather related info from input file - CheckLocationValidity(); - if ( ( Environment( NumOfEnvrn ).KindOfEnvrn != ksDesignDay ) && ( Environment( NumOfEnvrn ).KindOfEnvrn != ksHVACSizeDesignDay ) ) { - CheckWeatherFileValidity(); - } - if ( ErrorsFound ) { - ShowSevereError( RoutineName + "No location specified, program will terminate." ); - } - } else { - ErrorsFound = true; - ShowSevereError( RoutineName + "No Design Days or Run Period(s) specified, program will terminate." ); - } - if ( DDOnly && TotDesDays == 0 ) { - ErrorsFound = true; - ShowSevereError( RoutineName + "Requested Design Days only (DDOnly) but no Design Days specified, program will terminate." ); - } - if ( ReverseDD && TotDesDays == 1 ) { - ErrorsFound = true; - ShowSevereError( RoutineName + "Requested Reverse Design Days (ReverseDD) but only 1 Design Day specified, program will terminate." ); - } - CurrentOverallSimDay = 0; - TotalOverallSimDays = 0; - MaxNumberSimYears = 1; - for ( Loop = 1; Loop <= NumOfEnvrn; ++Loop ) { - TotalOverallSimDays += Environment( Loop ).TotalDays; - if ( Environment( Loop ).KindOfEnvrn == ksRunPeriodWeather ) { - MaxNumberSimYears = max( MaxNumberSimYears, Environment( Loop ).NumSimYears ); - } - } - DisplaySimDaysProgress( CurrentOverallSimDay, TotalOverallSimDays ); - } - - CloseWeatherFile(); // will only close if opened. - ++Envrn; - DatesShouldBeReset = false; - if ( Envrn > NumOfEnvrn ) { - Available = false; - Envrn = 0; - CurEnvirNum = 0; - } else { - KindOfSim = Environment( Envrn ).KindOfEnvrn; - DayOfYear = Environment( Envrn ).StartJDay; - DayOfMonth = Environment( Envrn ).StartDay; - DataGlobals::CalendarYear = Environment( Envrn ).StartYear; - DataGlobals::CalendarYearChr = std::to_string( DataGlobals::CalendarYear ); - Month = Environment( Envrn ).StartMonth; - NumOfDayInEnvrn = Environment( Envrn ).TotalDays; // Set day loop maximum from DataGlobals - if ( ! DoingSizing && ! KickOffSimulation ) { - if ( AdaptiveComfortRequested_ASH55 || AdaptiveComfortRequested_CEN15251 ) { - if ( KindOfSim == ksDesignDay ) { - if ( DoDesDaySim ) { - ShowWarningError( RoutineName + "Adaptive Comfort being reported during design day." ); + ErrorsFound = true; + } + } + GetBranchInputOneTimeFlag = false; + Envrn = 0; + if (NumOfEnvrn > 0) { + ResolveLocationInformation(ErrorsFound); // Obtain weather related info from input file + CheckLocationValidity(); + if ((Environment(NumOfEnvrn).KindOfEnvrn != ksDesignDay) && (Environment(NumOfEnvrn).KindOfEnvrn != ksHVACSizeDesignDay)) { + CheckWeatherFileValidity(); + } + if (ErrorsFound) { + ShowSevereError(RoutineName + "No location specified, program will terminate."); + } + } else { + ErrorsFound = true; + ShowSevereError(RoutineName + "No Design Days or Run Period(s) specified, program will terminate."); + } + if (DDOnly && TotDesDays == 0) { + ErrorsFound = true; + ShowSevereError(RoutineName + "Requested Design Days only (DDOnly) but no Design Days specified, program will terminate."); + } + if (ReverseDD && TotDesDays == 1) { + ErrorsFound = true; + ShowSevereError(RoutineName + "Requested Reverse Design Days (ReverseDD) but only 1 Design Day specified, program will terminate."); + } + CurrentOverallSimDay = 0; + TotalOverallSimDays = 0; + MaxNumberSimYears = 1; + for (Loop = 1; Loop <= NumOfEnvrn; ++Loop) { + TotalOverallSimDays += Environment(Loop).TotalDays; + if (Environment(Loop).KindOfEnvrn == ksRunPeriodWeather) { + MaxNumberSimYears = max(MaxNumberSimYears, Environment(Loop).NumSimYears); + } + } + DisplaySimDaysProgress(CurrentOverallSimDay, TotalOverallSimDays); + } + + CloseWeatherFile(); // will only close if opened. + ++Envrn; + DatesShouldBeReset = false; + if (Envrn > NumOfEnvrn) { + Available = false; + Envrn = 0; + CurEnvirNum = 0; + } else { + KindOfSim = Environment(Envrn).KindOfEnvrn; + DayOfYear = Environment(Envrn).StartJDay; + DayOfMonth = Environment(Envrn).StartDay; + DataGlobals::CalendarYear = Environment(Envrn).StartYear; + DataGlobals::CalendarYearChr = std::to_string(DataGlobals::CalendarYear); + Month = Environment(Envrn).StartMonth; + NumOfDayInEnvrn = Environment(Envrn).TotalDays; // Set day loop maximum from DataGlobals + if (!DoingSizing && !KickOffSimulation) { + if (AdaptiveComfortRequested_ASH55 || AdaptiveComfortRequested_CEN15251) { + if (KindOfSim == ksDesignDay) { + if (DoDesDaySim) { + ShowWarningError(RoutineName + "Adaptive Comfort being reported during design day."); GrossApproxAvgDryBulb = (DesDayInput(Envrn).MaxDryBulb + (DesDayInput(Envrn).MaxDryBulb - DesDayInput(Envrn).DailyDBRange)) / 2.0; - if ( AdaptiveComfortRequested_ASH55 ) CalcThermalComfortAdaptiveASH55( true, false, GrossApproxAvgDryBulb ); - if ( AdaptiveComfortRequested_CEN15251 ) CalcThermalComfortAdaptiveCEN15251( true, false, GrossApproxAvgDryBulb ); - } - } else { - if ( DoWeathSim || DoDesDaySim ) { - if ( AdaptiveComfortRequested_ASH55 ) CalcThermalComfortAdaptiveASH55( true, true, 0.0 ); - if ( AdaptiveComfortRequested_CEN15251 ) CalcThermalComfortAdaptiveCEN15251( true, true, 0.0 ); - } - } - } - } - if ( Envrn > TotDesDays && WeatherFileExists ) { - OpenEPlusWeatherFile( ErrorsFound, false ); - } - Available = true; - if ( ( KindOfSim == ksRunPeriodWeather ) && ( ! WeatherFileExists && DoWeathSim ) ) { - if ( ! DoingSizing && ! KickOffSimulation ) { - ShowSevereError( "Weather Simulation requested, but no weather file attached." ); - ErrorsFound = true; - } - if ( ! DoingHVACSizingSimulations) Envrn = 0; - Available = false; - } else if ( ( KindOfSim == ksRunPeriodWeather ) && ( ! WeatherFileExists && ! DoWeathSim ) ) { - Available = false; - if ( ! DoingHVACSizingSimulations) Envrn = 0; - } else if ( ( KindOfSim == ksRunPeriodWeather ) && DoingSizing ) { - Available = false; - Envrn = 0; - } - - if ( ! ErrorsFound && Available && Envrn > 0 ) { - EnvironmentName = Environment( Envrn ).Title; - CurEnvirNum = Envrn; - RunPeriodStartDayOfWeek = 0; - if ( ( DoDesDaySim && ( KindOfSim != ksRunPeriodWeather ) ) || ( ( KindOfSim == ksRunPeriodWeather ) && DoWeathSim ) ) { - if ( PrntEnvHeaders && DoWeatherInitReporting ) { - gio::write( OutputFileInits, EnvironFormat ); - PrntEnvHeaders = false; - } + if (AdaptiveComfortRequested_ASH55) CalcThermalComfortAdaptiveASH55(true, false, GrossApproxAvgDryBulb); + if (AdaptiveComfortRequested_CEN15251) CalcThermalComfortAdaptiveCEN15251(true, false, GrossApproxAvgDryBulb); + } + } else { + if (DoWeathSim || DoDesDaySim) { + if (AdaptiveComfortRequested_ASH55) CalcThermalComfortAdaptiveASH55(true, true, 0.0); + if (AdaptiveComfortRequested_CEN15251) CalcThermalComfortAdaptiveCEN15251(true, true, 0.0); + } + } + } + } + if (Envrn > TotDesDays && WeatherFileExists) { + OpenEPlusWeatherFile(ErrorsFound, false); + } + Available = true; + if ((KindOfSim == ksRunPeriodWeather) && (!WeatherFileExists && DoWeathSim)) { + if (!DoingSizing && !KickOffSimulation) { + ShowSevereError("Weather Simulation requested, but no weather file attached."); + ErrorsFound = true; + } + if (!DoingHVACSizingSimulations) Envrn = 0; + Available = false; + } else if ((KindOfSim == ksRunPeriodWeather) && (!WeatherFileExists && !DoWeathSim)) { + Available = false; + if (!DoingHVACSizingSimulations) Envrn = 0; + } else if ((KindOfSim == ksRunPeriodWeather) && DoingSizing) { + Available = false; + Envrn = 0; + } + + if (!ErrorsFound && Available && Envrn > 0) { + EnvironmentName = Environment(Envrn).Title; + CurEnvirNum = Envrn; + RunPeriodStartDayOfWeek = 0; + if ((DoDesDaySim && (KindOfSim != ksRunPeriodWeather)) || ((KindOfSim == ksRunPeriodWeather) && DoWeathSim)) { + if (PrntEnvHeaders && DoWeatherInitReporting) { + gio::write(OutputFileInits, EnvironFormat); + PrntEnvHeaders = false; + } { auto const SELECT_CASE_var(KindOfSim); - if ( ( SELECT_CASE_var == ksRunPeriodWeather ) || ( SELECT_CASE_var == ksRunPeriodDesign ) ) { - kindOfRunPeriod = Environment( Envrn ).cKindOfEnvrn; - if ( KindOfSim == ksRunPeriodWeather ) { - RunPeriodEnvironment = true; - } else { - RunPeriodEnvironment = false; - } - ActEndDayOfMonth = EndDayOfMonth; - CurrentYearIsLeapYear = Environment( Envrn ).IsLeapYear; - if ( CurrentYearIsLeapYear && WFAllowsLeapYears ) { - LeapYearAdd = 1; - } else { - LeapYearAdd = 0; - } - if ( CurrentYearIsLeapYear ) { - ActEndDayOfMonth( 2 ) = EndDayOfMonth( 2 ) + LeapYearAdd; - } - UseDaylightSaving = Environment( Envrn ).UseDST; - UseSpecialDays = Environment( Envrn ).UseHolidays; - UseRainValues = Environment( Envrn ).UseRain; - UseSnowValues = Environment( Envrn ).UseSnow; - - OkRun = false; - ThisWeekDay = 0; - for ( Loop = 1; Loop <= NumDataPeriods; ++Loop ) { - if ( ! Environment( Envrn ).ActualWeather ) { - RunStJDay = JulianDay( DataPeriods( Loop ).StMon, DataPeriods( Loop ).StDay, LeapYearAdd ); - RunEnJDay = JulianDay( DataPeriods( Loop ).EnMon, DataPeriods( Loop ).EnDay, LeapYearAdd ); - if ( ! BetweenDates( Environment( Envrn ).StartJDay, RunStJDay, RunEnJDay ) ) continue; - if ( ! BetweenDates( Environment( Envrn ).EndJDay, RunStJDay, RunEnJDay ) ) continue; - OkRun = true; - if ( RunStJDay > Environment( Envrn ).StartJDay ) { - NumDays = RunStJDay - Environment( Envrn ).StartJDay; - } else { - NumDays = Environment( Envrn ).StartJDay - RunStJDay; - } - ThisWeekDay = mod( DataPeriods( Loop ).WeekDay + NumDays - 1, 7 ) + 1; - break; - } else { // Actual Weather - RunStJDay = DataPeriods( Loop ).DataStJDay; - RunEnJDay = DataPeriods( Loop ).DataEnJDay; - if ( ! DataPeriods( Loop ).HasYearData ) { - ShowSevereError( "GetNextEnvironment: Runperiod has been entered but weatherfile DATA PERIOD does not have year included in start/end date." ); - ShowContinueError( "...to match the RunPeriod, the DATA PERIOD should be mm/dd/yyyy for both." ); - } - if ( ! BetweenDates( Environment( Envrn ).StartDate, RunStJDay, RunEnJDay ) ) continue; - if ( ! BetweenDates( Environment( Envrn ).EndDate, RunStJDay, RunEnJDay ) ) continue; - OkRun = true; - if ( RunStJDay > Environment( Envrn ).StartDate ) { - NumDays = RunStJDay - Environment( Envrn ).StartDate; - } else { - NumDays = Environment( Envrn ).StartDate - RunStJDay; - } - ThisWeekDay = mod( DataPeriods( Loop ).WeekDay + NumDays - 1, 7 ) + 1; - break; - } - } - - if ( ! OkRun ) { - if ( ! Environment( Envrn ).ActualWeather ) { - gio::write( StDate, DateFormat ) << Environment( Envrn ).StartMonth << Environment( Envrn ).StartDay; - gio::write( EnDate, DateFormat ) << Environment( Envrn ).EndMonth << Environment( Envrn ).EndDay; + if ((SELECT_CASE_var == ksRunPeriodWeather) || (SELECT_CASE_var == ksRunPeriodDesign)) { + kindOfRunPeriod = Environment(Envrn).cKindOfEnvrn; + if (KindOfSim == ksRunPeriodWeather) { + RunPeriodEnvironment = true; + } else { + RunPeriodEnvironment = false; + } + ActEndDayOfMonth = EndDayOfMonth; + CurrentYearIsLeapYear = Environment(Envrn).IsLeapYear; + if (CurrentYearIsLeapYear && WFAllowsLeapYears) { + LeapYearAdd = 1; + } else { + LeapYearAdd = 0; + } + if (CurrentYearIsLeapYear) { + ActEndDayOfMonth(2) = EndDayOfMonth(2) + LeapYearAdd; + } + UseDaylightSaving = Environment(Envrn).UseDST; + UseSpecialDays = Environment(Envrn).UseHolidays; + UseRainValues = Environment(Envrn).UseRain; + UseSnowValues = Environment(Envrn).UseSnow; + + OkRun = false; + ThisWeekDay = 0; + for (Loop = 1; Loop <= NumDataPeriods; ++Loop) { + if (!Environment(Envrn).ActualWeather) { + RunStJDay = JulianDay(DataPeriods(Loop).StMon, DataPeriods(Loop).StDay, LeapYearAdd); + RunEnJDay = JulianDay(DataPeriods(Loop).EnMon, DataPeriods(Loop).EnDay, LeapYearAdd); + if (!BetweenDates(Environment(Envrn).StartJDay, RunStJDay, RunEnJDay)) continue; + if (!BetweenDates(Environment(Envrn).EndJDay, RunStJDay, RunEnJDay)) continue; + OkRun = true; + if (RunStJDay > Environment(Envrn).StartJDay) { + NumDays = RunStJDay - Environment(Envrn).StartJDay; + } else { + NumDays = Environment(Envrn).StartJDay - RunStJDay; + } + ThisWeekDay = mod(DataPeriods(Loop).WeekDay + NumDays - 1, 7) + 1; + break; + } else { // Actual Weather + RunStJDay = DataPeriods(Loop).DataStJDay; + RunEnJDay = DataPeriods(Loop).DataEnJDay; + if (!DataPeriods(Loop).HasYearData) { + ShowSevereError("GetNextEnvironment: Runperiod has been entered but weatherfile DATA PERIOD does not have " + "year included in start/end date."); + ShowContinueError("...to match the RunPeriod, the DATA PERIOD should be mm/dd/yyyy for both."); + } + if (!BetweenDates(Environment(Envrn).StartDate, RunStJDay, RunEnJDay)) continue; + if (!BetweenDates(Environment(Envrn).EndDate, RunStJDay, RunEnJDay)) continue; + OkRun = true; + if (RunStJDay > Environment(Envrn).StartDate) { + NumDays = RunStJDay - Environment(Envrn).StartDate; + } else { + NumDays = Environment(Envrn).StartDate - RunStJDay; + } + ThisWeekDay = mod(DataPeriods(Loop).WeekDay + NumDays - 1, 7) + 1; + break; + } + } + + if (!OkRun) { + if (!Environment(Envrn).ActualWeather) { + gio::write(StDate, DateFormat) << Environment(Envrn).StartMonth << Environment(Envrn).StartDay; + gio::write(EnDate, DateFormat) << Environment(Envrn).EndMonth << Environment(Envrn).EndDay; ShowSevereError(RoutineName + "Runperiod [mm/dd] (Start=" + StDate + ",End=" + EnDate + ") requested not within Data Period(s) from Weather File"); - } else { + } else { gio::write(StDate, DateFormatwithYear) << Environment(Envrn).StartMonth << Environment(Envrn).StartDay << Environment(Envrn).StartYear; gio::write(EnDate, DateFormatwithYear) << Environment(Envrn).EndMonth << Environment(Envrn).EndDay << Environment(Envrn).EndYear; ShowSevereError(RoutineName + "Runperiod [mm/dd/yyyy] (Start=" + StDate + ",End=" + EnDate + ") requested not within Data Period(s) from Weather File"); - } - gio::write( StDate, DateFormat ) << DataPeriods( 1 ).StMon << DataPeriods( 1 ).StDay; - gio::write( EnDate, DateFormat ) << DataPeriods( 1 ).EnMon << DataPeriods( 1 ).EnDay; - if ( DataPeriods( 1 ).StYear > 0 ) { - string = RoundSigDigits( DataPeriods( 1 ).StYear ); - StDate += "/" + string; - } else { - StDate += "/"; - } - if ( DataPeriods( 1 ).EnYear > 0 ) { - string = RoundSigDigits( DataPeriods( 1 ).EnYear ); - EnDate += "/" + string; - } else { - EnDate += "/"; - } - if ( NumDataPeriods == 1 ) { - ShowContinueError( "Weather Data Period (Start=" + StDate + ",End=" + EnDate + ')' ); - } else { - ShowContinueError( "Multiple Weather Data Periods 1st (Start=" + StDate + ",End=" + EnDate + ')' ); - } - ShowFatalError( RoutineName + "Program terminates due to preceding condition." ); - } - - // Following builds Environment start/end for ASHRAE 55 warnings - gio::write( StDate, DateFormat ) << Environment( Envrn ).StartMonth << Environment( Envrn ).StartDay; - gio::write( EnDate, DateFormat ) << Environment( Envrn ).EndMonth << Environment( Envrn ).EndDay; - if ( Environment( Envrn ).ActualWeather ) { - string = RoundSigDigits( Environment( Envrn ).StartYear ); - StDate += "/" + string; - string = RoundSigDigits( Environment( Envrn ).EndYear ); - EnDate += "/" + string; - } else if ( Environment( Envrn ).CurrentYear > 0 && Environment( Envrn ).TreatYearsAsConsecutive ) { - string = RoundSigDigits( Environment( Envrn ).CurrentYear ); - StDate += "/" + string; - string = RoundSigDigits( Environment( Envrn ).CurrentYear + Environment( Envrn ).NumSimYears ); - EnDate += "/" + string; - } - EnvironmentStartEnd = StDate + " - " + EnDate; - - if ( DoWeatherInitReporting ) { - if ( Environment( Envrn ).UseDST ) { - AlpUseDST = "Yes"; - } else { - AlpUseDST = "No"; - } - if ( Environment( Envrn ).UseHolidays ) { - AlpUseSpec = "Yes"; - } else { - AlpUseSpec = "No"; - } - if ( Environment( Envrn ).ApplyWeekendRule ) { - ApWkRule = "Yes"; - } else { - ApWkRule = "No"; - } - if ( Environment( Envrn ).UseRain ) { - AlpUseRain = "Yes"; - } else { - AlpUseRain = "No"; - } - if ( Environment( Envrn ).UseSnow ) { - AlpUseSnow = "Yes"; - } else { - AlpUseSnow = "No"; - } - cTotalEnvDays = RoundSigDigits( Environment( Envrn ).TotalDays ); - if ( Environment( Envrn ).DayOfWeek == 0 ) { // Uses Weather file start + } + gio::write(StDate, DateFormat) << DataPeriods(1).StMon << DataPeriods(1).StDay; + gio::write(EnDate, DateFormat) << DataPeriods(1).EnMon << DataPeriods(1).EnDay; + if (DataPeriods(1).StYear > 0) { + string = RoundSigDigits(DataPeriods(1).StYear); + StDate += "/" + string; + } else { + StDate += "/"; + } + if (DataPeriods(1).EnYear > 0) { + string = RoundSigDigits(DataPeriods(1).EnYear); + EnDate += "/" + string; + } else { + EnDate += "/"; + } + if (NumDataPeriods == 1) { + ShowContinueError("Weather Data Period (Start=" + StDate + ",End=" + EnDate + ')'); + } else { + ShowContinueError("Multiple Weather Data Periods 1st (Start=" + StDate + ",End=" + EnDate + ')'); + } + ShowFatalError(RoutineName + "Program terminates due to preceding condition."); + } + + // Following builds Environment start/end for ASHRAE 55 warnings + gio::write(StDate, DateFormat) << Environment(Envrn).StartMonth << Environment(Envrn).StartDay; + gio::write(EnDate, DateFormat) << Environment(Envrn).EndMonth << Environment(Envrn).EndDay; + if (Environment(Envrn).ActualWeather) { + string = RoundSigDigits(Environment(Envrn).StartYear); + StDate += "/" + string; + string = RoundSigDigits(Environment(Envrn).EndYear); + EnDate += "/" + string; + } else if (Environment(Envrn).CurrentYear > 0 && Environment(Envrn).TreatYearsAsConsecutive) { + string = RoundSigDigits(Environment(Envrn).CurrentYear); + StDate += "/" + string; + string = RoundSigDigits(Environment(Envrn).CurrentYear + Environment(Envrn).NumSimYears); + EnDate += "/" + string; + } + EnvironmentStartEnd = StDate + " - " + EnDate; + + if (DoWeatherInitReporting) { + if (Environment(Envrn).UseDST) { + AlpUseDST = "Yes"; + } else { + AlpUseDST = "No"; + } + if (Environment(Envrn).UseHolidays) { + AlpUseSpec = "Yes"; + } else { + AlpUseSpec = "No"; + } + if (Environment(Envrn).ApplyWeekendRule) { + ApWkRule = "Yes"; + } else { + ApWkRule = "No"; + } + if (Environment(Envrn).UseRain) { + AlpUseRain = "Yes"; + } else { + AlpUseRain = "No"; + } + if (Environment(Envrn).UseSnow) { + AlpUseSnow = "Yes"; + } else { + AlpUseSnow = "No"; + } + cTotalEnvDays = RoundSigDigits(Environment(Envrn).TotalDays); + if (Environment(Envrn).DayOfWeek == 0) { // Uses Weather file start gio::write(OutputFileInits, EnvNameFormat) << Environment(Envrn).Title << kindOfRunPeriod << StDate << EnDate << ValidDayNames(ThisWeekDay) << cTotalEnvDays << "UseWeatherFile" << AlpUseDST << AlpUseSpec << ApWkRule << AlpUseRain << AlpUseSnow; - TWeekDay = ThisWeekDay; - MonWeekDay = DataPeriods( Loop ).MonWeekDay; - } else { + TWeekDay = ThisWeekDay; + MonWeekDay = DataPeriods(Loop).MonWeekDay; + } else { gio::write(OutputFileInits, EnvNameFormat) << Environment(Envrn).Title << kindOfRunPeriod << StDate << EnDate << ValidDayNames(Environment(Envrn).DayOfWeek) << cTotalEnvDays << "Use RunPeriod Specified Day" << AlpUseDST << AlpUseSpec << ApWkRule << AlpUseRain << AlpUseSnow; - TWeekDay = Environment( Envrn ).DayOfWeek; - MonWeekDay = Environment( Envrn ).MonWeekDay; - } - } else { // just in case - if ( Environment( Envrn ).DayOfWeek == 0 ) { // Uses Weather file start - TWeekDay = ThisWeekDay; - MonWeekDay = DataPeriods( Loop ).MonWeekDay; - } else { - TWeekDay = Environment( Envrn ).DayOfWeek; - MonWeekDay = Environment( Envrn ).MonWeekDay; - } - } - - if ( ! DoingSizing && ! KickOffSimulation ) { - if ( ( KindOfSim == ksRunPeriodWeather && DoWeathSim ) ) { - if ( AdaptiveComfortRequested_ASH55 || AdaptiveComfortRequested_CEN15251 ) { - if ( WFAllowsLeapYears ) { + TWeekDay = Environment(Envrn).DayOfWeek; + MonWeekDay = Environment(Envrn).MonWeekDay; + } + } else { // just in case + if (Environment(Envrn).DayOfWeek == 0) { // Uses Weather file start + TWeekDay = ThisWeekDay; + MonWeekDay = DataPeriods(Loop).MonWeekDay; + } else { + TWeekDay = Environment(Envrn).DayOfWeek; + MonWeekDay = Environment(Envrn).MonWeekDay; + } + } + + if (!DoingSizing && !KickOffSimulation) { + if ((KindOfSim == ksRunPeriodWeather && DoWeathSim)) { + if (AdaptiveComfortRequested_ASH55 || AdaptiveComfortRequested_CEN15251) { + if (WFAllowsLeapYears) { ShowSevereError(RoutineName + "AdaptiveComfort Reporting does not work correctly with leap years in weather files."); - ErrorsFound = true; - } - if ( NumDataPeriods != 1 ) { + ErrorsFound = true; + } + if (NumDataPeriods != 1) { ShowSevereError( RoutineName + "AdaptiveComfort Reporting does not work correctly with multiple dataperiods in weather files."); - ErrorsFound = true; - } - if ( DataPeriods( 1 ).StMon == 1 && DataPeriods( 1 ).StDay == 1 ) { - RunStJDay = JulianDay( DataPeriods( 1 ).StMon, DataPeriods( 1 ).StDay, LeapYearAdd ); - RunEnJDay = JulianDay( DataPeriods( 1 ).EnMon, DataPeriods( 1 ).EnDay, LeapYearAdd ); - if ( RunEnJDay - RunStJDay + 1 != 365 ) { + ErrorsFound = true; + } + if (DataPeriods(1).StMon == 1 && DataPeriods(1).StDay == 1) { + RunStJDay = JulianDay(DataPeriods(1).StMon, DataPeriods(1).StDay, LeapYearAdd); + RunEnJDay = JulianDay(DataPeriods(1).EnMon, DataPeriods(1).EnDay, LeapYearAdd); + if (RunEnJDay - RunStJDay + 1 != 365) { ShowSevereError(RoutineName + "AdaptiveComfort Reporting does not work correctly with weather files " "that do not contain 365 days."); - ErrorsFound = true; - } - } else { + ErrorsFound = true; + } + } else { ShowSevereError(RoutineName + "AdaptiveComfort Reporting does not work correctly with weather files that " "do not start on 1 January."); - ErrorsFound = true; - } - if ( NumIntervalsPerHour != 1 ) { + ErrorsFound = true; + } + if (NumIntervalsPerHour != 1) { ShowSevereError(RoutineName + "AdaptiveComfort Reporting does not work correctly with weather files that " "have multiple interval records per hour."); - ErrorsFound = true; - } - } - } - } - - // Only need to set Week days for Run Days - RunPeriodStartDayOfWeek = TWeekDay; - WeekDayTypes = 0; - JDay5Start = JulianDay( Environment( Envrn ).StartMonth, Environment( Envrn ).StartDay, LeapYearAdd ); - JDay5End = JulianDay( Environment( Envrn ).EndMonth, Environment( Envrn ).EndDay, LeapYearAdd ); - if ( JDay5End >= JDay5Start ) { - curSimDayForEndOfRunPeriod = DayOfSim + ( JDay5End - JDay5Start ) + LeapYearAdd; - } else { - curSimDayForEndOfRunPeriod = DayOfSim + JulianDay( 12, 31, LeapYearAdd ) - JDay5Start + JDay5End; - } - Loop = JDay5Start; - while ( true ) { - WeekDayTypes( Loop ) = TWeekDay; - TWeekDay = mod( TWeekDay, 7 ) + 1; - ++Loop; - if ( Loop > 366 ) Loop = 1; - if ( Loop == JDay5End ) break; - } - - if ( UseDaylightSaving ) { - if ( EPWDaylightSaving ) { - DaylightSavingIsActive = true; - } - } else { - DaylightSavingIsActive = false; - } - if ( IDFDaylightSaving ) { - DaylightSavingIsActive = true; - } - Environment( Envrn ).SetWeekDays = false; - if ( Environment( Envrn ).ActualWeather ) { - curSimDayForEndOfRunPeriod = Environment( Envrn ).TotalDays; - } - if ( DaylightSavingIsActive ) { - SetDSTDateRanges( MonWeekDay, DSTIndex, DSTActStMon, DSTActStDay, DSTActEnMon, DSTActEnDay ); - } - - SetSpecialDayDates( MonWeekDay ); - - if ( Environment( Envrn ).StartMonth != 1 || Environment( Envrn ).StartDay != 1 ) { - StartDatesCycleShouldBeReset = true; - Jan1DatesShouldBeReset = true; - } - - if ( Environment( Envrn ).StartMonth == 1 && Environment( Envrn ).StartDay == 1 ) { - StartDatesCycleShouldBeReset = false; - Jan1DatesShouldBeReset = true; - } - - if ( Environment( Envrn ).ActualWeather ) { - StartDatesCycleShouldBeReset = false; - Jan1DatesShouldBeReset = true; - } - - // Report Actual Dates for Daylight Saving and Special Days - if ( ! KickOffSimulation ) { - Source = BlankString; - if ( UseDaylightSaving ) { - if ( EPWDaylightSaving ) { - Source = "WeatherFile"; - } - } else { - Source = "RunPeriod Object"; - } - if ( IDFDaylightSaving ) { - Source = "InputFile"; - } - if ( DaylightSavingIsActive && DoWeatherInitReporting ) { - gio::write( StDate, DateFormat ) << DSTActStMon << DSTActStDay; - gio::write( EnDate, DateFormat ) << DSTActEnMon << DSTActEnDay; - gio::write( OutputFileInits, EnvDSTYFormat ) << Source << StDate << EnDate; - } else if ( DoOutputReporting ) { - gio::write( OutputFileInits, EnvDSTNFormat ) << Source; - } - for ( Loop = 1; Loop <= NumSpecialDays; ++Loop ) { - if ( SpecialDays( Loop ).WthrFile && UseSpecialDays && DoWeatherInitReporting ) { - gio::write( StDate, DateFormat ) << SpecialDays( Loop ).ActStMon << SpecialDays( Loop ).ActStDay; + ErrorsFound = true; + } + } + } + } + + // Only need to set Week days for Run Days + RunPeriodStartDayOfWeek = TWeekDay; + WeekDayTypes = 0; + JDay5Start = JulianDay(Environment(Envrn).StartMonth, Environment(Envrn).StartDay, LeapYearAdd); + JDay5End = JulianDay(Environment(Envrn).EndMonth, Environment(Envrn).EndDay, LeapYearAdd); + if (JDay5End >= JDay5Start) { + curSimDayForEndOfRunPeriod = DayOfSim + (JDay5End - JDay5Start) + LeapYearAdd; + } else { + curSimDayForEndOfRunPeriod = DayOfSim + JulianDay(12, 31, LeapYearAdd) - JDay5Start + JDay5End; + } + Loop = JDay5Start; + while (true) { + WeekDayTypes(Loop) = TWeekDay; + TWeekDay = mod(TWeekDay, 7) + 1; + ++Loop; + if (Loop > 366) Loop = 1; + if (Loop == JDay5End) break; + } + + if (UseDaylightSaving) { + if (EPWDaylightSaving) { + DaylightSavingIsActive = true; + } + } else { + DaylightSavingIsActive = false; + } + if (IDFDaylightSaving) { + DaylightSavingIsActive = true; + } + Environment(Envrn).SetWeekDays = false; + if (Environment(Envrn).ActualWeather) { + curSimDayForEndOfRunPeriod = Environment(Envrn).TotalDays; + } + if (DaylightSavingIsActive) { + SetDSTDateRanges(MonWeekDay, DSTIndex, DSTActStMon, DSTActStDay, DSTActEnMon, DSTActEnDay); + } + + SetSpecialDayDates(MonWeekDay); + + if (Environment(Envrn).StartMonth != 1 || Environment(Envrn).StartDay != 1) { + StartDatesCycleShouldBeReset = true; + Jan1DatesShouldBeReset = true; + } + + if (Environment(Envrn).StartMonth == 1 && Environment(Envrn).StartDay == 1) { + StartDatesCycleShouldBeReset = false; + Jan1DatesShouldBeReset = true; + } + + if (Environment(Envrn).ActualWeather) { + StartDatesCycleShouldBeReset = false; + Jan1DatesShouldBeReset = true; + } + + // Report Actual Dates for Daylight Saving and Special Days + if (!KickOffSimulation) { + Source = BlankString; + if (UseDaylightSaving) { + if (EPWDaylightSaving) { + Source = "WeatherFile"; + } + } else { + Source = "RunPeriod Object"; + } + if (IDFDaylightSaving) { + Source = "InputFile"; + } + if (DaylightSavingIsActive && DoWeatherInitReporting) { + gio::write(StDate, DateFormat) << DSTActStMon << DSTActStDay; + gio::write(EnDate, DateFormat) << DSTActEnMon << DSTActEnDay; + gio::write(OutputFileInits, EnvDSTYFormat) << Source << StDate << EnDate; + } else if (DoOutputReporting) { + gio::write(OutputFileInits, EnvDSTNFormat) << Source; + } + for (Loop = 1; Loop <= NumSpecialDays; ++Loop) { + if (SpecialDays(Loop).WthrFile && UseSpecialDays && DoWeatherInitReporting) { + gio::write(StDate, DateFormat) << SpecialDays(Loop).ActStMon << SpecialDays(Loop).ActStDay; gio::write(OutputFileInits, EnvSpDyFormat) << SpecialDays(Loop).Name << SpecialDayNames(SpecialDays(Loop).DayType) << "WeatherFile" << StDate << SpecialDays(Loop).Duration; - } - if ( ! SpecialDays( Loop ).WthrFile && DoWeatherInitReporting ) { - gio::write( StDate, DateFormat ) << SpecialDays( Loop ).ActStMon << SpecialDays( Loop ).ActStDay; + } + if (!SpecialDays(Loop).WthrFile && DoWeatherInitReporting) { + gio::write(StDate, DateFormat) << SpecialDays(Loop).ActStMon << SpecialDays(Loop).ActStDay; gio::write(OutputFileInits, EnvSpDyFormat) << SpecialDays(Loop).Name << SpecialDayNames(SpecialDays(Loop).DayType) << "InputFile" << StDate << SpecialDays(Loop).Duration; - } - } - } + } + } + } - } else if (SELECT_CASE_var == ksDesignDay || SELECT_CASE_var == ksHVACSizeDesignDay ) { // Design Day - RunPeriodEnvironment = false; + } else if (SELECT_CASE_var == ksDesignDay || SELECT_CASE_var == ksHVACSizeDesignDay) { // Design Day + RunPeriodEnvironment = false; gio::write(StDate, DateFormat) << DesDayInput(Environment(Envrn).DesignDayNum).Month << DesDayInput(Environment(Envrn).DesignDayNum).DayOfMonth; - EnDate = StDate; - if (DesDayInput(Environment(Envrn).DesignDayNum).DayType <= 7 && DoWeatherInitReporting) { + EnDate = StDate; + if (DesDayInput(Environment(Envrn).DesignDayNum).DayType <= 7 && DoWeatherInitReporting) { gio::write(OutputFileInits, EnvNameFormat) << Environment(Envrn).Title << "SizingPeriod:DesignDay" << StDate << EnDate << DaysOfWeek(DesDayInput(Environment(Envrn).DesignDayNum).DayType) << "1" << "N/A" @@ -1312,7 +1314,7 @@ namespace WeatherManager { << "N/A" << "N/A" << "N/A"; - } else if ( DoWeatherInitReporting ) { + } else if (DoWeatherInitReporting) { gio::write(OutputFileInits, EnvNameFormat) << Environment(Envrn).Title << "SizingPeriod:DesignDay" << StDate << EnDate << SpecialDayNames(DesDayInput(Environment(Envrn).DesignDayNum).DayType - 7) << "1" @@ -1322,1479 +1324,1479 @@ namespace WeatherManager { << "N/A" << "N/A" << "N/A"; - } - if (DesDayInput(Environment(Envrn).DesignDayNum).DSTIndicator == 0 && DoWeatherInitReporting) { - gio::write( OutputFileInits, EnvDSTNFormat ) << "SizingPeriod:DesignDay"; - } else if ( DoWeatherInitReporting ) { - gio::write( OutputFileInits, EnvDSTYFormat ) << "SizingPeriod:DesignDay" << StDate << EnDate; - } + } + if (DesDayInput(Environment(Envrn).DesignDayNum).DSTIndicator == 0 && DoWeatherInitReporting) { + gio::write(OutputFileInits, EnvDSTNFormat) << "SizingPeriod:DesignDay"; + } else if (DoWeatherInitReporting) { + gio::write(OutputFileInits, EnvDSTYFormat) << "SizingPeriod:DesignDay" << StDate << EnDate; + } } } - } - } // ErrorsFound - } - - if ( ErrorsFound && ! DoingSizing && ! KickOffSimulation ) { - ShowSevereError( RoutineName + "Errors found in getting a new environment" ); - Available = false; - } else if ( ErrorsFound ) { - Available = false; - } - } + } + } // ErrorsFound + } + + if (ErrorsFound && !DoingSizing && !KickOffSimulation) { + ShowSevereError(RoutineName + "Errors found in getting a new environment"); + Available = false; + } else if (ErrorsFound) { + Available = false; + } + } void AddDesignSetToEnvironmentStruct(int const HVACSizingIterCount) - { - // SUBROUTINE INFORMATION: + { + // SUBROUTINE INFORMATION: - using DataGlobals::ksDesignDay; - using DataGlobals::ksHVACSizeDesignDay; - using DataGlobals::ksHVACSizeRunPeriodDesign; + using DataGlobals::ksDesignDay; + using DataGlobals::ksHVACSizeDesignDay; + using DataGlobals::ksHVACSizeRunPeriodDesign; using DataGlobals::ksRunPeriodDesign; - int OrigNumOfEnvrn; - - OrigNumOfEnvrn = NumOfEnvrn; - for ( int i = 1; i <= OrigNumOfEnvrn; ++i ) { - if ( Environment(i).KindOfEnvrn == ksDesignDay) { - Environment.redimension(++NumOfEnvrn); - Environment(NumOfEnvrn) = Environment(i); // copy over seed data from current array element - Environment(NumOfEnvrn).SeedEnvrnNum = i; - Environment(NumOfEnvrn).KindOfEnvrn = ksHVACSizeDesignDay; - Environment(NumOfEnvrn).Title = Environment(i).Title + " HVAC Sizing Pass " + RoundSigDigits( HVACSizingIterCount ); - Environment(NumOfEnvrn).HVACSizingIterationNum = HVACSizingIterCount; - } else if (Environment(i).KindOfEnvrn == ksRunPeriodDesign) { - Environment.redimension(++NumOfEnvrn); - Environment(NumOfEnvrn) = Environment(i); // copy over seed data - Environment(NumOfEnvrn).SeedEnvrnNum = i; - Environment(NumOfEnvrn).KindOfEnvrn = ksHVACSizeRunPeriodDesign; - Environment(NumOfEnvrn).Title = Environment(i).Title + " HVAC Sizing Pass " + RoundSigDigits( HVACSizingIterCount ); - Environment(NumOfEnvrn).HVACSizingIterationNum = HVACSizingIterCount; - } - } // for each loop over Environment data strucure - } + int OrigNumOfEnvrn; + + OrigNumOfEnvrn = NumOfEnvrn; + for (int i = 1; i <= OrigNumOfEnvrn; ++i) { + if (Environment(i).KindOfEnvrn == ksDesignDay) { + Environment.redimension(++NumOfEnvrn); + Environment(NumOfEnvrn) = Environment(i); // copy over seed data from current array element + Environment(NumOfEnvrn).SeedEnvrnNum = i; + Environment(NumOfEnvrn).KindOfEnvrn = ksHVACSizeDesignDay; + Environment(NumOfEnvrn).Title = Environment(i).Title + " HVAC Sizing Pass " + RoundSigDigits(HVACSizingIterCount); + Environment(NumOfEnvrn).HVACSizingIterationNum = HVACSizingIterCount; + } else if (Environment(i).KindOfEnvrn == ksRunPeriodDesign) { + Environment.redimension(++NumOfEnvrn); + Environment(NumOfEnvrn) = Environment(i); // copy over seed data + Environment(NumOfEnvrn).SeedEnvrnNum = i; + Environment(NumOfEnvrn).KindOfEnvrn = ksHVACSizeRunPeriodDesign; + Environment(NumOfEnvrn).Title = Environment(i).Title + " HVAC Sizing Pass " + RoundSigDigits(HVACSizingIterCount); + Environment(NumOfEnvrn).HVACSizingIterationNum = HVACSizingIterCount; + } + } // for each loop over Environment data strucure + } void SetupWeekDaysByMonth(int const StMon, int const StDay, int const StWeekDay, Array1A_int WeekDays) - { + { - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN August 2000 - // MODIFIED na - // RE-ENGINEERED na + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN August 2000 + // MODIFIED na + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // This subroutine calculates the weekday for each month based on the start date and - // weekday specified for that date. + // PURPOSE OF THIS SUBROUTINE: + // This subroutine calculates the weekday for each month based on the start date and + // weekday specified for that date. - // METHODOLOGY EMPLOYED: - // na + // METHODOLOGY EMPLOYED: + // na - // REFERENCES: - // na + // REFERENCES: + // na - // USE STATEMENTS: - // na + // USE STATEMENTS: + // na - // Argument array dimensioning - WeekDays.dim( 12 ); + // Argument array dimensioning + WeekDays.dim(12); - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: - // SUBROUTINE PARAMETER DEFINITIONS: - // na + // SUBROUTINE PARAMETER DEFINITIONS: + // na - // INTERFACE BLOCK SPECIFICATIONS: - // na + // INTERFACE BLOCK SPECIFICATIONS: + // na - // DERIVED TYPE DEFINITIONS: - // na + // DERIVED TYPE DEFINITIONS: + // na - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - int Loop; - int CurWeekDay; + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + int Loop; + int CurWeekDay; - // Set 1st day of Start Month - CurWeekDay = StWeekDay; - for ( Loop = 1; Loop <= StDay - 1; ++Loop ) { - --CurWeekDay; - if ( CurWeekDay == 0 ) CurWeekDay = 7; - } + // Set 1st day of Start Month + CurWeekDay = StWeekDay; + for (Loop = 1; Loop <= StDay - 1; ++Loop) { + --CurWeekDay; + if (CurWeekDay == 0) CurWeekDay = 7; + } - WeekDays( StMon ) = CurWeekDay; - for ( Loop = StMon + 1; Loop <= 12; ++Loop ) { + WeekDays(StMon) = CurWeekDay; + for (Loop = StMon + 1; Loop <= 12; ++Loop) { { auto const SELECT_CASE_var(Loop); - if ( SELECT_CASE_var == 2 ) { - CurWeekDay += EndDayOfMonth( 1 ); - while ( CurWeekDay > 7 ) { - CurWeekDay -= 7; - } - WeekDays( Loop ) = CurWeekDay; - - } else if ( SELECT_CASE_var == 3 ) { - CurWeekDay += EndDayOfMonth( Loop - 1 ) + LeapYearAdd; - while ( CurWeekDay > 7 ) { - CurWeekDay -= 7; - } - WeekDays( Loop ) = CurWeekDay; - - } else if ( ( SELECT_CASE_var >= 4 ) && ( SELECT_CASE_var <= 12 ) ) { - CurWeekDay += EndDayOfMonth( Loop - 1 ); - while ( CurWeekDay > 7 ) { - CurWeekDay -= 7; - } - WeekDays( Loop ) = CurWeekDay; + if (SELECT_CASE_var == 2) { + CurWeekDay += EndDayOfMonth(1); + while (CurWeekDay > 7) { + CurWeekDay -= 7; + } + WeekDays(Loop) = CurWeekDay; + + } else if (SELECT_CASE_var == 3) { + CurWeekDay += EndDayOfMonth(Loop - 1) + LeapYearAdd; + while (CurWeekDay > 7) { + CurWeekDay -= 7; + } + WeekDays(Loop) = CurWeekDay; + + } else if ((SELECT_CASE_var >= 4) && (SELECT_CASE_var <= 12)) { + CurWeekDay += EndDayOfMonth(Loop - 1); + while (CurWeekDay > 7) { + CurWeekDay -= 7; + } + WeekDays(Loop) = CurWeekDay; } } - } + } - if ( any_eq( WeekDays, 0 ) ) { - // need to start at StMon and go backwards. - // EndDayOfMonth is also "days" in month. (without leapyear day in February) - CurWeekDay = StWeekDay; - for ( Loop = 1; Loop <= StDay - 1; ++Loop ) { - --CurWeekDay; - if ( CurWeekDay == 0 ) CurWeekDay = 7; - } + if (any_eq(WeekDays, 0)) { + // need to start at StMon and go backwards. + // EndDayOfMonth is also "days" in month. (without leapyear day in February) + CurWeekDay = StWeekDay; + for (Loop = 1; Loop <= StDay - 1; ++Loop) { + --CurWeekDay; + if (CurWeekDay == 0) CurWeekDay = 7; + } - for ( Loop = StMon - 1; Loop >= 1; --Loop ) { + for (Loop = StMon - 1; Loop >= 1; --Loop) { { auto const SELECT_CASE_var(Loop); - if ( SELECT_CASE_var == 1 ) { - CurWeekDay -= EndDayOfMonth( 1 ); - while ( CurWeekDay <= 0 ) { - CurWeekDay += 7; - } - WeekDays( Loop ) = CurWeekDay; + if (SELECT_CASE_var == 1) { + CurWeekDay -= EndDayOfMonth(1); + while (CurWeekDay <= 0) { + CurWeekDay += 7; + } + WeekDays(Loop) = CurWeekDay; - } else if ( SELECT_CASE_var == 2 ) { - CurWeekDay = CurWeekDay - EndDayOfMonth( 2 ) + LeapYearAdd; - while ( CurWeekDay <= 0 ) { - CurWeekDay += 7; - } - WeekDays( Loop ) = CurWeekDay; + } else if (SELECT_CASE_var == 2) { + CurWeekDay = CurWeekDay - EndDayOfMonth(2) + LeapYearAdd; + while (CurWeekDay <= 0) { + CurWeekDay += 7; + } + WeekDays(Loop) = CurWeekDay; - } else if ( ( SELECT_CASE_var >= 3 ) && ( SELECT_CASE_var <= 12 ) ) { - CurWeekDay -= EndDayOfMonth( Loop ); - while ( CurWeekDay <= 0 ) { - CurWeekDay += 7; - } - WeekDays( Loop ) = CurWeekDay; - } - } + } else if ((SELECT_CASE_var >= 3) && (SELECT_CASE_var <= 12)) { + CurWeekDay -= EndDayOfMonth(Loop); + while (CurWeekDay <= 0) { + CurWeekDay += 7; + } + WeekDays(Loop) = CurWeekDay; + } + } } } - } + } void ResetWeekDaysByMonth(Array1A_int WeekDays, - int const LeapYearAdd, - int const StartMonth, - int const StartMonthDay, - int const EndMonth, - int const EndMonthDay, - bool const Rollover, + int const LeapYearAdd, + int const StartMonth, + int const StartMonthDay, + int const EndMonth, + int const EndMonthDay, + bool const Rollover, Optional_bool_const MidSimReset) - { - - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN March 2012 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // This subroutine resets the weekday for each month based on the current weekday - // and previous weekdays per month. - - // METHODOLOGY EMPLOYED: - // NA - - // REFERENCES: - // na - - // USE STATEMENTS: - // na - - // Argument array dimensioning - WeekDays.dim( 12 ); - - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: - - // SUBROUTINE PARAMETER DEFINITIONS: - // na - - // INTERFACE BLOCK SPECIFICATIONS: - // na - - // DERIVED TYPE DEFINITIONS: - // na - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - Array1D_int WeekDaysCopy( 12 ); - int Loop; - int CurWeekDay; - bool ResetMidSimulation; - - ResetMidSimulation = false; - if ( present( MidSimReset ) ) ResetMidSimulation = MidSimReset; - - WeekDaysCopy = WeekDays; - if ( ! ResetMidSimulation ) { - if ( Rollover ) { - if ( StartMonth == 1 ) { - CurWeekDay = WeekDays( 12 ) + EndDayOfMonth( 12 ) + StartMonthDay - 1; - } else { - CurWeekDay = WeekDays( EndMonth ) + EndMonthDay; - } - } else { // restart at same as before - CurWeekDay = WeekDays( StartMonth ); - } - while ( CurWeekDay > 7 ) { - CurWeekDay -= 7; - } - - WeekDays = 0; - WeekDays( StartMonth ) = CurWeekDay; - for ( Loop = StartMonth + 1; Loop <= 12; ++Loop ) { + { + + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN March 2012 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // This subroutine resets the weekday for each month based on the current weekday + // and previous weekdays per month. + + // METHODOLOGY EMPLOYED: + // NA + + // REFERENCES: + // na + + // USE STATEMENTS: + // na + + // Argument array dimensioning + WeekDays.dim(12); + + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + + // SUBROUTINE PARAMETER DEFINITIONS: + // na + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // DERIVED TYPE DEFINITIONS: + // na + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + Array1D_int WeekDaysCopy(12); + int Loop; + int CurWeekDay; + bool ResetMidSimulation; + + ResetMidSimulation = false; + if (present(MidSimReset)) ResetMidSimulation = MidSimReset; + + WeekDaysCopy = WeekDays; + if (!ResetMidSimulation) { + if (Rollover) { + if (StartMonth == 1) { + CurWeekDay = WeekDays(12) + EndDayOfMonth(12) + StartMonthDay - 1; + } else { + CurWeekDay = WeekDays(EndMonth) + EndMonthDay; + } + } else { // restart at same as before + CurWeekDay = WeekDays(StartMonth); + } + while (CurWeekDay > 7) { + CurWeekDay -= 7; + } + + WeekDays = 0; + WeekDays(StartMonth) = CurWeekDay; + for (Loop = StartMonth + 1; Loop <= 12; ++Loop) { { auto const SELECT_CASE_var(Loop); - if ( SELECT_CASE_var == 2 ) { - CurWeekDay += EndDayOfMonth( 1 ); - while ( CurWeekDay > 7 ) { - CurWeekDay -= 7; - } - WeekDays( Loop ) = CurWeekDay; - - } else if ( SELECT_CASE_var == 3 ) { - CurWeekDay += EndDayOfMonth( Loop - 1 ) + LeapYearAdd; - while ( CurWeekDay > 7 ) { - CurWeekDay -= 7; - } - WeekDays( Loop ) = CurWeekDay; - - } else if ( ( SELECT_CASE_var >= 4 ) && ( SELECT_CASE_var <= 12 ) ) { - CurWeekDay += EndDayOfMonth( Loop - 1 ); - while ( CurWeekDay > 7 ) { - CurWeekDay -= 7; - } - WeekDays( Loop ) = CurWeekDay; + if (SELECT_CASE_var == 2) { + CurWeekDay += EndDayOfMonth(1); + while (CurWeekDay > 7) { + CurWeekDay -= 7; + } + WeekDays(Loop) = CurWeekDay; + + } else if (SELECT_CASE_var == 3) { + CurWeekDay += EndDayOfMonth(Loop - 1) + LeapYearAdd; + while (CurWeekDay > 7) { + CurWeekDay -= 7; + } + WeekDays(Loop) = CurWeekDay; + + } else if ((SELECT_CASE_var >= 4) && (SELECT_CASE_var <= 12)) { + CurWeekDay += EndDayOfMonth(Loop - 1); + while (CurWeekDay > 7) { + CurWeekDay -= 7; + } + WeekDays(Loop) = CurWeekDay; } } - } + } - if ( any_eq( WeekDays, 0 ) ) { - // need to start at StMon and go backwards. - // EndDayOfMonth is also "days" in month. (without leapyear day in February) - CurWeekDay = WeekDays( StartMonth ); - for ( Loop = 1; Loop <= StartMonthDay - 1; ++Loop ) { - --CurWeekDay; - if ( CurWeekDay == 0 ) CurWeekDay = 7; - } + if (any_eq(WeekDays, 0)) { + // need to start at StMon and go backwards. + // EndDayOfMonth is also "days" in month. (without leapyear day in February) + CurWeekDay = WeekDays(StartMonth); + for (Loop = 1; Loop <= StartMonthDay - 1; ++Loop) { + --CurWeekDay; + if (CurWeekDay == 0) CurWeekDay = 7; + } - for ( Loop = StartMonth - 1; Loop >= 1; --Loop ) { + for (Loop = StartMonth - 1; Loop >= 1; --Loop) { { auto const SELECT_CASE_var(Loop); - if ( SELECT_CASE_var == 1 ) { - CurWeekDay -= EndDayOfMonth( 1 ); - while ( CurWeekDay <= 0 ) { - CurWeekDay += 7; - } - WeekDays( Loop ) = CurWeekDay; - - } else if ( SELECT_CASE_var == 2 ) { - CurWeekDay = CurWeekDay - EndDayOfMonth( 2 ) + LeapYearAdd; - while ( CurWeekDay <= 0 ) { - CurWeekDay += 7; - } - WeekDays( Loop ) = CurWeekDay; - - } else if ( ( SELECT_CASE_var >= 3 ) && ( SELECT_CASE_var <= 12 ) ) { - CurWeekDay -= EndDayOfMonth( Loop ); - while ( CurWeekDay <= 0 ) { - CurWeekDay += 7; - } - WeekDays( Loop ) = CurWeekDay; - } + if (SELECT_CASE_var == 1) { + CurWeekDay -= EndDayOfMonth(1); + while (CurWeekDay <= 0) { + CurWeekDay += 7; + } + WeekDays(Loop) = CurWeekDay; + + } else if (SELECT_CASE_var == 2) { + CurWeekDay = CurWeekDay - EndDayOfMonth(2) + LeapYearAdd; + while (CurWeekDay <= 0) { + CurWeekDay += 7; + } + WeekDays(Loop) = CurWeekDay; + + } else if ((SELECT_CASE_var >= 3) && (SELECT_CASE_var <= 12)) { + CurWeekDay -= EndDayOfMonth(Loop); + while (CurWeekDay <= 0) { + CurWeekDay += 7; + } + WeekDays(Loop) = CurWeekDay; + } + } + } + } + + } else { + if (Rollover) { + if (StartMonth == 1) { + CurWeekDay = WeekDays(12) + EndDayOfMonth(12) + StartMonthDay - 1; + } else { + CurWeekDay = WeekDays(EndMonth) + EndMonthDay; + } + } else { // restart at same as before + CurWeekDay = WeekDays(StartMonth); + } + while (CurWeekDay > 7) { + CurWeekDay -= 7; + } + WeekDays = 0; + if (StartMonth != 1) { + CurWeekDay = WeekDaysCopy(12) + EndDayOfMonth(12); + while (CurWeekDay > 7) { + CurWeekDay -= 7; + } + WeekDays(1) = CurWeekDay; + CurWeekDay += EndDayOfMonth(1); + while (CurWeekDay > 7) { + CurWeekDay -= 7; + } + WeekDays(2) = CurWeekDay; + CurWeekDay += EndDayOfMonth(2) + LeapYearAdd; + while (CurWeekDay > 7) { + CurWeekDay -= 7; + } + WeekDays(3) = CurWeekDay; + for (Loop = 4; Loop <= 12; ++Loop) { + CurWeekDay += EndDayOfMonth(Loop - 1); + while (CurWeekDay > 7) { + CurWeekDay -= 7; } + WeekDays(Loop) = CurWeekDay; } - } - - } else { - if ( Rollover ) { - if ( StartMonth == 1 ) { - CurWeekDay = WeekDays( 12 ) + EndDayOfMonth( 12 ) + StartMonthDay - 1; - } else { - CurWeekDay = WeekDays( EndMonth ) + EndMonthDay; - } - } else { // restart at same as before - CurWeekDay = WeekDays( StartMonth ); - } - while ( CurWeekDay > 7 ) { - CurWeekDay -= 7; - } - WeekDays = 0; - if ( StartMonth != 1 ) { - CurWeekDay = WeekDaysCopy( 12 ) + EndDayOfMonth( 12 ); - while ( CurWeekDay > 7 ) { - CurWeekDay -= 7; - } - WeekDays( 1 ) = CurWeekDay; - CurWeekDay += EndDayOfMonth( 1 ); - while ( CurWeekDay > 7 ) { - CurWeekDay -= 7; - } - WeekDays( 2 ) = CurWeekDay; - CurWeekDay += EndDayOfMonth( 2 ) + LeapYearAdd; - while ( CurWeekDay > 7 ) { - CurWeekDay -= 7; - } - WeekDays( 3 ) = CurWeekDay; - for ( Loop = 4; Loop <= 12; ++Loop ) { - CurWeekDay += EndDayOfMonth( Loop - 1 ); - while ( CurWeekDay > 7 ) { - CurWeekDay -= 7; - } - WeekDays( Loop ) = CurWeekDay; - } - } else { - WeekDays = 0; - WeekDays( StartMonth ) = CurWeekDay; - for ( Loop = StartMonth + 1; Loop <= 12; ++Loop ) { + } else { + WeekDays = 0; + WeekDays(StartMonth) = CurWeekDay; + for (Loop = StartMonth + 1; Loop <= 12; ++Loop) { { auto const SELECT_CASE_var(Loop); - if ( SELECT_CASE_var == 2 ) { - CurWeekDay += EndDayOfMonth( 1 ); - while ( CurWeekDay > 7 ) { - CurWeekDay -= 7; - } - WeekDays( Loop ) = CurWeekDay; - - } else if ( SELECT_CASE_var == 3 ) { - CurWeekDay += EndDayOfMonth( Loop - 1 ) + LeapYearAdd; - while ( CurWeekDay > 7 ) { - CurWeekDay -= 7; - } - WeekDays( Loop ) = CurWeekDay; - - } else if ( ( SELECT_CASE_var >= 4 ) && ( SELECT_CASE_var <= 12 ) ) { - CurWeekDay += EndDayOfMonth( Loop - 1 ); - while ( CurWeekDay > 7 ) { - CurWeekDay -= 7; - } - WeekDays( Loop ) = CurWeekDay; + if (SELECT_CASE_var == 2) { + CurWeekDay += EndDayOfMonth(1); + while (CurWeekDay > 7) { + CurWeekDay -= 7; + } + WeekDays(Loop) = CurWeekDay; + + } else if (SELECT_CASE_var == 3) { + CurWeekDay += EndDayOfMonth(Loop - 1) + LeapYearAdd; + while (CurWeekDay > 7) { + CurWeekDay -= 7; + } + WeekDays(Loop) = CurWeekDay; + + } else if ((SELECT_CASE_var >= 4) && (SELECT_CASE_var <= 12)) { + CurWeekDay += EndDayOfMonth(Loop - 1); + while (CurWeekDay > 7) { + CurWeekDay -= 7; + } + WeekDays(Loop) = CurWeekDay; } } - } + } - if ( any_eq( WeekDays, 0 ) ) { - // need to start at StMon and go backwards. - // EndDayOfMonth is also "days" in month. (without leapyear day in February) - CurWeekDay = WeekDays( StartMonth ); - for ( Loop = 1; Loop <= StartMonthDay - 1; ++Loop ) { - --CurWeekDay; - if ( CurWeekDay == 0 ) CurWeekDay = 7; - } + if (any_eq(WeekDays, 0)) { + // need to start at StMon and go backwards. + // EndDayOfMonth is also "days" in month. (without leapyear day in February) + CurWeekDay = WeekDays(StartMonth); + for (Loop = 1; Loop <= StartMonthDay - 1; ++Loop) { + --CurWeekDay; + if (CurWeekDay == 0) CurWeekDay = 7; + } - for ( Loop = StartMonth - 1; Loop >= 1; --Loop ) { + for (Loop = StartMonth - 1; Loop >= 1; --Loop) { { auto const SELECT_CASE_var(Loop); - if ( SELECT_CASE_var == 1 ) { - CurWeekDay -= EndDayOfMonth( 1 ); - while ( CurWeekDay <= 0 ) { - CurWeekDay += 7; - } - WeekDays( Loop ) = CurWeekDay; - - } else if ( SELECT_CASE_var == 2 ) { - CurWeekDay = CurWeekDay - EndDayOfMonth( 2 ) + LeapYearAdd; - while ( CurWeekDay <= 0 ) { - CurWeekDay += 7; - } - WeekDays( Loop ) = CurWeekDay; - - } else if ( ( SELECT_CASE_var >= 3 ) && ( SELECT_CASE_var <= 12 ) ) { - CurWeekDay -= EndDayOfMonth( Loop ); - while ( CurWeekDay <= 0 ) { - CurWeekDay += 7; - } - WeekDays( Loop ) = CurWeekDay; - } - } - } - } - } - } - } + if (SELECT_CASE_var == 1) { + CurWeekDay -= EndDayOfMonth(1); + while (CurWeekDay <= 0) { + CurWeekDay += 7; + } + WeekDays(Loop) = CurWeekDay; + + } else if (SELECT_CASE_var == 2) { + CurWeekDay = CurWeekDay - EndDayOfMonth(2) + LeapYearAdd; + while (CurWeekDay <= 0) { + CurWeekDay += 7; + } + WeekDays(Loop) = CurWeekDay; + + } else if ((SELECT_CASE_var >= 3) && (SELECT_CASE_var <= 12)) { + CurWeekDay -= EndDayOfMonth(Loop); + while (CurWeekDay <= 0) { + CurWeekDay += 7; + } + WeekDays(Loop) = CurWeekDay; + } + } + } + } + } + } + } void SetDSTDateRanges(Array1S_int MonWeekDay, // Weekday of each day 1 of month - Array1S_int DSTIndex, // DST Index for each julian day (1:366) - Optional_int DSTActStMon, - Optional_int DSTActStDay, - Optional_int DSTActEnMon, + Array1S_int DSTIndex, // DST Index for each julian day (1:366) + Optional_int DSTActStMon, + Optional_int DSTActStDay, + Optional_int DSTActEnMon, Optional_int DSTActEnDay) - { - - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN March 2012 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // With multiple year weather files (or repeating weather files that rollover day), - // need to set DST (Daylight Saving Time) dates at start of environment or year. - // DST is only projected for one year. - - // METHODOLOGY EMPLOYED: - // na - - // REFERENCES: - // na - - // Using/Aliasing - using General::JulianDay; - - // Argument array dimensioning - - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: - - // SUBROUTINE PARAMETER DEFINITIONS: - static std::string const RoutineName( "SetDSTDateRanges: " ); - - // INTERFACE BLOCK SPECIFICATIONS: - // na - - // DERIVED TYPE DEFINITIONS: - // na - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - int ActStartMonth; // Actual Start Month - int ActStartDay; // Actual Start Day of Month - int ActEndMonth; // Actual End Month - int ActEndDay; // Actual End Day of Month - int ThisDay; // Day of Month - int JDay; - int JDay1; - bool ErrorsFound; - Array1D_int ActEndDayOfMonth( 12 ); - - ErrorsFound = false; - ActEndDayOfMonth = EndDayOfMonth; - ActEndDayOfMonth( 2 ) = EndDayOfMonth( 2 ) + LeapYearAdd; - if ( DST.StDateType == MonthDay ) { - ActStartMonth = DST.StMon; - ActStartDay = DST.StDay; - } else if ( DST.StDateType == NthDayInMonth ) { - ThisDay = DST.StWeekDay - MonWeekDay( DST.StMon ) + 1; - while ( ThisDay <= 0 ) { - ThisDay += 7; - } - ThisDay += 7 * ( DST.StDay - 1 ); - if ( ThisDay > ActEndDayOfMonth( DST.StMon ) ) { - ShowSevereError( RoutineName + "Determining DST: DST Start Date, Nth Day of Month, not enough Nths" ); - ErrorsFound = true; - } else { - ActStartMonth = DST.StMon; - ActStartDay = ThisDay; - } - } else { // LastWeekDayInMonth - ThisDay = DST.StWeekDay - MonWeekDay( DST.StMon ) + 1; - while ( ThisDay + 7 <= ActEndDayOfMonth( DST.StMon ) ) { - ThisDay += 7; - } - ActStartMonth = DST.StMon; - ActStartDay = ThisDay; - } - - if ( DST.EnDateType == MonthDay ) { - ActEndMonth = DST.EnMon; - ActEndDay = DST.EnDay; - } else if ( DST.EnDateType == NthDayInMonth ) { - ThisDay = DST.EnWeekDay - MonWeekDay( DST.EnMon ) + 1; - while ( ThisDay <= 0 ) { - ThisDay += 7; - } - ThisDay += 7 * ( DST.EnDay - 1 ); - if ( ThisDay > ActEndDayOfMonth( DST.EnMon ) ) { - ActEndMonth = 0; // Suppress uninitialized warning - ActEndDay = 0; // Suppress uninitialized warning - ShowSevereError( RoutineName + "Determining DST: DST End Date, Nth Day of Month, not enough Nths" ); - ErrorsFound = true; - } else { - ActEndMonth = DST.EnMon; - ActEndDay = ThisDay; - } - } else { // LastWeekDayInMonth - ThisDay = DST.EnWeekDay - MonWeekDay( DST.EnMon ) + 1; - while ( ThisDay + 7 <= ActEndDayOfMonth( DST.EnMon ) ) { - ThisDay += 7; - } - ActEndMonth = DST.EnMon; - ActEndDay = ThisDay; - } - - if ( ErrorsFound ) { - ShowFatalError( RoutineName + "Program terminates due to preceding condition(s)." ); - } - - if ( present( DSTActStMon ) ) { - DSTActStMon = ActStartMonth; - DSTActStDay = ActStartDay; - DSTActEnMon = ActEndMonth; - DSTActEnDay = ActEndDay; - } - - DSTIndex = 0; - JDay = JulianDay( ActStartMonth, ActStartDay, LeapYearAdd ); - JDay1 = JulianDay( ActEndMonth, ActEndDay, LeapYearAdd ); - if ( JDay1 >= JDay ) { - DSTIndex( {JDay,JDay1} ) = 1; - } else { - DSTIndex( {JDay,366} ) = 1; - DSTIndex( {1,JDay1} ) = 1; - } - } + { + + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN March 2012 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // With multiple year weather files (or repeating weather files that rollover day), + // need to set DST (Daylight Saving Time) dates at start of environment or year. + // DST is only projected for one year. + + // METHODOLOGY EMPLOYED: + // na + + // REFERENCES: + // na + + // Using/Aliasing + using General::JulianDay; + + // Argument array dimensioning + + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + + // SUBROUTINE PARAMETER DEFINITIONS: + static std::string const RoutineName("SetDSTDateRanges: "); + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // DERIVED TYPE DEFINITIONS: + // na + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + int ActStartMonth; // Actual Start Month + int ActStartDay; // Actual Start Day of Month + int ActEndMonth; // Actual End Month + int ActEndDay; // Actual End Day of Month + int ThisDay; // Day of Month + int JDay; + int JDay1; + bool ErrorsFound; + Array1D_int ActEndDayOfMonth(12); + + ErrorsFound = false; + ActEndDayOfMonth = EndDayOfMonth; + ActEndDayOfMonth(2) = EndDayOfMonth(2) + LeapYearAdd; + if (DST.StDateType == MonthDay) { + ActStartMonth = DST.StMon; + ActStartDay = DST.StDay; + } else if (DST.StDateType == NthDayInMonth) { + ThisDay = DST.StWeekDay - MonWeekDay(DST.StMon) + 1; + while (ThisDay <= 0) { + ThisDay += 7; + } + ThisDay += 7 * (DST.StDay - 1); + if (ThisDay > ActEndDayOfMonth(DST.StMon)) { + ShowSevereError(RoutineName + "Determining DST: DST Start Date, Nth Day of Month, not enough Nths"); + ErrorsFound = true; + } else { + ActStartMonth = DST.StMon; + ActStartDay = ThisDay; + } + } else { // LastWeekDayInMonth + ThisDay = DST.StWeekDay - MonWeekDay(DST.StMon) + 1; + while (ThisDay + 7 <= ActEndDayOfMonth(DST.StMon)) { + ThisDay += 7; + } + ActStartMonth = DST.StMon; + ActStartDay = ThisDay; + } + + if (DST.EnDateType == MonthDay) { + ActEndMonth = DST.EnMon; + ActEndDay = DST.EnDay; + } else if (DST.EnDateType == NthDayInMonth) { + ThisDay = DST.EnWeekDay - MonWeekDay(DST.EnMon) + 1; + while (ThisDay <= 0) { + ThisDay += 7; + } + ThisDay += 7 * (DST.EnDay - 1); + if (ThisDay > ActEndDayOfMonth(DST.EnMon)) { + ActEndMonth = 0; // Suppress uninitialized warning + ActEndDay = 0; // Suppress uninitialized warning + ShowSevereError(RoutineName + "Determining DST: DST End Date, Nth Day of Month, not enough Nths"); + ErrorsFound = true; + } else { + ActEndMonth = DST.EnMon; + ActEndDay = ThisDay; + } + } else { // LastWeekDayInMonth + ThisDay = DST.EnWeekDay - MonWeekDay(DST.EnMon) + 1; + while (ThisDay + 7 <= ActEndDayOfMonth(DST.EnMon)) { + ThisDay += 7; + } + ActEndMonth = DST.EnMon; + ActEndDay = ThisDay; + } + + if (ErrorsFound) { + ShowFatalError(RoutineName + "Program terminates due to preceding condition(s)."); + } + + if (present(DSTActStMon)) { + DSTActStMon = ActStartMonth; + DSTActStDay = ActStartDay; + DSTActEnMon = ActEndMonth; + DSTActEnDay = ActEndDay; + } + + DSTIndex = 0; + JDay = JulianDay(ActStartMonth, ActStartDay, LeapYearAdd); + JDay1 = JulianDay(ActEndMonth, ActEndDay, LeapYearAdd); + if (JDay1 >= JDay) { + DSTIndex({JDay, JDay1}) = 1; + } else { + DSTIndex({JDay, 366}) = 1; + DSTIndex({1, JDay1}) = 1; + } + } void SetSpecialDayDates(Array1S_int MonWeekDay) // Weekday of each day 1 of month - { - - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN March 2012 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // With multiple year weather files (or repeating weather files that rollover day), - // need to set Special Day dates at start of environment or year. - // Special Days are only projected for one year. - - // METHODOLOGY EMPLOYED: - // na - - // REFERENCES: - // na - - // Using/Aliasing - using General::InvJulianDay; - using General::JulianDay; - - // Argument array dimensioning - - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: - - // SUBROUTINE PARAMETER DEFINITIONS: - static std::string const RoutineName( "SetSpecialDayDates: " ); - - // INTERFACE BLOCK SPECIFICATIONS: - // na - - // DERIVED TYPE DEFINITIONS: - // na - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - int Loop; - int ThisDay; - int JDay; - int JDay1; - int Loop1; - bool ErrorsFound; - Array1D_int ActEndDayOfMonth( 12 ); - - ErrorsFound = false; - ActEndDayOfMonth = EndDayOfMonth; - ActEndDayOfMonth( 2 ) = EndDayOfMonth( 2 ) + LeapYearAdd; - SpecialDayTypes = 0; - for ( Loop = 1; Loop <= NumSpecialDays; ++Loop ) { - if ( SpecialDays( Loop ).WthrFile && ! UseSpecialDays ) continue; - if ( SpecialDays( Loop ).DateType <= MonthDay ) { - JDay = JulianDay( SpecialDays( Loop ).Month, SpecialDays( Loop ).Day, LeapYearAdd ); - if ( SpecialDays( Loop ).Duration == 1 && Environment( Envrn ).ApplyWeekendRule ) { - if ( WeekDayTypes( JDay ) == 1 ) { - // Sunday, must go to Monday - ++JDay; - if ( JDay == 366 && LeapYearAdd == 0 ) JDay = 1; - } else if ( WeekDayTypes( JDay ) == 7 ) { - ++JDay; - if ( JDay == 366 && LeapYearAdd == 0 ) JDay = 1; - ++JDay; - if ( JDay == 366 && LeapYearAdd == 0 ) JDay = 1; - } - } - InvJulianDay( JDay, SpecialDays( Loop ).ActStMon, SpecialDays( Loop ).ActStDay, LeapYearAdd ); - } else if ( SpecialDays( Loop ).DateType == NthDayInMonth ) { - if ( SpecialDays( Loop ).WeekDay >= MonWeekDay( SpecialDays( Loop ).Month ) ) { - ThisDay = SpecialDays( Loop ).WeekDay - MonWeekDay( SpecialDays( Loop ).Month ) + 1; - } else { - ThisDay = SpecialDays( Loop ).WeekDay - MonWeekDay( SpecialDays( Loop ).Month ) + 1 + 7; - } - ThisDay += 7 * ( SpecialDays( Loop ).Day - 1 ); - if ( ThisDay > ActEndDayOfMonth( SpecialDays( Loop ).Month ) ) { - ShowSevereError( RoutineName + "Special Day Date, Nth Day of Month, not enough Nths, for SpecialDay=" + SpecialDays( Loop ).Name ); - ErrorsFound = true; - continue; - } - SpecialDays( Loop ).ActStMon = SpecialDays( Loop ).Month; - SpecialDays( Loop ).ActStDay = ThisDay; - JDay = JulianDay( SpecialDays( Loop ).Month, ThisDay, LeapYearAdd ); - } else { // LastWeekDayInMonth - ThisDay = SpecialDays( Loop ).WeekDay - MonWeekDay( SpecialDays( Loop ).Month ) + 1; - while ( ThisDay + 7 <= ActEndDayOfMonth( SpecialDays( Loop ).Month ) ) { - ThisDay += 7; - } - SpecialDays( Loop ).ActStMon = SpecialDays( Loop ).Month; - SpecialDays( Loop ).ActStDay = ThisDay; - JDay = JulianDay( SpecialDays( Loop ).Month, ThisDay, LeapYearAdd ); - } - if ( SpecialDayTypes( JDay ) != 0 ) { + { + + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN March 2012 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // With multiple year weather files (or repeating weather files that rollover day), + // need to set Special Day dates at start of environment or year. + // Special Days are only projected for one year. + + // METHODOLOGY EMPLOYED: + // na + + // REFERENCES: + // na + + // Using/Aliasing + using General::InvJulianDay; + using General::JulianDay; + + // Argument array dimensioning + + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + + // SUBROUTINE PARAMETER DEFINITIONS: + static std::string const RoutineName("SetSpecialDayDates: "); + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // DERIVED TYPE DEFINITIONS: + // na + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + int Loop; + int ThisDay; + int JDay; + int JDay1; + int Loop1; + bool ErrorsFound; + Array1D_int ActEndDayOfMonth(12); + + ErrorsFound = false; + ActEndDayOfMonth = EndDayOfMonth; + ActEndDayOfMonth(2) = EndDayOfMonth(2) + LeapYearAdd; + SpecialDayTypes = 0; + for (Loop = 1; Loop <= NumSpecialDays; ++Loop) { + if (SpecialDays(Loop).WthrFile && !UseSpecialDays) continue; + if (SpecialDays(Loop).DateType <= MonthDay) { + JDay = JulianDay(SpecialDays(Loop).Month, SpecialDays(Loop).Day, LeapYearAdd); + if (SpecialDays(Loop).Duration == 1 && Environment(Envrn).ApplyWeekendRule) { + if (WeekDayTypes(JDay) == 1) { + // Sunday, must go to Monday + ++JDay; + if (JDay == 366 && LeapYearAdd == 0) JDay = 1; + } else if (WeekDayTypes(JDay) == 7) { + ++JDay; + if (JDay == 366 && LeapYearAdd == 0) JDay = 1; + ++JDay; + if (JDay == 366 && LeapYearAdd == 0) JDay = 1; + } + } + InvJulianDay(JDay, SpecialDays(Loop).ActStMon, SpecialDays(Loop).ActStDay, LeapYearAdd); + } else if (SpecialDays(Loop).DateType == NthDayInMonth) { + if (SpecialDays(Loop).WeekDay >= MonWeekDay(SpecialDays(Loop).Month)) { + ThisDay = SpecialDays(Loop).WeekDay - MonWeekDay(SpecialDays(Loop).Month) + 1; + } else { + ThisDay = SpecialDays(Loop).WeekDay - MonWeekDay(SpecialDays(Loop).Month) + 1 + 7; + } + ThisDay += 7 * (SpecialDays(Loop).Day - 1); + if (ThisDay > ActEndDayOfMonth(SpecialDays(Loop).Month)) { + ShowSevereError(RoutineName + "Special Day Date, Nth Day of Month, not enough Nths, for SpecialDay=" + SpecialDays(Loop).Name); + ErrorsFound = true; + continue; + } + SpecialDays(Loop).ActStMon = SpecialDays(Loop).Month; + SpecialDays(Loop).ActStDay = ThisDay; + JDay = JulianDay(SpecialDays(Loop).Month, ThisDay, LeapYearAdd); + } else { // LastWeekDayInMonth + ThisDay = SpecialDays(Loop).WeekDay - MonWeekDay(SpecialDays(Loop).Month) + 1; + while (ThisDay + 7 <= ActEndDayOfMonth(SpecialDays(Loop).Month)) { + ThisDay += 7; + } + SpecialDays(Loop).ActStMon = SpecialDays(Loop).Month; + SpecialDays(Loop).ActStDay = ThisDay; + JDay = JulianDay(SpecialDays(Loop).Month, ThisDay, LeapYearAdd); + } + if (SpecialDayTypes(JDay) != 0) { ShowWarningError(RoutineName + "Special Day definition (" + SpecialDays(Loop).Name + ") is overwriting previously entered special day period"); - if ( UseSpecialDays ) { - ShowContinueError( "...This could be caused by definitions on the Weather File." ); - } - ShowContinueError( "...This could be caused by duplicate definitions in the Input File." ); - } - JDay1 = JDay - 1; - for ( Loop1 = 0; Loop1 <= SpecialDays( Loop ).Duration - 1; ++Loop1 ) { - ++JDay1; - if ( JDay1 == 366 && LeapYearAdd == 0 ) JDay1 = 1; - if ( JDay1 == 367 ) JDay1 = 1; - SpecialDayTypes( JDay1 ) = SpecialDays( Loop ).DayType; - } - } - - if ( ErrorsFound ) { - ShowFatalError( RoutineName + "Program terminates due to preceding condition(s)." ); - } - } + if (UseSpecialDays) { + ShowContinueError("...This could be caused by definitions on the Weather File."); + } + ShowContinueError("...This could be caused by duplicate definitions in the Input File."); + } + JDay1 = JDay - 1; + for (Loop1 = 0; Loop1 <= SpecialDays(Loop).Duration - 1; ++Loop1) { + ++JDay1; + if (JDay1 == 366 && LeapYearAdd == 0) JDay1 = 1; + if (JDay1 == 367) JDay1 = 1; + SpecialDayTypes(JDay1) = SpecialDays(Loop).DayType; + } + } + + if (ErrorsFound) { + ShowFatalError(RoutineName + "Program terminates due to preceding condition(s)."); + } + } void InitializeWeather(bool &PrintEnvrnStamp) // Set to true when the environment header should be printed - { - - // SUBROUTINE INFORMATION: - // AUTHOR Rick Strand - // DATE WRITTEN June 1997 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // This subroutine is the main driver of the weather initializations. - // Most of the weather handling can be described as "initializations" - // so most of the work is done via this subroutine. - - // METHODOLOGY EMPLOYED: - // na - - // REFERENCES: - // na - - // USE STATEMENTS: - // na - // Using/Aliasing - using General::InvJulianDay; - using General::JulianDay; - - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: - - // SUBROUTINE PARAMETER DEFINITIONS: - // na - - // INTERFACE BLOCK SPECIFICATIONS: - // na - - // DERIVED TYPE DEFINITIONS: - // na - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - int Loop; - int FirstSimDayofYear; // Variable which tells when to skip the day in a multi year simulation. - - static bool FirstCall( true ); // Some things should only be done once - // LOGICAL, SAVE :: SetYear=.TRUE. - int JDay5Start; - int JDay5End; - int TWeekDay; - - // FLOW: - - if ( BeginSimFlag && FirstCall ) { - - FirstCall = false; - EndMonthFlag = false; - - } // ... end of BeginSimFlag IF-THEN block. - - if ( BeginEnvrnFlag ) { - - //Call and setup the Design Day environment - if ( Environment( Envrn ).KindOfEnvrn != ksRunPeriodWeather ) { - if (Environment(Envrn).DesignDayNum > 0) { - SetUpDesignDay(Environment(Envrn).DesignDayNum); - EnvironmentName = Environment(Envrn).Title; - } - } - - NumMissing = 0; // Only used in Weather file environments - // Start over missing values with each environment - Missing.StnPres = StdBaroPress; // Initial "missing" value - Missing.DryBulb = 6.0; // Initial "missing" value - Missing.DewPoint = 3.0; // Initial "missing" value - Missing.RelHumid = 50.0; // Initial "missing" value - Missing.WindSpd = 2.5; // Initial "missing" value - Missing.WindDir = 180; // Initial "missing" value - Missing.TotSkyCvr = 5; // Initial "missing" value - Missing.OpaqSkyCvr = 5; // Initial "missing" value - Missing.Visibility = 777.7; // Initial "missing" value - Missing.Ceiling = 77777; // Initial "missing" value - Missing.PrecipWater = 0; // Initial "missing" value - Missing.AerOptDepth = 0.0; // Initial "missing" value - Missing.SnowDepth = 0; // Initial "missing" value - Missing.DaysLastSnow = 88; // Initial "missing" value - Missing.Albedo = 0.0; // Initial "missing" value - Missing.LiquidPrecip = 0.0; // Initial "missing" value - // Counts set to 0 for each environment - Missed.StnPres = 0; - Missed.DryBulb = 0; - Missed.DewPoint = 0; - Missed.RelHumid = 0; - Missed.WindSpd = 0; - Missed.WindDir = 0; - Missed.TotSkyCvr = 0; - Missed.OpaqSkyCvr = 0; - Missed.Visibility = 0; - Missed.Ceiling = 0; - Missed.PrecipWater = 0; - Missed.AerOptDepth = 0; - Missed.SnowDepth = 0; - Missed.DaysLastSnow = 0; - Missed.Albedo = 0; - Missed.LiquidPrecip = 0; - Missed.WeathCodes = 0; - Missed.DirectRad = 0; - Missed.DiffuseRad = 0; - // Counts set to 0 for each environment - OutOfRange.StnPres = 0; - OutOfRange.DryBulb = 0; - OutOfRange.DewPoint = 0; - OutOfRange.RelHumid = 0; - OutOfRange.WindSpd = 0; - OutOfRange.WindDir = 0; - OutOfRange.DirectRad = 0; - OutOfRange.DiffuseRad = 0; - - if ( !RPReadAllWeatherData ) { - PrintEnvrnStamp = true; // Set this to true so that on first non-warmup day (only) the environment header will print out - } - - // WeekDayCount=0 ! Reset weekday count (weather periods only) - for ( Loop = 1; Loop <= NumSpecialDays; ++Loop ) { - SpecialDays( Loop ).Used = false; - } - - if ((KindOfSim != ksDesignDay) && (KindOfSim != ksHVACSizeDesignDay)) { - ReadWeatherForDay( 1, Envrn, false ); // Read first day's weather - } else { - TomorrowVariables = DesignDay(Environment(Envrn).DesignDayNum); - } - - } // ... end of BeginEnvrnFlag IF-THEN block. - - if ( BeginDayFlag ) { - - // Check Holidays, Daylight Saving Time, Ground Temperatures, etc. - - UpdateWeatherData(); // Update daily weather info - - // Read tomorrow's weather only if necessary. This means that the - // simulation is out of warmup, is using a weather tape for this - // environment, and is not on the last day (day after last day is - // assumed to be equal to last day). - - // Following code checks whether the present day of simulation matches the start month and start day. - // In a multi year simulation with run period less than 365, we need to position the weather line - // appropriately. - - if ((!WarmupFlag) && ((Environment(Envrn).KindOfEnvrn != ksDesignDay) && (Environment(Envrn).KindOfEnvrn != ksHVACSizeDesignDay))) { - if ( DayOfSim < NumOfDayInEnvrn ) { - if ( DayOfSim == curSimDayForEndOfRunPeriod ) { - curSimDayForEndOfRunPeriod += Environment( Envrn ).RawSimDays; - if ( StartDatesCycleShouldBeReset ) { - ResetWeekDaysByMonth(Environment(Envrn).MonWeekDay, LeapYearAdd, Environment(Envrn).StartMonth, - Environment(Envrn).StartDay, Environment(Envrn).EndMonth, Environment(Envrn).EndDay, - Environment(Envrn).RollDayTypeOnRepeat); - if ( DaylightSavingIsActive ) { - SetDSTDateRanges( Environment( Envrn ).MonWeekDay, DSTIndex ); - } - SetSpecialDayDates( Environment( Envrn ).MonWeekDay ); - } - ++YearOfSim; - DataGlobals::CalendarYear += 1; - DataGlobals::CalendarYearChr = std::to_string( DataGlobals::CalendarYear ); - FirstSimDayofYear = 1; - ReadWeatherForDay( FirstSimDayofYear, Envrn, false ); // Read tomorrow's weather - } else { - ReadWeatherForDay( DayOfSim + 1, Envrn, false ); // Read tomorrow's weather - } - } - } - - EndYearFlag = false; - if ( DayOfMonth == EndDayOfMonth( Month ) ) { - EndMonthFlag = true; - EndYearFlag = ( Month == 12 ); - } - - // Set Tomorrow's date data - MonthTomorrow = TomorrowVariables.Month; - DayOfMonthTomorrow = TomorrowVariables.DayOfMonth; - DayOfWeekTomorrow = TomorrowVariables.DayOfWeek; - HolidayIndexTomorrow = TomorrowVariables.HolidayIndex; - YearTomorrow = TomorrowVariables.Year; - - if ( Environment( Envrn ).KindOfEnvrn == ksRunPeriodWeather ) { - if ( Month == 1 && DayOfMonth == 1 && Environment( Envrn ).ActualWeather ) { - if ( DatesShouldBeReset ) { - if ( Environment( Envrn ).TreatYearsAsConsecutive ) { - ++Environment( Envrn ).CurrentYear; - Environment( Envrn ).IsLeapYear = isLeapYear( Environment( Envrn ).CurrentYear ); - CurrentYearIsLeapYear = Environment( Envrn ).IsLeapYear; - if ( CurrentYearIsLeapYear ) { - if ( WFAllowsLeapYears ) { - LeapYearAdd = 1; - } else { - LeapYearAdd = 0; - } - } else { - LeapYearAdd = 0; - } - // need to reset MonWeekDay and WeekDayTypes - if ( ! CurrentYearIsLeapYear ) { - JDay5Start = JulianDay( Environment( Envrn ).StartMonth, Environment( Envrn ).StartDay, 0 ); - JDay5End = JulianDay( Environment( Envrn ).EndMonth, Environment( Envrn ).EndDay, 0 ); - } else { - JDay5Start = JulianDay( Environment( Envrn ).StartMonth, Environment( Envrn ).StartDay, LeapYearAdd ); - JDay5End = JulianDay( Environment( Envrn ).EndMonth, Environment( Envrn ).EndDay, LeapYearAdd ); - } - if (!Environment(Envrn).ActualWeather) - curSimDayForEndOfRunPeriod = DayOfSim + Environment(Envrn).RawSimDays + LeapYearAdd - 1; + { - Loop = JDay5Start; - TWeekDay = DayOfWeek; - while ( true ) { - WeekDayTypes( Loop ) = TWeekDay; - TWeekDay = mod( TWeekDay, 7 ) + 1; - ++Loop; - if ( Loop > 366 ) Loop = 1; - if ( Loop == JDay5End ) break; - } - ResetWeekDaysByMonth(Environment(Envrn).MonWeekDay, LeapYearAdd, Environment(Envrn).StartMonth, - Environment(Envrn).StartDay, Environment(Envrn).EndMonth, Environment(Envrn).EndDay, - Environment(Envrn).RollDayTypeOnRepeat); - if ( DaylightSavingIsActive ) { - SetDSTDateRanges( Environment( Envrn ).MonWeekDay, DSTIndex ); - } - SetSpecialDayDates( Environment( Envrn ).MonWeekDay ); - } - } - } else if ( ( Month == 1 && DayOfMonth == 1 ) && DatesShouldBeReset && ( Jan1DatesShouldBeReset ) ) { - if ( Environment( Envrn ).TreatYearsAsConsecutive ) { - ++Environment( Envrn ).CurrentYear; - Environment( Envrn ).IsLeapYear = isLeapYear( Environment( Envrn ).CurrentYear ); - CurrentYearIsLeapYear = Environment( Envrn ).IsLeapYear; - if ( CurrentYearIsLeapYear && ! WFAllowsLeapYears ) CurrentYearIsLeapYear = false; - if ( DayOfSim < curSimDayForEndOfRunPeriod && CurrentYearIsLeapYear ) ++curSimDayForEndOfRunPeriod; - } - if ( CurrentYearIsLeapYear ) { - if ( WFAllowsLeapYears ) { - LeapYearAdd = 1; - } else { - LeapYearAdd = 0; - } - } else { - LeapYearAdd = 0; - } - - if ( DayOfSim < curSimDayForEndOfRunPeriod ) { - if ( Environment( Envrn ).RollDayTypeOnRepeat || CurrentYearIsLeapYear ) { - ResetWeekDaysByMonth(Environment(Envrn).MonWeekDay, LeapYearAdd, Environment(Envrn).StartMonth, - Environment(Envrn).StartDay, Environment(Envrn).EndMonth, Environment(Envrn).EndDay, - Environment(Envrn).RollDayTypeOnRepeat, true); - } else { - ResetWeekDaysByMonth(Environment(Envrn).MonWeekDay, LeapYearAdd, Environment(Envrn).StartMonth, - Environment(Envrn).StartDay, Environment(Envrn).EndMonth, Environment(Envrn).EndDay, - Environment(Envrn).RollDayTypeOnRepeat, false); - } - if ( DaylightSavingIsActive ) { - SetDSTDateRanges( Environment( Envrn ).MonWeekDay, DSTIndex ); - } - SetSpecialDayDates( Environment( Envrn ).MonWeekDay ); - } - } - // SetYear=.FALSE. - } - } // ... end of BeginDayFlag IF-THEN block. + // SUBROUTINE INFORMATION: + // AUTHOR Rick Strand + // DATE WRITTEN June 1997 + // MODIFIED na + // RE-ENGINEERED na - if (!BeginDayFlag && !WarmupFlag && (Month != Environment(Envrn).StartMonth || DayOfMonth != Environment(Envrn).StartDay) && - !DatesShouldBeReset && Environment(Envrn).KindOfEnvrn == ksRunPeriodWeather) { - // SetYear=.TRUE. - DatesShouldBeReset = true; - } - - if (EndEnvrnFlag && (Environment(Envrn).KindOfEnvrn != ksDesignDay) && (Environment(Envrn).KindOfEnvrn != ksHVACSizeDesignDay)) { - gio::rewind( WeatherFileUnitNumber ); - SkipEPlusWFHeader(); - ReportMissing_RangeData(); - } - - // set the EndDesignDayEnvrnsFlag (dataGlobals) - // True at the end of the last design day environment (last time step of last hour of last day of environ which is a design day) - // added to address CR7562 - EndDesignDayEnvrnsFlag = false; - if ( EndEnvrnFlag ) { - if ( Envrn < NumOfEnvrn ) { - if ( Environment( Envrn ).KindOfEnvrn != Environment( Envrn + 1 ).KindOfEnvrn ) { - EndDesignDayEnvrnsFlag = true; - } - } else { - // if the last environment set the flag to true. - EndDesignDayEnvrnsFlag = true; - } - } - } + // PURPOSE OF THIS SUBROUTINE: + // This subroutine is the main driver of the weather initializations. + // Most of the weather handling can be described as "initializations" + // so most of the work is done via this subroutine. - void UpdateWeatherData() - { - - // SUBROUTINE INFORMATION: - // AUTHOR Rick Strand - // DATE WRITTEN June 1997 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // This subroutine updates all of the daily weather data in the local - // module level variables and the global variables. - // This subroutine will temporarily transfer the weather data for the - // current day to the old data structure contained in envdat.inc until - // enough reengineering has taken place to eliminate the need for this - // include. - - // METHODOLOGY EMPLOYED: - // na - - // REFERENCES: - // na - - // USE STATEMENTS: - // na - - // SUBROUTINE ARGUMENT DEFINITIONS: - // na - - // SUBROUTINE PARAMETER DEFINITIONS: - // na - - // INTERFACE BLOCK SPECIFICATIONS: - // na - - // DERIVED TYPE DEFINITIONS: - // na - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - // na - - // FLOW: - //unused integer :: myhr - - TodayVariables = TomorrowVariables; // Transfer Tomorrow's Daily Weather Variables to Today - - if ( BeginEnvrnFlag ) { - PreviousHour = 24; - } - - TodayIsRain = TomorrowIsRain; - TodayIsSnow = TomorrowIsSnow; - TodayOutDryBulbTemp = TomorrowOutDryBulbTemp; - TodayOutDewPointTemp = TomorrowOutDewPointTemp; - TodayOutBaroPress = TomorrowOutBaroPress; - TodayOutRelHum = TomorrowOutRelHum; - TodayWindSpeed = TomorrowWindSpeed; - TodayWindDir = TomorrowWindDir; - TodaySkyTemp = TomorrowSkyTemp; - TodayHorizIRSky = TomorrowHorizIRSky; - TodayBeamSolarRad = TomorrowBeamSolarRad; - TodayDifSolarRad = TomorrowDifSolarRad; - TodayLiquidPrecip = TomorrowLiquidPrecip; - - // Update Global Data - - DayOfYear = TodayVariables.DayOfYear; - Year = TodayVariables.Year; - Month = TodayVariables.Month; - DayOfMonth = TodayVariables.DayOfMonth; - DayOfWeek = TodayVariables.DayOfWeek; - // WeekDayCount(DayOfWeek)=WeekDayCount(DayOfWeek)+1 - HolidayIndex = TodayVariables.HolidayIndex; - if ( HolidayIndex > 0 ) { - RptDayType = 7 + HolidayIndex; - } else { - RptDayType = DayOfWeek; - } - DSTIndicator = TodayVariables.DaylightSavingIndex; - EquationOfTime = TodayVariables.EquationOfTime; - CosSolarDeclinAngle = TodayVariables.CosSolarDeclinAngle; - SinSolarDeclinAngle = TodayVariables.SinSolarDeclinAngle; - } + // METHODOLOGY EMPLOYED: + // na - void SetCurrentWeather() - { - - // SUBROUTINE INFORMATION: - // AUTHOR Russ Taylor - // DATE WRITTEN March 1990 - // MODIFIED Aug94 (LKL) Fixed improper weighting - // Nov98 (FCW) Added call to get exterior illuminances - // Jan02 (FCW) Changed how ground reflectance for daylighting is set - // Mar12 (LKL) Changed settings for leap years/ current years. - // RE-ENGINEERED Apr97,May97 (RKS) - - // PURPOSE OF THIS SUBROUTINE: - // The purpose of this subroutine is to interpolate the hourly - // environment data for the sub-hourly time steps in EnergyPlus. In - // other words, this subroutine puts the current weather conditions - // into the proper variables. Rather than using the same data for - // each time step, environment data is interpolated as a continuum - // throughout the day. - - // METHODOLOGY EMPLOYED: - // The current hour (HourOfDay) as well as the next hour are used - // to come up with environment data per time step interval. Method - // used is to assign a weighting for the current hour's data and - // (1-that weighting) to the next hour's data. Actual method is: if - // the current time step is 15 minutes into hour, the interpolated dry - // bulb temperature should be 3/4*dry bulb temperature of current hour - // and 1/4*dry bulb temperature of next environment hourly data. At - // day boundary (current hour = 24), the next hour is hour 1 of next - // weather data day (Tomorrow%). - - // REFERENCES: - // INTERPOL(IBLAST) legacy code. - - // Using/Aliasing - using General::JulianDay; - using ScheduleManager::UpdateScheduleValues; - using namespace GroundTemperatureManager; - - // SUBROUTINE PARAMETER DEFINITIONS: - static char time_stamp[ 10 ]; - static char day_stamp[ 6 ]; - static std::string const RoutineName( "SetCurrentWeather" ); - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - static int NextHour; - Real64 TempVal; - Real64 TempDPVal; - - // FLOW: - - NextHour = HourOfDay + 1; - - if ( HourOfDay == 24 ) { // Should investigate whether EndDayFlag is always set here and use that instead - NextHour = 1; - } - - if ( HourOfDay == 1 ) { // Should investigate whether BeginDayFlag is always set here and use that instead - DayOfYear_Schedule = JulianDay( Month, DayOfMonth, 1 ); - } - - UpdateScheduleValues(); - - std::sprintf( time_stamp, "%02d/%02d %02d:", Month, DayOfMonth, HourOfDay - 1 ); - CurMnDyHr = time_stamp; - std::sprintf( day_stamp, "%02d/%02d", Month, DayOfMonth ); - CurMnDy = day_stamp; - - WeightNow = Interpolation( TimeStep ); - WeightPreviousHour = 1.0 - WeightNow; - - CurrentTime = ( HourOfDay - 1 ) + TimeStep * ( TimeStepFraction ); - SimTimeSteps = ( DayOfSim - 1 ) * 24 * NumOfTimeStepInHour + ( HourOfDay - 1 ) * NumOfTimeStepInHour + TimeStep; - - GroundTemp = siteBuildingSurfaceGroundTempsPtr->getGroundTempAtTimeInMonths( 0, Month ); - GroundTempKelvin = GroundTemp + KelvinConv; - GroundTempFC = siteFCFactorMethodGroundTempsPtr->getGroundTempAtTimeInMonths( 0, Month ); - GroundTemp_Surface = siteShallowGroundTempsPtr->getGroundTempAtTimeInMonths( 0, Month ); - GroundTemp_Deep = siteDeepGroundTempsPtr->getGroundTempAtTimeInMonths( 0, Month ); - GndReflectance = GroundReflectances( Month ); - GndReflectanceForDayltg = GndReflectance; - - CalcWaterMainsTemp(); - - // Determine if Sun is up or down, set Solar Cosine values for time step. - DetermineSunUpDown( SOLCOS ); - if ( SunIsUp && SolarAltitudeAngle < 0.0 ) { - ShowFatalError( "SetCurrentWeather: At " + CurMnDyHr + " Sun is Up but Solar Altitude Angle is < 0.0" ); - } - - OutDryBulbTemp = TodayOutDryBulbTemp( TimeStep, HourOfDay ); - if ( EMSOutDryBulbOverrideOn ) OutDryBulbTemp = EMSOutDryBulbOverrideValue; - OutBaroPress = TodayOutBaroPress( TimeStep, HourOfDay ); - OutDewPointTemp = TodayOutDewPointTemp( TimeStep, HourOfDay ); - if ( EMSOutDewPointTempOverrideOn ) OutDewPointTemp = EMSOutDewPointTempOverrideValue; - OutRelHum = TodayOutRelHum( TimeStep, HourOfDay ); - OutRelHumValue = OutRelHum / 100.0; - if ( EMSOutRelHumOverrideOn ) { - OutRelHumValue = EMSOutRelHumOverrideValue / 100.0; - OutRelHum = EMSOutRelHumOverrideValue; - } - - // Humidity Ratio and Wet Bulb are derived - OutHumRat = PsyWFnTdbRhPb( OutDryBulbTemp, OutRelHumValue, OutBaroPress, RoutineName ); - OutWetBulbTemp = PsyTwbFnTdbWPb( OutDryBulbTemp, OutHumRat, OutBaroPress ); - if ( OutDryBulbTemp < OutWetBulbTemp ) { - OutWetBulbTemp = OutDryBulbTemp; - TempVal = PsyWFnTdbTwbPb( OutDryBulbTemp, OutWetBulbTemp, OutBaroPress ); - TempDPVal = PsyTdpFnWPb( TempVal, OutBaroPress ); - OutDewPointTemp = TempDPVal; - } - - if ( OutDewPointTemp > OutWetBulbTemp ) { - OutDewPointTemp = OutWetBulbTemp; - } - - if ( ( KindOfSim == ksDesignDay ) || ( KindOfSim == ksHVACSizeDesignDay ) ) { - SPSiteDryBulbRangeModScheduleValue = -999.0; // N/A Drybulb Temperature Range Modifier Schedule Value - SPSiteHumidityConditionScheduleValue = -999.0; // N/A Humidity Condition Schedule Value - SPSiteBeamSolarScheduleValue = -999.0; // N/A Beam Solar Schedule Value - SPSiteDiffuseSolarScheduleValue = -999.0; // N/A Diffuse Solar Schedule Value - SPSiteSkyTemperatureScheduleValue = -999.0; // N/A SkyTemperature Modifier Schedule Value - - int const envrnDayNum( Environment( Envrn ).DesignDayNum ); - if ( DesDayInput( envrnDayNum ).DBTempRangeType != DDDBRangeType_Default ) { - SPSiteDryBulbRangeModScheduleValue( envrnDayNum ) = DDDBRngModifier( TimeStep, HourOfDay, envrnDayNum ); - } - int const humIndType( DesDayInput( envrnDayNum ).HumIndType ); - if ( humIndType == DDHumIndType_WBProfDef || humIndType == DDHumIndType_WBProfDif || humIndType == DDHumIndType_WBProfMul ) { - SPSiteHumidityConditionScheduleValue( envrnDayNum ) = DDHumIndModifier( TimeStep, HourOfDay, envrnDayNum ); - } else if ( humIndType == DDHumIndType_RelHumSch ) { - SPSiteHumidityConditionScheduleValue( envrnDayNum ) = DDHumIndModifier( TimeStep, HourOfDay, envrnDayNum ); - } - if ( DesDayInput( envrnDayNum ).SolarModel == SolarModel_Schedule ) { - SPSiteBeamSolarScheduleValue( envrnDayNum ) = DDBeamSolarValues( TimeStep, HourOfDay, envrnDayNum ); - SPSiteDiffuseSolarScheduleValue( envrnDayNum ) = DDDiffuseSolarValues( TimeStep, HourOfDay, envrnDayNum ); - } - if ( Environment( Envrn ).WP_Type1 != 0 ) { - SPSiteSkyTemperatureScheduleValue( envrnDayNum ) = DDSkyTempScheduleValues( TimeStep, HourOfDay, envrnDayNum ); - } - } else if ( TotDesDays > 0 ) { - SPSiteDryBulbRangeModScheduleValue = -999.0; // N/A Drybulb Temperature Range Modifier Schedule Value - SPSiteHumidityConditionScheduleValue = -999.0; // N/A Humidity Condition Schedule Value - SPSiteBeamSolarScheduleValue = -999.0; // N/A Beam Solar Schedule Value - SPSiteDiffuseSolarScheduleValue = -999.0; // N/A Diffuse Solar Schedule Value - SPSiteSkyTemperatureScheduleValue = -999.0; // N/A SkyTemperature Modifier Schedule Value - } - - WindSpeed = TodayWindSpeed( TimeStep, HourOfDay ); - if ( EMSWindSpeedOverrideOn ) WindSpeed = EMSWindSpeedOverrideValue; - WindDir = TodayWindDir( TimeStep, HourOfDay ); - if ( EMSWindDirOverrideOn ) WindDir = EMSWindDirOverrideValue; - HorizIRSky = TodayHorizIRSky( TimeStep, HourOfDay ); - SkyTemp = TodaySkyTemp( TimeStep, HourOfDay ); - SkyTempKelvin = SkyTemp + KelvinConv; - DifSolarRad = TodayDifSolarRad( TimeStep, HourOfDay ); - if ( EMSDifSolarRadOverrideOn ) DifSolarRad = EMSDifSolarRadOverrideValue; - BeamSolarRad = TodayBeamSolarRad( TimeStep, HourOfDay ); - if ( EMSBeamSolarRadOverrideOn ) BeamSolarRad = EMSBeamSolarRadOverrideValue; - LiquidPrecipitation = TodayLiquidPrecip( TimeStep, HourOfDay ) / 1000.0; // convert from mm to m - - if ( UseRainValues ) { - IsRain = TodayIsRain( TimeStep, HourOfDay ); //.or. LiquidPrecipitation >= .8d0) ! > .8 mm - } else { - IsRain = false; - } - if ( UseSnowValues ) { - IsSnow = TodayIsSnow( TimeStep, HourOfDay ); - } else { - IsSnow = false; - } - - if ( IsSnow ) { - GndReflectance = max( min( GndReflectance * SnowGndRefModifier, 1.0 ), 0.0 ); - GndReflectanceForDayltg = max( min( GndReflectanceForDayltg * SnowGndRefModifierForDayltg, 1.0 ), 0.0 ); - } - - GndSolarRad = max( ( BeamSolarRad * SOLCOS( 3 ) + DifSolarRad ) * GndReflectance, 0.0 ); - - if ( ! SunIsUp ) { - DifSolarRad = 0.0; - BeamSolarRad = 0.0; - GndSolarRad = 0.0; - } - - // Calc some values - OutEnthalpy = PsyHFnTdbW( OutDryBulbTemp, OutHumRat ); - OutAirDensity = PsyRhoAirFnPbTdbW( OutBaroPress, OutDryBulbTemp, OutHumRat ); - - // Make sure outwetbulbtemp is valid. And that no error occurs here. - if ( OutDryBulbTemp < OutWetBulbTemp ) OutWetBulbTemp = OutDryBulbTemp; - - // VALIDITY TEST. - if ( OutDewPointTemp > OutWetBulbTemp ) { - OutDewPointTemp = OutWetBulbTemp; - } - // Get exterior daylight illuminance for daylighting calculation - - DayltgCurrentExtHorizIllum(); - - if ( ! IsRain ) { - RptIsRain = 0; - } else { - RptIsRain = 1; - } - - if ( ! IsSnow ) { - RptIsSnow = 0; - } else { - RptIsSnow = 1; - } - } + // REFERENCES: + // na - void ReadWeatherForDay(int const DayToRead, // =1 when starting out, otherwise signifies next day - int const Environ, // Environment being simulated - bool const BackSpaceAfterRead // True if weather file is to be backspaced after read - ) - { + // USE STATEMENTS: + // na + // Using/Aliasing + using General::InvJulianDay; + using General::JulianDay; - // SUBROUTINE INFORMATION: - // AUTHOR Linda K. Lawrie - // DATE WRITTEN April 1999 - // MODIFIED na - // RE-ENGINEERED na + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: - // PURPOSE OF THIS SUBROUTINE: - // This subroutine is the driving routine behind reading the weather data. - // Theoretically, several kinds of weather files could be read here. As - // distributed only EPW files are allowed. + // SUBROUTINE PARAMETER DEFINITIONS: + // na - // METHODOLOGY EMPLOYED: - // na + // INTERFACE BLOCK SPECIFICATIONS: + // na - // REFERENCES: - // na + // DERIVED TYPE DEFINITIONS: + // na - // USE STATEMENTS: - // na + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + int Loop; + int FirstSimDayofYear; // Variable which tells when to skip the day in a multi year simulation. - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: + static bool FirstCall(true); // Some things should only be done once + // LOGICAL, SAVE :: SetYear=.TRUE. + int JDay5Start; + int JDay5End; + int TWeekDay; - // SUBROUTINE PARAMETER DEFINITIONS: - // na + // FLOW: - // INTERFACE BLOCK SPECIFICATIONS: - // na + if (BeginSimFlag && FirstCall) { - // DERIVED TYPE DEFINITIONS: - // na + FirstCall = false; + EndMonthFlag = false; - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - // na + } // ... end of BeginSimFlag IF-THEN block. - ReadEPlusWeatherForDay( DayToRead, Environ, BackSpaceAfterRead ); - } + if (BeginEnvrnFlag) { - void ReadEPlusWeatherForDay(int const DayToRead, // =1 when starting out, otherwise signifies next day - int const Environ, // Environment being simulated - bool const BackSpaceAfterRead // True if weather file is to be backspaced after read - ) - { - - // SUBROUTINE INFORMATION: - // AUTHOR Linda K. Lawrie - // DATE WRITTEN April 1999 - // MODIFIED March 2012; add actual weather read. - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // This subroutine reads the appropriate day of EPW weather data. - - // Using/Aliasing - using General::JulianDay; - using General::RoundSigDigits; - using ScheduleManager::GetScheduleValuesForDay; - - // SUBROUTINE PARAMETER DEFINITIONS: - static gio::Fmt fmtLD( "*" ); - static gio::Fmt YMDHFmt( "(I4.4,2('/',I2.2),1X,I2.2,':',I2.2)" ); - static gio::Fmt YMDHFmt1( "(I4.4,2('/',I2.2),1X,'hour=',I2.2,' - expected hour=',I2.2)" ); - - // DERIVED TYPE DEFINITIONS: - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - int Hour; - int TS; - int WYear; - int WMonth; - int WDay; - int WHour; - int WMinute; - Real64 DryBulb; - Real64 DewPoint; - Real64 RelHum; - Real64 AtmPress; - Real64 ETHoriz; - Real64 ETDirect; - Real64 IRHoriz; - Real64 GLBHoriz; - Real64 DirectRad; - Real64 DiffuseRad; - Real64 GLBHorizIllum; - Real64 DirectNrmIllum; - Real64 DiffuseHorizIllum; - Real64 ZenLum; - Real64 WindDir; - Real64 WindSpeed; - Real64 TotalSkyCover; - Real64 OpaqueSkyCover; - Real64 Visibility; - Real64 CeilHeight; - Real64 PrecipWater; - Real64 AerosolOptDepth; - Real64 SnowDepth; - Real64 DaysSinceLastSnow; - Real64 Albedo; - Real64 LiquidPrecip; - int PresWeathObs; - Array1D_int PresWeathConds( 9 ); - std::string WeatherDataLine; - bool Ready; - int CurTimeStep; - int Item; - - Real64 A; - Real64 B; - Real64 C; - Real64 AVSC; - Real64 SkyTemp; - static int CurDayOfWeek; - static bool UseDayOfWeek; - bool SkipThisDay; // Used when LeapYear is/is not in effect - bool TryAgain; - int ReadStatus; - int NumRewinds; - std::string BadRecord; - bool ErrorsFound; - static Real64 CurTime; - Real64 HourRep; - int OSky; - Real64 TDewK; - Real64 ESky; - bool ErrorFound; - std::string ErrOut; - static bool LastHourSet; // for Interpolation - int NxtHour; - Real64 WtNow; - Real64 WtPrevHour; - Real64 WgtHourNow; - Real64 WgtPrevHour; - Real64 WgtNextHour; - static Real64 LastHrOutDryBulbTemp; - static Real64 LastHrOutDewPointTemp; - static Real64 LastHrOutBaroPress; - static Real64 LastHrOutRelHum; - static Real64 LastHrWindSpeed; - static Real64 LastHrWindDir; - static Real64 LastHrSkyTemp; - static Real64 LastHrHorizIRSky; - static Real64 LastHrBeamSolarRad; - static Real64 LastHrDifSolarRad; - static Real64 LastHrAlbedo; - static Real64 LastHrLiquidPrecip; - static Real64 NextHrBeamSolarRad; - static Real64 NextHrDifSolarRad; - static Real64 NextHrLiquidPrecip; - bool RecordDateMatch; - - struct HourlyWeatherData - { - // Members - Array1D_bool IsRain; // Rain indicator, true=rain - Array1D_bool IsSnow; // Snow indicator, true=snow - Array1D< Real64 > OutDryBulbTemp; // Hourly dry bulb temperature of outside air - Array1D< Real64 > OutDewPointTemp; // Hourly Dew Point Temperature of outside air - Array1D< Real64 > OutBaroPress; // Hourly barometric pressure of outside air - Array1D< Real64 > OutRelHum; // Hourly relative humidity - Array1D< Real64 > WindSpeed; // Hourly wind speed of outside air - Array1D< Real64 > WindDir; // Hourly wind direction of outside air - Array1D< Real64 > SkyTemp; // Hourly sky temperature - Array1D< Real64 > HorizIRSky; // Hourly Horizontal Infrared Radiation Intensity - Array1D< Real64 > BeamSolarRad; // Hourly direct normal solar irradiance - Array1D< Real64 > DifSolarRad; // Hourly sky diffuse horizontal solar irradiance - Array1D< Real64 > Albedo; // Albedo - Array1D< Real64 > LiquidPrecip; // Liquid Precipitation - - // Default Constructor - HourlyWeatherData() - : IsRain(24, false), IsSnow(24, false), OutDryBulbTemp(24, 0.0), OutDewPointTemp(24, 0.0), OutBaroPress(24, 0.0), OutRelHum(24, 0.0), - WindSpeed(24, 0.0), WindDir(24, 0.0), SkyTemp(24, 0.0), HorizIRSky(24, 0.0), BeamSolarRad(24, 0.0), DifSolarRad(24, 0.0), - Albedo(24, 0.0), LiquidPrecip(24, 0.0) - { - } - }; - - // Object Data - HourlyWeatherData Wthr; - - if ( DayToRead == 1 ) { - - // Checks whether Weather file contains just one year of data. If yes then rewind and position to first - // day of weather file. The rest of code appropriately positions to the start day. - - Ready = false; - NumRewinds = 0; - // Must position file to proper day - // File already position to first data record - // Set Current Day of Week to "start of Data Period" - CurTime = 1.0 / double( NumIntervalsPerHour ); - CurDayOfWeek = DataPeriods( 1 ).WeekDay - 1; - WYear = 0; - WMonth = 0; - WDay = 0; - WHour = 0; - WMinute = 0; - LastHourSet = false; - while ( ! Ready ) { - { - IOFlags flags; - gio::read(WeatherFileUnitNumber, fmtA, flags) >> WeatherDataLine; - ReadStatus = flags.ios(); + // Call and setup the Design Day environment + if (Environment(Envrn).KindOfEnvrn != ksRunPeriodWeather) { + if (Environment(Envrn).DesignDayNum > 0) { + SetUpDesignDay(Environment(Envrn).DesignDayNum); + EnvironmentName = Environment(Envrn).Title; } - if ( ReadStatus == 0 ) { - // Reduce ugly code - InterpretWeatherDataLine(WeatherDataLine, ErrorFound, WYear, WMonth, WDay, WHour, WMinute, DryBulb, DewPoint, RelHum, AtmPress, - ETHoriz, ETDirect, IRHoriz, GLBHoriz, DirectRad, DiffuseRad, GLBHorizIllum, DirectNrmIllum, - DiffuseHorizIllum, ZenLum, WindDir, WindSpeed, TotalSkyCover, OpaqueSkyCover, Visibility, CeilHeight, - PresWeathObs, PresWeathConds, PrecipWater, AerosolOptDepth, SnowDepth, DaysSinceLastSnow, Albedo, - LiquidPrecip); - } else if ( ReadStatus < 0 ) { - if ( NumRewinds > 0 ) { - ShowSevereError( "Multiple rewinds on EPW while searching for first day" ); - } else { - gio::rewind( WeatherFileUnitNumber ); - ++NumRewinds; - SkipEPlusWFHeader(); - { + } + + NumMissing = 0; // Only used in Weather file environments + // Start over missing values with each environment + Missing.StnPres = StdBaroPress; // Initial "missing" value + Missing.DryBulb = 6.0; // Initial "missing" value + Missing.DewPoint = 3.0; // Initial "missing" value + Missing.RelHumid = 50.0; // Initial "missing" value + Missing.WindSpd = 2.5; // Initial "missing" value + Missing.WindDir = 180; // Initial "missing" value + Missing.TotSkyCvr = 5; // Initial "missing" value + Missing.OpaqSkyCvr = 5; // Initial "missing" value + Missing.Visibility = 777.7; // Initial "missing" value + Missing.Ceiling = 77777; // Initial "missing" value + Missing.PrecipWater = 0; // Initial "missing" value + Missing.AerOptDepth = 0.0; // Initial "missing" value + Missing.SnowDepth = 0; // Initial "missing" value + Missing.DaysLastSnow = 88; // Initial "missing" value + Missing.Albedo = 0.0; // Initial "missing" value + Missing.LiquidPrecip = 0.0; // Initial "missing" value + // Counts set to 0 for each environment + Missed.StnPres = 0; + Missed.DryBulb = 0; + Missed.DewPoint = 0; + Missed.RelHumid = 0; + Missed.WindSpd = 0; + Missed.WindDir = 0; + Missed.TotSkyCvr = 0; + Missed.OpaqSkyCvr = 0; + Missed.Visibility = 0; + Missed.Ceiling = 0; + Missed.PrecipWater = 0; + Missed.AerOptDepth = 0; + Missed.SnowDepth = 0; + Missed.DaysLastSnow = 0; + Missed.Albedo = 0; + Missed.LiquidPrecip = 0; + Missed.WeathCodes = 0; + Missed.DirectRad = 0; + Missed.DiffuseRad = 0; + // Counts set to 0 for each environment + OutOfRange.StnPres = 0; + OutOfRange.DryBulb = 0; + OutOfRange.DewPoint = 0; + OutOfRange.RelHumid = 0; + OutOfRange.WindSpd = 0; + OutOfRange.WindDir = 0; + OutOfRange.DirectRad = 0; + OutOfRange.DiffuseRad = 0; + + if (!RPReadAllWeatherData) { + PrintEnvrnStamp = true; // Set this to true so that on first non-warmup day (only) the environment header will print out + } + + // WeekDayCount=0 ! Reset weekday count (weather periods only) + for (Loop = 1; Loop <= NumSpecialDays; ++Loop) { + SpecialDays(Loop).Used = false; + } + + if ((KindOfSim != ksDesignDay) && (KindOfSim != ksHVACSizeDesignDay)) { + ReadWeatherForDay(1, Envrn, false); // Read first day's weather + } else { + TomorrowVariables = DesignDay(Environment(Envrn).DesignDayNum); + } + + } // ... end of BeginEnvrnFlag IF-THEN block. + + if (BeginDayFlag) { + + // Check Holidays, Daylight Saving Time, Ground Temperatures, etc. + + UpdateWeatherData(); // Update daily weather info + + // Read tomorrow's weather only if necessary. This means that the + // simulation is out of warmup, is using a weather tape for this + // environment, and is not on the last day (day after last day is + // assumed to be equal to last day). + + // Following code checks whether the present day of simulation matches the start month and start day. + // In a multi year simulation with run period less than 365, we need to position the weather line + // appropriately. + + if ((!WarmupFlag) && ((Environment(Envrn).KindOfEnvrn != ksDesignDay) && (Environment(Envrn).KindOfEnvrn != ksHVACSizeDesignDay))) { + if (DayOfSim < NumOfDayInEnvrn) { + if (DayOfSim == curSimDayForEndOfRunPeriod) { + curSimDayForEndOfRunPeriod += Environment(Envrn).RawSimDays; + if (StartDatesCycleShouldBeReset) { + ResetWeekDaysByMonth(Environment(Envrn).MonWeekDay, LeapYearAdd, Environment(Envrn).StartMonth, + Environment(Envrn).StartDay, Environment(Envrn).EndMonth, Environment(Envrn).EndDay, + Environment(Envrn).RollDayTypeOnRepeat); + if (DaylightSavingIsActive) { + SetDSTDateRanges(Environment(Envrn).MonWeekDay, DSTIndex); + } + SetSpecialDayDates(Environment(Envrn).MonWeekDay); + } + ++YearOfSim; + DataGlobals::CalendarYear += 1; + DataGlobals::CalendarYearChr = std::to_string(DataGlobals::CalendarYear); + FirstSimDayofYear = 1; + ReadWeatherForDay(FirstSimDayofYear, Envrn, false); // Read tomorrow's weather + } else { + ReadWeatherForDay(DayOfSim + 1, Envrn, false); // Read tomorrow's weather + } + } + } + + EndYearFlag = false; + if (DayOfMonth == EndDayOfMonth(Month)) { + EndMonthFlag = true; + EndYearFlag = (Month == 12); + } + + // Set Tomorrow's date data + MonthTomorrow = TomorrowVariables.Month; + DayOfMonthTomorrow = TomorrowVariables.DayOfMonth; + DayOfWeekTomorrow = TomorrowVariables.DayOfWeek; + HolidayIndexTomorrow = TomorrowVariables.HolidayIndex; + YearTomorrow = TomorrowVariables.Year; + + if (Environment(Envrn).KindOfEnvrn == ksRunPeriodWeather) { + if (Month == 1 && DayOfMonth == 1 && Environment(Envrn).ActualWeather) { + if (DatesShouldBeReset) { + if (Environment(Envrn).TreatYearsAsConsecutive) { + ++Environment(Envrn).CurrentYear; + Environment(Envrn).IsLeapYear = isLeapYear(Environment(Envrn).CurrentYear); + CurrentYearIsLeapYear = Environment(Envrn).IsLeapYear; + if (CurrentYearIsLeapYear) { + if (WFAllowsLeapYears) { + LeapYearAdd = 1; + } else { + LeapYearAdd = 0; + } + } else { + LeapYearAdd = 0; + } + // need to reset MonWeekDay and WeekDayTypes + if (!CurrentYearIsLeapYear) { + JDay5Start = JulianDay(Environment(Envrn).StartMonth, Environment(Envrn).StartDay, 0); + JDay5End = JulianDay(Environment(Envrn).EndMonth, Environment(Envrn).EndDay, 0); + } else { + JDay5Start = JulianDay(Environment(Envrn).StartMonth, Environment(Envrn).StartDay, LeapYearAdd); + JDay5End = JulianDay(Environment(Envrn).EndMonth, Environment(Envrn).EndDay, LeapYearAdd); + } + if (!Environment(Envrn).ActualWeather) + curSimDayForEndOfRunPeriod = DayOfSim + Environment(Envrn).RawSimDays + LeapYearAdd - 1; + + Loop = JDay5Start; + TWeekDay = DayOfWeek; + while (true) { + WeekDayTypes(Loop) = TWeekDay; + TWeekDay = mod(TWeekDay, 7) + 1; + ++Loop; + if (Loop > 366) Loop = 1; + if (Loop == JDay5End) break; + } + ResetWeekDaysByMonth(Environment(Envrn).MonWeekDay, LeapYearAdd, Environment(Envrn).StartMonth, + Environment(Envrn).StartDay, Environment(Envrn).EndMonth, Environment(Envrn).EndDay, + Environment(Envrn).RollDayTypeOnRepeat); + if (DaylightSavingIsActive) { + SetDSTDateRanges(Environment(Envrn).MonWeekDay, DSTIndex); + } + SetSpecialDayDates(Environment(Envrn).MonWeekDay); + } + } + } else if ((Month == 1 && DayOfMonth == 1) && DatesShouldBeReset && (Jan1DatesShouldBeReset)) { + if (Environment(Envrn).TreatYearsAsConsecutive) { + ++Environment(Envrn).CurrentYear; + Environment(Envrn).IsLeapYear = isLeapYear(Environment(Envrn).CurrentYear); + CurrentYearIsLeapYear = Environment(Envrn).IsLeapYear; + if (CurrentYearIsLeapYear && !WFAllowsLeapYears) CurrentYearIsLeapYear = false; + if (DayOfSim < curSimDayForEndOfRunPeriod && CurrentYearIsLeapYear) ++curSimDayForEndOfRunPeriod; + } + if (CurrentYearIsLeapYear) { + if (WFAllowsLeapYears) { + LeapYearAdd = 1; + } else { + LeapYearAdd = 0; + } + } else { + LeapYearAdd = 0; + } + + if (DayOfSim < curSimDayForEndOfRunPeriod) { + if (Environment(Envrn).RollDayTypeOnRepeat || CurrentYearIsLeapYear) { + ResetWeekDaysByMonth(Environment(Envrn).MonWeekDay, LeapYearAdd, Environment(Envrn).StartMonth, + Environment(Envrn).StartDay, Environment(Envrn).EndMonth, Environment(Envrn).EndDay, + Environment(Envrn).RollDayTypeOnRepeat, true); + } else { + ResetWeekDaysByMonth(Environment(Envrn).MonWeekDay, LeapYearAdd, Environment(Envrn).StartMonth, + Environment(Envrn).StartDay, Environment(Envrn).EndMonth, Environment(Envrn).EndDay, + Environment(Envrn).RollDayTypeOnRepeat, false); + } + if (DaylightSavingIsActive) { + SetDSTDateRanges(Environment(Envrn).MonWeekDay, DSTIndex); + } + SetSpecialDayDates(Environment(Envrn).MonWeekDay); + } + } + // SetYear=.FALSE. + } + } // ... end of BeginDayFlag IF-THEN block. + + if (!BeginDayFlag && !WarmupFlag && (Month != Environment(Envrn).StartMonth || DayOfMonth != Environment(Envrn).StartDay) && + !DatesShouldBeReset && Environment(Envrn).KindOfEnvrn == ksRunPeriodWeather) { + // SetYear=.TRUE. + DatesShouldBeReset = true; + } + + if (EndEnvrnFlag && (Environment(Envrn).KindOfEnvrn != ksDesignDay) && (Environment(Envrn).KindOfEnvrn != ksHVACSizeDesignDay)) { + gio::rewind(WeatherFileUnitNumber); + SkipEPlusWFHeader(); + ReportMissing_RangeData(); + } + + // set the EndDesignDayEnvrnsFlag (dataGlobals) + // True at the end of the last design day environment (last time step of last hour of last day of environ which is a design day) + // added to address CR7562 + EndDesignDayEnvrnsFlag = false; + if (EndEnvrnFlag) { + if (Envrn < NumOfEnvrn) { + if (Environment(Envrn).KindOfEnvrn != Environment(Envrn + 1).KindOfEnvrn) { + EndDesignDayEnvrnsFlag = true; + } + } else { + // if the last environment set the flag to true. + EndDesignDayEnvrnsFlag = true; + } + } + } + + void UpdateWeatherData() + { + + // SUBROUTINE INFORMATION: + // AUTHOR Rick Strand + // DATE WRITTEN June 1997 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // This subroutine updates all of the daily weather data in the local + // module level variables and the global variables. + // This subroutine will temporarily transfer the weather data for the + // current day to the old data structure contained in envdat.inc until + // enough reengineering has taken place to eliminate the need for this + // include. + + // METHODOLOGY EMPLOYED: + // na + + // REFERENCES: + // na + + // USE STATEMENTS: + // na + + // SUBROUTINE ARGUMENT DEFINITIONS: + // na + + // SUBROUTINE PARAMETER DEFINITIONS: + // na + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // DERIVED TYPE DEFINITIONS: + // na + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + // na + + // FLOW: + // unused integer :: myhr + + TodayVariables = TomorrowVariables; // Transfer Tomorrow's Daily Weather Variables to Today + + if (BeginEnvrnFlag) { + PreviousHour = 24; + } + + TodayIsRain = TomorrowIsRain; + TodayIsSnow = TomorrowIsSnow; + TodayOutDryBulbTemp = TomorrowOutDryBulbTemp; + TodayOutDewPointTemp = TomorrowOutDewPointTemp; + TodayOutBaroPress = TomorrowOutBaroPress; + TodayOutRelHum = TomorrowOutRelHum; + TodayWindSpeed = TomorrowWindSpeed; + TodayWindDir = TomorrowWindDir; + TodaySkyTemp = TomorrowSkyTemp; + TodayHorizIRSky = TomorrowHorizIRSky; + TodayBeamSolarRad = TomorrowBeamSolarRad; + TodayDifSolarRad = TomorrowDifSolarRad; + TodayLiquidPrecip = TomorrowLiquidPrecip; + + // Update Global Data + + DayOfYear = TodayVariables.DayOfYear; + Year = TodayVariables.Year; + Month = TodayVariables.Month; + DayOfMonth = TodayVariables.DayOfMonth; + DayOfWeek = TodayVariables.DayOfWeek; + // WeekDayCount(DayOfWeek)=WeekDayCount(DayOfWeek)+1 + HolidayIndex = TodayVariables.HolidayIndex; + if (HolidayIndex > 0) { + RptDayType = 7 + HolidayIndex; + } else { + RptDayType = DayOfWeek; + } + DSTIndicator = TodayVariables.DaylightSavingIndex; + EquationOfTime = TodayVariables.EquationOfTime; + CosSolarDeclinAngle = TodayVariables.CosSolarDeclinAngle; + SinSolarDeclinAngle = TodayVariables.SinSolarDeclinAngle; + } + + void SetCurrentWeather() + { + + // SUBROUTINE INFORMATION: + // AUTHOR Russ Taylor + // DATE WRITTEN March 1990 + // MODIFIED Aug94 (LKL) Fixed improper weighting + // Nov98 (FCW) Added call to get exterior illuminances + // Jan02 (FCW) Changed how ground reflectance for daylighting is set + // Mar12 (LKL) Changed settings for leap years/ current years. + // RE-ENGINEERED Apr97,May97 (RKS) + + // PURPOSE OF THIS SUBROUTINE: + // The purpose of this subroutine is to interpolate the hourly + // environment data for the sub-hourly time steps in EnergyPlus. In + // other words, this subroutine puts the current weather conditions + // into the proper variables. Rather than using the same data for + // each time step, environment data is interpolated as a continuum + // throughout the day. + + // METHODOLOGY EMPLOYED: + // The current hour (HourOfDay) as well as the next hour are used + // to come up with environment data per time step interval. Method + // used is to assign a weighting for the current hour's data and + // (1-that weighting) to the next hour's data. Actual method is: if + // the current time step is 15 minutes into hour, the interpolated dry + // bulb temperature should be 3/4*dry bulb temperature of current hour + // and 1/4*dry bulb temperature of next environment hourly data. At + // day boundary (current hour = 24), the next hour is hour 1 of next + // weather data day (Tomorrow%). + + // REFERENCES: + // INTERPOL(IBLAST) legacy code. + + // Using/Aliasing + using General::JulianDay; + using ScheduleManager::UpdateScheduleValues; + using namespace GroundTemperatureManager; + + // SUBROUTINE PARAMETER DEFINITIONS: + static char time_stamp[10]; + static char day_stamp[6]; + static std::string const RoutineName("SetCurrentWeather"); + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + static int NextHour; + Real64 TempVal; + Real64 TempDPVal; + + // FLOW: + + NextHour = HourOfDay + 1; + + if (HourOfDay == 24) { // Should investigate whether EndDayFlag is always set here and use that instead + NextHour = 1; + } + + if (HourOfDay == 1) { // Should investigate whether BeginDayFlag is always set here and use that instead + DayOfYear_Schedule = JulianDay(Month, DayOfMonth, 1); + } + + UpdateScheduleValues(); + + std::sprintf(time_stamp, "%02d/%02d %02d:", Month, DayOfMonth, HourOfDay - 1); + CurMnDyHr = time_stamp; + std::sprintf(day_stamp, "%02d/%02d", Month, DayOfMonth); + CurMnDy = day_stamp; + + WeightNow = Interpolation(TimeStep); + WeightPreviousHour = 1.0 - WeightNow; + + CurrentTime = (HourOfDay - 1) + TimeStep * (TimeStepFraction); + SimTimeSteps = (DayOfSim - 1) * 24 * NumOfTimeStepInHour + (HourOfDay - 1) * NumOfTimeStepInHour + TimeStep; + + GroundTemp = siteBuildingSurfaceGroundTempsPtr->getGroundTempAtTimeInMonths(0, Month); + GroundTempKelvin = GroundTemp + KelvinConv; + GroundTempFC = siteFCFactorMethodGroundTempsPtr->getGroundTempAtTimeInMonths(0, Month); + GroundTemp_Surface = siteShallowGroundTempsPtr->getGroundTempAtTimeInMonths(0, Month); + GroundTemp_Deep = siteDeepGroundTempsPtr->getGroundTempAtTimeInMonths(0, Month); + GndReflectance = GroundReflectances(Month); + GndReflectanceForDayltg = GndReflectance; + + CalcWaterMainsTemp(); + + // Determine if Sun is up or down, set Solar Cosine values for time step. + DetermineSunUpDown(SOLCOS); + if (SunIsUp && SolarAltitudeAngle < 0.0) { + ShowFatalError("SetCurrentWeather: At " + CurMnDyHr + " Sun is Up but Solar Altitude Angle is < 0.0"); + } + + OutDryBulbTemp = TodayOutDryBulbTemp(TimeStep, HourOfDay); + if (EMSOutDryBulbOverrideOn) OutDryBulbTemp = EMSOutDryBulbOverrideValue; + OutBaroPress = TodayOutBaroPress(TimeStep, HourOfDay); + OutDewPointTemp = TodayOutDewPointTemp(TimeStep, HourOfDay); + if (EMSOutDewPointTempOverrideOn) OutDewPointTemp = EMSOutDewPointTempOverrideValue; + OutRelHum = TodayOutRelHum(TimeStep, HourOfDay); + OutRelHumValue = OutRelHum / 100.0; + if (EMSOutRelHumOverrideOn) { + OutRelHumValue = EMSOutRelHumOverrideValue / 100.0; + OutRelHum = EMSOutRelHumOverrideValue; + } + + // Humidity Ratio and Wet Bulb are derived + OutHumRat = PsyWFnTdbRhPb(OutDryBulbTemp, OutRelHumValue, OutBaroPress, RoutineName); + OutWetBulbTemp = PsyTwbFnTdbWPb(OutDryBulbTemp, OutHumRat, OutBaroPress); + if (OutDryBulbTemp < OutWetBulbTemp) { + OutWetBulbTemp = OutDryBulbTemp; + TempVal = PsyWFnTdbTwbPb(OutDryBulbTemp, OutWetBulbTemp, OutBaroPress); + TempDPVal = PsyTdpFnWPb(TempVal, OutBaroPress); + OutDewPointTemp = TempDPVal; + } + + if (OutDewPointTemp > OutWetBulbTemp) { + OutDewPointTemp = OutWetBulbTemp; + } + + if ((KindOfSim == ksDesignDay) || (KindOfSim == ksHVACSizeDesignDay)) { + SPSiteDryBulbRangeModScheduleValue = -999.0; // N/A Drybulb Temperature Range Modifier Schedule Value + SPSiteHumidityConditionScheduleValue = -999.0; // N/A Humidity Condition Schedule Value + SPSiteBeamSolarScheduleValue = -999.0; // N/A Beam Solar Schedule Value + SPSiteDiffuseSolarScheduleValue = -999.0; // N/A Diffuse Solar Schedule Value + SPSiteSkyTemperatureScheduleValue = -999.0; // N/A SkyTemperature Modifier Schedule Value + + int const envrnDayNum(Environment(Envrn).DesignDayNum); + if (DesDayInput(envrnDayNum).DBTempRangeType != DDDBRangeType_Default) { + SPSiteDryBulbRangeModScheduleValue(envrnDayNum) = DDDBRngModifier(TimeStep, HourOfDay, envrnDayNum); + } + int const humIndType(DesDayInput(envrnDayNum).HumIndType); + if (humIndType == DDHumIndType_WBProfDef || humIndType == DDHumIndType_WBProfDif || humIndType == DDHumIndType_WBProfMul) { + SPSiteHumidityConditionScheduleValue(envrnDayNum) = DDHumIndModifier(TimeStep, HourOfDay, envrnDayNum); + } else if (humIndType == DDHumIndType_RelHumSch) { + SPSiteHumidityConditionScheduleValue(envrnDayNum) = DDHumIndModifier(TimeStep, HourOfDay, envrnDayNum); + } + if (DesDayInput(envrnDayNum).SolarModel == SolarModel_Schedule) { + SPSiteBeamSolarScheduleValue(envrnDayNum) = DDBeamSolarValues(TimeStep, HourOfDay, envrnDayNum); + SPSiteDiffuseSolarScheduleValue(envrnDayNum) = DDDiffuseSolarValues(TimeStep, HourOfDay, envrnDayNum); + } + if (Environment(Envrn).WP_Type1 != 0) { + SPSiteSkyTemperatureScheduleValue(envrnDayNum) = DDSkyTempScheduleValues(TimeStep, HourOfDay, envrnDayNum); + } + } else if (TotDesDays > 0) { + SPSiteDryBulbRangeModScheduleValue = -999.0; // N/A Drybulb Temperature Range Modifier Schedule Value + SPSiteHumidityConditionScheduleValue = -999.0; // N/A Humidity Condition Schedule Value + SPSiteBeamSolarScheduleValue = -999.0; // N/A Beam Solar Schedule Value + SPSiteDiffuseSolarScheduleValue = -999.0; // N/A Diffuse Solar Schedule Value + SPSiteSkyTemperatureScheduleValue = -999.0; // N/A SkyTemperature Modifier Schedule Value + } + + WindSpeed = TodayWindSpeed(TimeStep, HourOfDay); + if (EMSWindSpeedOverrideOn) WindSpeed = EMSWindSpeedOverrideValue; + WindDir = TodayWindDir(TimeStep, HourOfDay); + if (EMSWindDirOverrideOn) WindDir = EMSWindDirOverrideValue; + HorizIRSky = TodayHorizIRSky(TimeStep, HourOfDay); + SkyTemp = TodaySkyTemp(TimeStep, HourOfDay); + SkyTempKelvin = SkyTemp + KelvinConv; + DifSolarRad = TodayDifSolarRad(TimeStep, HourOfDay); + if (EMSDifSolarRadOverrideOn) DifSolarRad = EMSDifSolarRadOverrideValue; + BeamSolarRad = TodayBeamSolarRad(TimeStep, HourOfDay); + if (EMSBeamSolarRadOverrideOn) BeamSolarRad = EMSBeamSolarRadOverrideValue; + LiquidPrecipitation = TodayLiquidPrecip(TimeStep, HourOfDay) / 1000.0; // convert from mm to m + + if (UseRainValues) { + IsRain = TodayIsRain(TimeStep, HourOfDay); //.or. LiquidPrecipitation >= .8d0) ! > .8 mm + } else { + IsRain = false; + } + if (UseSnowValues) { + IsSnow = TodayIsSnow(TimeStep, HourOfDay); + } else { + IsSnow = false; + } + + if (IsSnow) { + GndReflectance = max(min(GndReflectance * SnowGndRefModifier, 1.0), 0.0); + GndReflectanceForDayltg = max(min(GndReflectanceForDayltg * SnowGndRefModifierForDayltg, 1.0), 0.0); + } + + GndSolarRad = max((BeamSolarRad * SOLCOS(3) + DifSolarRad) * GndReflectance, 0.0); + + if (!SunIsUp) { + DifSolarRad = 0.0; + BeamSolarRad = 0.0; + GndSolarRad = 0.0; + } + + // Calc some values + OutEnthalpy = PsyHFnTdbW(OutDryBulbTemp, OutHumRat); + OutAirDensity = PsyRhoAirFnPbTdbW(OutBaroPress, OutDryBulbTemp, OutHumRat); + + // Make sure outwetbulbtemp is valid. And that no error occurs here. + if (OutDryBulbTemp < OutWetBulbTemp) OutWetBulbTemp = OutDryBulbTemp; + + // VALIDITY TEST. + if (OutDewPointTemp > OutWetBulbTemp) { + OutDewPointTemp = OutWetBulbTemp; + } + // Get exterior daylight illuminance for daylighting calculation + + DayltgCurrentExtHorizIllum(); + + if (!IsRain) { + RptIsRain = 0; + } else { + RptIsRain = 1; + } + + if (!IsSnow) { + RptIsSnow = 0; + } else { + RptIsSnow = 1; + } + } + + void ReadWeatherForDay(int const DayToRead, // =1 when starting out, otherwise signifies next day + int const Environ, // Environment being simulated + bool const BackSpaceAfterRead // True if weather file is to be backspaced after read + ) + { + + // SUBROUTINE INFORMATION: + // AUTHOR Linda K. Lawrie + // DATE WRITTEN April 1999 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // This subroutine is the driving routine behind reading the weather data. + // Theoretically, several kinds of weather files could be read here. As + // distributed only EPW files are allowed. + + // METHODOLOGY EMPLOYED: + // na + + // REFERENCES: + // na + + // USE STATEMENTS: + // na + + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + + // SUBROUTINE PARAMETER DEFINITIONS: + // na + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // DERIVED TYPE DEFINITIONS: + // na + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + // na + + ReadEPlusWeatherForDay(DayToRead, Environ, BackSpaceAfterRead); + } + + void ReadEPlusWeatherForDay(int const DayToRead, // =1 when starting out, otherwise signifies next day + int const Environ, // Environment being simulated + bool const BackSpaceAfterRead // True if weather file is to be backspaced after read + ) + { + + // SUBROUTINE INFORMATION: + // AUTHOR Linda K. Lawrie + // DATE WRITTEN April 1999 + // MODIFIED March 2012; add actual weather read. + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // This subroutine reads the appropriate day of EPW weather data. + + // Using/Aliasing + using General::JulianDay; + using General::RoundSigDigits; + using ScheduleManager::GetScheduleValuesForDay; + + // SUBROUTINE PARAMETER DEFINITIONS: + static gio::Fmt fmtLD("*"); + static gio::Fmt YMDHFmt("(I4.4,2('/',I2.2),1X,I2.2,':',I2.2)"); + static gio::Fmt YMDHFmt1("(I4.4,2('/',I2.2),1X,'hour=',I2.2,' - expected hour=',I2.2)"); + + // DERIVED TYPE DEFINITIONS: + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + int Hour; + int TS; + int WYear; + int WMonth; + int WDay; + int WHour; + int WMinute; + Real64 DryBulb; + Real64 DewPoint; + Real64 RelHum; + Real64 AtmPress; + Real64 ETHoriz; + Real64 ETDirect; + Real64 IRHoriz; + Real64 GLBHoriz; + Real64 DirectRad; + Real64 DiffuseRad; + Real64 GLBHorizIllum; + Real64 DirectNrmIllum; + Real64 DiffuseHorizIllum; + Real64 ZenLum; + Real64 WindDir; + Real64 WindSpeed; + Real64 TotalSkyCover; + Real64 OpaqueSkyCover; + Real64 Visibility; + Real64 CeilHeight; + Real64 PrecipWater; + Real64 AerosolOptDepth; + Real64 SnowDepth; + Real64 DaysSinceLastSnow; + Real64 Albedo; + Real64 LiquidPrecip; + int PresWeathObs; + Array1D_int PresWeathConds(9); + std::string WeatherDataLine; + bool Ready; + int CurTimeStep; + int Item; + + Real64 A; + Real64 B; + Real64 C; + Real64 AVSC; + Real64 SkyTemp; + static int CurDayOfWeek; + static bool UseDayOfWeek; + bool SkipThisDay; // Used when LeapYear is/is not in effect + bool TryAgain; + int ReadStatus; + int NumRewinds; + std::string BadRecord; + bool ErrorsFound; + static Real64 CurTime; + Real64 HourRep; + int OSky; + Real64 TDewK; + Real64 ESky; + bool ErrorFound; + std::string ErrOut; + static bool LastHourSet; // for Interpolation + int NxtHour; + Real64 WtNow; + Real64 WtPrevHour; + Real64 WgtHourNow; + Real64 WgtPrevHour; + Real64 WgtNextHour; + static Real64 LastHrOutDryBulbTemp; + static Real64 LastHrOutDewPointTemp; + static Real64 LastHrOutBaroPress; + static Real64 LastHrOutRelHum; + static Real64 LastHrWindSpeed; + static Real64 LastHrWindDir; + static Real64 LastHrSkyTemp; + static Real64 LastHrHorizIRSky; + static Real64 LastHrBeamSolarRad; + static Real64 LastHrDifSolarRad; + static Real64 LastHrAlbedo; + static Real64 LastHrLiquidPrecip; + static Real64 NextHrBeamSolarRad; + static Real64 NextHrDifSolarRad; + static Real64 NextHrLiquidPrecip; + bool RecordDateMatch; + + struct HourlyWeatherData + { + // Members + Array1D_bool IsRain; // Rain indicator, true=rain + Array1D_bool IsSnow; // Snow indicator, true=snow + Array1D OutDryBulbTemp; // Hourly dry bulb temperature of outside air + Array1D OutDewPointTemp; // Hourly Dew Point Temperature of outside air + Array1D OutBaroPress; // Hourly barometric pressure of outside air + Array1D OutRelHum; // Hourly relative humidity + Array1D WindSpeed; // Hourly wind speed of outside air + Array1D WindDir; // Hourly wind direction of outside air + Array1D SkyTemp; // Hourly sky temperature + Array1D HorizIRSky; // Hourly Horizontal Infrared Radiation Intensity + Array1D BeamSolarRad; // Hourly direct normal solar irradiance + Array1D DifSolarRad; // Hourly sky diffuse horizontal solar irradiance + Array1D Albedo; // Albedo + Array1D LiquidPrecip; // Liquid Precipitation + + // Default Constructor + HourlyWeatherData() + : IsRain(24, false), IsSnow(24, false), OutDryBulbTemp(24, 0.0), OutDewPointTemp(24, 0.0), OutBaroPress(24, 0.0), OutRelHum(24, 0.0), + WindSpeed(24, 0.0), WindDir(24, 0.0), SkyTemp(24, 0.0), HorizIRSky(24, 0.0), BeamSolarRad(24, 0.0), DifSolarRad(24, 0.0), + Albedo(24, 0.0), LiquidPrecip(24, 0.0) + { + } + }; + + // Object Data + HourlyWeatherData Wthr; + + if (DayToRead == 1) { + + // Checks whether Weather file contains just one year of data. If yes then rewind and position to first + // day of weather file. The rest of code appropriately positions to the start day. + + Ready = false; + NumRewinds = 0; + // Must position file to proper day + // File already position to first data record + // Set Current Day of Week to "start of Data Period" + CurTime = 1.0 / double(NumIntervalsPerHour); + CurDayOfWeek = DataPeriods(1).WeekDay - 1; + WYear = 0; + WMonth = 0; + WDay = 0; + WHour = 0; + WMinute = 0; + LastHourSet = false; + while (!Ready) { + { + IOFlags flags; + gio::read(WeatherFileUnitNumber, fmtA, flags) >> WeatherDataLine; + ReadStatus = flags.ios(); + } + if (ReadStatus == 0) { + // Reduce ugly code + InterpretWeatherDataLine(WeatherDataLine, ErrorFound, WYear, WMonth, WDay, WHour, WMinute, DryBulb, DewPoint, RelHum, AtmPress, + ETHoriz, ETDirect, IRHoriz, GLBHoriz, DirectRad, DiffuseRad, GLBHorizIllum, DirectNrmIllum, + DiffuseHorizIllum, ZenLum, WindDir, WindSpeed, TotalSkyCover, OpaqueSkyCover, Visibility, CeilHeight, + PresWeathObs, PresWeathConds, PrecipWater, AerosolOptDepth, SnowDepth, DaysSinceLastSnow, Albedo, + LiquidPrecip); + } else if (ReadStatus < 0) { + if (NumRewinds > 0) { + ShowSevereError("Multiple rewinds on EPW while searching for first day"); + } else { + gio::rewind(WeatherFileUnitNumber); + ++NumRewinds; + SkipEPlusWFHeader(); + { IOFlags flags; gio::read(WeatherFileUnitNumber, fmtA, flags) >> WeatherDataLine; ReadStatus = flags.ios(); @@ -2804,36 +2806,36 @@ namespace WeatherManager { DiffuseHorizIllum, ZenLum, WindDir, WindSpeed, TotalSkyCover, OpaqueSkyCover, Visibility, CeilHeight, PresWeathObs, PresWeathConds, PrecipWater, AerosolOptDepth, SnowDepth, DaysSinceLastSnow, Albedo, LiquidPrecip); - } - } - if ( ReadStatus != 0 ) { + } + } + if (ReadStatus != 0) { BadRecord = RoundSigDigits(WYear) + '/' + RoundSigDigits(WMonth) + '/' + RoundSigDigits(WDay) + BlankString + RoundSigDigits(WHour) + ':' + RoundSigDigits(WMinute); - gio::write( ErrOut, fmtLD ) << ReadStatus; - strip( ErrOut ); + gio::write(ErrOut, fmtLD) << ReadStatus; + strip(ErrOut); ShowFatalError("Error occurred on EPW while searching for first day, stopped at " + BadRecord + " IO Error=" + RoundSigDigits(ReadStatus), OutputFileStandard); - } - if ( CurDayOfWeek <= 7 ) { - CurDayOfWeek = mod( CurDayOfWeek, 7 ) + 1; - } - if ( WMonth == Environment( Environ ).StartMonth && WDay == Environment( Environ ).StartDay && ! Environment( Environ ).MatchYear ) { - RecordDateMatch = true; + } + if (CurDayOfWeek <= 7) { + CurDayOfWeek = mod(CurDayOfWeek, 7) + 1; + } + if (WMonth == Environment(Environ).StartMonth && WDay == Environment(Environ).StartDay && !Environment(Environ).MatchYear) { + RecordDateMatch = true; } else if (WMonth == Environment(Environ).StartMonth && WDay == Environment(Environ).StartDay && Environment(Environ).MatchYear && WYear == Environment(Environ).StartYear) { - RecordDateMatch = true; - } else { - RecordDateMatch = false; - } - if ( RecordDateMatch ) { - gio::backspace( WeatherFileUnitNumber ); - Ready = true; - if ( CurDayOfWeek <= 7 ) { - --CurDayOfWeek; - } - // Do the range checks on the first set of fields -- no others. - ErrorsFound = false; + RecordDateMatch = true; + } else { + RecordDateMatch = false; + } + if (RecordDateMatch) { + gio::backspace(WeatherFileUnitNumber); + Ready = true; + if (CurDayOfWeek <= 7) { + --CurDayOfWeek; + } + // Do the range checks on the first set of fields -- no others. + ErrorsFound = false; if (DryBulb >= 99.9) inputProcessor->rangeCheck(ErrorsFound, "DryBulb Temperature", "WeatherFile", "Severe", ">= -90", (DryBulb >= -90.0), "<= 70", (DryBulb <= 70.0), RoundSigDigits(DryBulb, 2), WeatherFileLocationTitle); @@ -2858,117 +2860,117 @@ namespace WeatherManager { if (WindSpeed < 999.0) inputProcessor->rangeCheck(ErrorsFound, "Wind Speed", "WeatherFile", "Severe", ">=0", (WindSpeed >= 0.0), "<=40", (WindSpeed <= 40.0), RoundSigDigits(WindSpeed, 2), WeatherFileLocationTitle); - if ( ErrorsFound ) { - ShowSevereError( "Out of Range errors found with initial day of WeatherFile" ); - } - } else { - // Must skip this day - for ( Item = 2; Item <= NumIntervalsPerHour; ++Item ) { + if (ErrorsFound) { + ShowSevereError("Out of Range errors found with initial day of WeatherFile"); + } + } else { + // Must skip this day + for (Item = 2; Item <= NumIntervalsPerHour; ++Item) { { IOFlags flags; gio::read(WeatherFileUnitNumber, fmtA, flags) >> WeatherDataLine; ReadStatus = flags.ios(); } - if ( ReadStatus != 0 ) { - gio::read( WeatherDataLine, fmtLD ) >> WYear >> WMonth >> WDay >> WHour >> WMinute; + if (ReadStatus != 0) { + gio::read(WeatherDataLine, fmtLD) >> WYear >> WMonth >> WDay >> WHour >> WMinute; BadRecord = RoundSigDigits(WYear) + '/' + RoundSigDigits(WMonth) + '/' + RoundSigDigits(WDay) + BlankString + RoundSigDigits(WHour) + ':' + RoundSigDigits(WMinute); ShowFatalError("Error occurred on EPW while searching for first day, stopped at " + BadRecord + " IO Error=" + RoundSigDigits(ReadStatus), OutputFileStandard); - } - } - for ( Item = 1; Item <= 23 * NumIntervalsPerHour; ++Item ) { + } + } + for (Item = 1; Item <= 23 * NumIntervalsPerHour; ++Item) { { IOFlags flags; gio::read(WeatherFileUnitNumber, fmtA, flags) >> WeatherDataLine; ReadStatus = flags.ios(); } - if ( ReadStatus != 0 ) { - gio::read( WeatherDataLine, fmtLD ) >> WYear >> WMonth >> WDay >> WHour >> WMinute; + if (ReadStatus != 0) { + gio::read(WeatherDataLine, fmtLD) >> WYear >> WMonth >> WDay >> WHour >> WMinute; BadRecord = RoundSigDigits(WYear) + '/' + RoundSigDigits(WMonth) + '/' + RoundSigDigits(WDay) + BlankString + RoundSigDigits(WHour) + ':' + RoundSigDigits(WMinute); ShowFatalError("Error occurred on EPW while searching for first day, stopped at " + BadRecord + " IO Error=" + RoundSigDigits(ReadStatus), OutputFileStandard); - } - } - } - } - - // Positioned to proper day - if ( ! KickOffSimulation && ! DoingSizing && Environment( Environ ).KindOfEnvrn == ksRunPeriodWeather ) { - ++Environment( Environ ).CurrentCycle; - if ( ! Environment( Environ ).RollDayTypeOnRepeat ) { - SetDayOfWeekInitialValues( Environment( Environ ).DayOfWeek, CurDayOfWeek, UseDayOfWeek ); - if ( DaylightSavingIsActive ) { - SetDSTDateRanges( Environment( Envrn ).MonWeekDay, DSTIndex ); - } - SetSpecialDayDates( Environment( Envrn ).MonWeekDay ); - } else if ( Environment( Environ ).CurrentCycle == 1 ) { - SetDayOfWeekInitialValues( Environment( Environ ).DayOfWeek, CurDayOfWeek, UseDayOfWeek ); - Environment( Environ ).SetWeekDays = true; - if ( DaylightSavingIsActive ) { - SetDSTDateRanges( Environment( Envrn ).MonWeekDay, DSTIndex ); - } - SetSpecialDayDates( Environment( Envrn ).MonWeekDay ); - } else { - CurDayOfWeek = DayOfWeekTomorrow; - } - } else { - SetDayOfWeekInitialValues( Environment( Environ ).DayOfWeek, CurDayOfWeek, UseDayOfWeek ); - } - } - - TryAgain = true; - SkipThisDay = false; - - while ( TryAgain ) { - - TryAgain = false; - - TomorrowOutDryBulbTemp = 0.0; - TomorrowOutDewPointTemp = 0.0; - TomorrowOutBaroPress = 0.0; - TomorrowOutRelHum = 0.0; - TomorrowWindSpeed = 0.0; - TomorrowWindDir = 0.0; - TomorrowSkyTemp = 0.0; - TomorrowHorizIRSky = 0.0; - TomorrowBeamSolarRad = 0.0; - TomorrowDifSolarRad = 0.0; - TomorrowAlbedo = 0.0; - TomorrowLiquidPrecip = 0.0; - TomorrowIsRain = false; - TomorrowIsSnow = false; - - for ( Hour = 1; Hour <= 24; ++Hour ) { - for ( CurTimeStep = 1; CurTimeStep <= NumIntervalsPerHour; ++CurTimeStep ) { - HourRep = double( Hour - 1 ) + ( CurTime * double( CurTimeStep ) ); + } + } + } + } + + // Positioned to proper day + if (!KickOffSimulation && !DoingSizing && Environment(Environ).KindOfEnvrn == ksRunPeriodWeather) { + ++Environment(Environ).CurrentCycle; + if (!Environment(Environ).RollDayTypeOnRepeat) { + SetDayOfWeekInitialValues(Environment(Environ).DayOfWeek, CurDayOfWeek, UseDayOfWeek); + if (DaylightSavingIsActive) { + SetDSTDateRanges(Environment(Envrn).MonWeekDay, DSTIndex); + } + SetSpecialDayDates(Environment(Envrn).MonWeekDay); + } else if (Environment(Environ).CurrentCycle == 1) { + SetDayOfWeekInitialValues(Environment(Environ).DayOfWeek, CurDayOfWeek, UseDayOfWeek); + Environment(Environ).SetWeekDays = true; + if (DaylightSavingIsActive) { + SetDSTDateRanges(Environment(Envrn).MonWeekDay, DSTIndex); + } + SetSpecialDayDates(Environment(Envrn).MonWeekDay); + } else { + CurDayOfWeek = DayOfWeekTomorrow; + } + } else { + SetDayOfWeekInitialValues(Environment(Environ).DayOfWeek, CurDayOfWeek, UseDayOfWeek); + } + } + + TryAgain = true; + SkipThisDay = false; + + while (TryAgain) { + + TryAgain = false; + + TomorrowOutDryBulbTemp = 0.0; + TomorrowOutDewPointTemp = 0.0; + TomorrowOutBaroPress = 0.0; + TomorrowOutRelHum = 0.0; + TomorrowWindSpeed = 0.0; + TomorrowWindDir = 0.0; + TomorrowSkyTemp = 0.0; + TomorrowHorizIRSky = 0.0; + TomorrowBeamSolarRad = 0.0; + TomorrowDifSolarRad = 0.0; + TomorrowAlbedo = 0.0; + TomorrowLiquidPrecip = 0.0; + TomorrowIsRain = false; + TomorrowIsSnow = false; + + for (Hour = 1; Hour <= 24; ++Hour) { + for (CurTimeStep = 1; CurTimeStep <= NumIntervalsPerHour; ++CurTimeStep) { + HourRep = double(Hour - 1) + (CurTime * double(CurTimeStep)); { IOFlags flags; gio::read(WeatherFileUnitNumber, fmtA, flags) >> WeatherDataLine; ReadStatus = flags.ios(); } - if ( ReadStatus != 0 ) WeatherDataLine = BlankString; - if ( WeatherDataLine == BlankString ) { - if ( Hour == 1 ) { - ReadStatus = -1; - } else { - ReadStatus = 99; - } - } - if ( ReadStatus == 0 ) { + if (ReadStatus != 0) WeatherDataLine = BlankString; + if (WeatherDataLine == BlankString) { + if (Hour == 1) { + ReadStatus = -1; + } else { + ReadStatus = 99; + } + } + if (ReadStatus == 0) { InterpretWeatherDataLine(WeatherDataLine, ErrorFound, WYear, WMonth, WDay, WHour, WMinute, DryBulb, DewPoint, RelHum, AtmPress, ETHoriz, ETDirect, IRHoriz, GLBHoriz, DirectRad, DiffuseRad, GLBHorizIllum, DirectNrmIllum, DiffuseHorizIllum, ZenLum, WindDir, WindSpeed, TotalSkyCover, OpaqueSkyCover, Visibility, CeilHeight, PresWeathObs, PresWeathConds, PrecipWater, AerosolOptDepth, SnowDepth, DaysSinceLastSnow, Albedo, LiquidPrecip); - } else { // ReadStatus /=0 - if ( ReadStatus < 0 && NumDataPeriods == 1 ) { // Standard End-of-file, rewind and position to first day... - if ( DataPeriods( 1 ).NumDays >= NumDaysInYear ) { - gio::rewind( WeatherFileUnitNumber ); - SkipEPlusWFHeader(); + } else { // ReadStatus /=0 + if (ReadStatus < 0 && NumDataPeriods == 1) { // Standard End-of-file, rewind and position to first day... + if (DataPeriods(1).NumDays >= NumDaysInYear) { + gio::rewind(WeatherFileUnitNumber); + SkipEPlusWFHeader(); { IOFlags flags; gio::read(WeatherFileUnitNumber, fmtA, flags) >> WeatherDataLine; @@ -2980,657 +2982,657 @@ namespace WeatherManager { DirectNrmIllum, DiffuseHorizIllum, ZenLum, WindDir, WindSpeed, TotalSkyCover, OpaqueSkyCover, Visibility, CeilHeight, PresWeathObs, PresWeathConds, PrecipWater, AerosolOptDepth, SnowDepth, DaysSinceLastSnow, Albedo, LiquidPrecip); - } else { + } else { BadRecord = RoundSigDigits(WYear) + '/' + RoundSigDigits(WMonth) + '/' + RoundSigDigits(WDay) + BlankString + RoundSigDigits(WHour) + ':' + RoundSigDigits(WMinute); ShowFatalError("End-of-File encountered after " + BadRecord + ", starting from first day of Weather File would not be \"next day\""); - } - } else { + } + } else { BadRecord = RoundSigDigits(WYear) + '/' + RoundSigDigits(WMonth) + '/' + RoundSigDigits(WDay) + BlankString + RoundSigDigits(WHour) + ':' + RoundSigDigits(WMinute); - ShowFatalError( "Unexpected error condition in middle of reading EPW file, stopped at " + BadRecord, OutputFileStandard ); - } - } + ShowFatalError("Unexpected error condition in middle of reading EPW file, stopped at " + BadRecord, OutputFileStandard); + } + } - if ( Hour != WHour ) { + if (Hour != WHour) { BadRecord = RoundSigDigits(WYear) + '/' + RoundSigDigits(WMonth) + '/' + RoundSigDigits(WDay) + BlankString + RoundSigDigits(WHour) + ':' + RoundSigDigits(WMinute); - ShowFatalError( "Unexpected error condition in middle of reading EPW file, " + BadRecord, OutputFileStandard ); - } - - // Set possible missing values - if ( ETHoriz < 0.0 ) ETHoriz = 9999.0; - if ( ETDirect < 0.0 ) ETDirect = 9999.0; - if ( IRHoriz <= 0.0 ) IRHoriz = 9999.0; - if ( GLBHoriz < 0.0 ) GLBHoriz = 9999.0; - if ( DisplayWeatherMissingDataWarnings ) { - if ( DirectRad >= 9999.0 ) { - ++Missed.DirectRad; - } - if ( DiffuseRad >= 9999.0 ) { - Missed.DiffuseRad = Missed.DirectRad + 1; - } - if ( DirectRad < 0.0 ) { - DirectRad = 9999.0; - ++OutOfRange.DirectRad; - } - if ( DiffuseRad < 0.0 ) { - DiffuseRad = 9999.0; - ++OutOfRange.DiffuseRad; - } - } - if ( GLBHorizIllum < 0.0 ) GLBHorizIllum = 999999.0; - if ( DirectNrmIllum < 0.0 ) DirectNrmIllum = 999999.0; - if ( DiffuseHorizIllum < 0.0 ) DiffuseHorizIllum = 999999.0; - if ( ZenLum < 0.0 ) ZenLum = 99999.0; - if ( AtmPress < 0.0 ) AtmPress = 999999.0; - if ( WindSpeed < 0.0 ) WindSpeed = 999.0; - if ( WindDir < -360.0 || WindDir > 360.0 ) WindDir = 999.0; - if ( TotalSkyCover < 0.0 ) TotalSkyCover = 99.0; - if ( RelHum < 0.0 ) RelHum = 999.0; - if ( OpaqueSkyCover < 0.0 ) OpaqueSkyCover = 99.0; - if ( Visibility < 0.0 ) Visibility = 9999.0; - if ( CeilHeight < 0.0 ) CeilHeight = 9999.0; - if ( PresWeathObs < 0 ) PresWeathObs = 9.0; - if ( PrecipWater < 0.0 ) PrecipWater = 999.0; - if ( AerosolOptDepth < 0.0 ) AerosolOptDepth = 999.0; - if ( SnowDepth < 0.0 ) SnowDepth = 999.0; - if ( DaysSinceLastSnow < 0.0 ) DaysSinceLastSnow = 99.0; - if ( Albedo < 0.0 ) Albedo = 999.0; - if ( LiquidPrecip < 0.0 ) LiquidPrecip = 999.0; - - if ( Hour == 1 && CurTimeStep == 1 ) { - if ( WMonth == 2 && WDay == 29 && ( ! CurrentYearIsLeapYear || ! WFAllowsLeapYears ) ) { - EndDayOfMonth( 2 ) = 28; - SkipThisDay = true; - TryAgain = true; - ShowWarningError( "ReadEPlusWeatherForDay: Feb29 data encountered but will not be processed." ); - if ( ! WFAllowsLeapYears ) { + ShowFatalError("Unexpected error condition in middle of reading EPW file, " + BadRecord, OutputFileStandard); + } + + // Set possible missing values + if (ETHoriz < 0.0) ETHoriz = 9999.0; + if (ETDirect < 0.0) ETDirect = 9999.0; + if (IRHoriz <= 0.0) IRHoriz = 9999.0; + if (GLBHoriz < 0.0) GLBHoriz = 9999.0; + if (DisplayWeatherMissingDataWarnings) { + if (DirectRad >= 9999.0) { + ++Missed.DirectRad; + } + if (DiffuseRad >= 9999.0) { + Missed.DiffuseRad = Missed.DirectRad + 1; + } + if (DirectRad < 0.0) { + DirectRad = 9999.0; + ++OutOfRange.DirectRad; + } + if (DiffuseRad < 0.0) { + DiffuseRad = 9999.0; + ++OutOfRange.DiffuseRad; + } + } + if (GLBHorizIllum < 0.0) GLBHorizIllum = 999999.0; + if (DirectNrmIllum < 0.0) DirectNrmIllum = 999999.0; + if (DiffuseHorizIllum < 0.0) DiffuseHorizIllum = 999999.0; + if (ZenLum < 0.0) ZenLum = 99999.0; + if (AtmPress < 0.0) AtmPress = 999999.0; + if (WindSpeed < 0.0) WindSpeed = 999.0; + if (WindDir < -360.0 || WindDir > 360.0) WindDir = 999.0; + if (TotalSkyCover < 0.0) TotalSkyCover = 99.0; + if (RelHum < 0.0) RelHum = 999.0; + if (OpaqueSkyCover < 0.0) OpaqueSkyCover = 99.0; + if (Visibility < 0.0) Visibility = 9999.0; + if (CeilHeight < 0.0) CeilHeight = 9999.0; + if (PresWeathObs < 0) PresWeathObs = 9.0; + if (PrecipWater < 0.0) PrecipWater = 999.0; + if (AerosolOptDepth < 0.0) AerosolOptDepth = 999.0; + if (SnowDepth < 0.0) SnowDepth = 999.0; + if (DaysSinceLastSnow < 0.0) DaysSinceLastSnow = 99.0; + if (Albedo < 0.0) Albedo = 999.0; + if (LiquidPrecip < 0.0) LiquidPrecip = 999.0; + + if (Hour == 1 && CurTimeStep == 1) { + if (WMonth == 2 && WDay == 29 && (!CurrentYearIsLeapYear || !WFAllowsLeapYears)) { + EndDayOfMonth(2) = 28; + SkipThisDay = true; + TryAgain = true; + ShowWarningError("ReadEPlusWeatherForDay: Feb29 data encountered but will not be processed."); + if (!WFAllowsLeapYears) { ShowContinueError( "...WeatherFile does not allow Leap Years. HOLIDAYS/DAYLIGHT SAVINGS header must indicate \"Yes\"."); - } - continue; - } else if ( WMonth == 2 && WDay == 29 && CurrentYearIsLeapYear && WFAllowsLeapYears ) { - TryAgain = false; - SkipThisDay = false; - } else { - TryAgain = false; - SkipThisDay = false; - } - - TomorrowVariables.Year = WYear; - TomorrowVariables.Month = WMonth; - TomorrowVariables.DayOfMonth = WDay; - TomorrowVariables.DayOfYear = JulianDay( WMonth, WDay, LeapYearAdd ); - TomorrowVariables.DayOfYear_Schedule = JulianDay(WMonth, WDay, 1); + } + continue; + } else if (WMonth == 2 && WDay == 29 && CurrentYearIsLeapYear && WFAllowsLeapYears) { + TryAgain = false; + SkipThisDay = false; + } else { + TryAgain = false; + SkipThisDay = false; + } + + TomorrowVariables.Year = WYear; + TomorrowVariables.Month = WMonth; + TomorrowVariables.DayOfMonth = WDay; + TomorrowVariables.DayOfYear = JulianDay(WMonth, WDay, LeapYearAdd); + TomorrowVariables.DayOfYear_Schedule = JulianDay(WMonth, WDay, 1); CalculateDailySolarCoeffs(TomorrowVariables.DayOfYear, A, B, C, AVSC, TomorrowVariables.EquationOfTime, TomorrowVariables.SinSolarDeclinAngle, TomorrowVariables.CosSolarDeclinAngle); - if ( CurDayOfWeek <= 7 ) { - CurDayOfWeek = mod( CurDayOfWeek, 7 ) + 1; - } - TomorrowVariables.DayOfWeek = CurDayOfWeek; - TomorrowVariables.DaylightSavingIndex = DSTIndex( TomorrowVariables.DayOfYear ); - TomorrowVariables.HolidayIndex = SpecialDayTypes( TomorrowVariables.DayOfYear ); - } - - if ( SkipThisDay ) continue; - - // Check out missing values - - if ( DryBulb >= 99.9 ) { - DryBulb = Missing.DryBulb; - ++Missed.DryBulb; - } - if ( DryBulb < -90.0 || DryBulb > 70.0 ) { - ++OutOfRange.DryBulb; - } - - if ( DewPoint >= 99.9 ) { - DewPoint = Missing.DewPoint; - ++Missed.DewPoint; - } - if ( DewPoint < -90.0 || DewPoint > 70.0 ) { - ++OutOfRange.DewPoint; - } - - if ( RelHum >= 999.0 ) { - RelHum = Missing.RelHumid; - ++Missed.RelHumid; - } - if ( RelHum < 0.0 || RelHum > 110.0 ) { - ++OutOfRange.RelHumid; - } - - if ( AtmPress >= 999999.0 ) { - AtmPress = Missing.StnPres; - ++Missed.StnPres; - } - if ( AtmPress <= 31000.0 || AtmPress > 120000.0 ) { - ++OutOfRange.StnPres; - AtmPress = Missing.StnPres; - } - - if ( WindDir >= 999.0 ) { - WindDir = Missing.WindDir; - ++Missed.WindDir; - } - if ( WindDir < 0.0 || WindDir > 360.0 ) { - ++OutOfRange.WindDir; - } - - if ( WindSpeed >= 999.0 ) { - WindSpeed = Missing.WindSpd; - ++Missed.WindSpd; - } - if ( WindSpeed < 0.0 || WindSpeed > 40.0 ) { - ++OutOfRange.WindSpd; - } - - if ( TotalSkyCover >= 99.0 ) { - TotalSkyCover = Missing.TotSkyCvr; - ++Missed.TotSkyCvr; - } - - if ( OpaqueSkyCover >= 99.0 ) { - OpaqueSkyCover = Missing.OpaqSkyCvr; - ++Missed.OpaqSkyCvr; - } - - // Some values are not used within EnergyPlus, don't keep stats on their missing data points. - - // IF (Visibility >= 9999.0d0) THEN - // Visibility=Missing%Visibility - // Missed%Visibility=Missed%Visibility+1 - // ENDIF - - // IF (CeilHeight >= 99999.0d0) THEN - // CeilHeight=Missing%Ceiling - // Missed%Ceiling=Missed%Ceiling+1 - // ENDIF - - // IF (PrecipWater >= 999.0d0) THEN - // PrecipWater=Missing%PrecipWater - // Missed%PrecipWater=Missed%PrecipWater+1 - // ENDIF - - // IF (AerosolOptDepth >= 0.999d0) THEN - // AerosolOptDepth=Missing%AerOptDepth - // Missed%AerOptDepth=Missed%AerOptDepth+1 - // ENDIF - - if ( SnowDepth >= 999.0 ) { - SnowDepth = Missing.SnowDepth; - ++Missed.SnowDepth; - } - - if ( Albedo >= 999.0 ) { - Albedo = Missing.Albedo; - ++Missed.Albedo; - } - - if ( LiquidPrecip >= 999.0 ) { - LiquidPrecip = Missing.LiquidPrecip; - ++Missed.LiquidPrecip; - } - - // IF (DaysSinceLastSnow >= 99) THEN - // DaysSinceLastSnow=Missing%DaysLastSnow - // Missed%DaysLastSnow=Missed%DaysLastSnow+1 - // ENDIF - - TomorrowOutDryBulbTemp( CurTimeStep, Hour ) = DryBulb; - TomorrowOutDewPointTemp( CurTimeStep, Hour ) = DewPoint; - TomorrowOutBaroPress( CurTimeStep, Hour ) = AtmPress; - TomorrowOutRelHum( CurTimeStep, Hour ) = RelHum; - RelHum *= 0.01; - TomorrowWindSpeed( CurTimeStep, Hour ) = WindSpeed; - TomorrowWindDir( CurTimeStep, Hour ) = WindDir; - TomorrowLiquidPrecip( CurTimeStep, Hour ) = LiquidPrecip; - TomorrowHorizIRSky( CurTimeStep, Hour ) = IRHoriz; - - if ( Environment( Envrn ).WP_Type1 == 0 ) { - // Calculate sky temperature, use IRHoriz if not missing - if ( IRHoriz >= 9999.0 ) { - // Missing, use sky cover - OSky = OpaqueSkyCover; - TDewK = min( DryBulb, DewPoint ) + TKelvin; - ESky = ( 0.787 + 0.764 * std::log( TDewK / TKelvin ) ) * ( 1.0 + 0.0224 * OSky - 0.0035 * pow_2( OSky ) + 0.00028 * pow_3( OSky ) ); - SkyTemp = ( DryBulb + TKelvin ) * root_4( ESky ) - TKelvin; - } else { // Valid IR from Sky - SkyTemp = root_4( IRHoriz / Sigma ) - TKelvin; - } - } else { - SkyTemp = 0.0; // dealt with later - } - - TomorrowSkyTemp( CurTimeStep, Hour ) = SkyTemp; - - if ( ETHoriz >= 9999.0 ) ETHoriz = 0.0; - if ( ETDirect >= 9999.0 ) ETDirect = 0.0; - if ( GLBHoriz >= 9999.0 ) GLBHoriz = 0.0; - if ( DirectRad >= 9999.0 ) DirectRad = 0.0; - if ( DiffuseRad >= 9999.0 ) DiffuseRad = 0.0; - if ( GLBHorizIllum >= 999900.0 ) GLBHorizIllum = 0.0; - if ( DirectNrmIllum >= 999900.0 ) DirectNrmIllum = 0.0; - if ( DiffuseHorizIllum >= 999900.0 ) DiffuseHorizIllum = 0.0; - if ( ZenLum >= 99990.0 ) ZenLum = 0.0; - if ( IgnoreSolarRadiation ) { - GLBHoriz = 0.0; - DirectRad = 0.0; - DiffuseRad = 0.0; - } - if ( IgnoreBeamRadiation ) { - DirectRad = 0.0; - } - if ( IgnoreDiffuseRadiation ) { - DiffuseRad = 0.0; - } - - TomorrowBeamSolarRad( CurTimeStep, Hour ) = DirectRad; - TomorrowDifSolarRad( CurTimeStep, Hour ) = DiffuseRad; - - TomorrowIsRain( CurTimeStep, Hour ) = false; - if ( PresWeathObs == 0 ) { - if ( PresWeathConds( 1 ) < 9 || PresWeathConds( 2 ) < 9 || PresWeathConds( 3 ) < 9 ) TomorrowIsRain( CurTimeStep, Hour ) = true; - } else { - TomorrowIsRain( CurTimeStep, Hour ) = false; - } - TomorrowIsSnow( CurTimeStep, Hour ) = ( SnowDepth > 0.0 ); - - // default if rain but none on weather file + if (CurDayOfWeek <= 7) { + CurDayOfWeek = mod(CurDayOfWeek, 7) + 1; + } + TomorrowVariables.DayOfWeek = CurDayOfWeek; + TomorrowVariables.DaylightSavingIndex = DSTIndex(TomorrowVariables.DayOfYear); + TomorrowVariables.HolidayIndex = SpecialDayTypes(TomorrowVariables.DayOfYear); + } + + if (SkipThisDay) continue; + + // Check out missing values + + if (DryBulb >= 99.9) { + DryBulb = Missing.DryBulb; + ++Missed.DryBulb; + } + if (DryBulb < -90.0 || DryBulb > 70.0) { + ++OutOfRange.DryBulb; + } + + if (DewPoint >= 99.9) { + DewPoint = Missing.DewPoint; + ++Missed.DewPoint; + } + if (DewPoint < -90.0 || DewPoint > 70.0) { + ++OutOfRange.DewPoint; + } + + if (RelHum >= 999.0) { + RelHum = Missing.RelHumid; + ++Missed.RelHumid; + } + if (RelHum < 0.0 || RelHum > 110.0) { + ++OutOfRange.RelHumid; + } + + if (AtmPress >= 999999.0) { + AtmPress = Missing.StnPres; + ++Missed.StnPres; + } + if (AtmPress <= 31000.0 || AtmPress > 120000.0) { + ++OutOfRange.StnPres; + AtmPress = Missing.StnPres; + } + + if (WindDir >= 999.0) { + WindDir = Missing.WindDir; + ++Missed.WindDir; + } + if (WindDir < 0.0 || WindDir > 360.0) { + ++OutOfRange.WindDir; + } + + if (WindSpeed >= 999.0) { + WindSpeed = Missing.WindSpd; + ++Missed.WindSpd; + } + if (WindSpeed < 0.0 || WindSpeed > 40.0) { + ++OutOfRange.WindSpd; + } + + if (TotalSkyCover >= 99.0) { + TotalSkyCover = Missing.TotSkyCvr; + ++Missed.TotSkyCvr; + } + + if (OpaqueSkyCover >= 99.0) { + OpaqueSkyCover = Missing.OpaqSkyCvr; + ++Missed.OpaqSkyCvr; + } + + // Some values are not used within EnergyPlus, don't keep stats on their missing data points. + + // IF (Visibility >= 9999.0d0) THEN + // Visibility=Missing%Visibility + // Missed%Visibility=Missed%Visibility+1 + // ENDIF + + // IF (CeilHeight >= 99999.0d0) THEN + // CeilHeight=Missing%Ceiling + // Missed%Ceiling=Missed%Ceiling+1 + // ENDIF + + // IF (PrecipWater >= 999.0d0) THEN + // PrecipWater=Missing%PrecipWater + // Missed%PrecipWater=Missed%PrecipWater+1 + // ENDIF + + // IF (AerosolOptDepth >= 0.999d0) THEN + // AerosolOptDepth=Missing%AerOptDepth + // Missed%AerOptDepth=Missed%AerOptDepth+1 + // ENDIF + + if (SnowDepth >= 999.0) { + SnowDepth = Missing.SnowDepth; + ++Missed.SnowDepth; + } + + if (Albedo >= 999.0) { + Albedo = Missing.Albedo; + ++Missed.Albedo; + } + + if (LiquidPrecip >= 999.0) { + LiquidPrecip = Missing.LiquidPrecip; + ++Missed.LiquidPrecip; + } + + // IF (DaysSinceLastSnow >= 99) THEN + // DaysSinceLastSnow=Missing%DaysLastSnow + // Missed%DaysLastSnow=Missed%DaysLastSnow+1 + // ENDIF + + TomorrowOutDryBulbTemp(CurTimeStep, Hour) = DryBulb; + TomorrowOutDewPointTemp(CurTimeStep, Hour) = DewPoint; + TomorrowOutBaroPress(CurTimeStep, Hour) = AtmPress; + TomorrowOutRelHum(CurTimeStep, Hour) = RelHum; + RelHum *= 0.01; + TomorrowWindSpeed(CurTimeStep, Hour) = WindSpeed; + TomorrowWindDir(CurTimeStep, Hour) = WindDir; + TomorrowLiquidPrecip(CurTimeStep, Hour) = LiquidPrecip; + TomorrowHorizIRSky(CurTimeStep, Hour) = IRHoriz; + + if (Environment(Envrn).WP_Type1 == 0) { + // Calculate sky temperature, use IRHoriz if not missing + if (IRHoriz >= 9999.0) { + // Missing, use sky cover + OSky = OpaqueSkyCover; + TDewK = min(DryBulb, DewPoint) + TKelvin; + ESky = (0.787 + 0.764 * std::log(TDewK / TKelvin)) * (1.0 + 0.0224 * OSky - 0.0035 * pow_2(OSky) + 0.00028 * pow_3(OSky)); + SkyTemp = (DryBulb + TKelvin) * root_4(ESky) - TKelvin; + } else { // Valid IR from Sky + SkyTemp = root_4(IRHoriz / Sigma) - TKelvin; + } + } else { + SkyTemp = 0.0; // dealt with later + } + + TomorrowSkyTemp(CurTimeStep, Hour) = SkyTemp; + + if (ETHoriz >= 9999.0) ETHoriz = 0.0; + if (ETDirect >= 9999.0) ETDirect = 0.0; + if (GLBHoriz >= 9999.0) GLBHoriz = 0.0; + if (DirectRad >= 9999.0) DirectRad = 0.0; + if (DiffuseRad >= 9999.0) DiffuseRad = 0.0; + if (GLBHorizIllum >= 999900.0) GLBHorizIllum = 0.0; + if (DirectNrmIllum >= 999900.0) DirectNrmIllum = 0.0; + if (DiffuseHorizIllum >= 999900.0) DiffuseHorizIllum = 0.0; + if (ZenLum >= 99990.0) ZenLum = 0.0; + if (IgnoreSolarRadiation) { + GLBHoriz = 0.0; + DirectRad = 0.0; + DiffuseRad = 0.0; + } + if (IgnoreBeamRadiation) { + DirectRad = 0.0; + } + if (IgnoreDiffuseRadiation) { + DiffuseRad = 0.0; + } + + TomorrowBeamSolarRad(CurTimeStep, Hour) = DirectRad; + TomorrowDifSolarRad(CurTimeStep, Hour) = DiffuseRad; + + TomorrowIsRain(CurTimeStep, Hour) = false; + if (PresWeathObs == 0) { + if (PresWeathConds(1) < 9 || PresWeathConds(2) < 9 || PresWeathConds(3) < 9) TomorrowIsRain(CurTimeStep, Hour) = true; + } else { + TomorrowIsRain(CurTimeStep, Hour) = false; + } + TomorrowIsSnow(CurTimeStep, Hour) = (SnowDepth > 0.0); + + // default if rain but none on weather file if (TomorrowIsRain(CurTimeStep, Hour) && TomorrowLiquidPrecip(CurTimeStep, Hour) == 0.0) TomorrowLiquidPrecip(CurTimeStep, Hour) = 2.0; // 2mm in an hour ~ .08 inch - Missing.DryBulb = DryBulb; - Missing.DewPoint = DewPoint; - Missing.RelHumid = RelHum * 100.0; - Missing.StnPres = AtmPress; - Missing.WindDir = WindDir; - Missing.WindSpd = WindSpeed; - Missing.TotSkyCvr = TotalSkyCover; - Missing.OpaqSkyCvr = OpaqueSkyCover; - Missing.Visibility = Visibility; - Missing.Ceiling = CeilHeight; - Missing.PrecipWater = PrecipWater; - Missing.AerOptDepth = AerosolOptDepth; - Missing.SnowDepth = SnowDepth; - Missing.DaysLastSnow = DaysSinceLastSnow; - Missing.Albedo = Albedo; - // Missing%LiquidPrecip=LiquidPrecip - - } // CurTimeStep Loop - - } // Hour Loop - - } // Try Again While Loop - - if ( BackSpaceAfterRead ) { - gio::backspace( WeatherFileUnitNumber ); - } - - if ( NumIntervalsPerHour == 1 && NumOfTimeStepInHour > 1 ) { - // Create interpolated weather for timestep orientation - // First copy ts=1 (hourly) from data arrays to Wthr structure - for ( Hour = 1; Hour <= 24; ++Hour ) { - Wthr.OutDryBulbTemp( Hour ) = TomorrowOutDryBulbTemp( 1, Hour ); - Wthr.OutDewPointTemp( Hour ) = TomorrowOutDewPointTemp( 1, Hour ); - Wthr.OutBaroPress( Hour ) = TomorrowOutBaroPress( 1, Hour ); - Wthr.OutRelHum( Hour ) = TomorrowOutRelHum( 1, Hour ); - Wthr.WindSpeed( Hour ) = TomorrowWindSpeed( 1, Hour ); - Wthr.WindDir( Hour ) = TomorrowWindDir( 1, Hour ); - Wthr.SkyTemp( Hour ) = TomorrowSkyTemp( 1, Hour ); - Wthr.HorizIRSky( Hour ) = TomorrowHorizIRSky( 1, Hour ); - Wthr.BeamSolarRad( Hour ) = TomorrowBeamSolarRad( 1, Hour ); - Wthr.DifSolarRad( Hour ) = TomorrowDifSolarRad( 1, Hour ); - Wthr.IsRain( Hour ) = TomorrowIsRain( 1, Hour ); - Wthr.IsSnow( Hour ) = TomorrowIsSnow( 1, Hour ); - Wthr.Albedo( Hour ) = TomorrowAlbedo( 1, Hour ); - Wthr.LiquidPrecip( Hour ) = TomorrowLiquidPrecip( 1, Hour ); - } - - if ( !LastHourSet ) { - // For first day of weather, all time steps of the first hour will be - // equal to the first hour's value. - LastHrOutDryBulbTemp = Wthr.OutDryBulbTemp( 24 ); - LastHrOutDewPointTemp = Wthr.OutDewPointTemp( 24 ); - LastHrOutBaroPress = Wthr.OutBaroPress( 24 ); - LastHrOutRelHum = Wthr.OutRelHum( 24 ); - LastHrWindSpeed = Wthr.WindSpeed( 24 ); - LastHrWindDir = Wthr.WindDir( 24 ); - LastHrSkyTemp = Wthr.SkyTemp( 24 ); - LastHrHorizIRSky = Wthr.HorizIRSky( 24 ); - LastHrBeamSolarRad = Wthr.BeamSolarRad( 24 ); - LastHrDifSolarRad = Wthr.DifSolarRad( 24 ); - LastHrAlbedo = Wthr.Albedo( 24 ); - LastHrLiquidPrecip = Wthr.LiquidPrecip( 24 ); - LastHourSet = true; - } - - for ( Hour = 1; Hour <= 24; ++Hour ) { - - NxtHour = Hour + 1; - if ( Hour == 24 ) { - NxtHour = 1; - } - NextHrBeamSolarRad = Wthr.BeamSolarRad( NxtHour ); - NextHrDifSolarRad = Wthr.DifSolarRad( NxtHour ); - NextHrLiquidPrecip = Wthr.LiquidPrecip( NxtHour ); - - for ( TS = 1; TS <= NumOfTimeStepInHour; ++TS ) { - - WtNow = Interpolation( TS ); - WtPrevHour = 1.0 - WtNow; - - // Do Solar "weighting" - - WgtHourNow = SolarInterpolation( TS ); - - if ( NumOfTimeStepInHour == 1 ) { - WgtNextHour = 1.0 - WgtHourNow; - WgtPrevHour = 0.0; - } else { - if ( WgtHourNow == 1.0 ) { - // It's at the half hour - WgtNextHour = 0.0; - WgtPrevHour = 0.0; - } else if ( TS * TimeStepFraction < 0.5 ) { - WgtNextHour = 0.0; - WgtPrevHour = 1.0 - WgtHourNow; - } else { // After the half hour - WgtPrevHour = 0.0; - WgtNextHour = 1.0 - WgtHourNow; - } - } - - TomorrowOutDryBulbTemp( TS, Hour ) = LastHrOutDryBulbTemp * WtPrevHour + Wthr.OutDryBulbTemp( Hour ) * WtNow; - TomorrowOutBaroPress( TS, Hour ) = LastHrOutBaroPress * WtPrevHour + Wthr.OutBaroPress( Hour ) * WtNow; - TomorrowOutDewPointTemp( TS, Hour ) = LastHrOutDewPointTemp * WtPrevHour + Wthr.OutDewPointTemp( Hour ) * WtNow; - TomorrowOutRelHum( TS, Hour ) = LastHrOutRelHum * WtPrevHour + Wthr.OutRelHum( Hour ) * WtNow; - TomorrowWindSpeed( TS, Hour ) = LastHrWindSpeed * WtPrevHour + Wthr.WindSpeed( Hour ) * WtNow; - TomorrowWindDir( TS, Hour ) = interpolateWindDirection( LastHrWindDir, Wthr.WindDir( Hour ), WtNow ); - TomorrowHorizIRSky( TS, Hour ) = LastHrHorizIRSky * WtPrevHour + Wthr.HorizIRSky( Hour ) * WtNow; - if ( Environment( Environ ).WP_Type1 == 0 ) { - TomorrowSkyTemp( TS, Hour ) = LastHrSkyTemp * WtPrevHour + Wthr.SkyTemp( Hour ) * WtNow; - } + Missing.DryBulb = DryBulb; + Missing.DewPoint = DewPoint; + Missing.RelHumid = RelHum * 100.0; + Missing.StnPres = AtmPress; + Missing.WindDir = WindDir; + Missing.WindSpd = WindSpeed; + Missing.TotSkyCvr = TotalSkyCover; + Missing.OpaqSkyCvr = OpaqueSkyCover; + Missing.Visibility = Visibility; + Missing.Ceiling = CeilHeight; + Missing.PrecipWater = PrecipWater; + Missing.AerOptDepth = AerosolOptDepth; + Missing.SnowDepth = SnowDepth; + Missing.DaysLastSnow = DaysSinceLastSnow; + Missing.Albedo = Albedo; + // Missing%LiquidPrecip=LiquidPrecip + + } // CurTimeStep Loop + + } // Hour Loop + + } // Try Again While Loop + + if (BackSpaceAfterRead) { + gio::backspace(WeatherFileUnitNumber); + } + + if (NumIntervalsPerHour == 1 && NumOfTimeStepInHour > 1) { + // Create interpolated weather for timestep orientation + // First copy ts=1 (hourly) from data arrays to Wthr structure + for (Hour = 1; Hour <= 24; ++Hour) { + Wthr.OutDryBulbTemp(Hour) = TomorrowOutDryBulbTemp(1, Hour); + Wthr.OutDewPointTemp(Hour) = TomorrowOutDewPointTemp(1, Hour); + Wthr.OutBaroPress(Hour) = TomorrowOutBaroPress(1, Hour); + Wthr.OutRelHum(Hour) = TomorrowOutRelHum(1, Hour); + Wthr.WindSpeed(Hour) = TomorrowWindSpeed(1, Hour); + Wthr.WindDir(Hour) = TomorrowWindDir(1, Hour); + Wthr.SkyTemp(Hour) = TomorrowSkyTemp(1, Hour); + Wthr.HorizIRSky(Hour) = TomorrowHorizIRSky(1, Hour); + Wthr.BeamSolarRad(Hour) = TomorrowBeamSolarRad(1, Hour); + Wthr.DifSolarRad(Hour) = TomorrowDifSolarRad(1, Hour); + Wthr.IsRain(Hour) = TomorrowIsRain(1, Hour); + Wthr.IsSnow(Hour) = TomorrowIsSnow(1, Hour); + Wthr.Albedo(Hour) = TomorrowAlbedo(1, Hour); + Wthr.LiquidPrecip(Hour) = TomorrowLiquidPrecip(1, Hour); + } + + if (!LastHourSet) { + // For first day of weather, all time steps of the first hour will be + // equal to the first hour's value. + LastHrOutDryBulbTemp = Wthr.OutDryBulbTemp(24); + LastHrOutDewPointTemp = Wthr.OutDewPointTemp(24); + LastHrOutBaroPress = Wthr.OutBaroPress(24); + LastHrOutRelHum = Wthr.OutRelHum(24); + LastHrWindSpeed = Wthr.WindSpeed(24); + LastHrWindDir = Wthr.WindDir(24); + LastHrSkyTemp = Wthr.SkyTemp(24); + LastHrHorizIRSky = Wthr.HorizIRSky(24); + LastHrBeamSolarRad = Wthr.BeamSolarRad(24); + LastHrDifSolarRad = Wthr.DifSolarRad(24); + LastHrAlbedo = Wthr.Albedo(24); + LastHrLiquidPrecip = Wthr.LiquidPrecip(24); + LastHourSet = true; + } + + for (Hour = 1; Hour <= 24; ++Hour) { + + NxtHour = Hour + 1; + if (Hour == 24) { + NxtHour = 1; + } + NextHrBeamSolarRad = Wthr.BeamSolarRad(NxtHour); + NextHrDifSolarRad = Wthr.DifSolarRad(NxtHour); + NextHrLiquidPrecip = Wthr.LiquidPrecip(NxtHour); + + for (TS = 1; TS <= NumOfTimeStepInHour; ++TS) { + + WtNow = Interpolation(TS); + WtPrevHour = 1.0 - WtNow; + + // Do Solar "weighting" + + WgtHourNow = SolarInterpolation(TS); + + if (NumOfTimeStepInHour == 1) { + WgtNextHour = 1.0 - WgtHourNow; + WgtPrevHour = 0.0; + } else { + if (WgtHourNow == 1.0) { + // It's at the half hour + WgtNextHour = 0.0; + WgtPrevHour = 0.0; + } else if (TS * TimeStepFraction < 0.5) { + WgtNextHour = 0.0; + WgtPrevHour = 1.0 - WgtHourNow; + } else { // After the half hour + WgtPrevHour = 0.0; + WgtNextHour = 1.0 - WgtHourNow; + } + } + + TomorrowOutDryBulbTemp(TS, Hour) = LastHrOutDryBulbTemp * WtPrevHour + Wthr.OutDryBulbTemp(Hour) * WtNow; + TomorrowOutBaroPress(TS, Hour) = LastHrOutBaroPress * WtPrevHour + Wthr.OutBaroPress(Hour) * WtNow; + TomorrowOutDewPointTemp(TS, Hour) = LastHrOutDewPointTemp * WtPrevHour + Wthr.OutDewPointTemp(Hour) * WtNow; + TomorrowOutRelHum(TS, Hour) = LastHrOutRelHum * WtPrevHour + Wthr.OutRelHum(Hour) * WtNow; + TomorrowWindSpeed(TS, Hour) = LastHrWindSpeed * WtPrevHour + Wthr.WindSpeed(Hour) * WtNow; + TomorrowWindDir(TS, Hour) = interpolateWindDirection(LastHrWindDir, Wthr.WindDir(Hour), WtNow); + TomorrowHorizIRSky(TS, Hour) = LastHrHorizIRSky * WtPrevHour + Wthr.HorizIRSky(Hour) * WtNow; + if (Environment(Environ).WP_Type1 == 0) { + TomorrowSkyTemp(TS, Hour) = LastHrSkyTemp * WtPrevHour + Wthr.SkyTemp(Hour) * WtNow; + } TomorrowDifSolarRad(TS, Hour) = LastHrDifSolarRad * WgtPrevHour + Wthr.DifSolarRad(Hour) * WgtHourNow + NextHrDifSolarRad * WgtNextHour; TomorrowBeamSolarRad(TS, Hour) = LastHrBeamSolarRad * WgtPrevHour + Wthr.BeamSolarRad(Hour) * WgtHourNow + NextHrBeamSolarRad * WgtNextHour; - TomorrowLiquidPrecip( TS, Hour ) = LastHrLiquidPrecip * WtPrevHour + Wthr.LiquidPrecip( Hour ) * WtNow; - TomorrowLiquidPrecip( TS, Hour ) /= double( NumOfTimeStepInHour ); - - TomorrowIsRain( TS, Hour ) = TomorrowLiquidPrecip( TS, Hour ) >= ( 0.8 / double( NumOfTimeStepInHour ) ); //Wthr%IsRain(Hour) - TomorrowIsSnow( TS, Hour ) = Wthr.IsSnow( Hour ); - } // End of TS Loop - - LastHrOutDryBulbTemp = Wthr.OutDryBulbTemp( Hour ); - LastHrOutDewPointTemp = Wthr.OutDewPointTemp( Hour ); - LastHrOutBaroPress = Wthr.OutBaroPress( Hour ); - LastHrOutRelHum = Wthr.OutRelHum( Hour ); - LastHrWindSpeed = Wthr.WindSpeed( Hour ); - LastHrWindDir = Wthr.WindDir( Hour ); - LastHrHorizIRSky = Wthr.HorizIRSky( Hour ); - LastHrSkyTemp = Wthr.SkyTemp( Hour ); - LastHrBeamSolarRad = Wthr.BeamSolarRad( Hour ); - LastHrDifSolarRad = Wthr.DifSolarRad( Hour ); - LastHrAlbedo = Wthr.Albedo( Hour ); - LastHrLiquidPrecip = Wthr.LiquidPrecip( Hour ); - - } // End of Hour Loop - } - - if ( Environment( Environ ).WP_Type1 != 0 ) { + TomorrowLiquidPrecip(TS, Hour) = LastHrLiquidPrecip * WtPrevHour + Wthr.LiquidPrecip(Hour) * WtNow; + TomorrowLiquidPrecip(TS, Hour) /= double(NumOfTimeStepInHour); + + TomorrowIsRain(TS, Hour) = TomorrowLiquidPrecip(TS, Hour) >= (0.8 / double(NumOfTimeStepInHour)); // Wthr%IsRain(Hour) + TomorrowIsSnow(TS, Hour) = Wthr.IsSnow(Hour); + } // End of TS Loop + + LastHrOutDryBulbTemp = Wthr.OutDryBulbTemp(Hour); + LastHrOutDewPointTemp = Wthr.OutDewPointTemp(Hour); + LastHrOutBaroPress = Wthr.OutBaroPress(Hour); + LastHrOutRelHum = Wthr.OutRelHum(Hour); + LastHrWindSpeed = Wthr.WindSpeed(Hour); + LastHrWindDir = Wthr.WindDir(Hour); + LastHrHorizIRSky = Wthr.HorizIRSky(Hour); + LastHrSkyTemp = Wthr.SkyTemp(Hour); + LastHrBeamSolarRad = Wthr.BeamSolarRad(Hour); + LastHrDifSolarRad = Wthr.DifSolarRad(Hour); + LastHrAlbedo = Wthr.Albedo(Hour); + LastHrLiquidPrecip = Wthr.LiquidPrecip(Hour); + + } // End of Hour Loop + } + + if (Environment(Environ).WP_Type1 != 0) { { auto const SELECT_CASE_var(WPSkyTemperature(Environment(Environ).WP_Type1).CalculationType); - if ( SELECT_CASE_var == WP_ScheduleValue ) { + if (SELECT_CASE_var == WP_ScheduleValue) { GetScheduleValuesForDay(WPSkyTemperature(Environment(Environ).WP_Type1).SchedulePtr, TomorrowSkyTemp, TomorrowVariables.DayOfYear_Schedule, CurDayOfWeek); - } else if ( SELECT_CASE_var == WP_DryBulbDelta ) { + } else if (SELECT_CASE_var == WP_DryBulbDelta) { GetScheduleValuesForDay(WPSkyTemperature(Environment(Environ).WP_Type1).SchedulePtr, TomorrowSkyTemp, TomorrowVariables.DayOfYear_Schedule, CurDayOfWeek); - for ( Hour = 1; Hour <= 24; ++Hour ) { - for ( TS = 1; TS <= NumOfTimeStepInHour; ++TS ) { - TomorrowSkyTemp( TS, Hour ) = TomorrowOutDryBulbTemp( TS, Hour ) - TomorrowSkyTemp( TS, Hour ); - } - } + for (Hour = 1; Hour <= 24; ++Hour) { + for (TS = 1; TS <= NumOfTimeStepInHour; ++TS) { + TomorrowSkyTemp(TS, Hour) = TomorrowOutDryBulbTemp(TS, Hour) - TomorrowSkyTemp(TS, Hour); + } + } - } else if ( SELECT_CASE_var == WP_DewPointDelta ) { + } else if (SELECT_CASE_var == WP_DewPointDelta) { GetScheduleValuesForDay(WPSkyTemperature(Environment(Environ).WP_Type1).SchedulePtr, TomorrowSkyTemp, TomorrowVariables.DayOfYear_Schedule, CurDayOfWeek); - for ( Hour = 1; Hour <= 24; ++Hour ) { - for ( TS = 1; TS <= NumOfTimeStepInHour; ++TS ) { - TomorrowSkyTemp( TS, Hour ) = TomorrowOutDewPointTemp( TS, Hour ) - TomorrowSkyTemp( TS, Hour ); - } - } + for (Hour = 1; Hour <= 24; ++Hour) { + for (TS = 1; TS <= NumOfTimeStepInHour; ++TS) { + TomorrowSkyTemp(TS, Hour) = TomorrowOutDewPointTemp(TS, Hour) - TomorrowSkyTemp(TS, Hour); + } + } - } else { - } + } else { + } } } - } + } Real64 interpolateWindDirection(Real64 const prevHrWindDir, Real64 const curHrWindDir, Real64 const curHrWeight) - { - // adapted from http://stackoverflow.com/questions/2708476/rotation-interpolation - Real64 curAng = curHrWindDir; - Real64 prevAng = prevHrWindDir; - Real64 diff = abs( curAng - prevAng ); - if ( diff > 180. ){ - if ( curAng > prevAng ){ - prevAng += 360.; - } else { - curAng += 360.; - } - } - Real64 interpAng = prevAng + ( curAng - prevAng ) * curHrWeight; - return ( fmod(interpAng, 360.) ); // fmod is float modulus function - } + { + // adapted from http://stackoverflow.com/questions/2708476/rotation-interpolation + Real64 curAng = curHrWindDir; + Real64 prevAng = prevHrWindDir; + Real64 diff = abs(curAng - prevAng); + if (diff > 180.) { + if (curAng > prevAng) { + prevAng += 360.; + } else { + curAng += 360.; + } + } + Real64 interpAng = prevAng + (curAng - prevAng) * curHrWeight; + return (fmod(interpAng, 360.)); // fmod is float modulus function + } void SetDayOfWeekInitialValues(int const EnvironDayOfWeek, // Starting Day of Week for the (Weather) RunPeriod (User Input) - int & CurDayOfWeek, // Current Day of Week - bool & UseDayOfWeek // hmmm does not appear to be used anywhere. - ) - { - - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN March 2012 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // Set of begin day of week for an environment. Similar sets but slightly different - // conditions. Improve code readability by having three routine calls instead of three - // IF blocks. - - // METHODOLOGY EMPLOYED: - // na - - // REFERENCES: - // na - - // USE STATEMENTS: - // na - - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: - - // SUBROUTINE PARAMETER DEFINITIONS: - // na - - // INTERFACE BLOCK SPECIFICATIONS: - // na - - // DERIVED TYPE DEFINITIONS: - // na - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - // na - - if ( EnvironDayOfWeek != 0 ) { - if ( EnvironDayOfWeek <= 7 ) { - CurDayOfWeek = EnvironDayOfWeek - 1; - } else { - CurDayOfWeek = EnvironDayOfWeek; - } - UseDayOfWeek = false; - } else { - UseDayOfWeek = true; - } - } + int &CurDayOfWeek, // Current Day of Week + bool &UseDayOfWeek // hmmm does not appear to be used anywhere. + ) + { + + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN March 2012 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // Set of begin day of week for an environment. Similar sets but slightly different + // conditions. Improve code readability by having three routine calls instead of three + // IF blocks. + + // METHODOLOGY EMPLOYED: + // na + + // REFERENCES: + // na + + // USE STATEMENTS: + // na + + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + + // SUBROUTINE PARAMETER DEFINITIONS: + // na + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // DERIVED TYPE DEFINITIONS: + // na + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + // na + + if (EnvironDayOfWeek != 0) { + if (EnvironDayOfWeek <= 7) { + CurDayOfWeek = EnvironDayOfWeek - 1; + } else { + CurDayOfWeek = EnvironDayOfWeek; + } + UseDayOfWeek = false; + } else { + UseDayOfWeek = true; + } + } void InterpretWeatherDataLine(std::string &Line, - bool & ErrorFound, - int & WYear, - int & WMonth, - int & WDay, - int & WHour, - int & WMinute, - Real64 & RField1, // DryBulb - Real64 & RField2, // DewPoint - Real64 & RField3, // RelHum - Real64 & RField4, // AtmPress - Real64 & RField5, // ETHoriz - Real64 & RField6, // ETDirect - Real64 & RField7, // IRHoriz - Real64 & RField8, // GLBHoriz - Real64 & RField9, // DirectRad - Real64 & RField10, // DiffuseRad - Real64 & RField11, // GLBHorizIllum - Real64 & RField12, // DirectNrmIllum - Real64 & RField13, // DiffuseHorizIllum - Real64 & RField14, // ZenLum - Real64 & RField15, // WindDir - Real64 & RField16, // WindSpeed - Real64 & RField17, // TotalSkyCover - Real64 & RField18, // OpaqueSkyCover - Real64 & RField19, // Visibility - Real64 & RField20, // CeilHeight - int & WObs, // PresWeathObs - Array1A_int WCodesArr, // PresWeathConds - Real64 & RField22, // PrecipWater - Real64 & RField23, // AerosolOptDepth - Real64 & RField24, // SnowDepth - Real64 & RField25, // DaysSinceLastSnow - Real64 & RField26, // Albedo - Real64 & RField27 // LiquidPrecip - ) - { - - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN April 2001 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // This subroutine interprets the EPW weather data line because comma delimited fields - // may cause problems with some compilers. (Particularly character variables in - // comma delimited lines. - - // METHODOLOGY EMPLOYED: - // Field by field interpretation, eliminating the "data source field" which is also - // likely to contain blanks. Note that the "Weatherconditions" must be a 9 character - // alpha field with no intervening blanks. - - // REFERENCES: - // CALL InterpretWeatherDataLine(WeatherDataLine,ErrorFound,WYear,WMonth,WDay,WHour,WMinute, & - // DryBulb,DewPoint,RelHum,AtmPress,ETHoriz,ETDirect,IRHoriz,GLBHoriz, & - // DirectRad,DiffuseRad,GLBHorizIllum,DirectNrmIllum,DiffuseHorizIllum,ZenLum, & - // WindDir,WindSpeed,TotalSkyCover,OpaqueSkyCover,Visibility,CeilHeight, & - // PresWeathObs,PresWeathConds,PrecipWater,AerosolOptDepth,SnowDepth,DaysSinceLastSnow, - // Albedo,LiquidPrecipDepth) - - // USE STATEMENTS: - // na - - // Argument array dimensioning - WCodesArr.dim( 9 ); - - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: - - // SUBROUTINE PARAMETER DEFINITIONS: - static std::string const ValidDigits( "0123456789" ); - static gio::Fmt fmtLD( "*" ); - static gio::Fmt fmt9I1( "(9I1)" ); - - // INTERFACE BLOCK SPECIFICATIONS: - // na - - // DERIVED TYPE DEFINITIONS: - // na - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - std::string::size_type Pos; - std::string PresWeathCodes; - Real64 RYear; - Real64 RMonth; - Real64 RDay; - Real64 RHour; - Real64 RMinute; - std::string DateError; - Real64 RField21; - int Count; - static int LCount( 0 ); - bool DateInError; - - ++LCount; - ErrorFound = false; - std::string const SaveLine = Line; // in case of errors - - // Do the first five. (To get to the DataSource field) + bool &ErrorFound, + int &WYear, + int &WMonth, + int &WDay, + int &WHour, + int &WMinute, + Real64 &RField1, // DryBulb + Real64 &RField2, // DewPoint + Real64 &RField3, // RelHum + Real64 &RField4, // AtmPress + Real64 &RField5, // ETHoriz + Real64 &RField6, // ETDirect + Real64 &RField7, // IRHoriz + Real64 &RField8, // GLBHoriz + Real64 &RField9, // DirectRad + Real64 &RField10, // DiffuseRad + Real64 &RField11, // GLBHorizIllum + Real64 &RField12, // DirectNrmIllum + Real64 &RField13, // DiffuseHorizIllum + Real64 &RField14, // ZenLum + Real64 &RField15, // WindDir + Real64 &RField16, // WindSpeed + Real64 &RField17, // TotalSkyCover + Real64 &RField18, // OpaqueSkyCover + Real64 &RField19, // Visibility + Real64 &RField20, // CeilHeight + int &WObs, // PresWeathObs + Array1A_int WCodesArr, // PresWeathConds + Real64 &RField22, // PrecipWater + Real64 &RField23, // AerosolOptDepth + Real64 &RField24, // SnowDepth + Real64 &RField25, // DaysSinceLastSnow + Real64 &RField26, // Albedo + Real64 &RField27 // LiquidPrecip + ) + { + + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN April 2001 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // This subroutine interprets the EPW weather data line because comma delimited fields + // may cause problems with some compilers. (Particularly character variables in + // comma delimited lines. + + // METHODOLOGY EMPLOYED: + // Field by field interpretation, eliminating the "data source field" which is also + // likely to contain blanks. Note that the "Weatherconditions" must be a 9 character + // alpha field with no intervening blanks. + + // REFERENCES: + // CALL InterpretWeatherDataLine(WeatherDataLine,ErrorFound,WYear,WMonth,WDay,WHour,WMinute, & + // DryBulb,DewPoint,RelHum,AtmPress,ETHoriz,ETDirect,IRHoriz,GLBHoriz, & + // DirectRad,DiffuseRad,GLBHorizIllum,DirectNrmIllum,DiffuseHorizIllum,ZenLum, & + // WindDir,WindSpeed,TotalSkyCover,OpaqueSkyCover,Visibility,CeilHeight, & + // PresWeathObs,PresWeathConds,PrecipWater,AerosolOptDepth,SnowDepth,DaysSinceLastSnow, + // Albedo,LiquidPrecipDepth) + + // USE STATEMENTS: + // na + + // Argument array dimensioning + WCodesArr.dim(9); + + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + + // SUBROUTINE PARAMETER DEFINITIONS: + static std::string const ValidDigits("0123456789"); + static gio::Fmt fmtLD("*"); + static gio::Fmt fmt9I1("(9I1)"); + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // DERIVED TYPE DEFINITIONS: + // na + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + std::string::size_type Pos; + std::string PresWeathCodes; + Real64 RYear; + Real64 RMonth; + Real64 RDay; + Real64 RHour; + Real64 RMinute; + std::string DateError; + Real64 RField21; + int Count; + static int LCount(0); + bool DateInError; + + ++LCount; + ErrorFound = false; + std::string const SaveLine = Line; // in case of errors + + // Do the first five. (To get to the DataSource field) { IOFlags flags; gio::read(Line, fmtLD, flags) >> RYear >> RMonth >> RDay >> RHour >> RMinute; if (flags.err()) goto Label900; } - WYear = nint( RYear ); - WMonth = nint( RMonth ); - WDay = nint( RDay ); - WHour = nint( RHour ); - WMinute = nint( RMinute ); - - DateInError = false; - if ( WMonth >= 1 && WMonth <= 12 ) { - // Month number is valid - if ( WMonth != 2 ) { - if ( WDay > EndDayOfMonth( WMonth ) ) { - DateInError = true; - } - } else if ( WDay > EndDayOfMonth( WMonth ) + 1 ) { // Whether actually used is determined by calling routine. - DateInError = true; - } - } else { - DateInError = true; - } - - if ( DateInError ) { + WYear = nint(RYear); + WMonth = nint(RMonth); + WDay = nint(RDay); + WHour = nint(RHour); + WMinute = nint(RMinute); + + DateInError = false; + if (WMonth >= 1 && WMonth <= 12) { + // Month number is valid + if (WMonth != 2) { + if (WDay > EndDayOfMonth(WMonth)) { + DateInError = true; + } + } else if (WDay > EndDayOfMonth(WMonth) + 1) { // Whether actually used is determined by calling routine. + DateInError = true; + } + } else { + DateInError = true; + } + + if (DateInError) { ShowSevereError("Reading Weather Data Line, Invalid Date, Year=" + RoundSigDigits(WYear) + ", Month=" + RoundSigDigits(WMonth) + ", Day=" + RoundSigDigits(WDay)); - ShowFatalError( "Program terminates due to previous condition." ); - } - - Pos = index( Line, ',' ); // WYear - if ( Pos == std::string::npos ) goto Label902; - Line.erase( 0, Pos + 1 ); - Pos = index( Line, ',' ); // WMonth - Line.erase( 0, Pos + 1 ); - Pos = index( Line, ',' ); // WDay - Line.erase( 0, Pos + 1 ); - Pos = index( Line, ',' ); // WHour - Line.erase( 0, Pos + 1 ); - Pos = index( Line, ',' ); // WMinute - Line.erase( 0, Pos + 1 ); - - // Data Source/Integrity field -- ignore - Pos = index( Line, ',' ); - Line.erase( 0, Pos + 1 ); - - // Now read more numerics with List Directed I/O (note there is another "character" field lurking) + ShowFatalError("Program terminates due to previous condition."); + } + + Pos = index(Line, ','); // WYear + if (Pos == std::string::npos) goto Label902; + Line.erase(0, Pos + 1); + Pos = index(Line, ','); // WMonth + Line.erase(0, Pos + 1); + Pos = index(Line, ','); // WDay + Line.erase(0, Pos + 1); + Pos = index(Line, ','); // WHour + Line.erase(0, Pos + 1); + Pos = index(Line, ','); // WMinute + Line.erase(0, Pos + 1); + + // Data Source/Integrity field -- ignore + Pos = index(Line, ','); + Line.erase(0, Pos + 1); + + // Now read more numerics with List Directed I/O (note there is another "character" field lurking) { IOFlags flags; gio::read(Line, fmtLD, flags) >> RField1 >> RField2 >> RField3 >> RField4 >> RField5 >> RField6 >> RField7 >> RField8 >> RField9 >> @@ -3638,710 +3640,710 @@ namespace WeatherManager { RField21; if (flags.err()) goto Label901; } - for ( Count = 1; Count <= 21; ++Count ) { - Pos = index( Line, ',' ); - Line.erase( 0, Pos + 1 ); - } - Pos = index( Line, ',' ); - if ( Pos != std::string::npos && Pos != 0 ) { - PresWeathCodes = Line.substr( 0, Pos ); - } else { - PresWeathCodes = "999999999"; - } - Line.erase( 0, Pos + 1 ); - Pos = index( Line, ',' ); - if ( Pos != std::string::npos ) { - if ( Pos != 0 ) { + for (Count = 1; Count <= 21; ++Count) { + Pos = index(Line, ','); + Line.erase(0, Pos + 1); + } + Pos = index(Line, ','); + if (Pos != std::string::npos && Pos != 0) { + PresWeathCodes = Line.substr(0, Pos); + } else { + PresWeathCodes = "999999999"; + } + Line.erase(0, Pos + 1); + Pos = index(Line, ','); + if (Pos != std::string::npos) { + if (Pos != 0) { { IOFlags flags; gio::read(Line.substr(0, Pos), fmtLD, flags) >> RField22; if (flags.err()) goto Label901; } - } else { - RField22 = 999.0; - } - Line.erase( 0, Pos + 1 ); - Pos = index( Line, ',' ); - if ( Pos != std::string::npos ) { - if ( Pos != 0 ) { + } else { + RField22 = 999.0; + } + Line.erase(0, Pos + 1); + Pos = index(Line, ','); + if (Pos != std::string::npos) { + if (Pos != 0) { { IOFlags flags; gio::read(Line.substr(0, Pos), fmtLD, flags) >> RField23; if (flags.err()) goto Label901; } - } else { - RField23 = 999.0; - } - Line.erase( 0, Pos + 1 ); - Pos = index( Line, ',' ); - if ( Pos != std::string::npos ) { - if ( Pos != 0 ) { + } else { + RField23 = 999.0; + } + Line.erase(0, Pos + 1); + Pos = index(Line, ','); + if (Pos != std::string::npos) { + if (Pos != 0) { { IOFlags flags; gio::read(Line.substr(0, Pos), fmtLD, flags) >> RField24; if (flags.err()) goto Label901; } - } else { - RField24 = 999.0; - } - Line.erase( 0, Pos + 1 ); - Pos = index( Line, ',' ); - if ( Pos != std::string::npos ) { - if ( Pos != 0 ) { + } else { + RField24 = 999.0; + } + Line.erase(0, Pos + 1); + Pos = index(Line, ','); + if (Pos != std::string::npos) { + if (Pos != 0) { { IOFlags flags; gio::read(Line.substr(0, Pos), fmtLD, flags) >> RField25; if (flags.err()) goto Label901; } - } else { - RField25 = 999.0; - } - Line.erase( 0, Pos + 1 ); - Pos = index( Line, ',' ); - if ( Pos != std::string::npos ) { - if ( Pos != 0 ) { + } else { + RField25 = 999.0; + } + Line.erase(0, Pos + 1); + Pos = index(Line, ','); + if (Pos != std::string::npos) { + if (Pos != 0) { { IOFlags flags; gio::read(Line.substr(0, Pos), fmtLD, flags) >> RField26; if (flags.err()) goto Label901; } - } else { - RField26 = 999.0; - } - Line.erase( 0, Pos + 1 ); - Pos = index( Line, ',' ); - if ( Pos != std::string::npos ) { - if ( Pos != 0 ) { + } else { + RField26 = 999.0; + } + Line.erase(0, Pos + 1); + Pos = index(Line, ','); + if (Pos != std::string::npos) { + if (Pos != 0) { { IOFlags flags; gio::read(Line.substr(0, Pos), fmtLD, flags) >> RField27; if (flags.err()) goto Label901; } - } else { - RField27 = 999.0; - } - Line.erase( 0, Pos + 1 ); - Pos = index( Line, ',' ); - } else { - RField27 = 999.0; - } - } else { - RField26 = 999.0; - RField27 = 999.0; - } - } else { + } else { + RField27 = 999.0; + } + Line.erase(0, Pos + 1); + Pos = index(Line, ','); + } else { + RField27 = 999.0; + } + } else { + RField26 = 999.0; + RField27 = 999.0; + } + } else { { IOFlags flags; gio::read(Line, fmtLD, flags) >> RField25; if (flags.err()) goto Label901; } - RField26 = 999.0; - RField27 = 999.0; - } - } else { + RField26 = 999.0; + RField27 = 999.0; + } + } else { { IOFlags flags; gio::read(Line, fmtLD, flags) >> RField24; if (flags.err()) goto Label901; } - RField25 = 999.0; - RField26 = 999.0; - RField27 = 999.0; - } - } else { + RField25 = 999.0; + RField26 = 999.0; + RField27 = 999.0; + } + } else { { IOFlags flags; gio::read(Line, fmtLD, flags) >> RField23; if (flags.err()) goto Label901; } - RField24 = 999.0; - RField25 = 999.0; - RField26 = 999.0; - RField27 = 999.0; - } - } else { + RField24 = 999.0; + RField25 = 999.0; + RField26 = 999.0; + RField27 = 999.0; + } + } else { { IOFlags flags; gio::read(Line, fmtLD, flags) >> RField22; if (flags.err()) goto Label901; } - RField23 = 999.0; - RField24 = 999.0; - RField25 = 999.0; - RField26 = 999.0; - RField27 = 999.0; - } - // READ(Line,*,err=903,end=903) RField22,RField23,RField24,RField25 - - WObs = nint( RField21 ); - if ( WObs == 0 ) { // Obs Indicator indicates Weather Codes valid - // Check for miscellaneous characters - Pos = index( PresWeathCodes, '\'' ); - while ( Pos != std::string::npos ) { - PresWeathCodes[ Pos ] = ' '; - Pos = index( PresWeathCodes, '\'' ); - } - Pos = index( PresWeathCodes, '"' ); - while ( Pos != std::string::npos ) { - PresWeathCodes[ Pos ] = ' '; - Pos = index( PresWeathCodes, '"' ); - } - strip( PresWeathCodes ); - if ( len( PresWeathCodes ) == 9 ) { - for ( Pos = 0; Pos < 9; ++Pos ) { - if ( ! has( ValidDigits, PresWeathCodes[ Pos ] ) ) PresWeathCodes[ Pos ] = '9'; - } - gio::read( PresWeathCodes, fmt9I1 ) >> WCodesArr; - } else { - ++Missed.WeathCodes; - WCodesArr = 9; - } - } else { - WCodesArr = 9; - } - - return; - -Label900: ; - ShowSevereError( "Invalid Date info in Weather Line" ); - ShowContinueError( "Entire Data Line=" + SaveLine ); - ShowFatalError( "Error in Reading Weather Data" ); - -Label901: ; - gio::write( DateError, "(I4,'/',I2,'/',I2,' Hour#=',I2,' Min#=',I2)" ) << WYear << WMonth << WDay << WHour << WMinute; - ShowSevereError( "Invalid Weather Line at date=" + DateError ); - ShowContinueError( "Full Data Line=" + SaveLine ); - ShowContinueError( "Remainder of line=" + Line ); - ShowFatalError( "Error in Reading Weather Data" ); - -Label902: ; - gio::write( DateError, "(I4,'/',I2,'/',I2,' Hour#=',I2,' Min#=',I2)" ) << WYear << WMonth << WDay << WHour << WMinute; - ShowSevereError( "Invalid Weather Line (no commas) at date=" + DateError ); - ShowContinueError( "Full Data Line=" + SaveLine ); - ShowContinueError( "Remainder of line=" + Line ); - ShowFatalError( "Error in Reading Weather Data" ); - -//Label903: ; -// gio::write( DateError, "(I4,'/',I2,'/',I2,' Hour#=',I2,' Min#=',I2)" ) << WYear << WMonth << WDay << WHour << WMinute; -// ShowSevereError( "Invalid Weather Line at date=" + DateError ); -// ShowContinueError( "Full Data Line=" + SaveLine ); -// ShowContinueError( "Partial line read; Remainder of line=" + Line ); -// ShowFatalError( "Error in Reading Weather Data" ); - } + RField23 = 999.0; + RField24 = 999.0; + RField25 = 999.0; + RField26 = 999.0; + RField27 = 999.0; + } + // READ(Line,*,err=903,end=903) RField22,RField23,RField24,RField25 + + WObs = nint(RField21); + if (WObs == 0) { // Obs Indicator indicates Weather Codes valid + // Check for miscellaneous characters + Pos = index(PresWeathCodes, '\''); + while (Pos != std::string::npos) { + PresWeathCodes[Pos] = ' '; + Pos = index(PresWeathCodes, '\''); + } + Pos = index(PresWeathCodes, '"'); + while (Pos != std::string::npos) { + PresWeathCodes[Pos] = ' '; + Pos = index(PresWeathCodes, '"'); + } + strip(PresWeathCodes); + if (len(PresWeathCodes) == 9) { + for (Pos = 0; Pos < 9; ++Pos) { + if (!has(ValidDigits, PresWeathCodes[Pos])) PresWeathCodes[Pos] = '9'; + } + gio::read(PresWeathCodes, fmt9I1) >> WCodesArr; + } else { + ++Missed.WeathCodes; + WCodesArr = 9; + } + } else { + WCodesArr = 9; + } + + return; + + Label900:; + ShowSevereError("Invalid Date info in Weather Line"); + ShowContinueError("Entire Data Line=" + SaveLine); + ShowFatalError("Error in Reading Weather Data"); + + Label901:; + gio::write(DateError, "(I4,'/',I2,'/',I2,' Hour#=',I2,' Min#=',I2)") << WYear << WMonth << WDay << WHour << WMinute; + ShowSevereError("Invalid Weather Line at date=" + DateError); + ShowContinueError("Full Data Line=" + SaveLine); + ShowContinueError("Remainder of line=" + Line); + ShowFatalError("Error in Reading Weather Data"); + + Label902:; + gio::write(DateError, "(I4,'/',I2,'/',I2,' Hour#=',I2,' Min#=',I2)") << WYear << WMonth << WDay << WHour << WMinute; + ShowSevereError("Invalid Weather Line (no commas) at date=" + DateError); + ShowContinueError("Full Data Line=" + SaveLine); + ShowContinueError("Remainder of line=" + Line); + ShowFatalError("Error in Reading Weather Data"); + + // Label903: ; + // gio::write( DateError, "(I4,'/',I2,'/',I2,' Hour#=',I2,' Min#=',I2)" ) << WYear << WMonth << WDay << WHour << WMinute; + // ShowSevereError( "Invalid Weather Line at date=" + DateError ); + // ShowContinueError( "Full Data Line=" + SaveLine ); + // ShowContinueError( "Partial line read; Remainder of line=" + Line ); + // ShowFatalError( "Error in Reading Weather Data" ); + } void SetUpDesignDay(int const EnvrnNum) // Environment number passed into the routine - { + { - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN February 1977 - // MODIFIED June 1997 (RKS); May 2013 (LKL) add temperature profile for drybulb. - // RE-ENGINEERED August 2003;LKL -- to generate timestep weather for design days. + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN February 1977 + // MODIFIED June 1997 (RKS); May 2013 (LKL) add temperature profile for drybulb. + // RE-ENGINEERED August 2003;LKL -- to generate timestep weather for design days. - // PURPOSE OF THIS SUBROUTINE: - // This purpose of this subroutine is to convert the user supplied input - // values for the design day parameters into an entire weather day - // record. This now bypasses any file I/O by keeping all of the - // weather day record information in the local module level derived type - // called DesignDay. + // PURPOSE OF THIS SUBROUTINE: + // This purpose of this subroutine is to convert the user supplied input + // values for the design day parameters into an entire weather day + // record. This now bypasses any file I/O by keeping all of the + // weather day record information in the local module level derived type + // called DesignDay. - // METHODOLOGY EMPLOYED: - // Methodology incorporates the design day setup from Tarp as appropriate. + // METHODOLOGY EMPLOYED: + // Methodology incorporates the design day setup from Tarp as appropriate. - // REFERENCES: - // ASHRAE Handbook of Fundamentals? + // REFERENCES: + // ASHRAE Handbook of Fundamentals? - // Using/Aliasing - using General::JulianDay; + // Using/Aliasing + using General::JulianDay; using General::RoundSigDigits; - using ScheduleManager::GetSingleDayScheduleValues; + using ScheduleManager::GetSingleDayScheduleValues; - // SUBROUTINE PARAMETER DEFINITIONS: - Real64 const GlobalSolarConstant( 1367.0 ); - Real64 const ZHGlobalSolarConstant( 1355.0 ); + // SUBROUTINE PARAMETER DEFINITIONS: + Real64 const GlobalSolarConstant(1367.0); + Real64 const ZHGlobalSolarConstant(1355.0); static gio::Fmt EnvDDHdFormat("('! , Max Dry-Bulb Temp {C}, ', 'Temp Range {dC}, Temp Range Ind Type, ', " "'Hum Ind Value at Max Temp, Hum Ind Type,Pressure {Pa}, ', 'Wind Direction {deg CW from N}, ', 'Wind " "Speed {m/s}, Clearness, Rain, Snow')"); - static gio::Fmt EnvDDayFormat( "('Environment:Design Day Data,')" ); + static gio::Fmt EnvDDayFormat("('Environment:Design Day Data,')"); static gio::Fmt DDayMiscHdFormat("('! ,DayOfYear,ASHRAE A Coeff,', 'ASHRAE B Coeff,ASHRAE C Coeff,Solar " "Constant-Annual Variation,', 'Eq of Time {minutes}, Solar Declination Angle {deg}, Solar Model')"); - static gio::Fmt DDayMiscFormat( "('Environment:Design Day Misc,',I3,',')" ); - static gio::Fmt MnDyFmt( "(I2.2,'/',I2.2)" ); - Real64 const ZhangHuangModCoeff_C0( 0.5598 ); // 37.6865d0 - Real64 const ZhangHuangModCoeff_C1( 0.4982 ); // 13.9263d0 - Real64 const ZhangHuangModCoeff_C2( -0.6762 ); // -20.2354d0 - Real64 const ZhangHuangModCoeff_C3( 0.02842 ); // 0.9695d0 - Real64 const ZhangHuangModCoeff_C4( -0.00317 ); // -0.2046d0 - Real64 const ZhangHuangModCoeff_C5( 0.014 ); // -0.0980d0 - Real64 const ZhangHuangModCoeff_D( -17.853 ); // -10.8568d0 - Real64 const ZhangHuangModCoeff_K( 0.843 ); // 49.3112d0 - static std::string const RoutineNamePsyWFnTdbTwbPb( "SetUpDesignDay:PsyWFnTdbTwbPb" ); - static std::string const RoutineNamePsyWFnTdpPb( "SetUpDesignDay:PsyWFnTdpPb" ); - static std::string const RoutineNamePsyWFnTdbH( "SetUpDesignDay:PsyWFnTdbH" ); - static std::string const WeatherManager( "WeatherManager" ); - static std::string const RoutineNameLong( "WeatherManager.cc subroutine SetUpDesignDay" ); - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - int Hour; - int TS; - Real64 A; // Apparent solar irradiation at air mass = 0 - Real64 AVSC; // Annual variation in the solar constant - Real64 B; // Atmospheric extinction coefficient - Real64 C; // ASHRAE diffuse radiation factor - Real64 ETR; // radiation of an extraterrestrial normal surface, W/m2 - Real64 HO; // Radiation on an extraterrestial horizontal surface - Real64 KT; // Radiation ratio - Array1D< Real64 > SUNCOS( 3 ); // Sun direction cosines - int CurrentYear; - int OSky; // Opaque Sky Cover (tenths) - Real64 HumidityRatio; // Humidity Ratio -- when constant for day - Real64 TDewK; // Dewpoint in Kelvin - Real64 ESky; // Emissivitity of Sky - Real64 CosZenith; // Cosine of Zenith Angle of Sun - Real64 TotHoriz; // Total Radiation on Horizontal Surface - Real64 GndReflet; // Ground Reflectivity - Real64 CurTime; // For Solar Calcs - Real64 WetBulb; // For calculating - Real64 DBRange; // working copy of dry-bulb daily range, C (or 1 if input is difference) - Real64 WBRange; // working copy of wet-bulb daily range. C (or 1 if input is difference) - - Array1D_int Date0( 8 ); - static bool PrintDDHeader; - std::string AlpUseRain; - std::string AlpUseSnow; - bool ConstantHumidityRatio; - Real64 OutHumRat; - std::string StringOut; - bool SaveWarmupFlag; - Real64 GloHorzRad; - Real64 ClearnessIndex_kt; - Real64 ClearnessIndex_ktc; - Real64 ClearnessIndex_kds; - Real64 SinSolarAltitude; - Real64 TotSkyCover; - int Hour1Ago; - int Hour3Ago; - Real64 BeamRad; // working calculated beam and diffuse rad, W/m2 - Real64 DiffRad; - Real64 testval; - // For reporting purposes, set year to current system year - - struct HourlyWeatherData - { - // Members - Array1D< Real64 > BeamSolarRad; // Hourly direct normal solar irradiance - Array1D< Real64 > DifSolarRad; // Hourly sky diffuse horizontal solar irradiance - - // Default Constructor + static gio::Fmt DDayMiscFormat("('Environment:Design Day Misc,',I3,',')"); + static gio::Fmt MnDyFmt("(I2.2,'/',I2.2)"); + Real64 const ZhangHuangModCoeff_C0(0.5598); // 37.6865d0 + Real64 const ZhangHuangModCoeff_C1(0.4982); // 13.9263d0 + Real64 const ZhangHuangModCoeff_C2(-0.6762); // -20.2354d0 + Real64 const ZhangHuangModCoeff_C3(0.02842); // 0.9695d0 + Real64 const ZhangHuangModCoeff_C4(-0.00317); // -0.2046d0 + Real64 const ZhangHuangModCoeff_C5(0.014); // -0.0980d0 + Real64 const ZhangHuangModCoeff_D(-17.853); // -10.8568d0 + Real64 const ZhangHuangModCoeff_K(0.843); // 49.3112d0 + static std::string const RoutineNamePsyWFnTdbTwbPb("SetUpDesignDay:PsyWFnTdbTwbPb"); + static std::string const RoutineNamePsyWFnTdpPb("SetUpDesignDay:PsyWFnTdpPb"); + static std::string const RoutineNamePsyWFnTdbH("SetUpDesignDay:PsyWFnTdbH"); + static std::string const WeatherManager("WeatherManager"); + static std::string const RoutineNameLong("WeatherManager.cc subroutine SetUpDesignDay"); + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + int Hour; + int TS; + Real64 A; // Apparent solar irradiation at air mass = 0 + Real64 AVSC; // Annual variation in the solar constant + Real64 B; // Atmospheric extinction coefficient + Real64 C; // ASHRAE diffuse radiation factor + Real64 ETR; // radiation of an extraterrestrial normal surface, W/m2 + Real64 HO; // Radiation on an extraterrestial horizontal surface + Real64 KT; // Radiation ratio + Array1D SUNCOS(3); // Sun direction cosines + int CurrentYear; + int OSky; // Opaque Sky Cover (tenths) + Real64 HumidityRatio; // Humidity Ratio -- when constant for day + Real64 TDewK; // Dewpoint in Kelvin + Real64 ESky; // Emissivitity of Sky + Real64 CosZenith; // Cosine of Zenith Angle of Sun + Real64 TotHoriz; // Total Radiation on Horizontal Surface + Real64 GndReflet; // Ground Reflectivity + Real64 CurTime; // For Solar Calcs + Real64 WetBulb; // For calculating + Real64 DBRange; // working copy of dry-bulb daily range, C (or 1 if input is difference) + Real64 WBRange; // working copy of wet-bulb daily range. C (or 1 if input is difference) + + Array1D_int Date0(8); + static bool PrintDDHeader; + std::string AlpUseRain; + std::string AlpUseSnow; + bool ConstantHumidityRatio; + Real64 OutHumRat; + std::string StringOut; + bool SaveWarmupFlag; + Real64 GloHorzRad; + Real64 ClearnessIndex_kt; + Real64 ClearnessIndex_ktc; + Real64 ClearnessIndex_kds; + Real64 SinSolarAltitude; + Real64 TotSkyCover; + int Hour1Ago; + int Hour3Ago; + Real64 BeamRad; // working calculated beam and diffuse rad, W/m2 + Real64 DiffRad; + Real64 testval; + // For reporting purposes, set year to current system year + + struct HourlyWeatherData + { + // Members + Array1D BeamSolarRad; // Hourly direct normal solar irradiance + Array1D DifSolarRad; // Hourly sky diffuse horizontal solar irradiance + + // Default Constructor HourlyWeatherData() : BeamSolarRad(24, 0.0), DifSolarRad(24, 0.0) { } - }; - - // Object Data - HourlyWeatherData Wthr; + }; - SaveWarmupFlag = WarmupFlag; - WarmupFlag = true; + // Object Data + HourlyWeatherData Wthr; - date_and_time( _, _, _, Date0 ); - CurrentYear = Date0( 1 ); + SaveWarmupFlag = WarmupFlag; + WarmupFlag = true; - if ( BeginSimFlag ) { - PrintDDHeader = true; - } + date_and_time(_, _, _, Date0); + CurrentYear = Date0(1); - DesignDay( EnvrnNum ).Year = CurrentYear; // f90 date_and_time implemented. full 4 digit year !+ 1900 - DesignDay( EnvrnNum ).Month = DesDayInput( EnvrnNum ).Month; - DesignDay( EnvrnNum ).DayOfMonth = DesDayInput( EnvrnNum ).DayOfMonth; - DesignDay( EnvrnNum ).DayOfYear = JulianDay( DesignDay( EnvrnNum ).Month, DesignDay( EnvrnNum ).DayOfMonth, 0 ); - gio::write( CurMnDy, MnDyFmt ) << DesDayInput( EnvrnNum ).Month << DesDayInput( EnvrnNum ).DayOfMonth; - //EnvironmentName = DesDayInput( EnvrnNum ).Title; - RunPeriodEnvironment = false; - // Following builds Environment start/end for ASHRAE 55 warnings - EnvironmentStartEnd = CurMnDy + " - " + CurMnDy; + if (BeginSimFlag) { + PrintDDHeader = true; + } - // Check that barometric pressure is within range - if ( DesDayInput( EnvrnNum ).PressureEntered ) { - if ( std::abs( ( DesDayInput( EnvrnNum ).PressBarom - StdBaroPress ) / StdBaroPress ) > 0.1 ) { // 10% off + DesignDay(EnvrnNum).Year = CurrentYear; // f90 date_and_time implemented. full 4 digit year !+ 1900 + DesignDay(EnvrnNum).Month = DesDayInput(EnvrnNum).Month; + DesignDay(EnvrnNum).DayOfMonth = DesDayInput(EnvrnNum).DayOfMonth; + DesignDay(EnvrnNum).DayOfYear = JulianDay(DesignDay(EnvrnNum).Month, DesignDay(EnvrnNum).DayOfMonth, 0); + gio::write(CurMnDy, MnDyFmt) << DesDayInput(EnvrnNum).Month << DesDayInput(EnvrnNum).DayOfMonth; + // EnvironmentName = DesDayInput( EnvrnNum ).Title; + RunPeriodEnvironment = false; + // Following builds Environment start/end for ASHRAE 55 warnings + EnvironmentStartEnd = CurMnDy + " - " + CurMnDy; + + // Check that barometric pressure is within range + if (DesDayInput(EnvrnNum).PressureEntered) { + if (std::abs((DesDayInput(EnvrnNum).PressBarom - StdBaroPress) / StdBaroPress) > 0.1) { // 10% off ShowWarningError("SetUpDesignDay: Entered DesignDay Barometric Pressure=" + RoundSigDigits(DesDayInput(EnvrnNum).PressBarom, 0) + " differs by more than 10% from Standard Barometric Pressure=" + RoundSigDigits(StdBaroPress, 0) + '.'); - ShowContinueError( "...occurs in DesignDay=" + EnvironmentName + ", Standard Pressure (based on elevation) will be used." ); - DesDayInput( EnvrnNum ).PressBarom = StdBaroPress; - } - } else { - DesDayInput( EnvrnNum ).PressBarom = StdBaroPress; - } - - // verify that design WB or DP <= design DB - if ( DesDayInput( EnvrnNum ).HumIndType == DDHumIndType_DewPoint && DesDayInput( EnvrnNum ).DewPointNeedsSet ) { - // dew-point - testval = PsyWFnTdbRhPb( DesDayInput( EnvrnNum ).MaxDryBulb, 1.0, DesDayInput( EnvrnNum ).PressBarom ); - DesDayInput( EnvrnNum ).HumIndValue = PsyTdpFnWPb( testval, DesDayInput( EnvrnNum ).PressBarom ); - } - - // Day of week defaults to Monday, if day type specified, then that is used. - DesignDay( EnvrnNum ).DayOfWeek = 2; - if ( DesDayInput( EnvrnNum ).DayType <= 7 ) DesignDay( EnvrnNum ).DayOfWeek = DesDayInput( EnvrnNum ).DayType; - - // set Holiday as indicated by user input - DesignDay( EnvrnNum ).HolidayIndex = 0; - if ( DesDayInput( EnvrnNum ).DayType > 7 ) DesignDay( EnvrnNum ).HolidayIndex = DesDayInput( EnvrnNum ).DayType - 7; - - DesignDay( EnvrnNum ).DaylightSavingIndex = DesDayInput( EnvrnNum ).DSTIndicator; - - // Set up Solar parameters for day + ShowContinueError("...occurs in DesignDay=" + EnvironmentName + ", Standard Pressure (based on elevation) will be used."); + DesDayInput(EnvrnNum).PressBarom = StdBaroPress; + } + } else { + DesDayInput(EnvrnNum).PressBarom = StdBaroPress; + } + + // verify that design WB or DP <= design DB + if (DesDayInput(EnvrnNum).HumIndType == DDHumIndType_DewPoint && DesDayInput(EnvrnNum).DewPointNeedsSet) { + // dew-point + testval = PsyWFnTdbRhPb(DesDayInput(EnvrnNum).MaxDryBulb, 1.0, DesDayInput(EnvrnNum).PressBarom); + DesDayInput(EnvrnNum).HumIndValue = PsyTdpFnWPb(testval, DesDayInput(EnvrnNum).PressBarom); + } + + // Day of week defaults to Monday, if day type specified, then that is used. + DesignDay(EnvrnNum).DayOfWeek = 2; + if (DesDayInput(EnvrnNum).DayType <= 7) DesignDay(EnvrnNum).DayOfWeek = DesDayInput(EnvrnNum).DayType; + + // set Holiday as indicated by user input + DesignDay(EnvrnNum).HolidayIndex = 0; + if (DesDayInput(EnvrnNum).DayType > 7) DesignDay(EnvrnNum).HolidayIndex = DesDayInput(EnvrnNum).DayType - 7; + + DesignDay(EnvrnNum).DaylightSavingIndex = DesDayInput(EnvrnNum).DSTIndicator; + + // Set up Solar parameters for day CalculateDailySolarCoeffs(DesignDay(EnvrnNum).DayOfYear, A, B, C, AVSC, DesignDay(EnvrnNum).EquationOfTime, DesignDay(EnvrnNum).SinSolarDeclinAngle, DesignDay(EnvrnNum).CosSolarDeclinAngle); - if ( PrintDDHeader && DoWeatherInitReporting ) { - gio::write( OutputFileInits, EnvDDHdFormat ); - gio::write( OutputFileInits, DDayMiscHdFormat ); - PrintDDHeader = false; - } - if ( DoWeatherInitReporting ) { - if (DesDayInput(EnvrnNum).RainInd == 1) { - AlpUseRain = "Yes"; - } else { - AlpUseRain = "No"; - } - if (DesDayInput(EnvrnNum).SnowInd == 1) { - AlpUseSnow = "Yes"; - } else { - AlpUseSnow = "No"; - } + if (PrintDDHeader && DoWeatherInitReporting) { + gio::write(OutputFileInits, EnvDDHdFormat); + gio::write(OutputFileInits, DDayMiscHdFormat); + PrintDDHeader = false; + } + if (DoWeatherInitReporting) { + if (DesDayInput(EnvrnNum).RainInd == 1) { + AlpUseRain = "Yes"; + } else { + AlpUseRain = "No"; + } + if (DesDayInput(EnvrnNum).SnowInd == 1) { + AlpUseSnow = "Yes"; + } else { + AlpUseSnow = "No"; + } { IOFlags flags; flags.ADVANCE("No"); gio::write(OutputFileInits, EnvDDayFormat, flags); } - StringOut = RoundSigDigits(DesDayInput(EnvrnNum).MaxDryBulb, 2); + StringOut = RoundSigDigits(DesDayInput(EnvrnNum).MaxDryBulb, 2); { IOFlags flags; flags.ADVANCE("No"); gio::write(OutputFileInits, fmtA, flags) << StringOut + ','; } - StringOut = RoundSigDigits(DesDayInput(EnvrnNum).DailyDBRange, 2); + StringOut = RoundSigDigits(DesDayInput(EnvrnNum).DailyDBRange, 2); { IOFlags flags; flags.ADVANCE("No"); gio::write(OutputFileInits, fmtA, flags) << StringOut + ','; } - StringOut = ","; - if (DesDayInput(EnvrnNum).DBTempRangeType == DDDBRangeType_Default) { - StringOut = "DefaultMultipliers,"; - } else if (DesDayInput(EnvrnNum).DBTempRangeType == DDDBRangeType_Multiplier) { - StringOut = "MultiplierSchedule,"; - } else if (DesDayInput(EnvrnNum).DBTempRangeType == DDDBRangeType_Profile) { - StringOut = "TemperatureProfile,"; - } else if (DesDayInput(EnvrnNum).DBTempRangeType == DDDBRangeType_Difference) { - StringOut = "DifferenceSchedule,"; - } + StringOut = ","; + if (DesDayInput(EnvrnNum).DBTempRangeType == DDDBRangeType_Default) { + StringOut = "DefaultMultipliers,"; + } else if (DesDayInput(EnvrnNum).DBTempRangeType == DDDBRangeType_Multiplier) { + StringOut = "MultiplierSchedule,"; + } else if (DesDayInput(EnvrnNum).DBTempRangeType == DDDBRangeType_Profile) { + StringOut = "TemperatureProfile,"; + } else if (DesDayInput(EnvrnNum).DBTempRangeType == DDDBRangeType_Difference) { + StringOut = "DifferenceSchedule,"; + } { IOFlags flags; flags.ADVANCE("No"); gio::write(OutputFileInits, fmtA, flags) << StringOut; } - if (DesDayInput(EnvrnNum).HumIndType == DDHumIndType_WetBulb) { - StringOut = "Wetbulb," + RoundSigDigits(DesDayInput(EnvrnNum).HumIndValue, 2) + " {C},"; - } else if (DesDayInput(EnvrnNum).HumIndType == DDHumIndType_DewPoint) { - StringOut = "Dewpoint," + RoundSigDigits(DesDayInput(EnvrnNum).HumIndValue, 2) + " {C},"; - } else if (DesDayInput(EnvrnNum).HumIndType == DDHumIndType_Enthalpy) { - StringOut = "Enthalpy," + RoundSigDigits(DesDayInput(EnvrnNum).HumIndValue, 2) + " {kJ/kg},"; - } else if (DesDayInput(EnvrnNum).HumIndType == DDHumIndType_HumRatio) { - StringOut = "HumidityRatio," + RoundSigDigits(DesDayInput(EnvrnNum).HumIndValue, 4) + " {},"; - } else if (DesDayInput(EnvrnNum).HumIndType == DDHumIndType_RelHumSch) { - StringOut = "Schedule, + // Function of DryBulb, DewPoint, OpaqueSkyCover + // Calculate Sky IR + // HIR = ESKY * SIGMA * (TOUT**4) + // where + // HIR = horizontal IR intensity (W/m2) + // ESKY = sky emissivity + // SIGMA = Stefan-Boltzmann constant = 5.6697e-8 W/m2-K4 + // TOUT = drybulb temperature (K) + // The sky emissivity is given by + // ESKY = [0.787 + 0.764*ln(TDEW/273)]*[1 + 0.0224*N - 0.0035*(N**2) + 0.00028*(N**3)] + // where + // TDEW = dewpoint temperature (K) + // N = opaque sky cover (tenths) + // Example: Clear sky (N=0), TOUT = 273+20=293K, TDEW = 273+10=283K: + // ESKY = 0.787 + 0.764*0.036 = 0.815 + // HIR = 0.815*5.6697e-8*(293**4) = 340.6 W/m2 + + // References: + // George N. Walton, "Thermal Analysis Research Program Reference Manual," + // NBSIR 83-2655, March 1983, p. 21. + // G. Clark and C. Allen, "The Estimation of Atmospheric Radiation for Clear and + // Cloudy Skies," Proc. 2nd National Passive Solar Conference (AS/ISES), 1978, pp. 675-678. + + if (Environment(EnvrnNum).WP_Type1 == 0) { + TDewK = min(TomorrowOutDryBulbTemp(TS, Hour), TomorrowOutDewPointTemp(TS, Hour)) + TKelvin; + ESky = (0.787 + 0.764 * std::log((TDewK) / TKelvin)) * (1.0 + 0.0224 * OSky - 0.0035 * pow_2(OSky) + 0.00028 * pow_3(OSky)); + TomorrowHorizIRSky(TS, Hour) = ESky * Sigma * pow_4(TomorrowOutDryBulbTemp(TS, Hour) + TKelvin); + TomorrowSkyTemp(TS, Hour) = (TomorrowOutDryBulbTemp(TS, Hour) + TKelvin) * root_4(ESky) - TKelvin; + } else { + TDewK = min(TomorrowOutDryBulbTemp(TS, Hour), TomorrowOutDewPointTemp(TS, Hour)) + TKelvin; + ESky = (0.787 + 0.764 * std::log((TDewK) / TKelvin)) * (1.0 + 0.0224 * OSky - 0.0035 * pow_2(OSky) + 0.00028 * pow_3(OSky)); + TomorrowHorizIRSky(TS, Hour) = ESky * Sigma * pow_4(TomorrowOutDryBulbTemp(TS, Hour) + TKelvin); + } + + // Generate solar values for timestep + // working results = BeamRad and DiffRad + // stored to program globals at end of loop + if (DesDayInput(EnvrnNum).SolarModel == SolarModel_Schedule) { + // scheduled: set value unconditionally (whether sun up or not) + BeamRad = DDBeamSolarValues(TS, Hour, EnvrnNum); + DiffRad = DDDiffuseSolarValues(TS, Hour, EnvrnNum); + } else { + + // calc time = fractional hour of day + if (NumOfTimeStepInHour != 1) { + CurTime = double(Hour - 1) + double(TS) * TimeStepFraction; + } else { + CurTime = double(Hour) + TS1TimeOffset; + } CalculateSunDirectionCosines(CurTime, DesignDay(EnvrnNum).EquationOfTime, DesignDay(EnvrnNum).SinSolarDeclinAngle, DesignDay(EnvrnNum).CosSolarDeclinAngle, SUNCOS); - CosZenith = SUNCOS( 3 ); - if ( CosZenith < SunIsUpValue ) { - BeamRad = 0.0; - DiffRad = 0.0; - } else { - SinSolarAltitude = SUNCOS( 3 ); + CosZenith = SUNCOS(3); + if (CosZenith < SunIsUpValue) { + BeamRad = 0.0; + DiffRad = 0.0; + } else { + SinSolarAltitude = SUNCOS(3); { auto const SELECT_CASE_var(DesDayInput(EnvrnNum).SolarModel); - if ( SELECT_CASE_var == ASHRAE_ClearSky ) { - TotHoriz = DesDayInput( EnvrnNum ).SkyClear * A * ( C + CosZenith ) * std::exp( -B / CosZenith ); - HO = GlobalSolarConstant * AVSC * CosZenith; - KT = TotHoriz / HO; - KT = min( KT, 0.75 ); - DiffRad = TotHoriz * ( 1.0045 + KT * ( 0.04349 + KT * ( -3.5227 + 2.6313 * KT ) ) ); - if ( DesDayInput( EnvrnNum ).SkyClear > 0.70 ) DiffRad = TotHoriz * C / ( C + CosZenith ); - BeamRad = ( TotHoriz - DiffRad ) / CosZenith; - DiffRad = max( 0.0, DiffRad ); - BeamRad = max( 0.0, BeamRad ); - - } else if ( SELECT_CASE_var == ASHRAE_Tau ) { - ETR = GlobalSolarConstant * AVSC; // extraterrestrial normal irrad, W/m2 - ASHRAETauModel( ETR, CosZenith, DesDayInput( EnvrnNum ).TauB, DesDayInput( EnvrnNum ).TauD, BeamRad, DiffRad, GloHorzRad ); - - } else if ( SELECT_CASE_var == Zhang_Huang ) { - Hour3Ago = mod( Hour + 20, 24 ) + 1; // hour 3 hours before - TotSkyCover = max( 1.0 - DesDayInput( EnvrnNum ).SkyClear, 0.0 ); + if (SELECT_CASE_var == ASHRAE_ClearSky) { + TotHoriz = DesDayInput(EnvrnNum).SkyClear * A * (C + CosZenith) * std::exp(-B / CosZenith); + HO = GlobalSolarConstant * AVSC * CosZenith; + KT = TotHoriz / HO; + KT = min(KT, 0.75); + DiffRad = TotHoriz * (1.0045 + KT * (0.04349 + KT * (-3.5227 + 2.6313 * KT))); + if (DesDayInput(EnvrnNum).SkyClear > 0.70) DiffRad = TotHoriz * C / (C + CosZenith); + BeamRad = (TotHoriz - DiffRad) / CosZenith; + DiffRad = max(0.0, DiffRad); + BeamRad = max(0.0, BeamRad); + + } else if (SELECT_CASE_var == ASHRAE_Tau) { + ETR = GlobalSolarConstant * AVSC; // extraterrestrial normal irrad, W/m2 + ASHRAETauModel(ETR, CosZenith, DesDayInput(EnvrnNum).TauB, DesDayInput(EnvrnNum).TauD, BeamRad, DiffRad, GloHorzRad); + + } else if (SELECT_CASE_var == Zhang_Huang) { + Hour3Ago = mod(Hour + 20, 24) + 1; // hour 3 hours before + TotSkyCover = max(1.0 - DesDayInput(EnvrnNum).SkyClear, 0.0); GloHorzRad = (ZHGlobalSolarConstant * SinSolarAltitude * (ZhangHuangModCoeff_C0 + ZhangHuangModCoeff_C1 * TotSkyCover + ZhangHuangModCoeff_C2 * pow_2(TotSkyCover) + @@ -4349,351 +4351,351 @@ Label902: ; ZhangHuangModCoeff_C4 * TomorrowOutRelHum(TS, Hour) + ZhangHuangModCoeff_C5 * TomorrowWindSpeed(TS, Hour)) + ZhangHuangModCoeff_D) / ZhangHuangModCoeff_K; - GloHorzRad = max( GloHorzRad, 0.0 ); - ClearnessIndex_kt = GloHorzRad / ( GlobalSolarConstant * SinSolarAltitude ); - // ClearnessIndex_kt=DesDayInput(EnvrnNum)%SkyClear - ClearnessIndex_ktc = 0.4268 + 0.1934 * SinSolarAltitude; - if ( ClearnessIndex_kt < ClearnessIndex_ktc ) { + GloHorzRad = max(GloHorzRad, 0.0); + ClearnessIndex_kt = GloHorzRad / (GlobalSolarConstant * SinSolarAltitude); + // ClearnessIndex_kt=DesDayInput(EnvrnNum)%SkyClear + ClearnessIndex_ktc = 0.4268 + 0.1934 * SinSolarAltitude; + if (ClearnessIndex_kt < ClearnessIndex_ktc) { ClearnessIndex_kds = (3.996 - 3.862 * SinSolarAltitude + 1.54 * pow_2(SinSolarAltitude)) * pow_3(ClearnessIndex_kt); - } else { + } else { ClearnessIndex_kds = ClearnessIndex_kt - (1.107 + 0.03569 * SinSolarAltitude + 1.681 * pow_2(SinSolarAltitude)) * pow_3(1.0 - ClearnessIndex_kt); - } - // Calculate direct normal radiation, W/m2 + } + // Calculate direct normal radiation, W/m2 BeamRad = ZHGlobalSolarConstant * SinSolarAltitude * ClearnessIndex_kds * ((1.0 - ClearnessIndex_kt) / (1.0 - ClearnessIndex_kds)); - // Calculation diffuse horizontal radiation, W/m2 + // Calculation diffuse horizontal radiation, W/m2 DiffRad = ZHGlobalSolarConstant * SinSolarAltitude * ((ClearnessIndex_kt - ClearnessIndex_kds) / (1.0 - ClearnessIndex_kds)); - } else { + } else { } } - } - } - - // override result to 0 per environment var (for testing) - if ( IgnoreSolarRadiation || IgnoreBeamRadiation ) BeamRad = 0.0; - if ( IgnoreSolarRadiation || IgnoreDiffuseRadiation ) DiffRad = 0.0; - - TomorrowBeamSolarRad( TS, Hour ) = BeamRad; - TomorrowDifSolarRad( TS, Hour ) = DiffRad; - - } // Timestep (TS) Loop - } // Hour Loop - - // back-fill hour values from timesteps - // hour values = integrated over hour ending at time of hour - // insurance: hourly values not known to be needed - for ( Hour = 1; Hour <= 24; ++Hour ) { - Hour1Ago = mod( Hour + 22, 24 ) + 1; - BeamRad = ( TomorrowBeamSolarRad( NumOfTimeStepInHour, Hour1Ago ) + TomorrowBeamSolarRad( NumOfTimeStepInHour, Hour ) ) / 2.0; - DiffRad = ( TomorrowDifSolarRad( NumOfTimeStepInHour, Hour1Ago ) + TomorrowDifSolarRad( NumOfTimeStepInHour, Hour ) ) / 2.0; - if ( NumOfTimeStepInHour > 1 ) { - BeamRad += sum( TomorrowBeamSolarRad( {1,NumOfTimeStepInHour - 1}, Hour ) ); - DiffRad += sum( TomorrowDifSolarRad( {1,NumOfTimeStepInHour - 1}, Hour ) ); - } - Wthr.BeamSolarRad( Hour ) = BeamRad / NumOfTimeStepInHour; - Wthr.DifSolarRad( Hour ) = DiffRad / NumOfTimeStepInHour; - } - - if ( Environment( EnvrnNum ).WP_Type1 != 0 ) { + } + } + + // override result to 0 per environment var (for testing) + if (IgnoreSolarRadiation || IgnoreBeamRadiation) BeamRad = 0.0; + if (IgnoreSolarRadiation || IgnoreDiffuseRadiation) DiffRad = 0.0; + + TomorrowBeamSolarRad(TS, Hour) = BeamRad; + TomorrowDifSolarRad(TS, Hour) = DiffRad; + + } // Timestep (TS) Loop + } // Hour Loop + + // back-fill hour values from timesteps + // hour values = integrated over hour ending at time of hour + // insurance: hourly values not known to be needed + for (Hour = 1; Hour <= 24; ++Hour) { + Hour1Ago = mod(Hour + 22, 24) + 1; + BeamRad = (TomorrowBeamSolarRad(NumOfTimeStepInHour, Hour1Ago) + TomorrowBeamSolarRad(NumOfTimeStepInHour, Hour)) / 2.0; + DiffRad = (TomorrowDifSolarRad(NumOfTimeStepInHour, Hour1Ago) + TomorrowDifSolarRad(NumOfTimeStepInHour, Hour)) / 2.0; + if (NumOfTimeStepInHour > 1) { + BeamRad += sum(TomorrowBeamSolarRad({1, NumOfTimeStepInHour - 1}, Hour)); + DiffRad += sum(TomorrowDifSolarRad({1, NumOfTimeStepInHour - 1}, Hour)); + } + Wthr.BeamSolarRad(Hour) = BeamRad / NumOfTimeStepInHour; + Wthr.DifSolarRad(Hour) = DiffRad / NumOfTimeStepInHour; + } + + if (Environment(EnvrnNum).WP_Type1 != 0) { { auto const SELECT_CASE_var(WPSkyTemperature(Environment(EnvrnNum).WP_Type1).CalculationType); - if ( SELECT_CASE_var == WP_ScheduleValue ) { - GetSingleDayScheduleValues( WPSkyTemperature( Environment( EnvrnNum ).WP_Type1 ).SchedulePtr, TomorrowSkyTemp ); - DDSkyTempScheduleValues( _, _, EnvrnNum ) = TomorrowSkyTemp; - } else if ( SELECT_CASE_var == WP_DryBulbDelta ) { - GetSingleDayScheduleValues( WPSkyTemperature( Environment( EnvrnNum ).WP_Type1 ).SchedulePtr, TomorrowSkyTemp ); - DDSkyTempScheduleValues( _, _, EnvrnNum ) = TomorrowSkyTemp; - for ( Hour = 1; Hour <= 24; ++Hour ) { - for ( TS = 1; TS <= NumOfTimeStepInHour; ++TS ) { - TomorrowSkyTemp( TS, Hour ) = TomorrowOutDryBulbTemp( TS, Hour ) - TomorrowSkyTemp( TS, Hour ); - } - } - - } else if ( SELECT_CASE_var == WP_DewPointDelta ) { - GetSingleDayScheduleValues( WPSkyTemperature( Environment( EnvrnNum ).WP_Type1 ).SchedulePtr, TomorrowSkyTemp ); - DDSkyTempScheduleValues( _, _, EnvrnNum ) = TomorrowSkyTemp; - for ( Hour = 1; Hour <= 24; ++Hour ) { - for ( TS = 1; TS <= NumOfTimeStepInHour; ++TS ) { - TomorrowSkyTemp( TS, Hour ) = TomorrowOutDewPointTemp( TS, Hour ) - TomorrowSkyTemp( TS, Hour ); - } - } - - } else { + if (SELECT_CASE_var == WP_ScheduleValue) { + GetSingleDayScheduleValues(WPSkyTemperature(Environment(EnvrnNum).WP_Type1).SchedulePtr, TomorrowSkyTemp); + DDSkyTempScheduleValues(_, _, EnvrnNum) = TomorrowSkyTemp; + } else if (SELECT_CASE_var == WP_DryBulbDelta) { + GetSingleDayScheduleValues(WPSkyTemperature(Environment(EnvrnNum).WP_Type1).SchedulePtr, TomorrowSkyTemp); + DDSkyTempScheduleValues(_, _, EnvrnNum) = TomorrowSkyTemp; + for (Hour = 1; Hour <= 24; ++Hour) { + for (TS = 1; TS <= NumOfTimeStepInHour; ++TS) { + TomorrowSkyTemp(TS, Hour) = TomorrowOutDryBulbTemp(TS, Hour) - TomorrowSkyTemp(TS, Hour); + } + } + + } else if (SELECT_CASE_var == WP_DewPointDelta) { + GetSingleDayScheduleValues(WPSkyTemperature(Environment(EnvrnNum).WP_Type1).SchedulePtr, TomorrowSkyTemp); + DDSkyTempScheduleValues(_, _, EnvrnNum) = TomorrowSkyTemp; + for (Hour = 1; Hour <= 24; ++Hour) { + for (TS = 1; TS <= NumOfTimeStepInHour; ++TS) { + TomorrowSkyTemp(TS, Hour) = TomorrowOutDewPointTemp(TS, Hour) - TomorrowSkyTemp(TS, Hour); + } + } + + } else { } } - } + } - WarmupFlag = SaveWarmupFlag; - } + WarmupFlag = SaveWarmupFlag; + } - //------------------------------------------------------------------------------ + //------------------------------------------------------------------------------ Real64 AirMass(Real64 const CosZen) // COS( solar zenith), 0 - 1 - { + { - // SUBROUTINE INFORMATION: - // AUTHOR C Barnaby - // DATE WRITTEN Nov 2010 - // MODIFIED na - // RE-ENGINEERED na + // SUBROUTINE INFORMATION: + // AUTHOR C Barnaby + // DATE WRITTEN Nov 2010 + // MODIFIED na + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // Calculate relative air mass using Kasten and Young approximation + // PURPOSE OF THIS SUBROUTINE: + // Calculate relative air mass using Kasten and Young approximation - // METHODOLOGY EMPLOYED: - // Eqn (16), ASHRAE HOF 2009, p. 14.9 + // METHODOLOGY EMPLOYED: + // Eqn (16), ASHRAE HOF 2009, p. 14.9 - // REFERENCES: - // ASHRAE HOF 2009 Chapter 14 - // Kasten, F and T. Young. 1989. Revised optical air mass tables - // and approximating formula. Applied Optics 28:4735-4738. + // REFERENCES: + // ASHRAE HOF 2009 Chapter 14 + // Kasten, F and T. Young. 1989. Revised optical air mass tables + // and approximating formula. Applied Optics 28:4735-4738. - // USE STATEMENTS: - // na + // USE STATEMENTS: + // na - // Return value - Real64 AirMass; + // Return value + Real64 AirMass; - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: - // SUBROUTINE PARAMETER DEFINITIONS: - // na + // SUBROUTINE PARAMETER DEFINITIONS: + // na - // INTERFACE BLOCK SPECIFICATIONS: - // na + // INTERFACE BLOCK SPECIFICATIONS: + // na - // DERIVED TYPE DEFINITIONS: - // na + // DERIVED TYPE DEFINITIONS: + // na - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - Real64 SunAltD; + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + Real64 SunAltD; - if ( CosZen <= 0.001 ) { - AirMass = 37.07837343; // limit value calc'd with Excel - // value increases little as CosZen -> 0 - } else if ( CosZen >= 1.0 ) { - AirMass = 1.0; - } else { - // note: COS( Zen) = SIN( Alt) - SunAltD = std::asin( CosZen ) / DegToRadians; // altitude, degrees - AirMass = 1.0 / ( CosZen + 0.50572 * std::pow( 6.07995 + SunAltD, -1.6364 ) ); - } - return AirMass; - } + if (CosZen <= 0.001) { + AirMass = 37.07837343; // limit value calc'd with Excel + // value increases little as CosZen -> 0 + } else if (CosZen >= 1.0) { + AirMass = 1.0; + } else { + // note: COS( Zen) = SIN( Alt) + SunAltD = std::asin(CosZen) / DegToRadians; // altitude, degrees + AirMass = 1.0 / (CosZen + 0.50572 * std::pow(6.07995 + SunAltD, -1.6364)); + } + return AirMass; + } - //------------------------------------------------------------------------------ + //------------------------------------------------------------------------------ void ASHRAETauModel(Real64 const ETR, // extraterrestrial normal irradiance, W/m2 - Real64 const CosZen, // COS( solar zenith angle), 0 - 1 - Real64 const TauB, // beam tau factor - Real64 const TauD, // dif tau factor - Real64 & IDirN, // returned: direct (beam) irradiance on normal surface, W/m2 - Real64 & IDifH, // returned: diffuse irradiance on horiz surface, W/m2 - Real64 & IGlbH // returned: global irradiance on horiz surface, W/m2 - ) - { - - // SUBROUTINE INFORMATION: - // AUTHOR C Barnaby - // DATE WRITTEN Nov 2010 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // Calculate clear-sky direct and diffuse irradiance using ASHRAE "tau" model - - // METHODOLOGY EMPLOYED: - // Eqns (17-18), ASHRAE HOF 2009, p. 14.9 - - // REFERENCES: - // ASHRAE HOF 2009 Chapter 14 - - // USE STATEMENTS: - // na - - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: - - // SUBROUTINE PARAMETER DEFINITIONS: - // na - - // INTERFACE BLOCK SPECIFICATIONS: - // na - - // DERIVED TYPE DEFINITIONS: - // na - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - - Real64 AB; // air mass exponents - Real64 AD; - Real64 M; // air mass - - if ( CosZen < SunIsUpValue || TauB <= 0.0 || TauD <= 0.0 ) { - IDirN = 0.0; - IDifH = 0.0; - IGlbH = 0.0; - } else { - AB = 1.219 - 0.043 * TauB - 0.151 * TauD - 0.204 * TauB * TauD; - AD = 0.202 + 0.852 * TauB - 0.007 * TauD - 0.357 * TauB * TauD; - M = AirMass( CosZen ); - IDirN = ETR * std::exp( -TauB * std::pow( M, AB ) ); - IDifH = ETR * std::exp( -TauD * std::pow( M, AD ) ); - IGlbH = IDirN * CosZen + IDifH; - } - } + Real64 const CosZen, // COS( solar zenith angle), 0 - 1 + Real64 const TauB, // beam tau factor + Real64 const TauD, // dif tau factor + Real64 &IDirN, // returned: direct (beam) irradiance on normal surface, W/m2 + Real64 &IDifH, // returned: diffuse irradiance on horiz surface, W/m2 + Real64 &IGlbH // returned: global irradiance on horiz surface, W/m2 + ) + { + + // SUBROUTINE INFORMATION: + // AUTHOR C Barnaby + // DATE WRITTEN Nov 2010 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // Calculate clear-sky direct and diffuse irradiance using ASHRAE "tau" model + + // METHODOLOGY EMPLOYED: + // Eqns (17-18), ASHRAE HOF 2009, p. 14.9 + + // REFERENCES: + // ASHRAE HOF 2009 Chapter 14 + + // USE STATEMENTS: + // na + + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + + // SUBROUTINE PARAMETER DEFINITIONS: + // na + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // DERIVED TYPE DEFINITIONS: + // na + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + + Real64 AB; // air mass exponents + Real64 AD; + Real64 M; // air mass + + if (CosZen < SunIsUpValue || TauB <= 0.0 || TauD <= 0.0) { + IDirN = 0.0; + IDifH = 0.0; + IGlbH = 0.0; + } else { + AB = 1.219 - 0.043 * TauB - 0.151 * TauD - 0.204 * TauB * TauD; + AD = 0.202 + 0.852 * TauB - 0.007 * TauD - 0.357 * TauB * TauD; + M = AirMass(CosZen); + IDirN = ETR * std::exp(-TauB * std::pow(M, AB)); + IDifH = ETR * std::exp(-TauD * std::pow(M, AD)); + IGlbH = IDirN * CosZen + IDifH; + } + } void AllocateWeatherData() - { - - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN December 2000 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // This subroutine allocates the weather data structures (Today, Tomorrow, - // Design Day) to the proper number of "time steps in hour" requested by the user. - // Interpolation of data is done later after either setting up the design day (hourly - // data) or reading in hourly weather data. - - // METHODOLOGY EMPLOYED: - // na - - // REFERENCES: - // na - - // USE STATEMENTS: - // na - - // SUBROUTINE ARGUMENT DEFINITIONS: - // na - - // SUBROUTINE PARAMETER DEFINITIONS: - // na - - // INTERFACE BLOCK SPECIFICATIONS: - // na - - // DERIVED TYPE DEFINITIONS: - // na - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - // na - - TodayIsRain.allocate( NumOfTimeStepInHour, 24 ); - TodayIsRain = false; - TodayIsSnow.allocate( NumOfTimeStepInHour, 24 ); - TodayIsSnow = false; - TodayOutDryBulbTemp.allocate( NumOfTimeStepInHour, 24 ); - TodayOutDryBulbTemp = 0.0; - TodayOutDewPointTemp.allocate( NumOfTimeStepInHour, 24 ); - TodayOutDewPointTemp = 0.0; - TodayOutBaroPress.allocate( NumOfTimeStepInHour, 24 ); - TodayOutBaroPress = 0.0; - TodayOutRelHum.allocate( NumOfTimeStepInHour, 24 ); - TodayOutRelHum = 0.0; - TodayWindSpeed.allocate( NumOfTimeStepInHour, 24 ); - TodayWindSpeed = 0.0; - TodayWindDir.allocate( NumOfTimeStepInHour, 24 ); - TodayWindDir = 0.0; - TodaySkyTemp.allocate( NumOfTimeStepInHour, 24 ); - TodaySkyTemp = 0.0; - TodayHorizIRSky.allocate( NumOfTimeStepInHour, 24 ); - TodayHorizIRSky = 0.0; - TodayBeamSolarRad.allocate( NumOfTimeStepInHour, 24 ); - TodayBeamSolarRad = 0.0; - TodayDifSolarRad.allocate( NumOfTimeStepInHour, 24 ); - TodayDifSolarRad = 0.0; - TodayAlbedo.allocate( NumOfTimeStepInHour, 24 ); - TodayAlbedo = 0.0; - TodayLiquidPrecip.allocate( NumOfTimeStepInHour, 24 ); - TodayLiquidPrecip = 0.0; - - TomorrowIsRain.allocate( NumOfTimeStepInHour, 24 ); - TomorrowIsRain = false; - TomorrowIsSnow.allocate( NumOfTimeStepInHour, 24 ); - TomorrowIsSnow = false; - TomorrowOutDryBulbTemp.allocate( NumOfTimeStepInHour, 24 ); - TomorrowOutDryBulbTemp = 0.0; - TomorrowOutDewPointTemp.allocate( NumOfTimeStepInHour, 24 ); - TomorrowOutDewPointTemp = 0.0; - TomorrowOutBaroPress.allocate( NumOfTimeStepInHour, 24 ); - TomorrowOutBaroPress = 0.0; - TomorrowOutRelHum.allocate( NumOfTimeStepInHour, 24 ); - TomorrowOutRelHum = 0.0; - TomorrowWindSpeed.allocate( NumOfTimeStepInHour, 24 ); - TomorrowWindSpeed = 0.0; - TomorrowWindDir.allocate( NumOfTimeStepInHour, 24 ); - TomorrowWindDir = 0.0; - TomorrowSkyTemp.allocate( NumOfTimeStepInHour, 24 ); - TomorrowSkyTemp = 0.0; - TomorrowHorizIRSky.allocate( NumOfTimeStepInHour, 24 ); - TomorrowHorizIRSky = 0.0; - TomorrowBeamSolarRad.allocate( NumOfTimeStepInHour, 24 ); - TomorrowBeamSolarRad = 0.0; - TomorrowDifSolarRad.allocate( NumOfTimeStepInHour, 24 ); - TomorrowDifSolarRad = 0.0; - TomorrowAlbedo.allocate( NumOfTimeStepInHour, 24 ); - TomorrowAlbedo = 0.0; - TomorrowLiquidPrecip.allocate( NumOfTimeStepInHour, 24 ); - TomorrowLiquidPrecip = 0.0; - } + { + + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN December 2000 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // This subroutine allocates the weather data structures (Today, Tomorrow, + // Design Day) to the proper number of "time steps in hour" requested by the user. + // Interpolation of data is done later after either setting up the design day (hourly + // data) or reading in hourly weather data. + + // METHODOLOGY EMPLOYED: + // na + + // REFERENCES: + // na + + // USE STATEMENTS: + // na + + // SUBROUTINE ARGUMENT DEFINITIONS: + // na + + // SUBROUTINE PARAMETER DEFINITIONS: + // na + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // DERIVED TYPE DEFINITIONS: + // na + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + // na + + TodayIsRain.allocate(NumOfTimeStepInHour, 24); + TodayIsRain = false; + TodayIsSnow.allocate(NumOfTimeStepInHour, 24); + TodayIsSnow = false; + TodayOutDryBulbTemp.allocate(NumOfTimeStepInHour, 24); + TodayOutDryBulbTemp = 0.0; + TodayOutDewPointTemp.allocate(NumOfTimeStepInHour, 24); + TodayOutDewPointTemp = 0.0; + TodayOutBaroPress.allocate(NumOfTimeStepInHour, 24); + TodayOutBaroPress = 0.0; + TodayOutRelHum.allocate(NumOfTimeStepInHour, 24); + TodayOutRelHum = 0.0; + TodayWindSpeed.allocate(NumOfTimeStepInHour, 24); + TodayWindSpeed = 0.0; + TodayWindDir.allocate(NumOfTimeStepInHour, 24); + TodayWindDir = 0.0; + TodaySkyTemp.allocate(NumOfTimeStepInHour, 24); + TodaySkyTemp = 0.0; + TodayHorizIRSky.allocate(NumOfTimeStepInHour, 24); + TodayHorizIRSky = 0.0; + TodayBeamSolarRad.allocate(NumOfTimeStepInHour, 24); + TodayBeamSolarRad = 0.0; + TodayDifSolarRad.allocate(NumOfTimeStepInHour, 24); + TodayDifSolarRad = 0.0; + TodayAlbedo.allocate(NumOfTimeStepInHour, 24); + TodayAlbedo = 0.0; + TodayLiquidPrecip.allocate(NumOfTimeStepInHour, 24); + TodayLiquidPrecip = 0.0; + + TomorrowIsRain.allocate(NumOfTimeStepInHour, 24); + TomorrowIsRain = false; + TomorrowIsSnow.allocate(NumOfTimeStepInHour, 24); + TomorrowIsSnow = false; + TomorrowOutDryBulbTemp.allocate(NumOfTimeStepInHour, 24); + TomorrowOutDryBulbTemp = 0.0; + TomorrowOutDewPointTemp.allocate(NumOfTimeStepInHour, 24); + TomorrowOutDewPointTemp = 0.0; + TomorrowOutBaroPress.allocate(NumOfTimeStepInHour, 24); + TomorrowOutBaroPress = 0.0; + TomorrowOutRelHum.allocate(NumOfTimeStepInHour, 24); + TomorrowOutRelHum = 0.0; + TomorrowWindSpeed.allocate(NumOfTimeStepInHour, 24); + TomorrowWindSpeed = 0.0; + TomorrowWindDir.allocate(NumOfTimeStepInHour, 24); + TomorrowWindDir = 0.0; + TomorrowSkyTemp.allocate(NumOfTimeStepInHour, 24); + TomorrowSkyTemp = 0.0; + TomorrowHorizIRSky.allocate(NumOfTimeStepInHour, 24); + TomorrowHorizIRSky = 0.0; + TomorrowBeamSolarRad.allocate(NumOfTimeStepInHour, 24); + TomorrowBeamSolarRad = 0.0; + TomorrowDifSolarRad.allocate(NumOfTimeStepInHour, 24); + TomorrowDifSolarRad = 0.0; + TomorrowAlbedo.allocate(NumOfTimeStepInHour, 24); + TomorrowAlbedo = 0.0; + TomorrowLiquidPrecip.allocate(NumOfTimeStepInHour, 24); + TomorrowLiquidPrecip = 0.0; + } void CalculateDailySolarCoeffs(int const DayOfYear, // Day of year (1 - 366) - Real64 & A, // ASHRAE "A" - Apparent solar irradiation at air mass = 0 [W/M**2] - Real64 & B, // ASHRAE "B" - Atmospheric extinction coefficient - Real64 & C, // ASHRAE "C" - Diffuse radiation factor - Real64 & AnnVarSolConstant, // Annual variation in the solar constant - Real64 & EquationOfTime, // Equation of Time - Real64 & SineSolarDeclination, // Sine of Solar Declination - Real64 & CosineSolarDeclination // Cosine of Solar Declination - ) - { - - // SUBROUTINE INFORMATION: - // AUTHOR George Walton - // DATE WRITTEN May 1985 - // MODIFIED 1999 for EnergyPlus - // RE-ENGINEERED 2001; LKL; Remove need for English -> SI conversion - // Implement Tarp "fix" for Southern Hemisphere - - // PURPOSE OF THIS SUBROUTINE: - // This subroutine computes the daily solar coefficients used in other - // calculations. Specifically, this routine computes values of the solar declination, equation - // of time, and ashrae sky coefficients a, b, and c for a given - // day of the year. - - // METHODOLOGY EMPLOYED: - // The method is the same as that recommended in the ASHRAE loads - // algorithms manual, except that the fourier series expressions - // have been extended by two terms for greater accuracy. - // coefficients for the new expressions were determined at USACERL - // using data from the cited references. - - // REFERENCES: - // J. L. Threlkeld, "Thermal Environmental Engineering", 1970, - // p.316, for declination and equation of time. - // "ASHRAE Handbook of Fundamentals", 1972, p.387 for sky - // coefficients a, b, and c. - // See SUN3 in SolarShading. See SUN2 in BLAST. See SUN3 in Tarp. - - // USE STATEMENTS: - // na - - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: - - // SUBROUTINE PARAMETER DEFINITIONS: - Real64 const DayCorrection( Pi * 2.0 / 366.0 ); + Real64 &A, // ASHRAE "A" - Apparent solar irradiation at air mass = 0 [W/M**2] + Real64 &B, // ASHRAE "B" - Atmospheric extinction coefficient + Real64 &C, // ASHRAE "C" - Diffuse radiation factor + Real64 &AnnVarSolConstant, // Annual variation in the solar constant + Real64 &EquationOfTime, // Equation of Time + Real64 &SineSolarDeclination, // Sine of Solar Declination + Real64 &CosineSolarDeclination // Cosine of Solar Declination + ) + { + + // SUBROUTINE INFORMATION: + // AUTHOR George Walton + // DATE WRITTEN May 1985 + // MODIFIED 1999 for EnergyPlus + // RE-ENGINEERED 2001; LKL; Remove need for English -> SI conversion + // Implement Tarp "fix" for Southern Hemisphere + + // PURPOSE OF THIS SUBROUTINE: + // This subroutine computes the daily solar coefficients used in other + // calculations. Specifically, this routine computes values of the solar declination, equation + // of time, and ashrae sky coefficients a, b, and c for a given + // day of the year. + + // METHODOLOGY EMPLOYED: + // The method is the same as that recommended in the ASHRAE loads + // algorithms manual, except that the fourier series expressions + // have been extended by two terms for greater accuracy. + // coefficients for the new expressions were determined at USACERL + // using data from the cited references. + + // REFERENCES: + // J. L. Threlkeld, "Thermal Environmental Engineering", 1970, + // p.316, for declination and equation of time. + // "ASHRAE Handbook of Fundamentals", 1972, p.387 for sky + // coefficients a, b, and c. + // See SUN3 in SolarShading. See SUN2 in BLAST. See SUN3 in Tarp. + + // USE STATEMENTS: + // na + + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + + // SUBROUTINE PARAMETER DEFINITIONS: + Real64 const DayCorrection(Pi * 2.0 / 366.0); static Array1D const SineSolDeclCoef(9, {0.00561800, 0.0657911, -0.392779, 0.00064440, -0.00618495, -0.00010101, -0.00007951, -0.00011691, 0.00002096}); // Fitted coefficients of Fourier series | Sine of declination coefficients @@ -4701,9 +4703,9 @@ Label902: ; -0.00167992}); // Fitted coefficients of Fourier Series | Equation of Time coefficients static Array1D const ASHRAE_A_Coef(9, {1161.6685, 1.1554, 77.3575, -0.5359, -3.7622, 0.9875, -3.3924, -1.7445, 1.1198}); // Fitted coefficients of Fourier Series | ASHRAE A Factor coefficients - // English (original) units: - // 368.49341,.366502,24.538624,-.169983,-1.193417, & - // .313261,-1.076093,-.543376,.355197 , & + // English (original) units: + // 368.49341,.366502,24.538624,-.169983,-1.193417, & + // .313261,-1.076093,-.543376,.355197 , & static Array1D const ASHRAE_B_Coef(9, {0.171631, -0.00400448, -0.0344923, 0.00000209, 0.00325428, -0.00085429, 0.00229562, 0.0009034, -0.0011867}); // Fitted coefficients of Fourier Series | ASHRAE B Factor coefficients @@ -4711,22 +4713,22 @@ Label902: ; {0.0905151, -0.00322522, -0.0407966, 0.000104164, 0.00745899, -0.00086461, 0.0013111, 0.000808275, -0.00170515}); // Fitted coefficients of Fourier Series | ASHRAE C Factor coefficients - // INTERFACE BLOCK SPECIFICATIONS: - // na + // INTERFACE BLOCK SPECIFICATIONS: + // na - // DERIVED TYPE DEFINITIONS: - // na + // DERIVED TYPE DEFINITIONS: + // na - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - Real64 X; // Day of Year in Radians (Computed from Input DayOfYear) - Real64 CosX; // COS(X) - Real64 SinX; // SIN(X) + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + Real64 X; // Day of Year in Radians (Computed from Input DayOfYear) + Real64 CosX; // COS(X) + Real64 SinX; // SIN(X) - X = DayCorrection * DayOfYear; // Convert Julian date (Day of Year) to angle X + X = DayCorrection * DayOfYear; // Convert Julian date (Day of Year) to angle X - // Calculate sines and cosines of X - SinX = std::sin( X ); - CosX = std::cos( X ); + // Calculate sines and cosines of X + SinX = std::sin(X); + CosX = std::cos(X); SineSolarDeclination = SineSolDeclCoef(1) + SineSolDeclCoef(2) * SinX + SineSolDeclCoef(3) * CosX + SineSolDeclCoef(4) * (SinX * CosX * 2.0) + SineSolDeclCoef(5) * (pow_2(CosX) - pow_2(SinX)) + @@ -4734,7 +4736,7 @@ Label902: ; SineSolDeclCoef(7) * (CosX * (pow_2(CosX) - pow_2(SinX)) - SinX * (SinX * CosX * 2.0)) + SineSolDeclCoef(8) * (2.0 * (SinX * CosX * 2.0) * (pow_2(CosX) - pow_2(SinX))) + SineSolDeclCoef(9) * (pow_2(pow_2(CosX) - pow_2(SinX)) - pow_2(SinX * CosX * 2.0)); - CosineSolarDeclination = std::sqrt( 1.0 - pow_2( SineSolarDeclination ) ); + CosineSolarDeclination = std::sqrt(1.0 - pow_2(SineSolarDeclination)); EquationOfTime = EqOfTimeCoef(1) + EqOfTimeCoef(2) * SinX + EqOfTimeCoef(3) * CosX + EqOfTimeCoef(4) * (SinX * CosX * 2.0) + EqOfTimeCoef(5) * (pow_2(CosX) - pow_2(SinX)) + @@ -4743,7 +4745,7 @@ Label902: ; EqOfTimeCoef(8) * (2.0 * (SinX * CosX * 2.0) * (pow_2(CosX) - pow_2(SinX))) + EqOfTimeCoef(9) * (pow_2(pow_2(CosX) - pow_2(SinX)) - pow_2(SinX * CosX * 2.0)); - AnnVarSolConstant = 1.000047 + 0.000352615 * SinX + 0.0334454 * CosX; + AnnVarSolConstant = 1.000047 + 0.000352615 * SinX + 0.0334454 * CosX; A = ASHRAE_A_Coef(1) + ASHRAE_A_Coef(2) * SinX + ASHRAE_A_Coef(3) * CosX + ASHRAE_A_Coef(4) * (SinX * CosX * 2.0) + ASHRAE_A_Coef(5) * (pow_2(CosX) - pow_2(SinX)) + ASHRAE_A_Coef(6) * (SinX * (pow_2(CosX) - pow_2(SinX)) + CosX * (SinX * CosX * 2.0)) + @@ -4751,14 +4753,14 @@ Label902: ; ASHRAE_A_Coef(8) * (2.0 * (SinX * CosX * 2.0) * (pow_2(CosX) - pow_2(SinX))) + ASHRAE_A_Coef(9) * (pow_2(pow_2(CosX) - pow_2(SinX)) - pow_2(SinX * CosX * 2.0)); - // Compute B and C coefficients + // Compute B and C coefficients - if ( Latitude < 0.0 ) { - // If in southern hemisphere, compute B and C with a six month time shift. - X -= Pi; - SinX = std::sin( X ); - CosX = std::cos( X ); - } + if (Latitude < 0.0) { + // If in southern hemisphere, compute B and C with a six month time shift. + X -= Pi; + SinX = std::sin(X); + CosX = std::cos(X); + } B = ASHRAE_B_Coef(1) + ASHRAE_B_Coef(2) * SinX + ASHRAE_B_Coef(3) * CosX + ASHRAE_B_Coef(4) * (SinX * CosX * 2.0) + ASHRAE_B_Coef(5) * (pow_2(CosX) - pow_2(SinX)) + ASHRAE_B_Coef(6) * (SinX * (pow_2(CosX) - pow_2(SinX)) + CosX * (SinX * CosX * 2.0)) + @@ -4771,196 +4773,196 @@ Label902: ; ASHRAE_C_Coef(7) * (CosX * (pow_2(CosX) - pow_2(SinX)) - SinX * (SinX * CosX * 2.0)) + ASHRAE_C_Coef(8) * (2.0 * (SinX * CosX * 2.0) * (pow_2(CosX) - pow_2(SinX))) + ASHRAE_C_Coef(9) * (pow_2(pow_2(CosX) - pow_2(SinX)) - pow_2(SinX * CosX * 2.0)); - } + } void CalculateSunDirectionCosines(Real64 const TimeValue, // Current Time of Day - Real64 const EqOfTime, // Equation of Time - Real64 const SinSolDeclin, // Sine of Solar Declination - Real64 const CosSolDeclin, // Cosine of Solar Declination + Real64 const EqOfTime, // Equation of Time + Real64 const SinSolDeclin, // Sine of Solar Declination + Real64 const CosSolDeclin, // Cosine of Solar Declination Array1A SUNCOS) - { + { - // SUBROUTINE INFORMATION: - // AUTHOR George Walton - // DATE WRITTEN May 1975 - // MODIFIED 1999 for EnergyPlus - // RE-ENGINEERED na + // SUBROUTINE INFORMATION: + // AUTHOR George Walton + // DATE WRITTEN May 1975 + // MODIFIED 1999 for EnergyPlus + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // This routine computes the solar direction cosines for hourly - // radiation calculations. + // PURPOSE OF THIS SUBROUTINE: + // This routine computes the solar direction cosines for hourly + // radiation calculations. - // METHODOLOGY EMPLOYED: - // na + // METHODOLOGY EMPLOYED: + // na - // REFERENCES: - // "NECAP Engineering Manual", 1974, p.3-117 + // REFERENCES: + // "NECAP Engineering Manual", 1974, p.3-117 - // USE STATEMENTS: - // na + // USE STATEMENTS: + // na - // Argument array dimensioning - SUNCOS.dim( 3 ); + // Argument array dimensioning + SUNCOS.dim(3); - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: - // SUBROUTINE PARAMETER DEFINITIONS: - // na + // SUBROUTINE PARAMETER DEFINITIONS: + // na - // INTERFACE BLOCK SPECIFICATIONS: - // na + // INTERFACE BLOCK SPECIFICATIONS: + // na - // DERIVED TYPE DEFINITIONS: - // na + // DERIVED TYPE DEFINITIONS: + // na - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - Real64 COSH; // Cosine of hour angle - Real64 H; // Hour angle (before noon = +) + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + Real64 COSH; // Cosine of hour angle + Real64 H; // Hour angle (before noon = +) - // COMPUTE THE HOUR ANGLE - H = ( 15.0 * ( 12.0 - ( TimeValue + EqOfTime ) ) + ( TimeZoneMeridian - Longitude ) ) * DegToRadians; - COSH = std::cos( H ); - // COMPUTE THE COSINE OF THE - // SOLAR ZENITH ANGLE. - // This is also the Sine of the Solar Altitude Angle + // COMPUTE THE HOUR ANGLE + H = (15.0 * (12.0 - (TimeValue + EqOfTime)) + (TimeZoneMeridian - Longitude)) * DegToRadians; + COSH = std::cos(H); + // COMPUTE THE COSINE OF THE + // SOLAR ZENITH ANGLE. + // This is also the Sine of the Solar Altitude Angle - SUNCOS( 3 ) = SinSolDeclin * SinLatitude + CosSolDeclin * CosLatitude * COSH; + SUNCOS(3) = SinSolDeclin * SinLatitude + CosSolDeclin * CosLatitude * COSH; - if ( SUNCOS( 3 ) >= SunIsUpValue ) { // If Sun above horizon, compute other direction cosines - SUNCOS( 2 ) = SinSolDeclin * CosLatitude - CosSolDeclin * SinLatitude * COSH; - SUNCOS( 1 ) = CosSolDeclin * std::sin( H ); - } else { // Sun is down, set to 0.0 - SUNCOS( 1 ) = 0.0; - SUNCOS( 2 ) = 0.0; - } - } + if (SUNCOS(3) >= SunIsUpValue) { // If Sun above horizon, compute other direction cosines + SUNCOS(2) = SinSolDeclin * CosLatitude - CosSolDeclin * SinLatitude * COSH; + SUNCOS(1) = CosSolDeclin * std::sin(H); + } else { // Sun is down, set to 0.0 + SUNCOS(1) = 0.0; + SUNCOS(2) = 0.0; + } + } void DetermineSunUpDown(Array1A SunDirectionCosines) - { - - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN 1999 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // This subroutine determines if the sun is up or down for the current - // hour/timestep. - - // METHODOLOGY EMPLOYED: - // na - - // REFERENCES: - // Sun routines from IBLAST, authored by Walton. - - // USE STATEMENTS: - // na - - // Argument array dimensioning - SunDirectionCosines.dim( 3 ); - - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: - - // SUBROUTINE PARAMETER DEFINITIONS: - // na - - // INTERFACE BLOCK SPECIFICATIONS: - // na - - // DERIVED TYPE DEFINITIONS: - // na - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - Real64 H; // Hour angle (before noon = +) - Real64 SinAltitude; - Real64 SolarAltitude; - Real64 SolarAzimuth; - Real64 SolarZenith; - Real64 CosAzimuth; - Real64 CosZenith; - // REAL(r64) HAngle - - // COMPUTE THE HOUR ANGLE - - if ( NumOfTimeStepInHour != 1 ) { - HrAngle = ( 15.0 * ( 12.0 - ( CurrentTime + TodayVariables.EquationOfTime ) ) + ( TimeZoneMeridian - Longitude ) ); - } else { - HrAngle = ( 15.0 * ( 12.0 - ( ( CurrentTime + TS1TimeOffset ) + TodayVariables.EquationOfTime ) ) + ( TimeZoneMeridian - Longitude ) ); - } - H = HrAngle * DegToRadians; - - // Compute the Cosine of the Solar Zenith (Altitude) Angle. - CosZenith = SinLatitude * TodayVariables.SinSolarDeclinAngle + CosLatitude * TodayVariables.CosSolarDeclinAngle * std::cos( H ); - - SolarZenith = std::acos( CosZenith ); - SinAltitude = CosLatitude * TodayVariables.CosSolarDeclinAngle * std::cos( H ) + SinLatitude * TodayVariables.SinSolarDeclinAngle; - SolarAltitude = std::asin( SinAltitude ); - CosAzimuth = -( SinLatitude * CosZenith - TodayVariables.SinSolarDeclinAngle ) / ( CosLatitude * std::sin( SolarZenith ) ); - // Following because above can yield invalid cos value. (e.g. at south pole) - CosAzimuth = max( CosAzimuth, -1.0 ); - CosAzimuth = min( 1.0, CosAzimuth ); - SolarAzimuth = std::acos( CosAzimuth ); - - SolarAltitudeAngle = SolarAltitude / DegToRadians; - SolarAzimuthAngle = SolarAzimuth / DegToRadians; - if ( HrAngle < 0.0 ) { - SolarAzimuthAngle = 360.0 - SolarAzimuthAngle; - } - - SunDirectionCosines( 3 ) = CosZenith; - if ( CosZenith < SunIsUpValue ) { - SunIsUp = false; - SunDirectionCosines( 2 ) = 0.0; - SunDirectionCosines( 1 ) = 0.0; - } else { - SunIsUp = true; + { + + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN 1999 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // This subroutine determines if the sun is up or down for the current + // hour/timestep. + + // METHODOLOGY EMPLOYED: + // na + + // REFERENCES: + // Sun routines from IBLAST, authored by Walton. + + // USE STATEMENTS: + // na + + // Argument array dimensioning + SunDirectionCosines.dim(3); + + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + + // SUBROUTINE PARAMETER DEFINITIONS: + // na + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // DERIVED TYPE DEFINITIONS: + // na + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + Real64 H; // Hour angle (before noon = +) + Real64 SinAltitude; + Real64 SolarAltitude; + Real64 SolarAzimuth; + Real64 SolarZenith; + Real64 CosAzimuth; + Real64 CosZenith; + // REAL(r64) HAngle + + // COMPUTE THE HOUR ANGLE + + if (NumOfTimeStepInHour != 1) { + HrAngle = (15.0 * (12.0 - (CurrentTime + TodayVariables.EquationOfTime)) + (TimeZoneMeridian - Longitude)); + } else { + HrAngle = (15.0 * (12.0 - ((CurrentTime + TS1TimeOffset) + TodayVariables.EquationOfTime)) + (TimeZoneMeridian - Longitude)); + } + H = HrAngle * DegToRadians; + + // Compute the Cosine of the Solar Zenith (Altitude) Angle. + CosZenith = SinLatitude * TodayVariables.SinSolarDeclinAngle + CosLatitude * TodayVariables.CosSolarDeclinAngle * std::cos(H); + + SolarZenith = std::acos(CosZenith); + SinAltitude = CosLatitude * TodayVariables.CosSolarDeclinAngle * std::cos(H) + SinLatitude * TodayVariables.SinSolarDeclinAngle; + SolarAltitude = std::asin(SinAltitude); + CosAzimuth = -(SinLatitude * CosZenith - TodayVariables.SinSolarDeclinAngle) / (CosLatitude * std::sin(SolarZenith)); + // Following because above can yield invalid cos value. (e.g. at south pole) + CosAzimuth = max(CosAzimuth, -1.0); + CosAzimuth = min(1.0, CosAzimuth); + SolarAzimuth = std::acos(CosAzimuth); + + SolarAltitudeAngle = SolarAltitude / DegToRadians; + SolarAzimuthAngle = SolarAzimuth / DegToRadians; + if (HrAngle < 0.0) { + SolarAzimuthAngle = 360.0 - SolarAzimuthAngle; + } + + SunDirectionCosines(3) = CosZenith; + if (CosZenith < SunIsUpValue) { + SunIsUp = false; + SunDirectionCosines(2) = 0.0; + SunDirectionCosines(1) = 0.0; + } else { + SunIsUp = true; SunDirectionCosines(2) = TodayVariables.SinSolarDeclinAngle * CosLatitude - TodayVariables.CosSolarDeclinAngle * SinLatitude * std::cos(H); - SunDirectionCosines( 1 ) = TodayVariables.CosSolarDeclinAngle * std::sin( H ); - } - } + SunDirectionCosines(1) = TodayVariables.CosSolarDeclinAngle * std::sin(H); + } + } void OpenWeatherFile(bool &ErrorsFound) - { + { - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN June 1999 - // RE-ENGINEERED na + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN June 1999 + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // This subroutine checks to see if a weather file and what kind of weather file - // exists in the working directory and calls appropriate routines to - // open the files and set up for use. + // PURPOSE OF THIS SUBROUTINE: + // This subroutine checks to see if a weather file and what kind of weather file + // exists in the working directory and calls appropriate routines to + // open the files and set up for use. - // METHODOLOGY EMPLOYED: - // na + // METHODOLOGY EMPLOYED: + // na - // REFERENCES: - // na + // REFERENCES: + // na - // USE STATEMENTS: - // na + // USE STATEMENTS: + // na - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: - // SUBROUTINE PARAMETER DEFINITIONS: - // na + // SUBROUTINE PARAMETER DEFINITIONS: + // na - // INTERFACE BLOCK SPECIFICATIONS: - // na + // INTERFACE BLOCK SPECIFICATIONS: + // na - // DERIVED TYPE DEFINITIONS: - // na + // DERIVED TYPE DEFINITIONS: + // na - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - // na + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + // na - // FLOW: + // FLOW: { IOFlags flags; @@ -4968,40 +4970,40 @@ Label902: ; WeatherFileExists = flags.exists(); } - if ( WeatherFileExists ) { - OpenEPlusWeatherFile( ErrorsFound, true ); - } - } + if (WeatherFileExists) { + OpenEPlusWeatherFile(ErrorsFound, true); + } + } void OpenEPlusWeatherFile(bool &ErrorsFound, // Will be set to true if errors found - bool const ProcessHeader // Set to true when headers should be processed (rather than just read) - ) - { + bool const ProcessHeader // Set to true when headers should be processed (rather than just read) + ) + { - // SUBROUTINE INFORMATION: - // AUTHOR Linda K. Lawrie - // DATE WRITTEN June 1999 - // MODIFIED na - // RE-ENGINEERED na + // SUBROUTINE INFORMATION: + // AUTHOR Linda K. Lawrie + // DATE WRITTEN June 1999 + // MODIFIED na + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // This subroutine opens the EnergyPlus Weather File (in.epw) and processes - // the initial header records. + // PURPOSE OF THIS SUBROUTINE: + // This subroutine opens the EnergyPlus Weather File (in.epw) and processes + // the initial header records. - // METHODOLOGY EMPLOYED: - // List directed reads, as possible. + // METHODOLOGY EMPLOYED: + // List directed reads, as possible. - // SUBROUTINE PARAMETER DEFINITIONS: + // SUBROUTINE PARAMETER DEFINITIONS: static Array1D_string const Header(8, {"LOCATION", "DESIGN CONDITIONS", "TYPICAL/EXTREME PERIODS", "GROUND TEMPERATURES", "HOLIDAYS/DAYLIGHT SAVING", "COMMENTS 1", "COMMENTS 2", "DATA PERIODS"}); - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - std::string Line; - int HdLine; - bool StillLooking; - int endcol; - bool EPWOpen; - int unitnumber; + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + std::string Line; + int HdLine; + bool StillLooking; + int endcol; + bool EPWOpen; + int unitnumber; { IOFlags flags; @@ -5009,9 +5011,9 @@ Label902: ; unitnumber = flags.unit(); EPWOpen = flags.open(); } - if ( EPWOpen ) gio::close( unitnumber ); + if (EPWOpen) gio::close(unitnumber); - WeatherFileUnitNumber = GetNewUnitNumber(); + WeatherFileUnitNumber = GetNewUnitNumber(); { IOFlags flags; flags.ACTION("read"); @@ -5019,91 +5021,91 @@ Label902: ; if (flags.err()) goto Label9999; } - if ( ProcessHeader ) { - // Read in Header Information + if (ProcessHeader) { + // Read in Header Information - // Headers should come in order - HdLine = 1; // Look for first Header - StillLooking = true; - while ( StillLooking ) { + // Headers should come in order + HdLine = 1; // Look for first Header + StillLooking = true; + while (StillLooking) { { IOFlags flags; gio::read(WeatherFileUnitNumber, fmtA, flags) >> Line; if (flags.end()) goto Label9998; } - endcol = len( Line ); - if ( endcol > 0 ) { - if ( int( Line[ endcol - 1 ] ) == iUnicode_end ) { - goto Label9997; - } - } - std::string::size_type const Pos = FindNonSpace( Line ); - std::string::size_type const HdPos = index( Line, Header( HdLine ) ); - if ( Pos != HdPos ) continue; - // line=UtilityRoutines::MakeUPPERCase(line) - ProcessEPWHeader( Header( HdLine ), Line, ErrorsFound ); - ++HdLine; - if ( HdLine == 9 ) StillLooking = false; - } - } else { // Header already processed, just read - SkipEPlusWFHeader(); - } - - return; - -Label9997: ; - ShowSevereError( "OpenWeatherFile: EPW Weather File appears to be a Unicode or binary file.", OutputFileStandard ); - ShowContinueError( "...This file cannot be read by this program. Please save as PC or Unix file and try again" ); - ShowFatalError( "Program terminates due to previous condition." ); - -Label9998: ; + endcol = len(Line); + if (endcol > 0) { + if (int(Line[endcol - 1]) == iUnicode_end) { + goto Label9997; + } + } + std::string::size_type const Pos = FindNonSpace(Line); + std::string::size_type const HdPos = index(Line, Header(HdLine)); + if (Pos != HdPos) continue; + // line=UtilityRoutines::MakeUPPERCase(line) + ProcessEPWHeader(Header(HdLine), Line, ErrorsFound); + ++HdLine; + if (HdLine == 9) StillLooking = false; + } + } else { // Header already processed, just read + SkipEPlusWFHeader(); + } + + return; + + Label9997:; + ShowSevereError("OpenWeatherFile: EPW Weather File appears to be a Unicode or binary file.", OutputFileStandard); + ShowContinueError("...This file cannot be read by this program. Please save as PC or Unix file and try again"); + ShowFatalError("Program terminates due to previous condition."); + + Label9998:; ShowFatalError("OpenWeatherFile: Unexpected End-of-File on EPW Weather file, while reading header information, looking for header=" + Header(HdLine), OutputFileStandard); -Label9999: ; - ShowFatalError( "OpenWeatherFile: Could not OPEN EPW Weather File", OutputFileStandard ); - } + Label9999:; + ShowFatalError("OpenWeatherFile: Could not OPEN EPW Weather File", OutputFileStandard); + } void CloseWeatherFile() - { + { - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN February 2001 - // MODIFIED na - // RE-ENGINEERED na + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN February 2001 + // MODIFIED na + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // This subroutine closes the open weather file. + // PURPOSE OF THIS SUBROUTINE: + // This subroutine closes the open weather file. - // METHODOLOGY EMPLOYED: - // na + // METHODOLOGY EMPLOYED: + // na - // REFERENCES: - // na + // REFERENCES: + // na - // USE STATEMENTS: - // na + // USE STATEMENTS: + // na - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: - // na + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + // na - // SUBROUTINE PARAMETER DEFINITIONS: - // na + // SUBROUTINE PARAMETER DEFINITIONS: + // na - // INTERFACE BLOCK SPECIFICATIONS: - // na + // INTERFACE BLOCK SPECIFICATIONS: + // na - // DERIVED TYPE DEFINITIONS: - // na + // DERIVED TYPE DEFINITIONS: + // na - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - bool EPWOpen; - int unitnumber; + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + bool EPWOpen; + int unitnumber; - // Make sure it's open + // Make sure it's open { IOFlags flags; @@ -5111,60 +5113,60 @@ Label9999: ; unitnumber = flags.unit(); EPWOpen = flags.open(); } - if ( EPWOpen ) gio::close( unitnumber ); - } + if (EPWOpen) gio::close(unitnumber); + } void ResolveLocationInformation(bool &ErrorsFound) // Set to true if no location evident - { + { - // SUBROUTINE INFORMATION: - // AUTHOR Rick Strand - // DATE WRITTEN June 1997 - // MODIFIED na - // RE-ENGINEERED na + // SUBROUTINE INFORMATION: + // AUTHOR Rick Strand + // DATE WRITTEN June 1997 + // MODIFIED na + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // This subroutine is currently the main interface between the old data - // structure on the BLAST Weather file and the new data structure contained - // in this module. At some point, this subroutine will be converted - // to read information directly from the new input file. + // PURPOSE OF THIS SUBROUTINE: + // This subroutine is currently the main interface between the old data + // structure on the BLAST Weather file and the new data structure contained + // in this module. At some point, this subroutine will be converted + // to read information directly from the new input file. - // METHODOLOGY EMPLOYED: - // na + // METHODOLOGY EMPLOYED: + // na - // REFERENCES: - // na + // REFERENCES: + // na - // Using/Aliasing - using General::RoundSigDigits; + // Using/Aliasing + using General::RoundSigDigits; - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: - // SUBROUTINE PARAMETER DEFINITIONS: + // SUBROUTINE PARAMETER DEFINITIONS: static gio::Fmt LocHdFormat("('! , Location Name, Latitude {N+/S- Deg}, Longitude {E+/W- Deg}, ', ' Time Zone Number " "{GMT+/-}, Elevation {m}, ', ' Standard Pressure at Elevation {Pa}, Standard RhoAir at Elevation')"); - static gio::Fmt LocFormat( "('Site:Location',7(',',A))" ); + static gio::Fmt LocFormat("('Site:Location',7(',',A))"); - // INTERFACE BLOCK SPECIFICATIONS: - // na + // INTERFACE BLOCK SPECIFICATIONS: + // na - // DERIVED TYPE DEFINITIONS: - // na + // DERIVED TYPE DEFINITIONS: + // na - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - // na + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + // na - // FLOW: + // FLOW: - if ( Environment( NumOfEnvrn ).KindOfEnvrn == ksRunPeriodWeather && WeatherFileExists ) { - if ( LocationGathered ) { - // See if "matching" location + if (Environment(NumOfEnvrn).KindOfEnvrn == ksRunPeriodWeather && WeatherFileExists) { + if (LocationGathered) { + // See if "matching" location if (std::abs(Latitude - WeatherFileLatitude) > 1.0 || std::abs(Longitude - WeatherFileLongitude) > 1.0 || std::abs(TimeZoneNumber - WeatherFileTimeZone) > 0.0 || std::abs(Elevation - WeatherFileElevation) / max(Elevation, 1.0) > 0.10) { - ShowWarningError( "Weather file location will be used rather than entered (IDF) Location object." ); - ShowContinueError( "..Location object=" + LocationTitle ); - ShowContinueError( "..Weather File Location=" + WeatherFileLocationTitle ); + ShowWarningError("Weather file location will be used rather than entered (IDF) Location object."); + ShowContinueError("..Location object=" + LocationTitle); + ShowContinueError("..Weather File Location=" + WeatherFileLocationTitle); ShowContinueError("..due to location differences, Latitude difference=[" + RoundSigDigits(std::abs(Latitude - WeatherFileLatitude), 2) + "] degrees, Longitude difference=[" + RoundSigDigits(std::abs(Longitude - WeatherFileLongitude), 2) + "] degrees."); @@ -5172,1340 +5174,1385 @@ Label9999: ; "] hour(s), Elevation difference=[" + RoundSigDigits(std::abs((Elevation - WeatherFileElevation) / max(Elevation, 1.0)) * 100.0, 2) + "] percent, [" + RoundSigDigits(std::abs(Elevation - WeatherFileElevation), 2) + "] meters."); - } - } - - LocationTitle = WeatherFileLocationTitle; - Latitude = WeatherFileLatitude; - Longitude = WeatherFileLongitude; - TimeZoneNumber = WeatherFileTimeZone; - Elevation = WeatherFileElevation; - } else if ( ! LocationGathered ) { - LocationTitle = "Not Entered"; - ShowSevereError( "No Location given. Must have location information for simulation." ); - ErrorsFound = true; - } - - if ( ! ErrorsFound ) { - StdBaroPress = StdPressureSeaLevel * std::pow( 1.0 - 2.25577e-05 * Elevation, 5.2559 ); - StdRhoAir = PsyRhoAirFnPbTdbW( StdBaroPress, constant_twenty, constant_zero ); - // Write Final Location Information to the initialization output file - gio::write( OutputFileInits, LocHdFormat ); + } + } + + LocationTitle = WeatherFileLocationTitle; + Latitude = WeatherFileLatitude; + Longitude = WeatherFileLongitude; + TimeZoneNumber = WeatherFileTimeZone; + Elevation = WeatherFileElevation; + } else if (!LocationGathered) { + LocationTitle = "Not Entered"; + ShowSevereError("No Location given. Must have location information for simulation."); + ErrorsFound = true; + } + + if (!ErrorsFound) { + StdBaroPress = StdPressureSeaLevel * std::pow(1.0 - 2.25577e-05 * Elevation, 5.2559); + StdRhoAir = PsyRhoAirFnPbTdbW(StdBaroPress, constant_twenty, constant_zero); + // Write Final Location Information to the initialization output file + gio::write(OutputFileInits, LocHdFormat); gio::write(OutputFileInits, LocFormat) << LocationTitle << RoundSigDigits(Latitude, 2) << RoundSigDigits(Longitude, 2) << RoundSigDigits(TimeZoneNumber, 2) << RoundSigDigits(Elevation, 2) << RoundSigDigits(StdBaroPress, 0) << RoundSigDigits(StdRhoAir, 4); - } - } + } + } void CheckLocationValidity() - { - - // SUBROUTINE INFORMATION: - // AUTHOR Rick Strand - // DATE WRITTEN June 1997 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // This subroutine is checks to see whether the user specified location - // or the weather file location (if one exists) is valid. The standard - // time meridian is also calculated and compared to the user supplied - // or weather file time zone number. - - // METHODOLOGY EMPLOYED: - // na + { - // REFERENCES: - // Legacy subroutine CKBLDE. + // SUBROUTINE INFORMATION: + // AUTHOR Rick Strand + // DATE WRITTEN June 1997 + // MODIFIED na + // RE-ENGINEERED na - // Using/Aliasing - using General::RoundSigDigits; + // PURPOSE OF THIS SUBROUTINE: + // This subroutine is checks to see whether the user specified location + // or the weather file location (if one exists) is valid. The standard + // time meridian is also calculated and compared to the user supplied + // or weather file time zone number. - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: - // na + // METHODOLOGY EMPLOYED: + // na - // SUBROUTINE PARAMETER DEFINITIONS: - // na + // REFERENCES: + // Legacy subroutine CKBLDE. - // INTERFACE BLOCK SPECIFICATIONS: - // na + // Using/Aliasing + using General::RoundSigDigits; - // DERIVED TYPE DEFINITIONS: - // na + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + // na - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + // SUBROUTINE PARAMETER DEFINITIONS: + // na - bool LocationError; // Set to true if there is a problem detected - Real64 StdTimeMerid; // Standard time meridian - Real64 DiffCalc; // Difference between Standard Time Meridian and TimeZone + // INTERFACE BLOCK SPECIFICATIONS: + // na - // FLOW: + // DERIVED TYPE DEFINITIONS: + // na - LocationError = false; + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - if ( ( Latitude == -999.0 ) && ( Longitude == -999.0 ) && ( TimeZoneNumber != -999.0 ) ) { - ShowSevereError( "No location specified" ); - LocationError = true; - } + bool LocationError; // Set to true if there is a problem detected + Real64 StdTimeMerid; // Standard time meridian + Real64 DiffCalc; // Difference between Standard Time Meridian and TimeZone - if ( ( Latitude < -90.0 ) || ( Latitude > 90.0 ) ) { - ShowSevereError( "Latitude must be between -90 and 90; Entered=" + RoundSigDigits( Latitude, 2 ) ); - LocationError = true; - } + // FLOW: - if ( ( Longitude < -180.0 ) || ( Longitude > 180.0 ) ) { - ShowSevereError( "Longitude must be between -180 and 180; Entered=" + RoundSigDigits( Longitude, 2 ) ); - LocationError = true; - } + LocationError = false; - if ( ( TimeZoneNumber < -12.00 ) || ( TimeZoneNumber > 14.00 ) ) { - ShowSevereError( "Time Zone must be between -12 and +14; Entered=" + RoundSigDigits( TimeZoneNumber, 2 ) ); - LocationError = true; - } + if ((Latitude == -999.0) && (Longitude == -999.0) && (TimeZoneNumber != -999.0)) { + ShowSevereError("No location specified"); + LocationError = true; + } - StdTimeMerid = GetSTM( Longitude ); // Obtain the standard time meridian. + if ((Latitude < -90.0) || (Latitude > 90.0)) { + ShowSevereError("Latitude must be between -90 and 90; Entered=" + RoundSigDigits(Latitude, 2)); + LocationError = true; + } - // Bias at +/- 12 for StdTimeMerid - // IF (StdTimeMerid == -12.0 .and. TimeZoneNumber > 0) THEN - // StdTimeMerid=12.0 - // ELSEIF (StdTimeMerid == 12.0 .and. TimeZoneNumber < 0) THEN - // StdTimeMerid=-12.0 - // ENDIF + if ((Longitude < -180.0) || (Longitude > 180.0)) { + ShowSevereError("Longitude must be between -180 and 180; Entered=" + RoundSigDigits(Longitude, 2)); + LocationError = true; + } - // Compare the standard time meridian with the time zone number. If - // different, notify the user. If StdTimeMerid couldn't be calculated, - // produce an error message. + if ((TimeZoneNumber < -12.00) || (TimeZoneNumber > 14.00)) { + ShowSevereError("Time Zone must be between -12 and +14; Entered=" + RoundSigDigits(TimeZoneNumber, 2)); + LocationError = true; + } - if ( DataEnvironment::varyingLocationSchedIndexLat > 0 || DataEnvironment::varyingLocationSchedIndexLong > 0 ) { - // don't do any warnings, the building is moving - } else if ( StdTimeMerid >= -12.0 && StdTimeMerid <= 12.0 ) { - if ( TimeZoneNumber != StdTimeMerid ) { - DiffCalc = std::abs( TimeZoneNumber - StdTimeMerid ); - if ( DiffCalc > 1.0 && DiffCalc < 24.0 ) { - if ( DiffCalc < 3.0 ) { + StdTimeMerid = GetSTM(Longitude); // Obtain the standard time meridian. + + // Bias at +/- 12 for StdTimeMerid + // IF (StdTimeMerid == -12.0 .and. TimeZoneNumber > 0) THEN + // StdTimeMerid=12.0 + // ELSEIF (StdTimeMerid == 12.0 .and. TimeZoneNumber < 0) THEN + // StdTimeMerid=-12.0 + // ENDIF + + // Compare the standard time meridian with the time zone number. If + // different, notify the user. If StdTimeMerid couldn't be calculated, + // produce an error message. + + if (DataEnvironment::varyingLocationSchedIndexLat > 0 || DataEnvironment::varyingLocationSchedIndexLong > 0) { + // don't do any warnings, the building is moving + } else if (StdTimeMerid >= -12.0 && StdTimeMerid <= 12.0) { + if (TimeZoneNumber != StdTimeMerid) { + DiffCalc = std::abs(TimeZoneNumber - StdTimeMerid); + if (DiffCalc > 1.0 && DiffCalc < 24.0) { + if (DiffCalc < 3.0) { ShowWarningError("Standard Time Meridian and Time Zone differ by more than 1, Difference=\"" + RoundSigDigits(DiffCalc, 1) + "\""); - ShowContinueError( "Solar Positions may be incorrect" ); - } else { + ShowContinueError("Solar Positions may be incorrect"); + } else { ShowSevereError("Standard Time Meridian and Time Zone differ by more than 2, Difference=\"" + RoundSigDigits(DiffCalc, 1) + "\""); - ShowContinueError( "Solar Positions will be incorrect" ); - // LocationError=.TRUE. - } - } - } - } else { - ShowSevereError( "Unable to calculate the standard time meridian" ); - LocationError = true; - } - - // Error handling: if there are any errors in the location information - // the simulation must be terminated - - if ( LocationError ) { - ShowFatalError( "Due to previous error condition, simulation terminated" ); - } - - if ( TimeZoneNumber <= 12.00 ) { - TimeZoneMeridian = TimeZoneNumber * 15.0; - } else { - TimeZoneMeridian = TimeZoneNumber * 15.0 - 360.0; - } - SinLatitude = std::sin( DegToRadians * Latitude ); - CosLatitude = std::cos( DegToRadians * Latitude ); - - if ( Latitude == 0.0 && Longitude == 0.0 && TimeZoneNumber == 0.0 ) { + ShowContinueError("Solar Positions will be incorrect"); + // LocationError=.TRUE. + } + } + } + } else { + ShowSevereError("Unable to calculate the standard time meridian"); + LocationError = true; + } + + // Error handling: if there are any errors in the location information + // the simulation must be terminated + + if (LocationError) { + ShowFatalError("Due to previous error condition, simulation terminated"); + } + + if (TimeZoneNumber <= 12.00) { + TimeZoneMeridian = TimeZoneNumber * 15.0; + } else { + TimeZoneMeridian = TimeZoneNumber * 15.0 - 360.0; + } + SinLatitude = std::sin(DegToRadians * Latitude); + CosLatitude = std::cos(DegToRadians * Latitude); + + if (Latitude == 0.0 && Longitude == 0.0 && TimeZoneNumber == 0.0) { ShowWarningError("Did you realize that you have Latitude=0.0, Longitude=0.0 and TimeZone=0.0? Your building site is in the middle of " "the Atlantic Ocean."); - } - } + } + } void CheckWeatherFileValidity() - { + { - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN February 1977 - // MODIFIED June 1997 (RKS) - // RE-ENGINEERED na + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN February 1977 + // MODIFIED June 1997 (RKS) + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // This subroutine contains a portion of the legacy subroutine CKBLDE. - // The main purpose of this routine is to check the validity of the - // weather dates provided by the user and the attached weather file. - // These functions may eventually be pushed to an interface. This - // routine also sends the weather file header information at the - // Environment derived type. + // PURPOSE OF THIS SUBROUTINE: + // This subroutine contains a portion of the legacy subroutine CKBLDE. + // The main purpose of this routine is to check the validity of the + // weather dates provided by the user and the attached weather file. + // These functions may eventually be pushed to an interface. This + // routine also sends the weather file header information at the + // Environment derived type. - // METHODOLOGY EMPLOYED: - // na + // METHODOLOGY EMPLOYED: + // na - // REFERENCES: - // Legacy subroutine CKBLDE. + // REFERENCES: + // Legacy subroutine CKBLDE. - // Using/Aliasing - using General::JulianDay; + // Using/Aliasing + using General::JulianDay; - // SUBROUTINE ARGUMENT DEFINITIONS: - // na + // SUBROUTINE ARGUMENT DEFINITIONS: + // na - // SUBROUTINE PARAMETER DEFINITIONS: - // na + // SUBROUTINE PARAMETER DEFINITIONS: + // na - // INTERFACE BLOCK SPECIFICATIONS: - // na + // INTERFACE BLOCK SPECIFICATIONS: + // na - // DERIVED TYPE DEFINITIONS: - // na + // DERIVED TYPE DEFINITIONS: + // na - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - // na + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + // na - // FLOW: + // FLOW: - ErrorInWeatherFile = false; - if ( ! WeatherFileExists ) { // No weather file exists but the user requested one--print error message + ErrorInWeatherFile = false; + if (!WeatherFileExists) { // No weather file exists but the user requested one--print error message - if ( DoWeathSim ) { - ShowWarningError( "Weather Environment(s) requested, but no weather file found" ); - ErrorInWeatherFile = true; - } + if (DoWeathSim) { + ShowWarningError("Weather Environment(s) requested, but no weather file found"); + ErrorInWeatherFile = true; + } - } // ... end of WeatherFileExists IF-THEN - } + } // ... end of WeatherFileExists IF-THEN + } void ReportOutputFileHeaders() - { + { - // SUBROUTINE INFORMATION: - // AUTHOR Rick Strand - // DATE WRITTEN June 1997 - // MODIFIED December 2017; Jason DeGraw - // RE-ENGINEERED na + // SUBROUTINE INFORMATION: + // AUTHOR Rick Strand + // DATE WRITTEN June 1997 + // MODIFIED December 2017; Jason DeGraw + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // This subroutine prints out the necessary header information required - // by the EnergyPlus output file format. This subroutine can be - // replicated in any other modules which must send data to the output - // file. + // PURPOSE OF THIS SUBROUTINE: + // This subroutine prints out the necessary header information required + // by the EnergyPlus output file format. This subroutine can be + // replicated in any other modules which must send data to the output + // file. - // METHODOLOGY EMPLOYED: - // For each report, the report flag integer must be saved from the - // global report number counter. Then, the report counter must be - // incremented. Finally, the header information for the report must - // be sent to the output file. + // METHODOLOGY EMPLOYED: + // For each report, the report flag integer must be saved from the + // global report number counter. Then, the report counter must be + // incremented. Finally, the header information for the report must + // be sent to the output file. - // REFERENCES: - // EnergyPlus Output Description document. + // REFERENCES: + // EnergyPlus Output Description document. - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: - // na + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + // na - // SUBROUTINE PARAMETER DEFINITIONS: - // na + // SUBROUTINE PARAMETER DEFINITIONS: + // na - // INTERFACE BLOCK SPECIFICATIONS: - // na + // INTERFACE BLOCK SPECIFICATIONS: + // na - // DERIVED TYPE DEFINITIONS: - // na + // DERIVED TYPE DEFINITIONS: + // na - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - // Format descriptor for the environment title - static gio::Fmt A("(a)"); - static std::string EnvironmentString( ",5,Environment Title[],Latitude[deg],Longitude[deg],Time Zone[],Elevation[m]" ); + // Format descriptor for the environment title + static gio::Fmt A("(a)"); + static std::string EnvironmentString(",5,Environment Title[],Latitude[deg],Longitude[deg],Time Zone[],Elevation[m]"); static std::string TimeStepString( ",8,Day of Simulation[],Month[],Day of Month[],DST Indicator[1=yes 0=no],Hour[],StartMinute[],EndMinute[],DayType"); - static std::string DailyString( ",5,Cumulative Day of Simulation[],Month[],Day of Month[],DST Indicator[1=yes 0=no],DayType ! When Daily " ); - static std::string MonthlyString( ",2,Cumulative Days of Simulation[],Month[] ! When Monthly " ); - static std::string RunPeriodString( ",1,Cumulative Days of Simulation[] ! When Run Period " ); - static std::string YearlyString( ",1,Calendar Year of Simulation[] ! When Annual " ); - - AssignReportNumber( EnvironmentReportNbr ); - if ( EnvironmentReportNbr != 1 ) { // problem - ShowFatalError( "ReportOutputFileHeaders: Assigned report number for Environment title is not 1. Contact Support." ); - } - EnvironmentReportChr = std::to_string( EnvironmentReportNbr ); - strip( EnvironmentReportChr ); - gio::write( OutputFileStandard, A ) << EnvironmentReportChr + EnvironmentString; - gio::write( OutputFileMeters, A ) << EnvironmentReportChr + EnvironmentString; - - AssignReportNumber( OutputProcessor::TimeStepStampReportNbr ); - OutputProcessor::TimeStepStampReportChr = std::to_string( OutputProcessor::TimeStepStampReportNbr ); - strip( OutputProcessor::TimeStepStampReportChr ); - gio::write( OutputFileStandard, A ) << OutputProcessor::TimeStepStampReportChr + TimeStepString; - gio::write( OutputFileMeters, A ) << OutputProcessor::TimeStepStampReportChr + TimeStepString; - - AssignReportNumber( OutputProcessor::DailyStampReportNbr ); - OutputProcessor::DailyStampReportChr = std::to_string( OutputProcessor::DailyStampReportNbr ); - strip( OutputProcessor::DailyStampReportChr ); - gio::write( OutputFileStandard, A ) << OutputProcessor::DailyStampReportChr + DailyString + "Report Variables Requested"; - gio::write( OutputFileMeters, A ) << OutputProcessor::DailyStampReportChr + DailyString + "Meters Requested"; - - AssignReportNumber( OutputProcessor::MonthlyStampReportNbr ); - OutputProcessor::MonthlyStampReportChr = std::to_string( OutputProcessor::MonthlyStampReportNbr ); - strip( OutputProcessor::MonthlyStampReportChr ); - gio::write( OutputFileStandard, A ) << OutputProcessor::MonthlyStampReportChr + MonthlyString + "Report Variables Requested"; - gio::write( OutputFileMeters, A ) << OutputProcessor::MonthlyStampReportChr + MonthlyString + "Meters Requested"; - - AssignReportNumber( OutputProcessor::RunPeriodStampReportNbr ); - OutputProcessor::RunPeriodStampReportChr = std::to_string( OutputProcessor::RunPeriodStampReportNbr ); - strip( OutputProcessor::RunPeriodStampReportChr ); - gio::write( OutputFileStandard, A ) << OutputProcessor::RunPeriodStampReportChr + RunPeriodString + "Report Variables Requested"; - gio::write( OutputFileMeters, A ) << OutputProcessor::RunPeriodStampReportChr + RunPeriodString + "Meters Requested"; - - AssignReportNumber( OutputProcessor::YearlyStampReportNbr ); - OutputProcessor::YearlyStampReportChr = std::to_string( OutputProcessor::YearlyStampReportNbr ); - strip( OutputProcessor::YearlyStampReportChr ); - gio::write( OutputFileStandard, A ) << OutputProcessor::YearlyStampReportChr + YearlyString + "Report Variables Requested"; - gio::write( OutputFileMeters, A ) << OutputProcessor::YearlyStampReportChr + YearlyString + "Meters Requested"; - } + static std::string DailyString(",5,Cumulative Day of Simulation[],Month[],Day of Month[],DST Indicator[1=yes 0=no],DayType ! When Daily "); + static std::string MonthlyString(",2,Cumulative Days of Simulation[],Month[] ! When Monthly "); + static std::string RunPeriodString(",1,Cumulative Days of Simulation[] ! When Run Period "); + static std::string YearlyString(",1,Calendar Year of Simulation[] ! When Annual "); + + AssignReportNumber(EnvironmentReportNbr); + if (EnvironmentReportNbr != 1) { // problem + ShowFatalError("ReportOutputFileHeaders: Assigned report number for Environment title is not 1. Contact Support."); + } + EnvironmentReportChr = std::to_string(EnvironmentReportNbr); + strip(EnvironmentReportChr); + gio::write(OutputFileStandard, A) << EnvironmentReportChr + EnvironmentString; + gio::write(OutputFileMeters, A) << EnvironmentReportChr + EnvironmentString; + + AssignReportNumber(OutputProcessor::TimeStepStampReportNbr); + OutputProcessor::TimeStepStampReportChr = std::to_string(OutputProcessor::TimeStepStampReportNbr); + strip(OutputProcessor::TimeStepStampReportChr); + gio::write(OutputFileStandard, A) << OutputProcessor::TimeStepStampReportChr + TimeStepString; + gio::write(OutputFileMeters, A) << OutputProcessor::TimeStepStampReportChr + TimeStepString; + + AssignReportNumber(OutputProcessor::DailyStampReportNbr); + OutputProcessor::DailyStampReportChr = std::to_string(OutputProcessor::DailyStampReportNbr); + strip(OutputProcessor::DailyStampReportChr); + gio::write(OutputFileStandard, A) << OutputProcessor::DailyStampReportChr + DailyString + "Report Variables Requested"; + gio::write(OutputFileMeters, A) << OutputProcessor::DailyStampReportChr + DailyString + "Meters Requested"; + + AssignReportNumber(OutputProcessor::MonthlyStampReportNbr); + OutputProcessor::MonthlyStampReportChr = std::to_string(OutputProcessor::MonthlyStampReportNbr); + strip(OutputProcessor::MonthlyStampReportChr); + gio::write(OutputFileStandard, A) << OutputProcessor::MonthlyStampReportChr + MonthlyString + "Report Variables Requested"; + gio::write(OutputFileMeters, A) << OutputProcessor::MonthlyStampReportChr + MonthlyString + "Meters Requested"; + + AssignReportNumber(OutputProcessor::RunPeriodStampReportNbr); + OutputProcessor::RunPeriodStampReportChr = std::to_string(OutputProcessor::RunPeriodStampReportNbr); + strip(OutputProcessor::RunPeriodStampReportChr); + gio::write(OutputFileStandard, A) << OutputProcessor::RunPeriodStampReportChr + RunPeriodString + "Report Variables Requested"; + gio::write(OutputFileMeters, A) << OutputProcessor::RunPeriodStampReportChr + RunPeriodString + "Meters Requested"; + + AssignReportNumber(OutputProcessor::YearlyStampReportNbr); + OutputProcessor::YearlyStampReportChr = std::to_string(OutputProcessor::YearlyStampReportNbr); + strip(OutputProcessor::YearlyStampReportChr); + gio::write(OutputFileStandard, A) << OutputProcessor::YearlyStampReportChr + YearlyString + "Report Variables Requested"; + gio::write(OutputFileMeters, A) << OutputProcessor::YearlyStampReportChr + YearlyString + "Meters Requested"; + } + + void ReportWeatherAndTimeInformation(bool &PrintEnvrnStamp) // Set to true when the environment header should be printed + { + + // SUBROUTINE INFORMATION: + // AUTHOR Rick Strand + // DATE WRITTEN June 1997 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // This subroutine is the main driver of the weather reporting. This + // routine is also responsible for printing the time and environment + // stamps. + + // METHODOLOGY EMPLOYED: + // Reporting is only done for non-warmup days. The environment stamp + // is only reported at the beginning of an environment, but after the + // warmup days (to allow all modules to print the report headers to the + // output file. This is controlled by the PrintEnvrnStamp variable + // which is passed in and reset if necessary. + + // REFERENCES: + // na + + // USE STATEMENTS: + // unused0909 USE DataSystemVariables, ONLY: ReportDuringWarmup + + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + + // SUBROUTINE PARAMETER DEFINITIONS: + static gio::Fmt EndOfHeaderFormat("('End of Data Dictionary')"); // End of data dictionary marker + static gio::Fmt EnvironmentStampFormat("(a,',',a,3(',',f7.2),',',f7.2)"); // Format descriptor for environ stamp + // CHARACTER(len=*), PARAMETER :: TimeStampFormat = "(i3,',',i4,',',i2,',',i2,',',i2)" ! Format descriptor for the date/time stamp + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // DERIVED TYPE DEFINITIONS: + // na + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + + // FLOW: + + // Report the time stamp and the current weather to the output file + + if (!WarmupFlag && !RPReadAllWeatherData) { // Write the required output information + + // The first time through in a non-warmup day, the environment header + // must be printed. This must be done here and not in the generic + // BeginEnvrnFlag block above because other modules in the simulation + // must also print out header information. This can be done during + // the simulation warmup if the environment stamp printing is delayed + // until the warmup is completed. The stamp should only be printed once + // per environment (set/reset of PrintEnvrnStamp). In addition, before + // the first environment, the end of the header block flag must also be + // sent to the output file. + + if (PrintEnvrnStamp) { + + if (PrintEndDataDictionary && DoOutputReporting) { + gio::write(OutputFileStandard, EndOfHeaderFormat); + gio::write(OutputFileMeters, EndOfHeaderFormat); + PrintEndDataDictionary = false; + } + if (DoOutputReporting) { + std::string const &Title(Environment(Envrn).Title); + gio::write(OutputFileStandard, EnvironmentStampFormat) + << EnvironmentReportChr << Title << Latitude << Longitude << TimeZoneNumber << Elevation; + gio::write(OutputFileMeters, EnvironmentStampFormat) + << EnvironmentReportChr << Title << Latitude << Longitude << TimeZoneNumber << Elevation; + PrintEnvrnStamp = false; + } + } + } // ... end of .NOT.WarmupFlag IF-THEN block. + } + + void ReadUserWeatherInput() + { + + // SUBROUTINE INFORMATION: + // AUTHOR Richard Liesen + // DATE WRITTEN September 1997 + // MODIFIED + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // This subroutine is the main driver of the weather manager module. + // It controls the assignment of weather related global variables as + // well as the reads and writes for retrieving weather information. + + // Using/Aliasing + using namespace DataSystemVariables; + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + int Env; // Environment Loop Counter + static bool ErrorsFound(false); + int RPD1; + int RPD2; + + // FLOW: + + // Get the number of design days and annual runs from user inpout + TotDesDays = inputProcessor->getNumObjectsFound("SizingPeriod:DesignDay"); + RPD1 = inputProcessor->getNumObjectsFound("SizingPeriod:WeatherFileDays"); + RPD2 = inputProcessor->getNumObjectsFound("SizingPeriod:WeatherFileConditionType"); + TotRunPers = inputProcessor->getNumObjectsFound("RunPeriod"); + NumOfEnvrn = TotDesDays + TotRunPers + RPD1 + RPD2; + if (TotRunPers > 0) { + WeathSimReq = true; + } else { + WeathSimReq = false; + } + + SPSiteScheduleNamePtr.allocate(TotDesDays * 5); + SPSiteScheduleUnits.allocate(TotDesDays * 5); + + SPSiteScheduleNamePtr = 0; + SPSiteScheduleUnits = BlankString; + + // Allocate the Design Day and Environment array to the # of DD's or/and + // Annual runs on input file + DesignDay.allocate(TotDesDays); + Environment.allocate(NumOfEnvrn); + + // Set all Environments to DesignDay and then the weather environment will be set + // in the get annual run data subroutine + for (Env = 1; Env <= TotDesDays; ++Env) { + Environment(Env).KindOfEnvrn = ksDesignDay; + } + for (Env = 1; Env <= RPD1 + RPD2; ++Env) { + if (!DDOnly) { + Environment(TotDesDays + Env).KindOfEnvrn = ksRunPeriodDesign; + } else { + Environment(TotDesDays + Env).KindOfEnvrn = ksRunPeriodWeather; + } + } + for (Env = 1; Env <= TotRunPers; ++Env) { + Environment(TotDesDays + RPD1 + RPD2 + Env).KindOfEnvrn = ksRunPeriodWeather; + } + + if (TotDesDays >= 1) { + GetDesignDayData(TotDesDays, ErrorsFound); + } + + if (RPD1 >= 1 || RPD2 >= 1) { + GetRunPeriodDesignData(ErrorsFound); + } + + // the last environment(s) is designated the weather environment if an annual run + // is selected. All of the design systems is done from the design day info + // which will have to be completed to run the annual run. + if (TotRunPers >= 1 || FullAnnualRun) { + GetRunPeriodData(TotRunPers, ErrorsFound); + } + + if (FullAnnualRun) { + // GetRunPeriodData may have reset the value of TotRunPers + NumOfEnvrn = TotDesDays + TotRunPers + RPD1 + RPD2; + } + + if (RPD1 >= 1 || RPD2 >= 1 || TotRunPers >= 1 || FullAnnualRun) { + GetSpecialDayPeriodData(ErrorsFound); + GetDSTData(ErrorsFound); + if (IDFDaylightSaving) { + DST = IDFDST; + } + } + + GetLocationInfo(ErrorsFound); + + GetGroundTemps(ErrorsFound); + + GetGroundReflectances(ErrorsFound); + + GetSnowGroundRefModifiers(ErrorsFound); + + GetWaterMainsTemperatures(ErrorsFound); + + GetWeatherStation(ErrorsFound); + + SetupEnvironmentTypes(); + + GetWeatherProperties(ErrorsFound); + + // Deallocate ones used for schedule pointers + SPSiteScheduleNamePtr.deallocate(); + SPSiteScheduleUnits.deallocate(); + + if (ErrorsFound) { + ShowFatalError("GetWeatherInput: Above errors cause termination"); + } + } + + static int findYearForWeekday(int const month, int const day, WeekDay const weekday) + { + static std::map defaultYear{{WeekDay::Sunday, 2017}, {WeekDay::Monday, 2007}, {WeekDay::Tuesday, 2013}, + {WeekDay::Wednesday, 2014}, {WeekDay::Thursday, 2015}, {WeekDay::Friday, 2010}, + {WeekDay::Saturday, 2011}}; + int rem = calculateDayOfYear(month, day) % 7; + WeekDay firstWeekDay = static_cast(static_cast(weekday) - rem + 1); + return defaultYear[firstWeekDay]; + } + + static int findLeapYearForWeekday(int const month, int const day, WeekDay const weekday) + { + static std::map defaultYear{{WeekDay::Sunday, 2012}, {WeekDay::Monday, 1996}, {WeekDay::Tuesday, 2008}, + {WeekDay::Wednesday, 1992}, {WeekDay::Thursday, 2004}, {WeekDay::Friday, 2016}, + {WeekDay::Saturday, 2000}}; + int rem = calculateDayOfYear(month, day, true) % 7; + WeekDay firstWeekDay = static_cast(static_cast(weekday) - rem + 1); + return defaultYear[firstWeekDay]; + } + + void GetRunPeriodData(int &TotRunPers, // Total number of Run Periods requested + bool &ErrorsFound) + { + + // SUBROUTINE INFORMATION: + // AUTHOR Richard Liesen + // DATE WRITTEN October 1997 + // MODIFIED February 1999, Add multiple run periods, Change name. + // March 2012, LKL, Add features to object; New "actual weather" object; + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // This subroutine gets the run period info from User input and the + // simulation dates + + // Using/Aliasing + using General::JulianDay; + using General::TrimSigDigits; + using namespace DataSystemVariables; + using namespace DataIPShortCuts; + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + int NumAlpha; // Number of alphas being input + int NumNumeric; // Number of numbers being input + int IOStat; // IO Status when calling get input subroutine + int Loop; + int Count; + + // Call Input Get routine to retrieve annual run data + RunPeriodInput.allocate(TotRunPers); + RunPeriodInputUniqueNames.reserve(static_cast(TotRunPers)); + + cCurrentModuleObject = "RunPeriod"; + Count = 0; + // if ( ! WFAllowsLeapYears ) { + // LocalLeapYearAdd = 0; + //} else { + // LocalLeapYearAdd = 1; + //} + for (Loop = 1; Loop <= TotRunPers; ++Loop) { + inputProcessor->getObjectItem(cCurrentModuleObject, Loop, cAlphaArgs, NumAlpha, rNumericArgs, NumNumeric, IOStat, lNumericFieldBlanks, + lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); + + // A1, \field Name + if (!lAlphaFieldBlanks(1)) { + GlobalNames::VerifyUniqueInterObjectName(RunPeriodInputUniqueNames, cAlphaArgs(1), cCurrentModuleObject, cAlphaFieldNames(1), + ErrorsFound); + } + + ++Count; + // Loop = RP + Ptr; + RunPeriodInput(Loop).title = cAlphaArgs(1); + + // set the start and end day of month from user input + // N1 , \field Begin Month + // N2 , \field Begin Day of Month + // N3, \field Start Year + // N4 , \field End Month + // N5 , \field End Day of Month + // N6, \field End Year + RunPeriodInput(Loop).startMonth = int(rNumericArgs(1)); + RunPeriodInput(Loop).startDay = int(rNumericArgs(2)); + RunPeriodInput(Loop).startYear = int(rNumericArgs(3)); + RunPeriodInput(Loop).endMonth = int(rNumericArgs(4)); + RunPeriodInput(Loop).endDay = int(rNumericArgs(5)); + RunPeriodInput(Loop).endYear = int(rNumericArgs(6)); + RunPeriodInput(Loop).TreatYearsAsConsecutive = true; + + if (FullAnnualRun && Loop == 1) { + RunPeriodInput(Loop).startMonth = 1; + RunPeriodInput(Loop).startDay = 1; + RunPeriodInput(Loop).endMonth = 12; + RunPeriodInput(Loop).endDay = 31; + } + + // Validate year inputs + if (RunPeriodInput(Loop).startYear == 0) { + if (RunPeriodInput(Loop).endYear != 0) { // Have to have an input start year to input an end year + ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + + ", end year cannot be specified if the start year is not."); + ErrorsFound = true; + } + } else if (RunPeriodInput(Loop).startYear < 1583) { // Bail on the proleptic Gregorian calendar + ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + ", start year (" + + std::to_string(RunPeriodInput(Loop).startYear) + ") is too early, please choose a date after 1582."); + ErrorsFound = true; + } + + if (RunPeriodInput(Loop).endYear != 0 && RunPeriodInput(Loop).startYear > RunPeriodInput(Loop).endYear) { + ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + ", start year (" + + std::to_string(RunPeriodInput(Loop).startYear) + ") is after the end year (" + + std::to_string(RunPeriodInput(Loop).endYear) + ")."); + ErrorsFound = true; + } + + // A2 , \field Day of Week for Start Day + bool inputWeekday = false; + if (!lAlphaFieldBlanks(2)) { // Have input + auto result = weekDayLookUp.find(cAlphaArgs(2)); + if (result == weekDayLookUp.end()) { + ShowWarningError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + cAlphaFieldNames(2) + " invalid (Day of Week) [" + + cAlphaArgs(2) + "] for Start is not valid, Sunday will be used."); + RunPeriodInput(Loop).startWeekDay = WeekDay::Sunday; + } else { + RunPeriodInput(Loop).startWeekDay = result->second; + inputWeekday = true; + } + } else { // No input, set the default as Sunday. This may get overriden below + RunPeriodInput(Loop).startWeekDay = WeekDay::Sunday; + } + + // Validate the dates now that the weekday field has been looked at + if (RunPeriodInput(Loop).startMonth == 2 && RunPeriodInput(Loop).startDay == 29) { + // Requested start date is a leap year + if (RunPeriodInput(Loop).startYear == 0) { // No input starting year + RunPeriodInput(Loop).startYear = + findLeapYearForWeekday(RunPeriodInput(Loop).startMonth, RunPeriodInput(Loop).startDay, RunPeriodInput(Loop).startWeekDay); + } else { // Have an input start year + if (!isLeapYear(RunPeriodInput(Loop).startYear)) { // Start year is not a leap year + ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + ", start year (" + + std::to_string(RunPeriodInput(Loop).startYear) + + ") is not a leap year but the requested start date is 2/29."); + ErrorsFound = true; + } else { // Start year is a leap year + WeekDay weekday = + calculateDayOfWeek(RunPeriodInput(Loop).startYear, RunPeriodInput(Loop).startMonth, RunPeriodInput(Loop).startDay); + if (inputWeekday) { // Check for correctness of input + if (weekday != RunPeriodInput(Loop).startWeekDay) { + ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + ", start weekday (" + cAlphaArgs(2) + + ") does not match the start year (" + std::to_string(RunPeriodInput(Loop).startYear) + ")"); + ErrorsFound = true; + } + } else { // Set the weekday if it was not input + RunPeriodInput(Loop).startWeekDay = weekday; + } + } + } + } else { + // Non leap-day start date + if (!validMonthDay(RunPeriodInput(Loop).startMonth, RunPeriodInput(Loop).startDay)) { + ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + ", Invalid input start month/day (" + + TrimSigDigits(RunPeriodInput(Loop).startMonth) + '/' + TrimSigDigits(RunPeriodInput(Loop).startDay) + ')'); + ErrorsFound = true; + } else { // Month/day is valid + if (RunPeriodInput(Loop).startYear == 0) { // No input starting year + RunPeriodInput(Loop).startYear = + findYearForWeekday(RunPeriodInput(Loop).startMonth, RunPeriodInput(Loop).startDay, RunPeriodInput(Loop).startWeekDay); + } else { // Have an input starting year + WeekDay weekday = + calculateDayOfWeek(RunPeriodInput(Loop).startYear, RunPeriodInput(Loop).startMonth, RunPeriodInput(Loop).startDay); + if (inputWeekday) { // Check for correctness of input + if (weekday != RunPeriodInput(Loop).startWeekDay) { + ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + ", start weekday (" + cAlphaArgs(2) + + ") does not match the start year (" + std::to_string(RunPeriodInput(Loop).startYear) + ")"); + ErrorsFound = true; + } + } else { // Set the weekday if it was not input + RunPeriodInput(Loop).startWeekDay = weekday; + } + } + } + } - void ReportWeatherAndTimeInformation(bool &PrintEnvrnStamp) // Set to true when the environment header should be printed - { + // Compute the Julian date of the start date + RunPeriodInput(Loop).startJulianDate = + computeJulianDate(RunPeriodInput(Loop).startYear, RunPeriodInput(Loop).startMonth, RunPeriodInput(Loop).startDay); + + // Validate the end date + if (RunPeriodInput(Loop).endMonth == 2 && RunPeriodInput(Loop).endDay == 29) { + // Requested end date is a leap year + if (RunPeriodInput(Loop).endYear == 0) { // No input end year + if (isLeapYear(RunPeriodInput(Loop).startYear) && RunPeriodInput(Loop).startMonth < 3) { + // The run period is from some date on or before 2/29 through 2/29 + RunPeriodInput(Loop).endYear = RunPeriodInput(Loop).startYear; + } else { + // There might be a better approach here, but for now just loop forward for the next leap year + for (int yr = RunPeriodInput(Loop).startYear + 1; yr < RunPeriodInput(Loop).startYear + 10; yr++) { + if (isLeapYear(yr)) { + RunPeriodInput(Loop).endYear = yr; + break; + } + } + } + } else { // Have an input end year + if (!isLeapYear(RunPeriodInput(Loop).endYear)) { // End year is not a leap year + ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + ", end year (" + + std::to_string(RunPeriodInput(Loop).startYear) + ") is not a leap year but the requested end date is 2/29."); + ErrorsFound = true; + } else { + RunPeriodInput(Loop).endJulianDate = + computeJulianDate(RunPeriodInput(Loop).endYear, RunPeriodInput(Loop).endMonth, RunPeriodInput(Loop).endDay); + if (RunPeriodInput(Loop).startJulianDate > RunPeriodInput(Loop).endJulianDate) { + ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + ", start Julian date (" + + std::to_string(RunPeriodInput(Loop).startJulianDate) + ") is after the end Julian date (" + + std::to_string(RunPeriodInput(Loop).endJulianDate) + ")."); + ErrorsFound = true; + } + } + } + } else { + // Non leap-day end date + if (!validMonthDay(RunPeriodInput(Loop).endMonth, RunPeriodInput(Loop).endDay)) { + ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + ", Invalid input end month/day (" + + TrimSigDigits(RunPeriodInput(Loop).startMonth) + '/' + TrimSigDigits(RunPeriodInput(Loop).startDay) + ')'); + ErrorsFound = true; + } else { // Month/day is valid + if (RunPeriodInput(Loop).endYear == 0) { // No input end year + // Assume same year as start year + RunPeriodInput(Loop).endYear = RunPeriodInput(Loop).startYear; + RunPeriodInput(Loop).endJulianDate = + computeJulianDate(RunPeriodInput(Loop).endYear, RunPeriodInput(Loop).endMonth, RunPeriodInput(Loop).endDay); + if (RunPeriodInput(Loop).startJulianDate > RunPeriodInput(Loop).endJulianDate) { + RunPeriodInput(Loop).endJulianDate = 0; // Force recalculation later + RunPeriodInput(Loop).endYear += 1; + } + } else { // Have an input end year + RunPeriodInput(Loop).endJulianDate = + computeJulianDate(RunPeriodInput(Loop).endYear, RunPeriodInput(Loop).endMonth, RunPeriodInput(Loop).endDay); + if (RunPeriodInput(Loop).startJulianDate > RunPeriodInput(Loop).endJulianDate) { + ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + ", start Julian date (" + + std::to_string(RunPeriodInput(Loop).startJulianDate) + ") is after the end Julian date (" + + std::to_string(RunPeriodInput(Loop).endJulianDate) + ")."); + ErrorsFound = true; + } + } + } + } - // SUBROUTINE INFORMATION: - // AUTHOR Rick Strand - // DATE WRITTEN June 1997 - // MODIFIED na - // RE-ENGINEERED na + if (RunPeriodInput(Loop).endJulianDate == 0) { + RunPeriodInput(Loop).endJulianDate = + computeJulianDate(RunPeriodInput(Loop).endYear, RunPeriodInput(Loop).endMonth, RunPeriodInput(Loop).endDay); + } - // PURPOSE OF THIS SUBROUTINE: - // This subroutine is the main driver of the weather reporting. This - // routine is also responsible for printing the time and environment - // stamps. + // A3, \field Use Weather File Holidays and Special Days + if (lAlphaFieldBlanks(3) || UtilityRoutines::SameString(cAlphaArgs(3), "YES")) { + RunPeriodInput(Loop).useHolidays = true; + } else if (UtilityRoutines::SameString(cAlphaArgs(3), "NO")) { + RunPeriodInput(Loop).useHolidays = false; + } else { + ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + cAlphaFieldNames(3) + " invalid [" + cAlphaArgs(3) + ']'); + ErrorsFound = true; + } - // METHODOLOGY EMPLOYED: - // Reporting is only done for non-warmup days. The environment stamp - // is only reported at the beginning of an environment, but after the - // warmup days (to allow all modules to print the report headers to the - // output file. This is controlled by the PrintEnvrnStamp variable - // which is passed in and reset if necessary. + // A4, \field Use Weather File Daylight Saving Period + if (lAlphaFieldBlanks(4) || UtilityRoutines::SameString(cAlphaArgs(4), "YES")) { + RunPeriodInput(Loop).useDST = true; + } else if (UtilityRoutines::SameString(cAlphaArgs(4), "NO")) { + RunPeriodInput(Loop).useDST = false; + } else { + ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + cAlphaFieldNames(4) + " invalid [" + cAlphaArgs(4) + ']'); + ErrorsFound = true; + } - // REFERENCES: - // na + // A5, \field Apply Weekend Holiday Rule + if (lAlphaFieldBlanks(5) || UtilityRoutines::SameString(cAlphaArgs(5), "YES")) { + RunPeriodInput(Loop).applyWeekendRule = true; + } else if (UtilityRoutines::SameString(cAlphaArgs(5), "NO")) { + RunPeriodInput(Loop).applyWeekendRule = false; + } else { + ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + cAlphaFieldNames(5) + " invalid [" + cAlphaArgs(5) + ']'); + ErrorsFound = true; + } - // USE STATEMENTS: - //unused0909 USE DataSystemVariables, ONLY: ReportDuringWarmup + // A6, \field Use Weather File Rain Indicators + if (lAlphaFieldBlanks(6) || UtilityRoutines::SameString(cAlphaArgs(6), "YES")) { + RunPeriodInput(Loop).useRain = true; + } else if (UtilityRoutines::SameString(cAlphaArgs(6), "NO")) { + RunPeriodInput(Loop).useRain = false; + } else { + ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + cAlphaFieldNames(6) + " invalid [" + cAlphaArgs(6) + ']'); + ErrorsFound = true; + } - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: + // A7, \field Use Weather File Snow Indicators + if (lAlphaFieldBlanks(7) || UtilityRoutines::SameString(cAlphaArgs(7), "YES")) { + RunPeriodInput(Loop).useSnow = true; + } else if (UtilityRoutines::SameString(cAlphaArgs(7), "NO")) { + RunPeriodInput(Loop).useSnow = false; + } else { + ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + cAlphaFieldNames(7) + " invalid [" + cAlphaArgs(7) + ']'); + ErrorsFound = true; + } - // SUBROUTINE PARAMETER DEFINITIONS: - static gio::Fmt EndOfHeaderFormat( "('End of Data Dictionary')" ); // End of data dictionary marker - static gio::Fmt EnvironmentStampFormat( "(a,',',a,3(',',f7.2),',',f7.2)" ); // Format descriptor for environ stamp - // CHARACTER(len=*), PARAMETER :: TimeStampFormat = "(i3,',',i4,',',i2,',',i2,',',i2)" ! Format descriptor for the date/time stamp + // A8, \field Treat Weather as Actual + if (lAlphaFieldBlanks(8) || UtilityRoutines::SameString(cAlphaArgs(8), "NO")) { + RunPeriodInput(Loop).actualWeather = false; + } else if (UtilityRoutines::SameString(cAlphaArgs(8), "YES")) { + RunPeriodInput(Loop).actualWeather = true; + } else { + ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + cAlphaFieldNames(8) + " invalid [" + cAlphaArgs(8) + ']'); + ErrorsFound = true; + } - // INTERFACE BLOCK SPECIFICATIONS: - // na + // calculate the annual start and end days from the user inputted month and day + RunPeriodInput(Loop).monWeekDay = 0; + if (RunPeriodInput(Loop).dayOfWeek != 0 && !ErrorsFound) { + SetupWeekDaysByMonth(RunPeriodInput(Loop).startMonth, RunPeriodInput(Loop).startDay, RunPeriodInput(Loop).dayOfWeek, + RunPeriodInput(Loop).monWeekDay); + } + } - // DERIVED TYPE DEFINITIONS: - // na + if (TotRunPers == 0 && FullAnnualRun) { + ShowWarningError("No Run Periods input but Full Annual Simulation selected. Adding Run Period to 1/1 through 12/31."); + Environment.redimension(++NumOfEnvrn); + Environment(NumOfEnvrn).KindOfEnvrn = ksRunPeriodWeather; + TotRunPers = 1; + WeathSimReq = true; + RunPeriodInput.allocate(TotRunPers); + RunPeriodInput(1).startJulianDate = JulianDay(RunPeriodInput(1).startMonth, RunPeriodInput(1).startDay, LeapYearAdd); + RunPeriodInput(1).endJulianDate = JulianDay(RunPeriodInput(1).endMonth, RunPeriodInput(1).endDay, LeapYearAdd); + RunPeriodInput(1).monWeekDay = 0; + if (RunPeriodInput(1).dayOfWeek != 0 && !ErrorsFound) { + SetupWeekDaysByMonth(RunPeriodInput(1).startMonth, RunPeriodInput(1).startDay, RunPeriodInput(1).dayOfWeek, + RunPeriodInput(1).monWeekDay); + } + } else if (TotRunPers > 1 && FullAnnualRun) { + TotRunPers = 1; + } + } - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + void GetRunPeriodDesignData(bool &ErrorsFound) + { - // FLOW: + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN March 2008 + // MODIFIED na + // RE-ENGINEERED na - // Report the time stamp and the current weather to the output file + // PURPOSE OF THIS SUBROUTINE: + // This subroutine gets the run period design info from User input and the + // simulation dates - if ( ! WarmupFlag && ! RPReadAllWeatherData ) { // Write the required output information + // Using/Aliasing + using General::JulianDay; + using General::TrimSigDigits; + using namespace DataSystemVariables; + using namespace DataIPShortCuts; - // The first time through in a non-warmup day, the environment header - // must be printed. This must be done here and not in the generic - // BeginEnvrnFlag block above because other modules in the simulation - // must also print out header information. This can be done during - // the simulation warmup if the environment stamp printing is delayed - // until the warmup is completed. The stamp should only be printed once - // per environment (set/reset of PrintEnvrnStamp). In addition, before - // the first environment, the end of the header block flag must also be - // sent to the output file. + // SUBROUTINE PARAMETER DEFINITIONS: + static Array1D_string const ValidNames(12, {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "HOLIDAY", + "SUMMERDESIGNDAY", "WINTERDESIGNDAY", "CUSTOMDAY1", "CUSTOMDAY2"}); - if ( PrintEnvrnStamp ) { + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + int NumAlphas; // Number of alphas being input + int NumNumerics; // Number of Numerics being input + int IOStat; // IO Status when calling get input subroutine + int Loop; + int RPD1; + int RPD2; + int Count; + int WhichPeriod; + // unused1208 CHARACTER(len=MaxNameLength) :: ThisObject + + // FLOW: + // Call Input Get routine to retrieve annual run data + RPD1 = inputProcessor->getNumObjectsFound("SizingPeriod:WeatherFileDays"); + RPD2 = inputProcessor->getNumObjectsFound("SizingPeriod:WeatherFileConditionType"); + TotRunDesPers = RPD1 + RPD2; + + RunPeriodDesignInput.allocate(RPD1 + RPD2); + RunPeriodDesignInputUniqueNames.reserve(static_cast(RPD1 + RPD2)); + + Count = 0; + cCurrentModuleObject = "SizingPeriod:WeatherFileDays"; + for (Loop = 1; Loop <= RPD1; ++Loop) { + inputProcessor->getObjectItem(cCurrentModuleObject, Loop, cAlphaArgs, NumAlphas, rNumericArgs, NumNumerics, IOStat, lNumericFieldBlanks, + lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); + GlobalNames::VerifyUniqueInterObjectName(RunPeriodDesignInputUniqueNames, cAlphaArgs(1), cCurrentModuleObject, cAlphaFieldNames(1), + ErrorsFound); + ++Count; + RunPeriodDesignInput(Count).title = cAlphaArgs(1); + RunPeriodDesignInput(Count).periodType = "User Selected WeatherFile RunPeriod (Design)"; - if ( PrintEndDataDictionary && DoOutputReporting ) { - gio::write( OutputFileStandard, EndOfHeaderFormat ); - gio::write( OutputFileMeters, EndOfHeaderFormat ); - PrintEndDataDictionary = false; - } - if ( DoOutputReporting ) { - std::string const & Title( Environment( Envrn ).Title ); - gio::write(OutputFileStandard, EnvironmentStampFormat) - << EnvironmentReportChr << Title << Latitude << Longitude << TimeZoneNumber << Elevation; - gio::write(OutputFileMeters, EnvironmentStampFormat) - << EnvironmentReportChr << Title << Latitude << Longitude << TimeZoneNumber << Elevation; - PrintEnvrnStamp = false; - } - } - } // ... end of .NOT.WarmupFlag IF-THEN block. - } + // set the start and end day of month from user input + RunPeriodDesignInput(Count).startMonth = int(rNumericArgs(1)); + RunPeriodDesignInput(Count).startDay = int(rNumericArgs(2)); + RunPeriodDesignInput(Count).endMonth = int(rNumericArgs(3)); + RunPeriodDesignInput(Count).endDay = int(rNumericArgs(4)); - void ReadUserWeatherInput() - { - - // SUBROUTINE INFORMATION: - // AUTHOR Richard Liesen - // DATE WRITTEN September 1997 - // MODIFIED - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // This subroutine is the main driver of the weather manager module. - // It controls the assignment of weather related global variables as - // well as the reads and writes for retrieving weather information. - - // Using/Aliasing - using namespace DataSystemVariables; - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - int Env; // Environment Loop Counter - static bool ErrorsFound( false ); - int RPD1; - int RPD2; - - // FLOW: - - //Get the number of design days and annual runs from user inpout - TotDesDays = inputProcessor->getNumObjectsFound( "SizingPeriod:DesignDay" ); - RPD1 = inputProcessor->getNumObjectsFound( "SizingPeriod:WeatherFileDays" ); - RPD2 = inputProcessor->getNumObjectsFound( "SizingPeriod:WeatherFileConditionType" ); - TotRunPers = inputProcessor->getNumObjectsFound("RunPeriod"); - NumOfEnvrn = TotDesDays + TotRunPers + RPD1 + RPD2; - if ( TotRunPers > 0 ) { - WeathSimReq = true; - } else { - WeathSimReq = false; - } - - SPSiteScheduleNamePtr.allocate( TotDesDays * 5 ); - SPSiteScheduleUnits.allocate( TotDesDays * 5 ); - - SPSiteScheduleNamePtr = 0; - SPSiteScheduleUnits = BlankString; - - //Allocate the Design Day and Environment array to the # of DD's or/and - // Annual runs on input file - DesignDay.allocate( TotDesDays ); - Environment.allocate( NumOfEnvrn ); - - // Set all Environments to DesignDay and then the weather environment will be set - // in the get annual run data subroutine - for ( Env = 1; Env <= TotDesDays; ++Env ) { - Environment( Env ).KindOfEnvrn = ksDesignDay; - } - for ( Env = 1; Env <= RPD1 + RPD2; ++Env ) { - if ( ! DDOnly ) { - Environment( TotDesDays + Env ).KindOfEnvrn = ksRunPeriodDesign; - } else { - Environment( TotDesDays + Env ).KindOfEnvrn = ksRunPeriodWeather; - } - } - for ( Env = 1; Env <= TotRunPers; ++Env ) { - Environment( TotDesDays + RPD1 + RPD2 + Env ).KindOfEnvrn = ksRunPeriodWeather; - } - - if ( TotDesDays >= 1 ) { - GetDesignDayData( TotDesDays, ErrorsFound ); - } - - if ( RPD1 >= 1 || RPD2 >= 1 ) { - GetRunPeriodDesignData( ErrorsFound ); - } - - //the last environment(s) is designated the weather environment if an annual run - // is selected. All of the design systems is done from the design day info - // which will have to be completed to run the annual run. - if ( TotRunPers >= 1 || FullAnnualRun ) { - GetRunPeriodData( TotRunPers, ErrorsFound ); - } - - if ( FullAnnualRun ){ - // GetRunPeriodData may have reset the value of TotRunPers - NumOfEnvrn = TotDesDays + TotRunPers + RPD1 + RPD2; - } - - if ( RPD1 >= 1 || RPD2 >= 1 || TotRunPers >= 1 || FullAnnualRun ) { - GetSpecialDayPeriodData( ErrorsFound ); - GetDSTData( ErrorsFound ); - if ( IDFDaylightSaving ) { - DST = IDFDST; - } - } - - GetLocationInfo( ErrorsFound ); - - GetGroundTemps( ErrorsFound ); - - GetGroundReflectances( ErrorsFound ); - - GetSnowGroundRefModifiers( ErrorsFound ); - - GetWaterMainsTemperatures( ErrorsFound ); - - GetWeatherStation( ErrorsFound ); - - SetupEnvironmentTypes(); - - GetWeatherProperties( ErrorsFound ); - - // Deallocate ones used for schedule pointers - SPSiteScheduleNamePtr.deallocate(); - SPSiteScheduleUnits.deallocate(); - - if ( ErrorsFound ) { - ShowFatalError( "GetWeatherInput: Above errors cause termination" ); - } - } - - static int findYearForWeekday( int const month, int const day, WeekDay const weekday ) - { - static std::map defaultYear{ { WeekDay::Sunday, 2017 },{ WeekDay::Monday, 2007 },{ WeekDay::Tuesday, 2013 }, - { WeekDay::Wednesday, 2014 },{ WeekDay::Thursday, 2015 },{ WeekDay::Friday, 2010 },{ WeekDay::Saturday, 2011 } }; - int rem = calculateDayOfYear( month, day ) % 7; - WeekDay firstWeekDay = static_cast( static_cast( weekday ) - rem + 1 ); - return defaultYear[ firstWeekDay ]; - } - - static int findLeapYearForWeekday( int const month, int const day, WeekDay const weekday ) - { - static std::map defaultYear{ { WeekDay::Sunday, 2012 },{ WeekDay::Monday, 1996 },{ WeekDay::Tuesday, 2008 }, - { WeekDay::Wednesday, 1992 },{ WeekDay::Thursday, 2004 },{ WeekDay::Friday, 2016 },{ WeekDay::Saturday, 2000 } }; - int rem = calculateDayOfYear( month, day, true ) % 7; - WeekDay firstWeekDay = static_cast( static_cast( weekday ) - rem + 1 ); - return defaultYear[ firstWeekDay ]; - } - - void - GetRunPeriodData( - int & TotRunPers, // Total number of Run Periods requested - bool & ErrorsFound - ) - { - - // SUBROUTINE INFORMATION: - // AUTHOR Richard Liesen - // DATE WRITTEN October 1997 - // MODIFIED February 1999, Add multiple run periods, Change name. - // March 2012, LKL, Add features to object; New "actual weather" object; - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // This subroutine gets the run period info from User input and the - // simulation dates - - // Using/Aliasing - using General::JulianDay; - using General::TrimSigDigits; - using namespace DataSystemVariables; - using namespace DataIPShortCuts; - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - int NumAlpha; // Number of alphas being input - int NumNumeric; // Number of numbers being input - int IOStat; // IO Status when calling get input subroutine - int Loop; - int Count; - - //Call Input Get routine to retrieve annual run data - RunPeriodInput.allocate( TotRunPers ); - RunPeriodInputUniqueNames.reserve(static_cast< unsigned >(TotRunPers)); - - cCurrentModuleObject = "RunPeriod"; - Count = 0; - //if ( ! WFAllowsLeapYears ) { - // LocalLeapYearAdd = 0; - //} else { - // LocalLeapYearAdd = 1; - //} - for ( Loop = 1; Loop <= TotRunPers; ++Loop ) { - inputProcessor->getObjectItem( cCurrentModuleObject, Loop, cAlphaArgs, NumAlpha, rNumericArgs, NumNumeric, IOStat, lNumericFieldBlanks, lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames ); - - // A1, \field Name - if ( ! lAlphaFieldBlanks( 1 ) ) { - GlobalNames::VerifyUniqueInterObjectName(RunPeriodInputUniqueNames, cAlphaArgs(1), cCurrentModuleObject, cAlphaFieldNames(1), - ErrorsFound); - } - - ++Count; - //Loop = RP + Ptr; - RunPeriodInput( Loop ).title = cAlphaArgs( 1 ); - - //set the start and end day of month from user input - // N1 , \field Begin Month - // N2 , \field Begin Day of Month - // N3, \field Start Year - // N4 , \field End Month - // N5 , \field End Day of Month - // N6, \field End Year - RunPeriodInput( Loop ).startMonth = int( rNumericArgs( 1 ) ); - RunPeriodInput( Loop ).startDay = int( rNumericArgs( 2 ) ); - RunPeriodInput( Loop ).startYear = int( rNumericArgs( 3 ) ); - RunPeriodInput( Loop ).endMonth = int( rNumericArgs( 4 ) ); - RunPeriodInput( Loop ).endDay = int( rNumericArgs( 5 ) ); - RunPeriodInput( Loop ).endYear = int( rNumericArgs( 6 ) ); - RunPeriodInput( Loop ).TreatYearsAsConsecutive = true; - - if ( FullAnnualRun && Loop == 1 ) { - RunPeriodInput( Loop ).startMonth = 1; - RunPeriodInput( Loop ).startDay = 1; - RunPeriodInput( Loop ).endMonth = 12; - RunPeriodInput( Loop ).endDay = 31; - } - - // Validate year inputs - if ( RunPeriodInput( Loop ).startYear == 0 ) { - if ( RunPeriodInput( Loop ).endYear != 0 ) { // Have to have an input start year to input an end year - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", end year cannot be specified if the start year is not." ); - ErrorsFound = true; - } - } else if ( RunPeriodInput( Loop ).startYear < 1583 ) { // Bail on the proleptic Gregorian calendar - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", start year (" + std::to_string( RunPeriodInput( Loop ).startYear ) + ") is too early, please choose a date after 1582." ); - ErrorsFound = true; - } - - if( RunPeriodInput( Loop ).endYear != 0 && RunPeriodInput( Loop ).startYear > RunPeriodInput( Loop ).endYear ) { - ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + ", start year (" + std::to_string( RunPeriodInput( Loop ).startYear ) + ") is after the end year (" + std::to_string( RunPeriodInput( Loop ).endYear ) + ")." ); - ErrorsFound = true; - } - - // A2 , \field Day of Week for Start Day - bool inputWeekday = false; - if ( !lAlphaFieldBlanks( 2 ) ) { // Have input - auto result = weekDayLookUp.find( cAlphaArgs( 2 ) ); - if ( result == weekDayLookUp.end() ) { - ShowWarningError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 2 ) + " invalid (Day of Week) [" + cAlphaArgs( 2 ) + "] for Start is not valid, Sunday will be used." ); - RunPeriodInput(Loop).startWeekDay = WeekDay::Sunday; - } else { - RunPeriodInput( Loop ).startWeekDay = result->second; - inputWeekday = true; - } - } else { // No input, set the default as Sunday. This may get overriden below - RunPeriodInput( Loop ).startWeekDay = WeekDay::Sunday; - } - - // Validate the dates now that the weekday field has been looked at - if ( RunPeriodInput( Loop ).startMonth == 2 && RunPeriodInput( Loop ).startDay == 29 ) { - // Requested start date is a leap year - if ( RunPeriodInput( Loop ).startYear == 0 ) { // No input starting year - RunPeriodInput( Loop ).startYear = findLeapYearForWeekday( RunPeriodInput( Loop ).startMonth, RunPeriodInput( Loop ).startDay, - RunPeriodInput( Loop).startWeekDay ); - } else { // Have an input start year - if ( !isLeapYear( RunPeriodInput( Loop ).startYear ) ) { // Start year is not a leap year - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", start year (" + std::to_string( RunPeriodInput( Loop ).startYear ) + ") is not a leap year but the requested start date is 2/29." ); - ErrorsFound = true; - } else { // Start year is a leap year - WeekDay weekday = calculateDayOfWeek( RunPeriodInput( Loop ).startYear, RunPeriodInput( Loop ).startMonth, RunPeriodInput( Loop ).startDay ); - if ( inputWeekday ) { // Check for correctness of input - if ( weekday != RunPeriodInput( Loop ).startWeekDay ) { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", start weekday (" + cAlphaArgs( 2 ) + ") does not match the start year (" + std::to_string( RunPeriodInput( Loop ).startYear ) + ")" ); - ErrorsFound = true; - } - } else { // Set the weekday if it was not input - RunPeriodInput( Loop ).startWeekDay = weekday; - } - } - } - } else { - // Non leap-day start date - if ( !validMonthDay( RunPeriodInput( Loop ).startMonth, RunPeriodInput( Loop ).startDay ) ) { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", Invalid input start month/day (" + TrimSigDigits( RunPeriodInput( Loop ).startMonth ) + '/' + TrimSigDigits( RunPeriodInput( Loop ).startDay ) + ')' ); - ErrorsFound = true; - } else { // Month/day is valid - if ( RunPeriodInput( Loop ).startYear == 0 ) { // No input starting year - RunPeriodInput( Loop ).startYear = findYearForWeekday( RunPeriodInput( Loop ).startMonth, RunPeriodInput( Loop ).startDay, - RunPeriodInput( Loop).startWeekDay ); - } else { // Have an input starting year - WeekDay weekday = calculateDayOfWeek( RunPeriodInput( Loop ).startYear, RunPeriodInput( Loop ).startMonth, RunPeriodInput( Loop ).startDay ); - if ( inputWeekday ) { // Check for correctness of input - if ( weekday != RunPeriodInput( Loop ).startWeekDay ) { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", start weekday (" + cAlphaArgs( 2 ) + ") does not match the start year (" + std::to_string( RunPeriodInput( Loop ).startYear ) + ")" ); - ErrorsFound = true; - } - } else { // Set the weekday if it was not input - RunPeriodInput( Loop ).startWeekDay = weekday; - } - } - } - } - - // Compute the Julian date of the start date - RunPeriodInput( Loop ).startJulianDate = computeJulianDate( RunPeriodInput( Loop ).startYear, RunPeriodInput( Loop ).startMonth, RunPeriodInput( Loop ).startDay ); - - // Validate the end date - if ( RunPeriodInput( Loop ).endMonth == 2 && RunPeriodInput( Loop ).endDay == 29 ) { - // Requested end date is a leap year - if ( RunPeriodInput( Loop ).endYear == 0 ) { // No input end year - if ( isLeapYear( RunPeriodInput( Loop ).startYear ) && RunPeriodInput( Loop ).startMonth < 3 ) { - // The run period is from some date on or before 2/29 through 2/29 - RunPeriodInput(Loop).endYear = RunPeriodInput(Loop).startYear; - } else { - // There might be a better approach here, but for now just loop forward for the next leap year - for ( int yr = RunPeriodInput( Loop ).startYear + 1; yr < RunPeriodInput( Loop ).startYear + 10; yr++ ) { - if ( isLeapYear( yr ) ) { - RunPeriodInput(Loop).endYear = yr; - break; - } - } - } - } else { // Have an input end year - if ( !isLeapYear( RunPeriodInput( Loop ).endYear ) ) { // End year is not a leap year - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", end year (" + std::to_string( RunPeriodInput( Loop ).startYear ) + ") is not a leap year but the requested end date is 2/29." ); - ErrorsFound = true; - } else { - RunPeriodInput( Loop ).endJulianDate = computeJulianDate( RunPeriodInput( Loop ).endYear, RunPeriodInput( Loop ).endMonth, RunPeriodInput( Loop ).endDay ); - if ( RunPeriodInput( Loop ).startJulianDate > RunPeriodInput( Loop ).endJulianDate ) { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", start Julian date (" + std::to_string( RunPeriodInput( Loop ).startJulianDate ) + ") is after the end Julian date (" + std::to_string( RunPeriodInput( Loop ).endJulianDate ) + ")." ); - ErrorsFound = true; - } - } - } - } else { - // Non leap-day end date - if ( !validMonthDay( RunPeriodInput( Loop ).endMonth, RunPeriodInput( Loop ).endDay ) ) { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", Invalid input end month/day (" + TrimSigDigits( RunPeriodInput( Loop ).startMonth ) + '/' + TrimSigDigits( RunPeriodInput( Loop ).startDay ) + ')' ); - ErrorsFound = true; - } else { // Month/day is valid - if ( RunPeriodInput( Loop ).endYear == 0 ) { // No input end year - // Assume same year as start year - RunPeriodInput( Loop ).endYear = RunPeriodInput( Loop ).startYear; - RunPeriodInput( Loop ).endJulianDate = computeJulianDate( RunPeriodInput( Loop ).endYear, RunPeriodInput( Loop ).endMonth, RunPeriodInput( Loop ).endDay ); - if ( RunPeriodInput( Loop ).startJulianDate > RunPeriodInput( Loop ).endJulianDate ) { - RunPeriodInput( Loop ).endJulianDate = 0; // Force recalculation later - RunPeriodInput( Loop ).endYear += 1; - } - } else { // Have an input end year - RunPeriodInput( Loop ).endJulianDate = computeJulianDate( RunPeriodInput( Loop ).endYear, RunPeriodInput( Loop ).endMonth, RunPeriodInput( Loop ).endDay ); - if ( RunPeriodInput( Loop ).startJulianDate > RunPeriodInput( Loop ).endJulianDate ) { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + ", start Julian date (" + std::to_string( RunPeriodInput( Loop ).startJulianDate ) + ") is after the end Julian date (" + std::to_string( RunPeriodInput( Loop ).endJulianDate ) + ")." ); - ErrorsFound = true; - } - } - } - } - - if ( RunPeriodInput( Loop ).endJulianDate == 0 ) { - RunPeriodInput(Loop).endJulianDate = computeJulianDate(RunPeriodInput(Loop).endYear, RunPeriodInput(Loop).endMonth, RunPeriodInput(Loop).endDay); - } - - // A3, \field Use Weather File Holidays and Special Days - if ( lAlphaFieldBlanks( 3 ) || UtilityRoutines::SameString( cAlphaArgs( 3 ), "YES" ) ) { - RunPeriodInput( Loop ).useHolidays = true; - } else if ( UtilityRoutines::SameString( cAlphaArgs( 3 ), "NO" ) ) { - RunPeriodInput( Loop ).useHolidays = false; - } else { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 3 ) + " invalid [" + cAlphaArgs( 3 ) + ']' ); - ErrorsFound = true; - } - - // A4, \field Use Weather File Daylight Saving Period - if ( lAlphaFieldBlanks( 4 ) || UtilityRoutines::SameString( cAlphaArgs( 4 ), "YES" ) ) { - RunPeriodInput( Loop ).useDST = true; - } else if ( UtilityRoutines::SameString( cAlphaArgs( 4 ), "NO" ) ) { - RunPeriodInput( Loop ).useDST = false; - } else { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 4 ) + " invalid [" + cAlphaArgs( 4 ) + ']' ); - ErrorsFound = true; - } - - // A5, \field Apply Weekend Holiday Rule - if ( lAlphaFieldBlanks( 5 ) || UtilityRoutines::SameString( cAlphaArgs( 5 ), "YES" ) ) { - RunPeriodInput( Loop ).applyWeekendRule = true; - } else if ( UtilityRoutines::SameString( cAlphaArgs( 5 ), "NO" ) ) { - RunPeriodInput( Loop ).applyWeekendRule = false; - } else { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 5 ) + " invalid [" + cAlphaArgs( 5 ) + ']' ); - ErrorsFound = true; - } - - // A6, \field Use Weather File Rain Indicators - if ( lAlphaFieldBlanks( 6 ) || UtilityRoutines::SameString( cAlphaArgs( 6 ), "YES" ) ) { - RunPeriodInput( Loop ).useRain = true; - } else if ( UtilityRoutines::SameString( cAlphaArgs( 6 ), "NO" ) ) { - RunPeriodInput( Loop ).useRain = false; - } else { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 6 ) + " invalid [" + cAlphaArgs( 6 ) + ']' ); - ErrorsFound = true; - } - - // A7, \field Use Weather File Snow Indicators - if ( lAlphaFieldBlanks( 7 ) || UtilityRoutines::SameString( cAlphaArgs( 7 ), "YES" ) ) { - RunPeriodInput( Loop ).useSnow = true; - } else if ( UtilityRoutines::SameString( cAlphaArgs( 7 ), "NO" ) ) { - RunPeriodInput( Loop ).useSnow = false; - } else { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 7 ) + " invalid [" + cAlphaArgs( 7 ) + ']' ); - ErrorsFound = true; - } - - // A8, \field Treat Weather as Actual - if ( lAlphaFieldBlanks( 8 ) || UtilityRoutines::SameString( cAlphaArgs( 8 ), "NO" ) ) { - RunPeriodInput( Loop ).actualWeather = false; - } else if ( UtilityRoutines::SameString( cAlphaArgs( 8 ), "YES" ) ) { - RunPeriodInput(Loop).actualWeather = true; - } else { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 8 ) + " invalid [" + cAlphaArgs( 8 ) + ']' ); - ErrorsFound = true; - } - - //calculate the annual start and end days from the user inputted month and day - RunPeriodInput( Loop ).monWeekDay = 0; - if ( RunPeriodInput( Loop ).dayOfWeek != 0 && ! ErrorsFound ) { - SetupWeekDaysByMonth( RunPeriodInput( Loop ).startMonth, RunPeriodInput( Loop ).startDay, RunPeriodInput( Loop ).dayOfWeek, RunPeriodInput( Loop ).monWeekDay ); - } - } - - if ( TotRunPers == 0 && FullAnnualRun ) { - ShowWarningError( "No Run Periods input but Full Annual Simulation selected. Adding Run Period to 1/1 through 12/31." ); - Environment.redimension( ++NumOfEnvrn ); - Environment( NumOfEnvrn ).KindOfEnvrn = ksRunPeriodWeather; - TotRunPers = 1; - WeathSimReq = true; - RunPeriodInput.allocate( TotRunPers ); - RunPeriodInput( 1 ).startJulianDate = JulianDay( RunPeriodInput( 1 ).startMonth, RunPeriodInput( 1 ).startDay, LeapYearAdd ); - RunPeriodInput( 1 ).endJulianDate = JulianDay( RunPeriodInput( 1 ).endMonth, RunPeriodInput( 1 ).endDay, LeapYearAdd ); - RunPeriodInput( 1 ).monWeekDay = 0; - if ( RunPeriodInput( 1 ).dayOfWeek != 0 && ! ErrorsFound ) { - SetupWeekDaysByMonth( RunPeriodInput( 1 ).startMonth, RunPeriodInput( 1 ).startDay, RunPeriodInput( 1 ).dayOfWeek, RunPeriodInput( 1 ).monWeekDay ); - } - } else if ( TotRunPers > 1 && FullAnnualRun ) { - TotRunPers = 1; - } - } + { + auto const SELECT_CASE_var(RunPeriodDesignInput(Count).startMonth); - void GetRunPeriodDesignData(bool &ErrorsFound) - { + if ((SELECT_CASE_var == 1) || (SELECT_CASE_var == 3) || (SELECT_CASE_var == 5) || (SELECT_CASE_var == 7) || (SELECT_CASE_var == 8) || + (SELECT_CASE_var == 10) || (SELECT_CASE_var == 12)) { + if (RunPeriodDesignInput(Count).startDay > 31) { + ShowSevereError(cCurrentModuleObject + ": object=" + RunPeriodDesignInput(Count).title + ' ' + cNumericFieldNames(2) + + " invalid (Day of Month) [" + TrimSigDigits(RunPeriodInput(Loop).startDay) + ']'); + ErrorsFound = true; + } + } else if ((SELECT_CASE_var == 4) || (SELECT_CASE_var == 6) || (SELECT_CASE_var == 9) || (SELECT_CASE_var == 11)) { + if (RunPeriodDesignInput(Count).startDay > 30) { + ShowSevereError(cCurrentModuleObject + ": object=" + RunPeriodDesignInput(Count).title + ' ' + cNumericFieldNames(2) + + " invalid (Day of Month) [" + TrimSigDigits(RunPeriodInput(Loop).startDay) + ']'); + ErrorsFound = true; + } + } else if (SELECT_CASE_var == 2) { + if (RunPeriodDesignInput(Count).startDay > 28 + LeapYearAdd) { + ShowSevereError(cCurrentModuleObject + ": object=" + RunPeriodDesignInput(Count).title + ' ' + cNumericFieldNames(2) + + " invalid (Day of Month) [" + TrimSigDigits(RunPeriodInput(Loop).startDay) + ']'); + ErrorsFound = true; + } + } else { + ShowSevereError(cCurrentModuleObject + ": object=" + RunPeriodDesignInput(Count).title + ' ' + cNumericFieldNames(1) + + " invalid (Month) [" + TrimSigDigits(RunPeriodInput(Loop).startMonth) + ']'); + ErrorsFound = true; + } + } - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN March 2008 - // MODIFIED na - // RE-ENGINEERED na + if (lAlphaFieldBlanks(2)) { + RunPeriodDesignInput(Count).dayOfWeek = 2; // Defaults to Monday + } else { + RunPeriodDesignInput(Count).dayOfWeek = UtilityRoutines::FindItemInList(cAlphaArgs(2), ValidNames, 12); + if (RunPeriodDesignInput(Count).dayOfWeek == 0 || RunPeriodDesignInput(Count).dayOfWeek == 8) { + ShowWarningError(cCurrentModuleObject + ": object=" + RunPeriodDesignInput(Count).title + ' ' + cAlphaFieldNames(1) + + " invalid (Day of Week) [" + cAlphaArgs(1) + " for Start is not Valid, Monday will be Used."); + RunPeriodDesignInput(Count).dayOfWeek = 2; // Defaults to Monday + } + } - // PURPOSE OF THIS SUBROUTINE: - // This subroutine gets the run period design info from User input and the - // simulation dates + if (lAlphaFieldBlanks(3) || UtilityRoutines::SameString(cAlphaArgs(3), "YES")) { + RunPeriodDesignInput(Count).useDST = true; + } else if (UtilityRoutines::SameString(cAlphaArgs(3), "NO")) { + RunPeriodDesignInput(Count).useDST = false; + } else { + ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + cAlphaFieldNames(3) + " invalid [" + cAlphaArgs(3) + ']'); + ErrorsFound = true; + } - // Using/Aliasing - using General::JulianDay; - using General::TrimSigDigits; - using namespace DataSystemVariables; - using namespace DataIPShortCuts; + if (lAlphaFieldBlanks(4) || UtilityRoutines::SameString(cAlphaArgs(4), "YES")) { + RunPeriodDesignInput(Count).useRain = true; + RunPeriodDesignInput(Count).useSnow = true; + } else if (UtilityRoutines::SameString(cAlphaArgs(4), "NO")) { + RunPeriodDesignInput(Count).useRain = false; + RunPeriodDesignInput(Count).useSnow = false; + } else { + ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + cAlphaFieldNames(4) + " invalid [" + cAlphaArgs(4) + ']'); + ErrorsFound = true; + } - // SUBROUTINE PARAMETER DEFINITIONS: - static Array1D_string const ValidNames(12, {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "HOLIDAY", - "SUMMERDESIGNDAY", "WINTERDESIGNDAY", "CUSTOMDAY1", "CUSTOMDAY2"}); + // calculate the annual start and end days from the user inputted month and day + RunPeriodDesignInput(Count).startJulianDate = + JulianDay(RunPeriodDesignInput(Count).startMonth, RunPeriodDesignInput(Count).startDay, LeapYearAdd); + RunPeriodDesignInput(Count).endJulianDate = + JulianDay(RunPeriodDesignInput(Count).endMonth, RunPeriodDesignInput(Count).endDay, LeapYearAdd); + if (RunPeriodDesignInput(Count).startJulianDate <= RunPeriodDesignInput(Count).endJulianDate) { + RunPeriodDesignInput(Count).totalDays = + (RunPeriodDesignInput(Count).endJulianDate - RunPeriodDesignInput(Count).startJulianDate + 1) * + RunPeriodDesignInput(Count).numSimYears; + } else { + RunPeriodDesignInput(Count).totalDays = + (JulianDay(12, 31, LeapYearAdd) - RunPeriodDesignInput(Count).startJulianDate + 1 + RunPeriodDesignInput(Count).endJulianDate) * + RunPeriodDesignInput(Count).numSimYears; + } + RunPeriodDesignInput(Count).monWeekDay = 0; + if (RunPeriodDesignInput(1).dayOfWeek != 0 && !ErrorsFound) { + SetupWeekDaysByMonth(RunPeriodDesignInput(1).startMonth, RunPeriodDesignInput(1).startDay, RunPeriodDesignInput(1).dayOfWeek, + RunPeriodDesignInput(1).monWeekDay); + } + } - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - int NumAlphas; // Number of alphas being input - int NumNumerics; // Number of Numerics being input - int IOStat; // IO Status when calling get input subroutine - int Loop; - int RPD1; - int RPD2; - int Count; - int WhichPeriod; - //unused1208 CHARACTER(len=MaxNameLength) :: ThisObject - - // FLOW: - //Call Input Get routine to retrieve annual run data - RPD1 = inputProcessor->getNumObjectsFound( "SizingPeriod:WeatherFileDays" ); - RPD2 = inputProcessor->getNumObjectsFound( "SizingPeriod:WeatherFileConditionType" ); - TotRunDesPers = RPD1 + RPD2; - - RunPeriodDesignInput.allocate( RPD1 + RPD2 ); - RunPeriodDesignInputUniqueNames.reserve(static_cast< unsigned >(RPD1 + RPD2)); - - Count = 0; - cCurrentModuleObject = "SizingPeriod:WeatherFileDays"; - for ( Loop = 1; Loop <= RPD1; ++Loop ) { + cCurrentModuleObject = "SizingPeriod:WeatherFileConditionType"; + for (Loop = 1; Loop <= RPD2; ++Loop) { inputProcessor->getObjectItem(cCurrentModuleObject, Loop, cAlphaArgs, NumAlphas, rNumericArgs, NumNumerics, IOStat, lNumericFieldBlanks, lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); GlobalNames::VerifyUniqueInterObjectName(RunPeriodDesignInputUniqueNames, cAlphaArgs(1), cCurrentModuleObject, cAlphaFieldNames(1), ErrorsFound); - ++Count; - RunPeriodDesignInput( Count ).title = cAlphaArgs( 1 ); - RunPeriodDesignInput( Count ).periodType = "User Selected WeatherFile RunPeriod (Design)"; - - //set the start and end day of month from user input - RunPeriodDesignInput( Count ).startMonth = int( rNumericArgs( 1 ) ); - RunPeriodDesignInput( Count ).startDay = int( rNumericArgs( 2 ) ); - RunPeriodDesignInput( Count ).endMonth = int( rNumericArgs( 3 ) ); - RunPeriodDesignInput( Count ).endDay = int( rNumericArgs( 4 ) ); - - { auto const SELECT_CASE_var( RunPeriodDesignInput( Count ).startMonth ); - - if ( ( SELECT_CASE_var == 1 ) || ( SELECT_CASE_var == 3 ) || ( SELECT_CASE_var == 5 ) || ( SELECT_CASE_var == 7 ) || ( SELECT_CASE_var == 8 ) || ( SELECT_CASE_var == 10 ) || ( SELECT_CASE_var == 12 ) ) { - if ( RunPeriodDesignInput( Count ).startDay > 31 ) { - ShowSevereError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).title + ' ' + cNumericFieldNames( 2 ) + " invalid (Day of Month) [" + TrimSigDigits( RunPeriodInput( Loop ).startDay ) + ']' ); - ErrorsFound = true; - } - } else if ( ( SELECT_CASE_var == 4 ) || ( SELECT_CASE_var == 6 ) || ( SELECT_CASE_var == 9 ) || ( SELECT_CASE_var == 11 ) ) { - if ( RunPeriodDesignInput( Count ).startDay > 30 ) { - ShowSevereError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).title + ' ' + cNumericFieldNames( 2 ) + " invalid (Day of Month) [" + TrimSigDigits( RunPeriodInput( Loop ).startDay ) + ']' ); - ErrorsFound = true; - } - } else if ( SELECT_CASE_var == 2 ) { - if ( RunPeriodDesignInput( Count ).startDay > 28 + LeapYearAdd ) { - ShowSevereError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).title + ' ' + cNumericFieldNames( 2 ) + " invalid (Day of Month) [" + TrimSigDigits( RunPeriodInput( Loop ).startDay ) + ']' ); - ErrorsFound = true; - } - } else { - ShowSevereError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).title + ' ' + cNumericFieldNames( 1 ) + " invalid (Month) [" + TrimSigDigits( RunPeriodInput( Loop ).startMonth ) + ']' ); - ErrorsFound = true; + ++Count; + RunPeriodDesignInput(Count).title = cAlphaArgs(1); + RunPeriodDesignInput(Count).periodType = "User Selected WeatherFile Typical/Extreme Period (Design)=" + cAlphaArgs(2); + + // Period Selection + if (!lAlphaFieldBlanks(2)) { + WhichPeriod = UtilityRoutines::FindItem(cAlphaArgs(2), TypicalExtremePeriods, &TypicalExtremeData::MatchValue); + if (WhichPeriod != 0) { + RunPeriodDesignInput(Count).startDay = TypicalExtremePeriods(WhichPeriod).StartDay; + RunPeriodDesignInput(Count).startMonth = TypicalExtremePeriods(WhichPeriod).StartMonth; + RunPeriodDesignInput(Count).startJulianDate = TypicalExtremePeriods(WhichPeriod).StartJDay; + RunPeriodDesignInput(Count).endDay = TypicalExtremePeriods(WhichPeriod).EndDay; + RunPeriodDesignInput(Count).endMonth = TypicalExtremePeriods(WhichPeriod).EndMonth; + RunPeriodDesignInput(Count).endJulianDate = TypicalExtremePeriods(WhichPeriod).EndJDay; + RunPeriodDesignInput(Count).totalDays = TypicalExtremePeriods(WhichPeriod).TotalDays; + } else { + WhichPeriod = UtilityRoutines::FindItem(cAlphaArgs(2), TypicalExtremePeriods, &TypicalExtremeData::MatchValue1); + if (WhichPeriod != 0) { + RunPeriodDesignInput(Count).startDay = TypicalExtremePeriods(WhichPeriod).StartDay; + RunPeriodDesignInput(Count).startMonth = TypicalExtremePeriods(WhichPeriod).StartMonth; + RunPeriodDesignInput(Count).startJulianDate = TypicalExtremePeriods(WhichPeriod).StartJDay; + RunPeriodDesignInput(Count).endDay = TypicalExtremePeriods(WhichPeriod).EndDay; + RunPeriodDesignInput(Count).endMonth = TypicalExtremePeriods(WhichPeriod).EndMonth; + RunPeriodDesignInput(Count).endJulianDate = TypicalExtremePeriods(WhichPeriod).EndJDay; + RunPeriodDesignInput(Count).totalDays = TypicalExtremePeriods(WhichPeriod).TotalDays; + ShowWarningError(cCurrentModuleObject + ": object=" + RunPeriodDesignInput(Count).title + ' ' + cAlphaFieldNames(2) + '=' + + cAlphaArgs(2) + " matched to " + TypicalExtremePeriods(WhichPeriod).MatchValue); + } else { + WhichPeriod = UtilityRoutines::FindItem(cAlphaArgs(2), TypicalExtremePeriods, &TypicalExtremeData::MatchValue2); + if (WhichPeriod != 0) { + RunPeriodDesignInput(Count).startDay = TypicalExtremePeriods(WhichPeriod).StartDay; + RunPeriodDesignInput(Count).startMonth = TypicalExtremePeriods(WhichPeriod).StartMonth; + RunPeriodDesignInput(Count).startJulianDate = TypicalExtremePeriods(WhichPeriod).StartJDay; + RunPeriodDesignInput(Count).endDay = TypicalExtremePeriods(WhichPeriod).EndDay; + RunPeriodDesignInput(Count).endMonth = TypicalExtremePeriods(WhichPeriod).EndMonth; + RunPeriodDesignInput(Count).endJulianDate = TypicalExtremePeriods(WhichPeriod).EndJDay; + RunPeriodDesignInput(Count).totalDays = TypicalExtremePeriods(WhichPeriod).TotalDays; + ShowWarningError(cCurrentModuleObject + ": object=" + RunPeriodDesignInput(Count).title + ' ' + cAlphaFieldNames(2) + + '=' + cAlphaArgs(2) + " matched to " + TypicalExtremePeriods(WhichPeriod).MatchValue); + } else { + ShowSevereError(cCurrentModuleObject + ": object=" + RunPeriodDesignInput(Count).title + ' ' + cAlphaFieldNames(2) + + " invalid (not on Weather File)=" + cAlphaArgs(2)); + ErrorsFound = true; + } + } } + } else { + ShowSevereError(cCurrentModuleObject + ": object=" + RunPeriodDesignInput(Count).title + ' ' + cAlphaFieldNames(2) + + " invalid (blank)."); + ErrorsFound = true; } - if ( lAlphaFieldBlanks( 2 ) ) { - RunPeriodDesignInput( Count ).dayOfWeek = 2; // Defaults to Monday - } else { - RunPeriodDesignInput( Count ).dayOfWeek = UtilityRoutines::FindItemInList( cAlphaArgs( 2 ), ValidNames, 12 ); - if ( RunPeriodDesignInput( Count ).dayOfWeek == 0 || RunPeriodDesignInput( Count ).dayOfWeek == 8 ) { - ShowWarningError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).title + ' ' + cAlphaFieldNames( 1 ) + " invalid (Day of Week) [" + cAlphaArgs( 1 ) + " for Start is not Valid, Monday will be Used." ); - RunPeriodDesignInput( Count ).dayOfWeek = 2; // Defaults to Monday - } - } - - if ( lAlphaFieldBlanks( 3 ) || UtilityRoutines::SameString( cAlphaArgs( 3 ), "YES" ) ) { - RunPeriodDesignInput( Count ).useDST = true; - } else if ( UtilityRoutines::SameString( cAlphaArgs( 3 ), "NO" ) ) { - RunPeriodDesignInput( Count ).useDST = false; - } else { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 3 ) + " invalid [" + cAlphaArgs( 3 ) + ']' ); - ErrorsFound = true; - } - - if ( lAlphaFieldBlanks( 4 ) || UtilityRoutines::SameString( cAlphaArgs( 4 ), "YES" ) ) { - RunPeriodDesignInput( Count ).useRain = true; - RunPeriodDesignInput( Count ).useSnow = true; - } else if ( UtilityRoutines::SameString( cAlphaArgs( 4 ), "NO" ) ) { - RunPeriodDesignInput( Count ).useRain = false; - RunPeriodDesignInput( Count ).useSnow = false; - } else { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 4 ) + " invalid [" + cAlphaArgs( 4 ) + ']' ); - ErrorsFound = true; - } - - //calculate the annual start and end days from the user inputted month and day - RunPeriodDesignInput( Count ).startJulianDate = JulianDay( RunPeriodDesignInput( Count ).startMonth, RunPeriodDesignInput( Count ).startDay, LeapYearAdd ); - RunPeriodDesignInput( Count ).endJulianDate = JulianDay( RunPeriodDesignInput( Count ).endMonth, RunPeriodDesignInput( Count ).endDay, LeapYearAdd ); - if ( RunPeriodDesignInput( Count ).startJulianDate <= RunPeriodDesignInput( Count ).endJulianDate ) { - RunPeriodDesignInput( Count ).totalDays = ( RunPeriodDesignInput( Count ).endJulianDate - RunPeriodDesignInput( Count ).startJulianDate + 1 ) * RunPeriodDesignInput( Count ).numSimYears; - } else { - RunPeriodDesignInput( Count ).totalDays = ( JulianDay( 12, 31, LeapYearAdd ) - RunPeriodDesignInput( Count ).startJulianDate + 1 + RunPeriodDesignInput( Count ).endJulianDate ) * RunPeriodDesignInput( Count ).numSimYears; - } - RunPeriodDesignInput( Count ).monWeekDay = 0; - if ( RunPeriodDesignInput( 1 ).dayOfWeek != 0 && ! ErrorsFound ) { - SetupWeekDaysByMonth( RunPeriodDesignInput( 1 ).startMonth, RunPeriodDesignInput( 1 ).startDay, RunPeriodDesignInput( 1 ).dayOfWeek, RunPeriodDesignInput( 1 ).monWeekDay ); - } - } - - cCurrentModuleObject = "SizingPeriod:WeatherFileConditionType"; - for ( Loop = 1; Loop <= RPD2; ++Loop ) { - inputProcessor->getObjectItem(cCurrentModuleObject, Loop, cAlphaArgs, NumAlphas, rNumericArgs, NumNumerics, IOStat, lNumericFieldBlanks, - lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - GlobalNames::VerifyUniqueInterObjectName(RunPeriodDesignInputUniqueNames, cAlphaArgs(1), cCurrentModuleObject, cAlphaFieldNames(1), - ErrorsFound); - ++Count; - RunPeriodDesignInput( Count ).title = cAlphaArgs( 1 ); - RunPeriodDesignInput( Count ).periodType = "User Selected WeatherFile Typical/Extreme Period (Design)=" + cAlphaArgs( 2 ); - - // Period Selection - if ( ! lAlphaFieldBlanks( 2 ) ) { - WhichPeriod = UtilityRoutines::FindItem( cAlphaArgs( 2 ), TypicalExtremePeriods, &TypicalExtremeData::MatchValue ); - if ( WhichPeriod != 0 ) { - RunPeriodDesignInput( Count ).startDay = TypicalExtremePeriods( WhichPeriod ).StartDay; - RunPeriodDesignInput( Count ).startMonth = TypicalExtremePeriods( WhichPeriod ).StartMonth; - RunPeriodDesignInput( Count ).startJulianDate = TypicalExtremePeriods( WhichPeriod ).StartJDay; - RunPeriodDesignInput( Count ).endDay = TypicalExtremePeriods( WhichPeriod ).EndDay; - RunPeriodDesignInput( Count ).endMonth = TypicalExtremePeriods( WhichPeriod ).EndMonth; - RunPeriodDesignInput( Count ).endJulianDate = TypicalExtremePeriods( WhichPeriod ).EndJDay; - RunPeriodDesignInput( Count ).totalDays = TypicalExtremePeriods( WhichPeriod ).TotalDays; - } else { - WhichPeriod = UtilityRoutines::FindItem( cAlphaArgs( 2 ), TypicalExtremePeriods, &TypicalExtremeData::MatchValue1 ); - if ( WhichPeriod != 0 ) { - RunPeriodDesignInput( Count ).startDay = TypicalExtremePeriods( WhichPeriod ).StartDay; - RunPeriodDesignInput( Count ).startMonth = TypicalExtremePeriods( WhichPeriod ).StartMonth; - RunPeriodDesignInput( Count ).startJulianDate = TypicalExtremePeriods( WhichPeriod ).StartJDay; - RunPeriodDesignInput( Count ).endDay = TypicalExtremePeriods( WhichPeriod ).EndDay; - RunPeriodDesignInput( Count ).endMonth = TypicalExtremePeriods( WhichPeriod ).EndMonth; - RunPeriodDesignInput( Count ).endJulianDate = TypicalExtremePeriods( WhichPeriod ).EndJDay; - RunPeriodDesignInput( Count ).totalDays = TypicalExtremePeriods( WhichPeriod ).TotalDays; - ShowWarningError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).title + ' ' + cAlphaFieldNames( 2 ) + '=' + cAlphaArgs( 2 ) + " matched to " + TypicalExtremePeriods( WhichPeriod ).MatchValue ); - } else { - WhichPeriod = UtilityRoutines::FindItem( cAlphaArgs( 2 ), TypicalExtremePeriods, &TypicalExtremeData::MatchValue2 ); - if ( WhichPeriod != 0 ) { - RunPeriodDesignInput( Count ).startDay = TypicalExtremePeriods( WhichPeriod ).StartDay; - RunPeriodDesignInput( Count ).startMonth = TypicalExtremePeriods( WhichPeriod ).StartMonth; - RunPeriodDesignInput( Count ).startJulianDate = TypicalExtremePeriods( WhichPeriod ).StartJDay; - RunPeriodDesignInput( Count ).endDay = TypicalExtremePeriods( WhichPeriod ).EndDay; - RunPeriodDesignInput( Count ).endMonth = TypicalExtremePeriods( WhichPeriod ).EndMonth; - RunPeriodDesignInput( Count ).endJulianDate = TypicalExtremePeriods( WhichPeriod ).EndJDay; - RunPeriodDesignInput( Count ).totalDays = TypicalExtremePeriods( WhichPeriod ).TotalDays; - ShowWarningError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).title + ' ' + cAlphaFieldNames( 2 ) + '=' + cAlphaArgs( 2 ) + " matched to " + TypicalExtremePeriods( WhichPeriod ).MatchValue ); - } else { - ShowSevereError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).title + ' ' + cAlphaFieldNames( 2 ) + " invalid (not on Weather File)=" + cAlphaArgs( 2 ) ); - ErrorsFound = true; - } - } - } - } else { - ShowSevereError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).title + ' ' + cAlphaFieldNames( 2 ) + " invalid (blank)." ); - ErrorsFound = true; - } - - if ( lAlphaFieldBlanks( 3 ) ) { - RunPeriodDesignInput( Count ).dayOfWeek = 2; // Defaults to Monday - } else { - RunPeriodDesignInput( Count ).dayOfWeek = UtilityRoutines::FindItemInList( cAlphaArgs( 3 ), ValidNames, 12 ); - if ( RunPeriodDesignInput( Count ).dayOfWeek == 0 || RunPeriodDesignInput( Count ).dayOfWeek == 8 ) { - ShowWarningError( cCurrentModuleObject + ": object=" + RunPeriodDesignInput( Count ).title + ' ' + cAlphaFieldNames( 3 ) + " invalid (Day of Week) [" + cAlphaArgs( 3 ) + " for Start is not Valid, Monday will be Used." ); - RunPeriodDesignInput( Count ).dayOfWeek = 2; // Defaults to Monday - } - } - - if ( lAlphaFieldBlanks( 4 ) || UtilityRoutines::SameString( cAlphaArgs( 4 ), "YES" ) ) { - RunPeriodDesignInput( Count ).useDST = true; - } else if ( UtilityRoutines::SameString( cAlphaArgs( 4 ), "NO" ) ) { - RunPeriodDesignInput( Count ).useDST = false; - } else { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 4 ) + " invalid [" + cAlphaArgs( 4 ) + ']' ); - ErrorsFound = true; - } - - if ( lAlphaFieldBlanks( 5 ) || UtilityRoutines::SameString( cAlphaArgs( 5 ), "YES" ) ) { - RunPeriodDesignInput( Count ).useRain = true; - RunPeriodDesignInput( Count ).useSnow = true; - } else if ( UtilityRoutines::SameString( cAlphaArgs( 5 ), "NO" ) ) { - RunPeriodDesignInput( Count ).useRain = false; - RunPeriodDesignInput( Count ).useSnow = false; - } else { - ShowSevereError( cCurrentModuleObject + ": object #" + TrimSigDigits( Loop ) + cAlphaFieldNames( 5 ) + " invalid [" + cAlphaArgs( 5 ) + ']' ); - ErrorsFound = true; - } - RunPeriodDesignInput( 1 ).monWeekDay = 0; - if ( RunPeriodDesignInput( 1 ).dayOfWeek != 0 && ! ErrorsFound ) { - SetupWeekDaysByMonth( RunPeriodDesignInput( 1 ).startMonth, RunPeriodDesignInput( 1 ).startDay, RunPeriodDesignInput( 1 ).dayOfWeek, RunPeriodDesignInput( 1 ).monWeekDay ); - } - } - } + if (lAlphaFieldBlanks(3)) { + RunPeriodDesignInput(Count).dayOfWeek = 2; // Defaults to Monday + } else { + RunPeriodDesignInput(Count).dayOfWeek = UtilityRoutines::FindItemInList(cAlphaArgs(3), ValidNames, 12); + if (RunPeriodDesignInput(Count).dayOfWeek == 0 || RunPeriodDesignInput(Count).dayOfWeek == 8) { + ShowWarningError(cCurrentModuleObject + ": object=" + RunPeriodDesignInput(Count).title + ' ' + cAlphaFieldNames(3) + + " invalid (Day of Week) [" + cAlphaArgs(3) + " for Start is not Valid, Monday will be Used."); + RunPeriodDesignInput(Count).dayOfWeek = 2; // Defaults to Monday + } + } + + if (lAlphaFieldBlanks(4) || UtilityRoutines::SameString(cAlphaArgs(4), "YES")) { + RunPeriodDesignInput(Count).useDST = true; + } else if (UtilityRoutines::SameString(cAlphaArgs(4), "NO")) { + RunPeriodDesignInput(Count).useDST = false; + } else { + ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + cAlphaFieldNames(4) + " invalid [" + cAlphaArgs(4) + ']'); + ErrorsFound = true; + } + + if (lAlphaFieldBlanks(5) || UtilityRoutines::SameString(cAlphaArgs(5), "YES")) { + RunPeriodDesignInput(Count).useRain = true; + RunPeriodDesignInput(Count).useSnow = true; + } else if (UtilityRoutines::SameString(cAlphaArgs(5), "NO")) { + RunPeriodDesignInput(Count).useRain = false; + RunPeriodDesignInput(Count).useSnow = false; + } else { + ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + cAlphaFieldNames(5) + " invalid [" + cAlphaArgs(5) + ']'); + ErrorsFound = true; + } + RunPeriodDesignInput(1).monWeekDay = 0; + if (RunPeriodDesignInput(1).dayOfWeek != 0 && !ErrorsFound) { + SetupWeekDaysByMonth(RunPeriodDesignInput(1).startMonth, RunPeriodDesignInput(1).startDay, RunPeriodDesignInput(1).dayOfWeek, + RunPeriodDesignInput(1).monWeekDay); + } + } + } void GetSpecialDayPeriodData(bool &ErrorsFound) // will be set to true if severe errors are found in inputs - { - - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN June 2000 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // This subroutine reads any special day period data from the IDF and - // processes it into the data structure that will drive the values - // in the SpecialDayTypes array. - - // METHODOLOGY EMPLOYED: - // Processes the following IDD definition: - // SpecialDayPeriod, - // \memo This object sets up holidays/special days to be used during weather file - // \memo run periods. (These are not used with DesignDay objects.) - // \memo Depending on the value in the run period, days on the weather file may also - // \memo be used. However, the weather file specification will take precedence over - // \memo any specification shown here. (No error message on duplicate days or overlapping - // \memo days). - // A1, \field Holiday Name - // A2, \field StartDate - // \memo Dates can be several formats: - // \memo / (month/day) - // \memo Month - // \memo Month - // \memo Months are January, February, March, April, May, June, July, August, September, October, November, December - // \memo Months can be the first 3 letters of the month - // \note will eventually allow: 3 Monday April (meaning 3rd Monday in April) - // N1, \field duration (number of days) - // A3; \field SpecialDayType - // \note SpecialDayType selects the schedules appropriate for each day so labeled - // \type choice - // \key Holiday - // \key SummerDesignDay - // \key WinterDesignDay - // \key CustomDay1 - // \key CustomDay2 - - // Using/Aliasing - using namespace DataIPShortCuts; - using General::TrimSigDigits; - - // SUBROUTINE PARAMETER DEFINITIONS: - static Array1D_string const ValidDayTypes( 5, { "HOLIDAY", "SUMMERDESIGNDAY", "WINTERDESIGNDAY", "CUSTOMDAY1", "CUSTOMDAY2" } ); - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - Array1D_string AlphArray( 3 ); - int NumAlphas; - Array1D< Real64 > Duration( 1 ); - int NumNumbers; - int NumSpecDays; - int Count; - int Loop; - int PMonth; - int PDay; - int PWeekDay; - int DateType; - int IOStat; - int DayType; - - cCurrentModuleObject = "RunPeriodControl:SpecialDays"; - NumSpecDays = inputProcessor->getNumObjectsFound( cCurrentModuleObject ); - if ( allocated( SpecialDays ) ) { // EPW already allocated the array - Count = NumSpecialDays - NumSpecDays + 1; - } else { - SpecialDays.allocate( NumSpecDays ); - NumSpecialDays = NumSpecDays; - Count = 1; - } - - for ( Loop = 1; Loop <= NumSpecDays; ++Loop ) { - - inputProcessor->getObjectItem( cCurrentModuleObject, Loop, AlphArray, NumAlphas, Duration, NumNumbers, IOStat ); - UtilityRoutines::IsNameEmpty(AlphArray( 1 ), cCurrentModuleObject, ErrorsFound); - SpecialDays( Count ).Name = AlphArray( 1 ); - - ProcessDateString( AlphArray( 2 ), PMonth, PDay, PWeekDay, DateType, ErrorsFound ); - if ( DateType == MonthDay ) { - SpecialDays( Count ).DateType = DateType; - SpecialDays( Count ).Month = PMonth; - SpecialDays( Count ).Day = PDay; - SpecialDays( Count ).WeekDay = 0; - SpecialDays( Count ).CompDate = PMonth * 32 + PDay; - SpecialDays( Count ).WthrFile = false; - } else if ( DateType != InvalidDate ) { - SpecialDays( Count ).DateType = DateType; - SpecialDays( Count ).Month = PMonth; - SpecialDays( Count ).Day = PDay; - SpecialDays( Count ).WeekDay = PWeekDay; - SpecialDays( Count ).CompDate = 0; - SpecialDays( Count ).WthrFile = false; - } else if ( DateType == InvalidDate ) { - ShowSevereError( cCurrentModuleObject + ": " + AlphArray( 1 ) + " Invalid " + cAlphaFieldNames( 2 ) + '=' + AlphArray( 2 ) ); - ErrorsFound = true; - } - - if ( Duration( 1 ) > 0 ) { - SpecialDays( Count ).Duration = int( Duration( 1 ) ); - } else { + { + + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN June 2000 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // This subroutine reads any special day period data from the IDF and + // processes it into the data structure that will drive the values + // in the SpecialDayTypes array. + + // METHODOLOGY EMPLOYED: + // Processes the following IDD definition: + // SpecialDayPeriod, + // \memo This object sets up holidays/special days to be used during weather file + // \memo run periods. (These are not used with DesignDay objects.) + // \memo Depending on the value in the run period, days on the weather file may also + // \memo be used. However, the weather file specification will take precedence over + // \memo any specification shown here. (No error message on duplicate days or overlapping + // \memo days). + // A1, \field Holiday Name + // A2, \field StartDate + // \memo Dates can be several formats: + // \memo / (month/day) + // \memo Month + // \memo Month + // \memo Months are January, February, March, April, May, June, July, August, September, October, November, December + // \memo Months can be the first 3 letters of the month + // \note will eventually allow: 3 Monday April (meaning 3rd Monday in April) + // N1, \field duration (number of days) + // A3; \field SpecialDayType + // \note SpecialDayType selects the schedules appropriate for each day so labeled + // \type choice + // \key Holiday + // \key SummerDesignDay + // \key WinterDesignDay + // \key CustomDay1 + // \key CustomDay2 + + // Using/Aliasing + using namespace DataIPShortCuts; + using General::TrimSigDigits; + + // SUBROUTINE PARAMETER DEFINITIONS: + static Array1D_string const ValidDayTypes(5, {"HOLIDAY", "SUMMERDESIGNDAY", "WINTERDESIGNDAY", "CUSTOMDAY1", "CUSTOMDAY2"}); + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + Array1D_string AlphArray(3); + int NumAlphas; + Array1D Duration(1); + int NumNumbers; + int NumSpecDays; + int Count; + int Loop; + int PMonth; + int PDay; + int PWeekDay; + int DateType; + int IOStat; + int DayType; + + cCurrentModuleObject = "RunPeriodControl:SpecialDays"; + NumSpecDays = inputProcessor->getNumObjectsFound(cCurrentModuleObject); + if (allocated(SpecialDays)) { // EPW already allocated the array + Count = NumSpecialDays - NumSpecDays + 1; + } else { + SpecialDays.allocate(NumSpecDays); + NumSpecialDays = NumSpecDays; + Count = 1; + } + + for (Loop = 1; Loop <= NumSpecDays; ++Loop) { + + inputProcessor->getObjectItem(cCurrentModuleObject, Loop, AlphArray, NumAlphas, Duration, NumNumbers, IOStat); + UtilityRoutines::IsNameEmpty(AlphArray(1), cCurrentModuleObject, ErrorsFound); + SpecialDays(Count).Name = AlphArray(1); + + ProcessDateString(AlphArray(2), PMonth, PDay, PWeekDay, DateType, ErrorsFound); + if (DateType == MonthDay) { + SpecialDays(Count).DateType = DateType; + SpecialDays(Count).Month = PMonth; + SpecialDays(Count).Day = PDay; + SpecialDays(Count).WeekDay = 0; + SpecialDays(Count).CompDate = PMonth * 32 + PDay; + SpecialDays(Count).WthrFile = false; + } else if (DateType != InvalidDate) { + SpecialDays(Count).DateType = DateType; + SpecialDays(Count).Month = PMonth; + SpecialDays(Count).Day = PDay; + SpecialDays(Count).WeekDay = PWeekDay; + SpecialDays(Count).CompDate = 0; + SpecialDays(Count).WthrFile = false; + } else if (DateType == InvalidDate) { + ShowSevereError(cCurrentModuleObject + ": " + AlphArray(1) + " Invalid " + cAlphaFieldNames(2) + '=' + AlphArray(2)); + ErrorsFound = true; + } + + if (Duration(1) > 0) { + SpecialDays(Count).Duration = int(Duration(1)); + } else { ShowSevereError(cCurrentModuleObject + ": " + AlphArray(1) + " Invalid " + cNumericFieldNames(1) + '=' + TrimSigDigits(Duration(1), 0)); - ErrorsFound = true; - } - - DayType = UtilityRoutines::FindItemInList( AlphArray( 3 ), ValidDayTypes, 5 ); - if ( DayType == 0 ) { - ShowSevereError( cCurrentModuleObject + ": " + AlphArray( 1 ) + " Invalid " + cAlphaFieldNames( 3 ) + '=' + AlphArray( 3 ) ); - ErrorsFound = true; - } else { - SpecialDays( Count ).DayType = DayType; - } - ++Count; - } - - //CALL CalcSpecialDayTypes - } + ErrorsFound = true; + } + + DayType = UtilityRoutines::FindItemInList(AlphArray(3), ValidDayTypes, 5); + if (DayType == 0) { + ShowSevereError(cCurrentModuleObject + ": " + AlphArray(1) + " Invalid " + cAlphaFieldNames(3) + '=' + AlphArray(3)); + ErrorsFound = true; + } else { + SpecialDays(Count).DayType = DayType; + } + ++Count; + } + + // CALL CalcSpecialDayTypes + } void CalcSpecialDayTypes() - { + { - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN June 2000 - // MODIFIED na - // RE-ENGINEERED na + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN June 2000 + // MODIFIED na + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // This subroutine creates the array of Special Day types used during - // the simulation. + // PURPOSE OF THIS SUBROUTINE: + // This subroutine creates the array of Special Day types used during + // the simulation. - // METHODOLOGY EMPLOYED: - // Sets up the SpecialDayTypes array that then is used during simulation. - // Uses WFLeapYearInd to indicate Leap Year simulation runs. + // METHODOLOGY EMPLOYED: + // Sets up the SpecialDayTypes array that then is used during simulation. + // Uses WFLeapYearInd to indicate Leap Year simulation runs. - // REFERENCES: - // na + // REFERENCES: + // na - // Using/Aliasing - using General::JulianDay; + // Using/Aliasing + using General::JulianDay; - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: - // na + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + // na - // SUBROUTINE PARAMETER DEFINITIONS: - // na + // SUBROUTINE PARAMETER DEFINITIONS: + // na - // INTERFACE BLOCK SPECIFICATIONS: - // na + // INTERFACE BLOCK SPECIFICATIONS: + // na - // DERIVED TYPE DEFINITIONS: - // na + // DERIVED TYPE DEFINITIONS: + // na - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - int Loop; - int Loop1; - int JDay; - int Warn; + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + int Loop; + int Loop1; + int JDay; + int Warn; - SpecialDayTypes = 0; // Initialize/Reset Special Day Types array + SpecialDayTypes = 0; // Initialize/Reset Special Day Types array - for ( Loop = 1; Loop <= NumSpecialDays; ++Loop ) { + for (Loop = 1; Loop <= NumSpecialDays; ++Loop) { - if ( SpecialDays( Loop ).WthrFile ) continue; + if (SpecialDays(Loop).WthrFile) continue; - Warn = 0; + Warn = 0; - JDay = JulianDay( SpecialDays( Loop ).Month, SpecialDays( Loop ).Day, LeapYearAdd ) - 1; + JDay = JulianDay(SpecialDays(Loop).Month, SpecialDays(Loop).Day, LeapYearAdd) - 1; - for ( Loop1 = 1; Loop1 <= SpecialDays( Loop ).Duration; ++Loop1 ) { - ++JDay; - if ( JDay > 366 ) { - ShowWarningError( "SpecialDay=" + SpecialDays( Loop ).Name + " causes index of more than 366, ignoring those beyond 366" ); - } else { - if ( SpecialDayTypes( JDay ) != 0 && Warn == 0 ) { - ShowWarningError( "SpecialDay=" + SpecialDays( Loop ).Name + " attempted overwrite of previous set special day" ); - Warn = 1; - } else if ( SpecialDayTypes( JDay ) == 0 ) { - SpecialDayTypes( JDay ) = SpecialDays( Loop ).DayType; - } - } - } - } - } + for (Loop1 = 1; Loop1 <= SpecialDays(Loop).Duration; ++Loop1) { + ++JDay; + if (JDay > 366) { + ShowWarningError("SpecialDay=" + SpecialDays(Loop).Name + " causes index of more than 366, ignoring those beyond 366"); + } else { + if (SpecialDayTypes(JDay) != 0 && Warn == 0) { + ShowWarningError("SpecialDay=" + SpecialDays(Loop).Name + " attempted overwrite of previous set special day"); + Warn = 1; + } else if (SpecialDayTypes(JDay) == 0) { + SpecialDayTypes(JDay) = SpecialDays(Loop).DayType; + } + } + } + } + } void GetDSTData(bool &ErrorsFound) // will be set to true if severe errors are found in inputs - { - - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN August 2000 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // This subroutine gets a possible "Daylight Saving Period" from the IDF. Using this - // will overwrite any prior DST data. - - // METHODOLOGY EMPLOYED: - // Processes the following IDD definition: - // DaylightSavingPeriod, - // \memo This object sets up the Daylight Saving period for any RunPeriod. - // \memo Ignores any DaylightSavingperiod values on the weather file and uses this definition. - // \memo (These are not used with DesignDay objects.) - // A1, \field StartDate - // A2, \field EndDate - // \memo Dates can be several formats: - // \memo / (month/day) - // \memo - // \memo - // \memo in in - // \memo can be January, February, March, April, May, June, July, August, September, - // October, November, December - // \memo Months can be the first 3 letters of the month - // \memo can be Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday - // \memo can be 1 or 1st, 2 or 2nd, etc. up to 5(?) - - // Using/Aliasing - using namespace DataIPShortCuts; - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - int NumFound; - int NumAlphas; - int IOStat; - int NumNumbers; - - cCurrentModuleObject = "RunPeriodControl:DaylightSavingTime"; - NumFound = inputProcessor->getNumObjectsFound( cCurrentModuleObject ); - - if ( NumFound == 1 ) { + { + + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN August 2000 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // This subroutine gets a possible "Daylight Saving Period" from the IDF. Using this + // will overwrite any prior DST data. + + // METHODOLOGY EMPLOYED: + // Processes the following IDD definition: + // DaylightSavingPeriod, + // \memo This object sets up the Daylight Saving period for any RunPeriod. + // \memo Ignores any DaylightSavingperiod values on the weather file and uses this definition. + // \memo (These are not used with DesignDay objects.) + // A1, \field StartDate + // A2, \field EndDate + // \memo Dates can be several formats: + // \memo / (month/day) + // \memo + // \memo + // \memo in in + // \memo can be January, February, March, April, May, June, July, August, September, + // October, November, December + // \memo Months can be the first 3 letters of the month + // \memo can be Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday + // \memo can be 1 or 1st, 2 or 2nd, etc. up to 5(?) + + // Using/Aliasing + using namespace DataIPShortCuts; + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + int NumFound; + int NumAlphas; + int IOStat; + int NumNumbers; + + cCurrentModuleObject = "RunPeriodControl:DaylightSavingTime"; + NumFound = inputProcessor->getNumObjectsFound(cCurrentModuleObject); + + if (NumFound == 1) { inputProcessor->getObjectItem(cCurrentModuleObject, 1, cAlphaArgs, NumAlphas, rNumericArgs, NumNumbers, IOStat, lNumericFieldBlanks, lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if ( NumAlphas != 2 ) { - ShowSevereError( cCurrentModuleObject + ": Insufficient fields, must have Start AND End Dates" ); - ErrorsFound = true; - } else { // Correct number of arguments - ProcessDateString( cAlphaArgs( 1 ), IDFDST.StMon, IDFDST.StDay, IDFDST.StWeekDay, IDFDST.StDateType, ErrorsFound ); - if ( IDFDST.StDateType == InvalidDate ) { - ShowSevereError( cCurrentModuleObject + ": Invalid " + cAlphaFieldNames( 1 ) + '=' + cAlphaArgs( 1 ) ); - ErrorsFound = true; - } - ProcessDateString( cAlphaArgs( 2 ), IDFDST.EnMon, IDFDST.EnDay, IDFDST.EnWeekDay, IDFDST.EnDateType, ErrorsFound ); - if ( IDFDST.EnDateType == InvalidDate ) { - ShowSevereError( cCurrentModuleObject + ": Invalid " + cAlphaFieldNames( 2 ) + '=' + cAlphaArgs( 2 ) ); - ErrorsFound = true; - } - IDFDaylightSaving = true; - } - } else if ( NumFound > 1 ) { - ShowSevereError( cCurrentModuleObject + ": Too many objects in Input File, only one allowed." ); - ErrorsFound = true; - } - } + if (NumAlphas != 2) { + ShowSevereError(cCurrentModuleObject + ": Insufficient fields, must have Start AND End Dates"); + ErrorsFound = true; + } else { // Correct number of arguments + ProcessDateString(cAlphaArgs(1), IDFDST.StMon, IDFDST.StDay, IDFDST.StWeekDay, IDFDST.StDateType, ErrorsFound); + if (IDFDST.StDateType == InvalidDate) { + ShowSevereError(cCurrentModuleObject + ": Invalid " + cAlphaFieldNames(1) + '=' + cAlphaArgs(1)); + ErrorsFound = true; + } + ProcessDateString(cAlphaArgs(2), IDFDST.EnMon, IDFDST.EnDay, IDFDST.EnWeekDay, IDFDST.EnDateType, ErrorsFound); + if (IDFDST.EnDateType == InvalidDate) { + ShowSevereError(cCurrentModuleObject + ": Invalid " + cAlphaFieldNames(2) + '=' + cAlphaArgs(2)); + ErrorsFound = true; + } + IDFDaylightSaving = true; + } + } else if (NumFound > 1) { + ShowSevereError(cCurrentModuleObject + ": Too many objects in Input File, only one allowed."); + ErrorsFound = true; + } + } void GetDesignDayData(int &TotDesDays, // Total number of Design days to Setup bool &ErrorsFound) - { - - // SUBROUTINE INFORMATION: - // AUTHOR Richard Liesen - // DATE WRITTEN September 1997 - // MODIFIED - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // This subroutine retrieves the design day info from user input file - // which is later to be used in the Setup Design Day Routine. - - // METHODOLOGY EMPLOYED: - - // REFERENCES: - // SizingPeriod:DesignDay, - // A1, \field Name - // N1, \field Month - // N2, \field Day of Month - // A2, \field Day Type - // N3, \field Maximum Dry-Bulb Temperature - // N4, \field Daily Dry-Bulb Temperature Range - // A3, \field Dry-Bulb Temperature Range Modifier Type - // A4, \field Dry-Bulb Temperature Range Modifier Day Schedule Name - // A5, \field Humidity Condition Type - // N5, \field Wetbulb or DewPoint at Maximum Dry-Bulb - // A6, \field Humidity Condition Day Schedule Name - // N6, \field Humidity Ratio at Maximum Dry-Bulb - // N7, \field Enthalpy at Maximum Dry-Bulb !will require units transition. - // N8, \field Daily Wet-Bulb Temperature Range - // N9, \field Barometric Pressure - // N10, \field Wind Speed - // N11, \field Wind Direction - // A7, \field Rain Indicator - // A8, \field Snow Indicator - // A9, \field Daylight Saving Time Indicator - // A10, \field Solar Model Indicator - // A11, \field Beam Solar Day Schedule Name - // A12, \field Diffuse Solar Day Schedule Name - // N12, \field ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) - // N13, \field ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) - // N14; \field Sky Clearness - - // Using/Aliasing - using namespace DataIPShortCuts; - using General::FindNumberInList; + { + + // SUBROUTINE INFORMATION: + // AUTHOR Richard Liesen + // DATE WRITTEN September 1997 + // MODIFIED + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // This subroutine retrieves the design day info from user input file + // which is later to be used in the Setup Design Day Routine. + + // METHODOLOGY EMPLOYED: + + // REFERENCES: + // SizingPeriod:DesignDay, + // A1, \field Name + // N1, \field Month + // N2, \field Day of Month + // A2, \field Day Type + // N3, \field Maximum Dry-Bulb Temperature + // N4, \field Daily Dry-Bulb Temperature Range + // A3, \field Dry-Bulb Temperature Range Modifier Type + // A4, \field Dry-Bulb Temperature Range Modifier Day Schedule Name + // A5, \field Humidity Condition Type + // N5, \field Wetbulb or DewPoint at Maximum Dry-Bulb + // A6, \field Humidity Condition Day Schedule Name + // N6, \field Humidity Ratio at Maximum Dry-Bulb + // N7, \field Enthalpy at Maximum Dry-Bulb !will require units transition. + // N8, \field Daily Wet-Bulb Temperature Range + // N9, \field Barometric Pressure + // N10, \field Wind Speed + // N11, \field Wind Direction + // A7, \field Rain Indicator + // A8, \field Snow Indicator + // A9, \field Daylight Saving Time Indicator + // A10, \field Solar Model Indicator + // A11, \field Beam Solar Day Schedule Name + // A12, \field Diffuse Solar Day Schedule Name + // N12, \field ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) + // N13, \field ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) + // N14; \field Sky Clearness + + // Using/Aliasing + using namespace DataIPShortCuts; + using General::FindNumberInList; using General::RoundSigDigits; using ScheduleManager::CheckDayScheduleValueMinMax; - using ScheduleManager::GetDayScheduleIndex; - using ScheduleManager::GetSingleDayScheduleValues; - using namespace DataSystemVariables; - using namespace OutputReportPredefined; + using ScheduleManager::GetDayScheduleIndex; + using ScheduleManager::GetSingleDayScheduleValues; + using namespace DataSystemVariables; + using namespace OutputReportPredefined; - // SUBROUTINE PARAMETER DEFINITIONS: + // SUBROUTINE PARAMETER DEFINITIONS: static Array1D_string const ValidNames(12, {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "HOLIDAY", "SUMMERDESIGNDAY", "WINTERDESIGNDAY", "CUSTOMDAY1", "CUSTOMDAY2"}); static Array1D_string const HumidityIndicatingType({0, DDHumIndType_Count - 1}, @@ -6513,1305 +6560,1305 @@ Label9999: ; "WetBulbProfileDefaultMultipliers []", "WetBulbProfileDifferenceSchedule []", "WetBulbProfileMultiplierSchedule []"}); - // REAL(r64), PARAMETER, DIMENSION(24) :: DefaultTempRangeMult=(/ .87d0,.92d0,.96d0,.99d0,1.0d0,.98d0,.93d0, & - // .84d0,.71d0,.56d0,.39d0,.23d0, .11d0,.03d0,.00d0,.03d0,.10d0,.21d0,.34d0,.47d0,.58d0,.68d0,.76d0,.82d0 /) - // Below are the 2009 fractions, HOF, Chap 14, Table 6 + // REAL(r64), PARAMETER, DIMENSION(24) :: DefaultTempRangeMult=(/ .87d0,.92d0,.96d0,.99d0,1.0d0,.98d0,.93d0, & + // .84d0,.71d0,.56d0,.39d0,.23d0, .11d0,.03d0,.00d0,.03d0,.10d0,.21d0,.34d0,.47d0,.58d0,.68d0,.76d0,.82d0 /) + // Below are the 2009 fractions, HOF, Chap 14, Table 6 static Array1D const DefaultTempRangeMult(24, {0.88, 0.92, 0.95, 0.98, 1.0, 0.98, 0.91, 0.74, 0.55, 0.38, 0.23, 0.13, 0.05, 0.00, 0.00, 0.06, 0.14, 0.24, 0.39, 0.50, 0.59, 0.68, 0.75, 0.82}); - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - int EnvrnNum; // Environment Loop to pass to Design Day Setup Routine - int NumAlpha; // Number of material alpha names being passed - int NumNumerics; // Number of material properties being passed - int IOStat; // IO Status when calling get input subroutine - int HrLoop; - int TSLoop; - Real64 LastHrValue; - Real64 WNow; - Real64 WPrev; - Real64 testval; - bool errFlag; - int DDLoop; - std::string envTitle; - std::string units; - OutputProcessor::Unit unitType; - int schPtr; - bool MaxDryBulbEntered; - bool PressureEntered; - - // FLOW: - - DesDayInput.allocate( TotDesDays ); // Allocate the array to the # of DD's - DDDBRngModifier.allocate( NumOfTimeStepInHour, 24, TotDesDays ); - DDDBRngModifier = 0.0; - DDHumIndModifier.allocate( NumOfTimeStepInHour, 24, TotDesDays ); - DDHumIndModifier = 0.0; - DDBeamSolarValues.allocate( NumOfTimeStepInHour, 24, TotDesDays ); - DDBeamSolarValues = 0.0; - DDDiffuseSolarValues.allocate( NumOfTimeStepInHour, 24, TotDesDays ); - DDDiffuseSolarValues = 0.0; - DDSkyTempScheduleValues.allocate( NumOfTimeStepInHour, 24, TotDesDays ); - DDSkyTempScheduleValues = 0.0; - - SPSiteDryBulbRangeModScheduleValue.dimension( TotDesDays, 0.0 ); - SPSiteHumidityConditionScheduleValue.dimension( TotDesDays, 0.0 ); - SPSiteBeamSolarScheduleValue.dimension( TotDesDays, 0.0 ); - SPSiteDiffuseSolarScheduleValue.dimension( TotDesDays, 0.0 ); - SPSiteSkyTemperatureScheduleValue.dimension( TotDesDays, 0.0 ); - - if ( ReverseDD && TotDesDays <= 1 ) { - ShowSevereError( "GetDesignDayData: Reverse Design Day requested but # Design Days <=1" ); - } - - cCurrentModuleObject = "SizingPeriod:DesignDay"; - for ( DDLoop = 1; DDLoop <= TotDesDays; ++DDLoop ) { - - if ( ReverseDD ) { - if ( DDLoop == 1 && TotDesDays > 1 ) { - EnvrnNum = 2; - } else if ( DDLoop == 2 ) { - EnvrnNum = 1; - } else { - EnvrnNum = DDLoop; - } - } else { - EnvrnNum = DDLoop; - } - - //Call Input Get routine to retrieve design day data - MaxDryBulbEntered = false; - PressureEntered = false; + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + int EnvrnNum; // Environment Loop to pass to Design Day Setup Routine + int NumAlpha; // Number of material alpha names being passed + int NumNumerics; // Number of material properties being passed + int IOStat; // IO Status when calling get input subroutine + int HrLoop; + int TSLoop; + Real64 LastHrValue; + Real64 WNow; + Real64 WPrev; + Real64 testval; + bool errFlag; + int DDLoop; + std::string envTitle; + std::string units; + OutputProcessor::Unit unitType; + int schPtr; + bool MaxDryBulbEntered; + bool PressureEntered; + + // FLOW: + + DesDayInput.allocate(TotDesDays); // Allocate the array to the # of DD's + DDDBRngModifier.allocate(NumOfTimeStepInHour, 24, TotDesDays); + DDDBRngModifier = 0.0; + DDHumIndModifier.allocate(NumOfTimeStepInHour, 24, TotDesDays); + DDHumIndModifier = 0.0; + DDBeamSolarValues.allocate(NumOfTimeStepInHour, 24, TotDesDays); + DDBeamSolarValues = 0.0; + DDDiffuseSolarValues.allocate(NumOfTimeStepInHour, 24, TotDesDays); + DDDiffuseSolarValues = 0.0; + DDSkyTempScheduleValues.allocate(NumOfTimeStepInHour, 24, TotDesDays); + DDSkyTempScheduleValues = 0.0; + + SPSiteDryBulbRangeModScheduleValue.dimension(TotDesDays, 0.0); + SPSiteHumidityConditionScheduleValue.dimension(TotDesDays, 0.0); + SPSiteBeamSolarScheduleValue.dimension(TotDesDays, 0.0); + SPSiteDiffuseSolarScheduleValue.dimension(TotDesDays, 0.0); + SPSiteSkyTemperatureScheduleValue.dimension(TotDesDays, 0.0); + + if (ReverseDD && TotDesDays <= 1) { + ShowSevereError("GetDesignDayData: Reverse Design Day requested but # Design Days <=1"); + } + + cCurrentModuleObject = "SizingPeriod:DesignDay"; + for (DDLoop = 1; DDLoop <= TotDesDays; ++DDLoop) { + + if (ReverseDD) { + if (DDLoop == 1 && TotDesDays > 1) { + EnvrnNum = 2; + } else if (DDLoop == 2) { + EnvrnNum = 1; + } else { + EnvrnNum = DDLoop; + } + } else { + EnvrnNum = DDLoop; + } + + // Call Input Get routine to retrieve design day data + MaxDryBulbEntered = false; + PressureEntered = false; inputProcessor->getObjectItem(cCurrentModuleObject, DDLoop, cAlphaArgs, NumAlpha, rNumericArgs, NumNumerics, IOStat, lNumericFieldBlanks, lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - UtilityRoutines::IsNameEmpty(cAlphaArgs( 1 ), cCurrentModuleObject, ErrorsFound); - DesDayInput( EnvrnNum ).Title = cAlphaArgs( 1 ); // Environment name - Environment( EnvrnNum ).Title = DesDayInput( EnvrnNum ).Title; - - // N3, \field Maximum Dry-Bulb Temperature - // N4, \field Daily Dry-Bulb Temperature Range - // N9, \field Barometric Pressure - // N10, \field Wind Speed - // N11, \field Wind Direction - DesDayInput( EnvrnNum ).MaxDryBulb = rNumericArgs( 3 ); // Maximum Dry-Bulb Temperature (C) - if ( ! lNumericFieldBlanks( 3 ) ) MaxDryBulbEntered = true; - DesDayInput( EnvrnNum ).DailyDBRange = rNumericArgs( 4 ); // Daily dry-bulb temperature range (deltaC) - DesDayInput( EnvrnNum ).PressBarom = rNumericArgs( 9 ); // Atmospheric/Barometric Pressure (Pascals) - if ( ! lNumericFieldBlanks( 9 ) ) PressureEntered = true; - DesDayInput( EnvrnNum ).PressureEntered = PressureEntered; - DesDayInput( EnvrnNum ).WindSpeed = rNumericArgs( 10 ); // Wind Speed (m/s) - DesDayInput( EnvrnNum ).WindDir = mod( rNumericArgs( 11 ), 360.0 ); // Wind Direction - // (degrees clockwise from North, N=0, E=90, S=180, W=270) - // N1, \field Month - // N2, \field Day of Month - // N12, \field ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) - // N13, \field ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) - // N8, \field Daily Wet-Bulb Temperature Range - DesDayInput( EnvrnNum ).Month = int( rNumericArgs( 1 ) ); // Month of Year ( 1 - 12 ) - DesDayInput( EnvrnNum ).DayOfMonth = int( rNumericArgs( 2 ) ); // Day of Month ( 1 - 31 ) - DesDayInput( EnvrnNum ).TauB = rNumericArgs( 12 ); // beam tau >= 0 - DesDayInput( EnvrnNum ).TauD = rNumericArgs( 13 ); // diffuse tau >= 0 - DesDayInput( EnvrnNum ).DailyWBRange = rNumericArgs( 8 ); // Daily wet-bulb temperature range (deltaC) - - // N14; \field Sky Clearness - DesDayInput( EnvrnNum ).SkyClear = rNumericArgs( 14 ); // Sky Clearness (0 to 1) - - // A7, \field Rain Indicator - if ( UtilityRoutines::SameString( cAlphaArgs( 7 ), "Yes" ) || UtilityRoutines::SameString( cAlphaArgs( 7 ), "1" ) ) { - DesDayInput( EnvrnNum ).RainInd = 1; - } else if ( UtilityRoutines::SameString( cAlphaArgs( 7 ), "No" ) || UtilityRoutines::SameString( cAlphaArgs( 7 ), "0" ) || lAlphaFieldBlanks( 7 ) ) { - DesDayInput( EnvrnNum ).RainInd = 0; - } else { + UtilityRoutines::IsNameEmpty(cAlphaArgs(1), cCurrentModuleObject, ErrorsFound); + DesDayInput(EnvrnNum).Title = cAlphaArgs(1); // Environment name + Environment(EnvrnNum).Title = DesDayInput(EnvrnNum).Title; + + // N3, \field Maximum Dry-Bulb Temperature + // N4, \field Daily Dry-Bulb Temperature Range + // N9, \field Barometric Pressure + // N10, \field Wind Speed + // N11, \field Wind Direction + DesDayInput(EnvrnNum).MaxDryBulb = rNumericArgs(3); // Maximum Dry-Bulb Temperature (C) + if (!lNumericFieldBlanks(3)) MaxDryBulbEntered = true; + DesDayInput(EnvrnNum).DailyDBRange = rNumericArgs(4); // Daily dry-bulb temperature range (deltaC) + DesDayInput(EnvrnNum).PressBarom = rNumericArgs(9); // Atmospheric/Barometric Pressure (Pascals) + if (!lNumericFieldBlanks(9)) PressureEntered = true; + DesDayInput(EnvrnNum).PressureEntered = PressureEntered; + DesDayInput(EnvrnNum).WindSpeed = rNumericArgs(10); // Wind Speed (m/s) + DesDayInput(EnvrnNum).WindDir = mod(rNumericArgs(11), 360.0); // Wind Direction + // (degrees clockwise from North, N=0, E=90, S=180, W=270) + // N1, \field Month + // N2, \field Day of Month + // N12, \field ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) + // N13, \field ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) + // N8, \field Daily Wet-Bulb Temperature Range + DesDayInput(EnvrnNum).Month = int(rNumericArgs(1)); // Month of Year ( 1 - 12 ) + DesDayInput(EnvrnNum).DayOfMonth = int(rNumericArgs(2)); // Day of Month ( 1 - 31 ) + DesDayInput(EnvrnNum).TauB = rNumericArgs(12); // beam tau >= 0 + DesDayInput(EnvrnNum).TauD = rNumericArgs(13); // diffuse tau >= 0 + DesDayInput(EnvrnNum).DailyWBRange = rNumericArgs(8); // Daily wet-bulb temperature range (deltaC) + + // N14; \field Sky Clearness + DesDayInput(EnvrnNum).SkyClear = rNumericArgs(14); // Sky Clearness (0 to 1) + + // A7, \field Rain Indicator + if (UtilityRoutines::SameString(cAlphaArgs(7), "Yes") || UtilityRoutines::SameString(cAlphaArgs(7), "1")) { + DesDayInput(EnvrnNum).RainInd = 1; + } else if (UtilityRoutines::SameString(cAlphaArgs(7), "No") || UtilityRoutines::SameString(cAlphaArgs(7), "0") || lAlphaFieldBlanks(7)) { + DesDayInput(EnvrnNum).RainInd = 0; + } else { ShowWarningError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid field: " + cAlphaFieldNames(7) + "=\"" + cAlphaArgs(7) + "\"."); - ShowContinueError( "\"No\" will be used." ); - DesDayInput( EnvrnNum ).RainInd = 0; - } - - // A8, \field Snow Indicator - if ( UtilityRoutines::SameString( cAlphaArgs( 8 ), "Yes" ) || UtilityRoutines::SameString( cAlphaArgs( 8 ), "1" ) ) { - DesDayInput( EnvrnNum ).SnowInd = 1; - } else if ( UtilityRoutines::SameString( cAlphaArgs( 8 ), "No" ) || UtilityRoutines::SameString( cAlphaArgs( 8 ), "0" ) || lAlphaFieldBlanks( 8 ) ) { - DesDayInput( EnvrnNum ).SnowInd = 0; - } else { + ShowContinueError("\"No\" will be used."); + DesDayInput(EnvrnNum).RainInd = 0; + } + + // A8, \field Snow Indicator + if (UtilityRoutines::SameString(cAlphaArgs(8), "Yes") || UtilityRoutines::SameString(cAlphaArgs(8), "1")) { + DesDayInput(EnvrnNum).SnowInd = 1; + } else if (UtilityRoutines::SameString(cAlphaArgs(8), "No") || UtilityRoutines::SameString(cAlphaArgs(8), "0") || lAlphaFieldBlanks(8)) { + DesDayInput(EnvrnNum).SnowInd = 0; + } else { ShowWarningError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid field: " + cAlphaFieldNames(8) + "=\"" + cAlphaArgs(8) + "\"."); - ShowContinueError( "\"No\" will be used." ); - DesDayInput( EnvrnNum ).SnowInd = 0; - } - - // A3, \field Dry-Bulb Temperature Range Modifier Type - // check DB profile input - if ( lAlphaFieldBlanks( 3 ) ) { - cAlphaArgs( 3 ) = "DefaultMultipliers"; - DesDayInput( EnvrnNum ).DBTempRangeType = DDDBRangeType_Default; - } else if ( UtilityRoutines::SameString( cAlphaArgs( 3 ), "Multiplier" ) || UtilityRoutines::SameString( cAlphaArgs( 3 ), "MultiplierSchedule" ) ) { - cAlphaArgs( 3 ) = "MultiplierSchedule"; - DesDayInput( EnvrnNum ).DBTempRangeType = DDDBRangeType_Multiplier; - units = "[]"; - unitType = OutputProcessor::Unit::None; + ShowContinueError("\"No\" will be used."); + DesDayInput(EnvrnNum).SnowInd = 0; + } + + // A3, \field Dry-Bulb Temperature Range Modifier Type + // check DB profile input + if (lAlphaFieldBlanks(3)) { + cAlphaArgs(3) = "DefaultMultipliers"; + DesDayInput(EnvrnNum).DBTempRangeType = DDDBRangeType_Default; + } else if (UtilityRoutines::SameString(cAlphaArgs(3), "Multiplier") || UtilityRoutines::SameString(cAlphaArgs(3), "MultiplierSchedule")) { + cAlphaArgs(3) = "MultiplierSchedule"; + DesDayInput(EnvrnNum).DBTempRangeType = DDDBRangeType_Multiplier; + units = "[]"; + unitType = OutputProcessor::Unit::None; } else if (UtilityRoutines::SameString(cAlphaArgs(3), "Difference") || UtilityRoutines::SameString(cAlphaArgs(3), "Delta") || UtilityRoutines::SameString(cAlphaArgs(3), "DifferenceSchedule") || UtilityRoutines::SameString(cAlphaArgs(3), "DeltaSchedule")) { - cAlphaArgs( 3 ) = "DifferenceSchedule"; - DesDayInput( EnvrnNum ).DBTempRangeType = DDDBRangeType_Difference; - units = "[deltaC]"; - unitType = OutputProcessor::Unit::deltaC; - } else if ( UtilityRoutines::SameString( cAlphaArgs( 3 ), "DefaultMultipliers" ) ) { - cAlphaArgs( 3 ) = "DefaultMultipliers"; - DesDayInput( EnvrnNum ).DBTempRangeType = DDDBRangeType_Default; - // Validate Temperature - Daily range - } else if ( UtilityRoutines::SameString( cAlphaArgs( 3 ), "TemperatureProfileSchedule" ) ) { - cAlphaArgs( 3 ) = "TemperatureProfileSchedule"; - DesDayInput( EnvrnNum ).DBTempRangeType = DDDBRangeType_Profile; - units = "[C]"; - unitType = OutputProcessor::Unit::C; - } else { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cAlphaFieldNames( 3 ) + "=\"" + cAlphaArgs( 3 ) + "\"." ); - ErrorsFound = true; - cAlphaArgs( 3 ) = "invalid field"; - DesDayInput( EnvrnNum ).DBTempRangeType = DDDBRangeType_Default; - } - - if ( DesDayInput( EnvrnNum ).DBTempRangeType != DDDBRangeType_Profile && ! MaxDryBulbEntered && cAlphaArgs( 3 ) != "invalid field" ) { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid blank field: " + cNumericFieldNames( 3 ) ); - ShowContinueError( "..this field is required when " + cAlphaFieldNames( 3 ) + "=\"" + cAlphaArgs( 3 ) + "\"." ); - ErrorsFound = true; - } - - // Assume either "multiplier" option will make full use of range... - if ( DesDayInput( EnvrnNum ).DBTempRangeType != DDDBRangeType_Difference && DesDayInput( EnvrnNum ).DBTempRangeType != DDDBRangeType_Profile ) { - testval = DesDayInput( EnvrnNum ).MaxDryBulb - DesDayInput( EnvrnNum ).DailyDBRange; - errFlag = false; + cAlphaArgs(3) = "DifferenceSchedule"; + DesDayInput(EnvrnNum).DBTempRangeType = DDDBRangeType_Difference; + units = "[deltaC]"; + unitType = OutputProcessor::Unit::deltaC; + } else if (UtilityRoutines::SameString(cAlphaArgs(3), "DefaultMultipliers")) { + cAlphaArgs(3) = "DefaultMultipliers"; + DesDayInput(EnvrnNum).DBTempRangeType = DDDBRangeType_Default; + // Validate Temperature - Daily range + } else if (UtilityRoutines::SameString(cAlphaArgs(3), "TemperatureProfileSchedule")) { + cAlphaArgs(3) = "TemperatureProfileSchedule"; + DesDayInput(EnvrnNum).DBTempRangeType = DDDBRangeType_Profile; + units = "[C]"; + unitType = OutputProcessor::Unit::C; + } else { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cAlphaFieldNames(3) + "=\"" + cAlphaArgs(3) + "\"."); + ErrorsFound = true; + cAlphaArgs(3) = "invalid field"; + DesDayInput(EnvrnNum).DBTempRangeType = DDDBRangeType_Default; + } + + if (DesDayInput(EnvrnNum).DBTempRangeType != DDDBRangeType_Profile && !MaxDryBulbEntered && cAlphaArgs(3) != "invalid field") { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid blank field: " + cNumericFieldNames(3)); + ShowContinueError("..this field is required when " + cAlphaFieldNames(3) + "=\"" + cAlphaArgs(3) + "\"."); + ErrorsFound = true; + } + + // Assume either "multiplier" option will make full use of range... + if (DesDayInput(EnvrnNum).DBTempRangeType != DDDBRangeType_Difference && DesDayInput(EnvrnNum).DBTempRangeType != DDDBRangeType_Profile) { + testval = DesDayInput(EnvrnNum).MaxDryBulb - DesDayInput(EnvrnNum).DailyDBRange; + errFlag = false; inputProcessor->rangeCheck(errFlag, cAlphaFieldNames(3), cCurrentModuleObject, "Severe", ">= -90", (testval >= -90.0), "<= 70", (testval <= 70.0), _, DesDayInput(EnvrnNum).Title); - if ( errFlag ) { - ErrorsFound = true; - } - } - - // A4, \field Dry-Bulb Temperature Range Modifier Day Schedule Name - if ( DesDayInput( EnvrnNum ).DBTempRangeType != DDDBRangeType_Default ) { - if ( ! lAlphaFieldBlanks( 4 ) ) { - DesDayInput( EnvrnNum ).TempRangeSchPtr = GetDayScheduleIndex( cAlphaArgs( 4 ) ); - if ( DesDayInput( EnvrnNum ).TempRangeSchPtr == 0 ) { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cAlphaFieldNames( 4 ) + "=\"" + cAlphaArgs( 4 ) + "\"." ); - ErrorsFound = true; - } else { - GetSingleDayScheduleValues( DesDayInput( EnvrnNum ).TempRangeSchPtr, DDDBRngModifier( _, _, EnvrnNum ) ); - schPtr = FindNumberInList( DesDayInput( EnvrnNum ).TempRangeSchPtr, SPSiteScheduleNamePtr, NumSPSiteScheduleNamePtrs ); - if ( schPtr == 0 ) { - ++NumSPSiteScheduleNamePtrs; - SPSiteScheduleNamePtr( NumSPSiteScheduleNamePtrs ) = DesDayInput( EnvrnNum ).TempRangeSchPtr; - SPSiteScheduleUnits( NumSPSiteScheduleNamePtrs ) = units; + if (errFlag) { + ErrorsFound = true; + } + } + + // A4, \field Dry-Bulb Temperature Range Modifier Day Schedule Name + if (DesDayInput(EnvrnNum).DBTempRangeType != DDDBRangeType_Default) { + if (!lAlphaFieldBlanks(4)) { + DesDayInput(EnvrnNum).TempRangeSchPtr = GetDayScheduleIndex(cAlphaArgs(4)); + if (DesDayInput(EnvrnNum).TempRangeSchPtr == 0) { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cAlphaFieldNames(4) + "=\"" + cAlphaArgs(4) + "\"."); + ErrorsFound = true; + } else { + GetSingleDayScheduleValues(DesDayInput(EnvrnNum).TempRangeSchPtr, DDDBRngModifier(_, _, EnvrnNum)); + schPtr = FindNumberInList(DesDayInput(EnvrnNum).TempRangeSchPtr, SPSiteScheduleNamePtr, NumSPSiteScheduleNamePtrs); + if (schPtr == 0) { + ++NumSPSiteScheduleNamePtrs; + SPSiteScheduleNamePtr(NumSPSiteScheduleNamePtrs) = DesDayInput(EnvrnNum).TempRangeSchPtr; + SPSiteScheduleUnits(NumSPSiteScheduleNamePtrs) = units; SetupOutputVariable("Sizing Period Site Drybulb Temperature Range Modifier Schedule Value", unitType, SPSiteDryBulbRangeModScheduleValue(EnvrnNum), "Zone", "Average", cAlphaArgs(4)); - } else if ( SPSiteScheduleUnits( schPtr ) != units ) { - ++NumSPSiteScheduleNamePtrs; - SPSiteScheduleNamePtr( NumSPSiteScheduleNamePtrs ) = DesDayInput( EnvrnNum ).TempRangeSchPtr; - SPSiteScheduleUnits( NumSPSiteScheduleNamePtrs ) = units; + } else if (SPSiteScheduleUnits(schPtr) != units) { + ++NumSPSiteScheduleNamePtrs; + SPSiteScheduleNamePtr(NumSPSiteScheduleNamePtrs) = DesDayInput(EnvrnNum).TempRangeSchPtr; + SPSiteScheduleUnits(NumSPSiteScheduleNamePtrs) = units; SetupOutputVariable("Sizing Period Site Drybulb Temperature Range Modifier Schedule Value", unitType, SPSiteDryBulbRangeModScheduleValue(EnvrnNum), "Zone", "Average", cAlphaArgs(4)); - } - if ( cAlphaArgs( 3 ) == "MultiplierSchedule" ) { - if ( ! CheckDayScheduleValueMinMax( DesDayInput( EnvrnNum ).TempRangeSchPtr, 0.0, ">=", 1.0, "<=" ) ) { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cAlphaFieldNames( 4 ) + "=\"" + cAlphaArgs( 4 ) + "\"." ); - ShowContinueError( "..Specified [Schedule] Dry-bulb Range Multiplier Values are not within [0.0, 1.0]" ); - ErrorsFound = true; - } - } else if ( cAlphaArgs( 3 ) == "DifferenceSchedule" ) { // delta, must be > 0.0 - if ( ! CheckDayScheduleValueMinMax( DesDayInput( EnvrnNum ).TempRangeSchPtr, 0.0, ">=" ) ) { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cAlphaFieldNames( 4 ) + "=\"" + cAlphaArgs( 4 ) + "\"." ); - ShowSevereError( "Some [Schedule] Dry-bulb Range Difference Values are < 0.0 [would make max larger]." ); - ErrorsFound = true; - } - } - if ( cAlphaArgs( 3 ) == "TemperatureProfileSchedule" ) { - testval = maxval( DDDBRngModifier( _, _, EnvrnNum ) ); - if ( MaxDryBulbEntered ) { - ShowWarningError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", data override." ); + } + if (cAlphaArgs(3) == "MultiplierSchedule") { + if (!CheckDayScheduleValueMinMax(DesDayInput(EnvrnNum).TempRangeSchPtr, 0.0, ">=", 1.0, "<=")) { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cAlphaFieldNames(4) + "=\"" + cAlphaArgs(4) + "\"."); + ShowContinueError("..Specified [Schedule] Dry-bulb Range Multiplier Values are not within [0.0, 1.0]"); + ErrorsFound = true; + } + } else if (cAlphaArgs(3) == "DifferenceSchedule") { // delta, must be > 0.0 + if (!CheckDayScheduleValueMinMax(DesDayInput(EnvrnNum).TempRangeSchPtr, 0.0, ">=")) { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cAlphaFieldNames(4) + "=\"" + cAlphaArgs(4) + "\"."); + ShowSevereError("Some [Schedule] Dry-bulb Range Difference Values are < 0.0 [would make max larger]."); + ErrorsFound = true; + } + } + if (cAlphaArgs(3) == "TemperatureProfileSchedule") { + testval = maxval(DDDBRngModifier(_, _, EnvrnNum)); + if (MaxDryBulbEntered) { + ShowWarningError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", data override."); ShowContinueError(".." + cNumericFieldNames(3) + "=[" + RoundSigDigits(DesDayInput(EnvrnNum).MaxDryBulb, 2) + "] will be overwritten."); - ShowContinueError( ".." + cAlphaFieldNames( 3 ) + "=\"" + cAlphaArgs( 3 ) + "\"." ); - ShowContinueError( "..with max value=[" + RoundSigDigits( testval, 2 ) + "]." ); - } - DesDayInput( EnvrnNum ).MaxDryBulb = testval; - } - testval = maxval( DDDBRngModifier( _, _, EnvrnNum ) ); - testval = DesDayInput( EnvrnNum ).MaxDryBulb - testval; - errFlag = false; + ShowContinueError(".." + cAlphaFieldNames(3) + "=\"" + cAlphaArgs(3) + "\"."); + ShowContinueError("..with max value=[" + RoundSigDigits(testval, 2) + "]."); + } + DesDayInput(EnvrnNum).MaxDryBulb = testval; + } + testval = maxval(DDDBRngModifier(_, _, EnvrnNum)); + testval = DesDayInput(EnvrnNum).MaxDryBulb - testval; + errFlag = false; inputProcessor->rangeCheck(errFlag, cAlphaFieldNames(4), cCurrentModuleObject, "Severe", ">= -90", (testval >= -90.0), "<= 70", (testval <= 70.0), _, DesDayInput(EnvrnNum).Title); - if ( errFlag ) { - ErrorsFound = true; - } - } - } else { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cAlphaFieldNames( 4 ) + " is blank." ); - ShowContinueError( "..required when " + cAlphaFieldNames( 3 ) + " indicates \"SCHEDULE\"." ); - ErrorsFound = true; - } - } else { - // Default dry-bulb temperature Range - LastHrValue = DefaultTempRangeMult( 24 ); - for ( HrLoop = 1; HrLoop <= 24; ++HrLoop ) { - for ( TSLoop = 1; TSLoop <= NumOfTimeStepInHour; ++TSLoop ) { - WNow = Interpolation( TSLoop ); - WPrev = 1.0 - WNow; - DDDBRngModifier( TSLoop, HrLoop, EnvrnNum ) = LastHrValue * WPrev + DefaultTempRangeMult( HrLoop ) * WNow; - } - LastHrValue = DefaultTempRangeMult( HrLoop ); - } - } - - // A5, \field Humidity Condition Type - if ( UtilityRoutines::SameString( cAlphaArgs( 5 ), "WetBulb" ) ) { - cAlphaArgs( 5 ) = "WetBulb"; - // N5, \field Wetbulb or DewPoint at Maximum Dry-Bulb - if ( ! lNumericFieldBlanks( 5 ) ) { - DesDayInput( EnvrnNum ).HumIndValue = rNumericArgs( 5 ); // Humidity Indicating Conditions at Max Dry-Bulb - } else { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cNumericFieldNames( 5 ) + " is blank." ); - ShowContinueError( "..field is required when " + cAlphaFieldNames( 5 ) + "=\"" + cAlphaArgs( 5 ) + "\"." ); - ErrorsFound = true; - } - errFlag = false; - DesDayInput( EnvrnNum ).HumIndType = DDHumIndType_WetBulb; + if (errFlag) { + ErrorsFound = true; + } + } + } else { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cAlphaFieldNames(4) + " is blank."); + ShowContinueError("..required when " + cAlphaFieldNames(3) + " indicates \"SCHEDULE\"."); + ErrorsFound = true; + } + } else { + // Default dry-bulb temperature Range + LastHrValue = DefaultTempRangeMult(24); + for (HrLoop = 1; HrLoop <= 24; ++HrLoop) { + for (TSLoop = 1; TSLoop <= NumOfTimeStepInHour; ++TSLoop) { + WNow = Interpolation(TSLoop); + WPrev = 1.0 - WNow; + DDDBRngModifier(TSLoop, HrLoop, EnvrnNum) = LastHrValue * WPrev + DefaultTempRangeMult(HrLoop) * WNow; + } + LastHrValue = DefaultTempRangeMult(HrLoop); + } + } + + // A5, \field Humidity Condition Type + if (UtilityRoutines::SameString(cAlphaArgs(5), "WetBulb")) { + cAlphaArgs(5) = "WetBulb"; + // N5, \field Wetbulb or DewPoint at Maximum Dry-Bulb + if (!lNumericFieldBlanks(5)) { + DesDayInput(EnvrnNum).HumIndValue = rNumericArgs(5); // Humidity Indicating Conditions at Max Dry-Bulb + } else { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cNumericFieldNames(5) + " is blank."); + ShowContinueError("..field is required when " + cAlphaFieldNames(5) + "=\"" + cAlphaArgs(5) + "\"."); + ErrorsFound = true; + } + errFlag = false; + DesDayInput(EnvrnNum).HumIndType = DDHumIndType_WetBulb; inputProcessor->rangeCheck(errFlag, cAlphaFieldNames(5) + " - Wet-Bulb", cCurrentModuleObject, "Severe", ">= -90", (DesDayInput(EnvrnNum).HumIndValue >= -90.0), "<= 70", (DesDayInput(EnvrnNum).HumIndValue <= 70.0), _, DesDayInput(EnvrnNum).Title); - if ( errFlag ) { - // CALL ShowContinueError(TRIM(cCurrentModuleObject)//': Occured in '//TRIM(DesDayInput(EnvrnNum)%Title)) - ErrorsFound = true; - } - } else if ( UtilityRoutines::SameString( cAlphaArgs( 5 ), "DewPoint" ) ) { - cAlphaArgs( 5 ) = "DewPoint"; - if ( ! lNumericFieldBlanks( 5 ) ) { - DesDayInput( EnvrnNum ).HumIndValue = rNumericArgs( 5 ); // Humidity Indicating Conditions at Max Dry-Bulb - } else { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cNumericFieldNames( 5 ) + " is blank." ); - ShowContinueError( "..field is required when " + cAlphaFieldNames( 5 ) + "=\"" + cAlphaArgs( 5 ) + "\"." ); - ErrorsFound = true; - } - errFlag = false; - DesDayInput( EnvrnNum ).HumIndType = DDHumIndType_DewPoint; + if (errFlag) { + // CALL ShowContinueError(TRIM(cCurrentModuleObject)//': Occured in '//TRIM(DesDayInput(EnvrnNum)%Title)) + ErrorsFound = true; + } + } else if (UtilityRoutines::SameString(cAlphaArgs(5), "DewPoint")) { + cAlphaArgs(5) = "DewPoint"; + if (!lNumericFieldBlanks(5)) { + DesDayInput(EnvrnNum).HumIndValue = rNumericArgs(5); // Humidity Indicating Conditions at Max Dry-Bulb + } else { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cNumericFieldNames(5) + " is blank."); + ShowContinueError("..field is required when " + cAlphaFieldNames(5) + "=\"" + cAlphaArgs(5) + "\"."); + ErrorsFound = true; + } + errFlag = false; + DesDayInput(EnvrnNum).HumIndType = DDHumIndType_DewPoint; inputProcessor->rangeCheck(errFlag, cAlphaFieldNames(5) + " - Dew-Point", cCurrentModuleObject, "Severe", ">= -90", (DesDayInput(EnvrnNum).HumIndValue >= -90.0), "<= 70", (DesDayInput(EnvrnNum).HumIndValue <= 70.0), _, DesDayInput(EnvrnNum).Title); - if ( errFlag ) { - ErrorsFound = true; - } - } else if ( UtilityRoutines::SameString( cAlphaArgs( 5 ), "HumidityRatio" ) ) { - cAlphaArgs( 5 ) = "HumidityRatio"; - // N6, \field Humidity Ratio at Maximum Dry-Bulb - if ( ! lNumericFieldBlanks( 6 ) ) { - DesDayInput( EnvrnNum ).HumIndValue = rNumericArgs( 6 ); // Humidity Indicating Conditions at Max Dry-Bulb - } else { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cNumericFieldNames( 6 ) + " is blank." ); - ShowContinueError( "..field is required when " + cAlphaFieldNames( 5 ) + "=\"" + cAlphaArgs( 5 ) + "\"." ); - ErrorsFound = true; - } - errFlag = false; - DesDayInput( EnvrnNum ).HumIndType = DDHumIndType_HumRatio; + if (errFlag) { + ErrorsFound = true; + } + } else if (UtilityRoutines::SameString(cAlphaArgs(5), "HumidityRatio")) { + cAlphaArgs(5) = "HumidityRatio"; + // N6, \field Humidity Ratio at Maximum Dry-Bulb + if (!lNumericFieldBlanks(6)) { + DesDayInput(EnvrnNum).HumIndValue = rNumericArgs(6); // Humidity Indicating Conditions at Max Dry-Bulb + } else { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cNumericFieldNames(6) + " is blank."); + ShowContinueError("..field is required when " + cAlphaFieldNames(5) + "=\"" + cAlphaArgs(5) + "\"."); + ErrorsFound = true; + } + errFlag = false; + DesDayInput(EnvrnNum).HumIndType = DDHumIndType_HumRatio; inputProcessor->rangeCheck(errFlag, cAlphaFieldNames(5) + " - Humidity-Ratio", cCurrentModuleObject, "Severe", ">= 0", (DesDayInput(EnvrnNum).HumIndValue >= 0.0), "<= .03", (DesDayInput(EnvrnNum).HumIndValue <= 0.03), _, DesDayInput(EnvrnNum).Title); - if ( errFlag ) { - ErrorsFound = true; - } - } else if ( UtilityRoutines::SameString( cAlphaArgs( 5 ), "Enthalpy" ) ) { - cAlphaArgs( 5 ) = "Enthalpy"; - // N7, \field Enthalpy at Maximum Dry-Bulb !will require units transition. - if ( ! lNumericFieldBlanks( 7 ) ) { - DesDayInput( EnvrnNum ).HumIndValue = rNumericArgs( 7 ); // Humidity Indicating Conditions at Max Dry-Bulb - } else { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cNumericFieldNames( 7 ) + " is blank." ); - ShowContinueError( "..field is required when " + cAlphaFieldNames( 5 ) + "=\"" + cAlphaArgs( 5 ) + "\"." ); - ErrorsFound = true; - } - errFlag = false; - DesDayInput( EnvrnNum ).HumIndType = DDHumIndType_Enthalpy; + if (errFlag) { + ErrorsFound = true; + } + } else if (UtilityRoutines::SameString(cAlphaArgs(5), "Enthalpy")) { + cAlphaArgs(5) = "Enthalpy"; + // N7, \field Enthalpy at Maximum Dry-Bulb !will require units transition. + if (!lNumericFieldBlanks(7)) { + DesDayInput(EnvrnNum).HumIndValue = rNumericArgs(7); // Humidity Indicating Conditions at Max Dry-Bulb + } else { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cNumericFieldNames(7) + " is blank."); + ShowContinueError("..field is required when " + cAlphaFieldNames(5) + "=\"" + cAlphaArgs(5) + "\"."); + ErrorsFound = true; + } + errFlag = false; + DesDayInput(EnvrnNum).HumIndType = DDHumIndType_Enthalpy; inputProcessor->rangeCheck(errFlag, cAlphaFieldNames(5) + " - Enthalpy", "SizingPeriod:DesignDay", "Severe", ">= 0.0", (DesDayInput(EnvrnNum).HumIndValue >= 0.0), "<= 130000", (DesDayInput(EnvrnNum).HumIndValue <= 130000.0), _, DesDayInput(EnvrnNum).Title); - if ( errFlag ) { - ErrorsFound = true; - } - } else if ( UtilityRoutines::SameString( cAlphaArgs( 5 ), "RelativeHumiditySchedule" ) ) { - cAlphaArgs( 5 ) = "RelativeHumiditySchedule"; - DesDayInput( EnvrnNum ).HumIndType = DDHumIndType_RelHumSch; - units = "[%]"; - unitType = OutputProcessor::Unit::Perc; - } else if ( UtilityRoutines::SameString( cAlphaArgs( 5 ), "WetBulbProfileMultiplierSchedule" ) ) { - cAlphaArgs( 5 ) = "WetBulbProfileMultiplierSchedule"; - DesDayInput( EnvrnNum ).HumIndType = DDHumIndType_WBProfMul; - units = "[]"; - unitType = OutputProcessor::Unit::None; - if ( ! lNumericFieldBlanks( 5 ) ) { - DesDayInput( EnvrnNum ).HumIndValue = rNumericArgs( 5 ); // Humidity Indicating Conditions at Max Dry-Bulb - } else { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cNumericFieldNames( 5 ) + " is blank." ); - ShowContinueError( "..field is required when " + cAlphaFieldNames( 5 ) + "=\"" + cAlphaArgs( 5 ) + "\"." ); - ErrorsFound = true; - } - } else if ( UtilityRoutines::SameString( cAlphaArgs( 5 ), "WetBulbProfileDifferenceSchedule" ) ) { - cAlphaArgs( 5 ) = "WetBulbProfileDifferenceSchedule"; - DesDayInput( EnvrnNum ).HumIndType = DDHumIndType_WBProfDif; - units = "[]"; - unitType = OutputProcessor::Unit::None; - if ( ! lNumericFieldBlanks( 5 ) ) { - DesDayInput( EnvrnNum ).HumIndValue = rNumericArgs( 5 ); // Humidity Indicating Conditions at Max Dry-Bulb - } else { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cNumericFieldNames( 5 ) + " is blank." ); - ShowContinueError( "..field is required when " + cAlphaFieldNames( 5 ) + "=\"" + cAlphaArgs( 5 ) + "\"." ); - ErrorsFound = true; - } - } else if ( UtilityRoutines::SameString( cAlphaArgs( 5 ), "WetBulbProfileDefaultMultipliers" ) ) { - cAlphaArgs( 5 ) = "WetBulbProfileDefaultMultipliers"; - DesDayInput( EnvrnNum ).HumIndType = DDHumIndType_WBProfDef; - if ( ! lNumericFieldBlanks( 5 ) ) { - DesDayInput( EnvrnNum ).HumIndValue = rNumericArgs( 5 ); // Humidity Indicating Conditions at Max Dry-Bulb - } else { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cNumericFieldNames( 5 ) + " is blank." ); - ShowContinueError( "..field is required when " + cAlphaFieldNames( 5 ) + "=\"" + cAlphaArgs( 5 ) + "\"." ); - ErrorsFound = true; - } - } else { - ShowWarningError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cAlphaFieldNames( 5 ) + "=\"" + cAlphaArgs( 5 ) + "\"." ); - ShowContinueError( "WetBulb will be used. Maximum Dry Bulb will be used as WetBulb at Maximum Dry Bulb." ); - cAlphaArgs( 5 ) = "WetBulb"; - DesDayInput( EnvrnNum ).HumIndType = DDHumIndType_WetBulb; - DesDayInput( EnvrnNum ).HumIndValue = rNumericArgs( 3 ); - } - - // resolve humidity schedule if needed - // A6, \field Humidity Condition Day Schedule Name + if (errFlag) { + ErrorsFound = true; + } + } else if (UtilityRoutines::SameString(cAlphaArgs(5), "RelativeHumiditySchedule")) { + cAlphaArgs(5) = "RelativeHumiditySchedule"; + DesDayInput(EnvrnNum).HumIndType = DDHumIndType_RelHumSch; + units = "[%]"; + unitType = OutputProcessor::Unit::Perc; + } else if (UtilityRoutines::SameString(cAlphaArgs(5), "WetBulbProfileMultiplierSchedule")) { + cAlphaArgs(5) = "WetBulbProfileMultiplierSchedule"; + DesDayInput(EnvrnNum).HumIndType = DDHumIndType_WBProfMul; + units = "[]"; + unitType = OutputProcessor::Unit::None; + if (!lNumericFieldBlanks(5)) { + DesDayInput(EnvrnNum).HumIndValue = rNumericArgs(5); // Humidity Indicating Conditions at Max Dry-Bulb + } else { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cNumericFieldNames(5) + " is blank."); + ShowContinueError("..field is required when " + cAlphaFieldNames(5) + "=\"" + cAlphaArgs(5) + "\"."); + ErrorsFound = true; + } + } else if (UtilityRoutines::SameString(cAlphaArgs(5), "WetBulbProfileDifferenceSchedule")) { + cAlphaArgs(5) = "WetBulbProfileDifferenceSchedule"; + DesDayInput(EnvrnNum).HumIndType = DDHumIndType_WBProfDif; + units = "[]"; + unitType = OutputProcessor::Unit::None; + if (!lNumericFieldBlanks(5)) { + DesDayInput(EnvrnNum).HumIndValue = rNumericArgs(5); // Humidity Indicating Conditions at Max Dry-Bulb + } else { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cNumericFieldNames(5) + " is blank."); + ShowContinueError("..field is required when " + cAlphaFieldNames(5) + "=\"" + cAlphaArgs(5) + "\"."); + ErrorsFound = true; + } + } else if (UtilityRoutines::SameString(cAlphaArgs(5), "WetBulbProfileDefaultMultipliers")) { + cAlphaArgs(5) = "WetBulbProfileDefaultMultipliers"; + DesDayInput(EnvrnNum).HumIndType = DDHumIndType_WBProfDef; + if (!lNumericFieldBlanks(5)) { + DesDayInput(EnvrnNum).HumIndValue = rNumericArgs(5); // Humidity Indicating Conditions at Max Dry-Bulb + } else { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cNumericFieldNames(5) + " is blank."); + ShowContinueError("..field is required when " + cAlphaFieldNames(5) + "=\"" + cAlphaArgs(5) + "\"."); + ErrorsFound = true; + } + } else { + ShowWarningError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cAlphaFieldNames(5) + "=\"" + cAlphaArgs(5) + "\"."); + ShowContinueError("WetBulb will be used. Maximum Dry Bulb will be used as WetBulb at Maximum Dry Bulb."); + cAlphaArgs(5) = "WetBulb"; + DesDayInput(EnvrnNum).HumIndType = DDHumIndType_WetBulb; + DesDayInput(EnvrnNum).HumIndValue = rNumericArgs(3); + } + + // resolve humidity schedule if needed + // A6, \field Humidity Condition Day Schedule Name if (DesDayInput(EnvrnNum).HumIndType == DDHumIndType_RelHumSch || DesDayInput(EnvrnNum).HumIndType == DDHumIndType_WBProfMul || DesDayInput(EnvrnNum).HumIndType == DDHumIndType_WBProfDif) { - if ( lAlphaFieldBlanks( 6 ) ) { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cAlphaFieldNames( 6 ) + " is blank." ); - ShowContinueError( "..field is required when " + cAlphaFieldNames( 3 ) + "=\"" + cAlphaArgs( 3 ) + "\"." ); - ErrorsFound = true; - } else { - DesDayInput( EnvrnNum ).HumIndSchPtr = GetDayScheduleIndex( cAlphaArgs( 6 ) ); - if ( DesDayInput( EnvrnNum ).HumIndSchPtr == 0 ) { - ShowWarningError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cAlphaFieldNames( 6 ) + "=\"" + cAlphaArgs( 6 ) + "\"." ); - ShowContinueError( "Default Humidity will be used (constant for day using Humidity Indicator Temp)." ); - // reset HumIndType ? - } else { - - GetSingleDayScheduleValues( DesDayInput( EnvrnNum ).HumIndSchPtr, DDHumIndModifier( _, _, EnvrnNum ) ); - - schPtr = FindNumberInList( DesDayInput( EnvrnNum ).HumIndSchPtr, SPSiteScheduleNamePtr, NumSPSiteScheduleNamePtrs ); - if ( schPtr == 0 ) { - ++NumSPSiteScheduleNamePtrs; - SPSiteScheduleNamePtr( NumSPSiteScheduleNamePtrs ) = DesDayInput( EnvrnNum ).HumIndSchPtr; - SPSiteScheduleUnits( NumSPSiteScheduleNamePtrs ) = units; + if (lAlphaFieldBlanks(6)) { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cAlphaFieldNames(6) + " is blank."); + ShowContinueError("..field is required when " + cAlphaFieldNames(3) + "=\"" + cAlphaArgs(3) + "\"."); + ErrorsFound = true; + } else { + DesDayInput(EnvrnNum).HumIndSchPtr = GetDayScheduleIndex(cAlphaArgs(6)); + if (DesDayInput(EnvrnNum).HumIndSchPtr == 0) { + ShowWarningError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cAlphaFieldNames(6) + "=\"" + cAlphaArgs(6) + "\"."); + ShowContinueError("Default Humidity will be used (constant for day using Humidity Indicator Temp)."); + // reset HumIndType ? + } else { + + GetSingleDayScheduleValues(DesDayInput(EnvrnNum).HumIndSchPtr, DDHumIndModifier(_, _, EnvrnNum)); + + schPtr = FindNumberInList(DesDayInput(EnvrnNum).HumIndSchPtr, SPSiteScheduleNamePtr, NumSPSiteScheduleNamePtrs); + if (schPtr == 0) { + ++NumSPSiteScheduleNamePtrs; + SPSiteScheduleNamePtr(NumSPSiteScheduleNamePtrs) = DesDayInput(EnvrnNum).HumIndSchPtr; + SPSiteScheduleUnits(NumSPSiteScheduleNamePtrs) = units; SetupOutputVariable("Sizing Period Site Humidity Condition Schedule Value", unitType, SPSiteHumidityConditionScheduleValue(EnvrnNum), "Zone", "Average", cAlphaArgs(6)); - } else if ( SPSiteScheduleUnits( schPtr ) != units ) { - ++NumSPSiteScheduleNamePtrs; - SPSiteScheduleNamePtr( NumSPSiteScheduleNamePtrs ) = DesDayInput( EnvrnNum ).HumIndSchPtr; - SPSiteScheduleUnits( NumSPSiteScheduleNamePtrs ) = units; + } else if (SPSiteScheduleUnits(schPtr) != units) { + ++NumSPSiteScheduleNamePtrs; + SPSiteScheduleNamePtr(NumSPSiteScheduleNamePtrs) = DesDayInput(EnvrnNum).HumIndSchPtr; + SPSiteScheduleUnits(NumSPSiteScheduleNamePtrs) = units; SetupOutputVariable("Sizing Period Site Humidity Condition Schedule Value", unitType, SPSiteHumidityConditionScheduleValue(EnvrnNum), "Zone", "Average", cAlphaArgs(6)); - } + } { auto const SELECT_CASE_var(DesDayInput(EnvrnNum).HumIndType); - if ( SELECT_CASE_var == DDHumIndType_RelHumSch ) { - if ( ! CheckDayScheduleValueMinMax( DesDayInput( EnvrnNum ).HumIndSchPtr, 0.0, ">=", 100.0, "<=" ) ) { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cAlphaFieldNames( 6 ) + "=\"" + cAlphaArgs( 6 ) + "\"." ); - ShowContinueError( "Specified [Scheduled] Relative Humidity Values are not within [0.0, 100.0]" ); - ErrorsFound = true; - } - - } else if ( SELECT_CASE_var == DDHumIndType_WBProfMul ) { - // multiplier: use schedule value, check 0 <= v <= 1 - if ( ! CheckDayScheduleValueMinMax( DesDayInput( EnvrnNum ).HumIndSchPtr, 0.0, ">=", 1.0, "<=" ) ) { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cAlphaFieldNames( 6 ) + "=\"" + cAlphaArgs( 6 ) + "\"." ); - ShowContinueError( "..Specified [Schedule] Wet-bulb Profile Range Multiplier Values are not within [0.0, 1.0]" ); - ErrorsFound = true; - } - - } else if ( SELECT_CASE_var == DDHumIndType_WBProfDif ) { - if ( ! CheckDayScheduleValueMinMax( DesDayInput( EnvrnNum ).HumIndSchPtr, 0.0, ">=" ) ) { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cAlphaFieldNames( 6 ) + "=\"" + cAlphaArgs( 6 ) + "\"." ); - ShowSevereError( "Some [Schedule] Wet-bulb Profile Difference Values are < 0.0 [would make max larger]." ); - ErrorsFound = true; - } + if (SELECT_CASE_var == DDHumIndType_RelHumSch) { + if (!CheckDayScheduleValueMinMax(DesDayInput(EnvrnNum).HumIndSchPtr, 0.0, ">=", 100.0, "<=")) { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cAlphaFieldNames(6) + "=\"" + cAlphaArgs(6) + "\"."); + ShowContinueError("Specified [Scheduled] Relative Humidity Values are not within [0.0, 100.0]"); + ErrorsFound = true; + } + + } else if (SELECT_CASE_var == DDHumIndType_WBProfMul) { + // multiplier: use schedule value, check 0 <= v <= 1 + if (!CheckDayScheduleValueMinMax(DesDayInput(EnvrnNum).HumIndSchPtr, 0.0, ">=", 1.0, "<=")) { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cAlphaFieldNames(6) + "=\"" + cAlphaArgs(6) + "\"."); + ShowContinueError("..Specified [Schedule] Wet-bulb Profile Range Multiplier Values are not within [0.0, 1.0]"); + ErrorsFound = true; + } + + } else if (SELECT_CASE_var == DDHumIndType_WBProfDif) { + if (!CheckDayScheduleValueMinMax(DesDayInput(EnvrnNum).HumIndSchPtr, 0.0, ">=")) { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cAlphaFieldNames(6) + "=\"" + cAlphaArgs(6) + "\"."); + ShowSevereError("Some [Schedule] Wet-bulb Profile Difference Values are < 0.0 [would make max larger]."); + ErrorsFound = true; + } } } - } - } - - } else if ( DesDayInput( EnvrnNum ).HumIndType == DDHumIndType_WBProfDef ) { - // re WetBulbProfileDefaultMultipliers - LastHrValue = DefaultTempRangeMult( 24 ); - for ( HrLoop = 1; HrLoop <= 24; ++HrLoop ) { - for ( TSLoop = 1; TSLoop <= NumOfTimeStepInHour; ++TSLoop ) { - WNow = Interpolation( TSLoop ); - WPrev = 1.0 - WNow; - DDHumIndModifier( TSLoop, HrLoop, EnvrnNum ) = LastHrValue * WPrev + DefaultTempRangeMult( HrLoop ) * WNow; - } - LastHrValue = DefaultTempRangeMult( HrLoop ); - } - // ELSE missing case? - } - - // verify that design WB or DP <= design DB + } + } + + } else if (DesDayInput(EnvrnNum).HumIndType == DDHumIndType_WBProfDef) { + // re WetBulbProfileDefaultMultipliers + LastHrValue = DefaultTempRangeMult(24); + for (HrLoop = 1; HrLoop <= 24; ++HrLoop) { + for (TSLoop = 1; TSLoop <= NumOfTimeStepInHour; ++TSLoop) { + WNow = Interpolation(TSLoop); + WPrev = 1.0 - WNow; + DDHumIndModifier(TSLoop, HrLoop, EnvrnNum) = LastHrValue * WPrev + DefaultTempRangeMult(HrLoop) * WNow; + } + LastHrValue = DefaultTempRangeMult(HrLoop); + } + // ELSE missing case? + } + + // verify that design WB or DP <= design DB if (DesDayInput(EnvrnNum).HumIndType == DDHumIndType_DewPoint || DesDayInput(EnvrnNum).HumIndType == DDHumIndType_WetBulb || DesDayInput(EnvrnNum).HumIndType == DDHumIndType_WBProfMul || DesDayInput(EnvrnNum).HumIndType == DDHumIndType_WBProfDef || DesDayInput(EnvrnNum).HumIndType == DDHumIndType_WBProfDif) { - if ( DesDayInput( EnvrnNum ).HumIndValue > DesDayInput( EnvrnNum ).MaxDryBulb ) { - ShowWarningError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", range check data." ); + if (DesDayInput(EnvrnNum).HumIndValue > DesDayInput(EnvrnNum).MaxDryBulb) { + ShowWarningError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", range check data."); ShowContinueError("..Humidity Indicator Temperature at Max Temperature=" + RoundSigDigits(DesDayInput(EnvrnNum).HumIndValue, 1) + " > Max DryBulb=" + RoundSigDigits(DesDayInput(EnvrnNum).MaxDryBulb, 1)); - ShowContinueError( ".." + cAlphaFieldNames( 5 ) + "=\"" + cAlphaArgs( 5 ) + "\"." ); - ShowContinueError( "..Conditions for day will be set to Relative Humidity = 100%" ); - if ( DesDayInput( EnvrnNum ).HumIndType == DDHumIndType_DewPoint ) { - DesDayInput( EnvrnNum ).DewPointNeedsSet = true; - } else { - // wet-bulb - DesDayInput( EnvrnNum ).HumIndValue = DesDayInput( EnvrnNum ).MaxDryBulb; - } - } - } - - // A10, \field Solar Model Indicator - if ( lAlphaFieldBlanks( 10 ) ) { - DesDayInput( EnvrnNum ).SolarModel = ASHRAE_ClearSky; - } else if ( UtilityRoutines::SameString( cAlphaArgs( 10 ), "ASHRAEClearSky" ) || UtilityRoutines::SameString( cAlphaArgs( 10 ), "CLEARSKY" ) ) { - DesDayInput( EnvrnNum ).SolarModel = ASHRAE_ClearSky; - } else if ( UtilityRoutines::SameString( cAlphaArgs( 10 ), "ZhangHuang" ) ) { - DesDayInput( EnvrnNum ).SolarModel = Zhang_Huang; - } else if ( UtilityRoutines::SameString( cAlphaArgs( 10 ), "ASHRAETau" ) ) { - DesDayInput( EnvrnNum ).SolarModel = ASHRAE_Tau; - } else if ( UtilityRoutines::SameString( cAlphaArgs( 10 ), "Schedule" ) ) { - DesDayInput( EnvrnNum ).SolarModel = SolarModel_Schedule; - } else { - ShowWarningError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cAlphaFieldNames( 10 ) + "=\"" + cAlphaArgs( 10 ) + "\"." ); - ShowContinueError( "Model used will be ASHRAE ClearSky" ); - DesDayInput( EnvrnNum ).SolarModel = ASHRAE_ClearSky; - } - - if ( DesDayInput( EnvrnNum ).SolarModel == SolarModel_Schedule ) { - // A11, \field Beam Solar Day Schedule Name - if ( ! lAlphaFieldBlanks( 11 ) ) { - DesDayInput( EnvrnNum ).BeamSolarSchPtr = GetDayScheduleIndex( cAlphaArgs( 11 ) ); - if ( DesDayInput( EnvrnNum ).BeamSolarSchPtr == 0 ) { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cAlphaFieldNames( 11 ) + "=\"" + cAlphaArgs( 11 ) + "\"." ); - ShowContinueError( "..Required when " + cAlphaFieldNames( 10 ) + " indicates \"Schedule\"." ); - ErrorsFound = true; - } else { - GetSingleDayScheduleValues( DesDayInput( EnvrnNum ).BeamSolarSchPtr, DDBeamSolarValues( _, _, EnvrnNum ) ); - schPtr = FindNumberInList( DesDayInput( EnvrnNum ).BeamSolarSchPtr, SPSiteScheduleNamePtr, NumSPSiteScheduleNamePtrs ); - units = "[W/m2]"; - unitType = OutputProcessor::Unit::W_m2; - if ( schPtr == 0 ) { - ++NumSPSiteScheduleNamePtrs; - SPSiteScheduleNamePtr( NumSPSiteScheduleNamePtrs ) = DesDayInput( EnvrnNum ).BeamSolarSchPtr; - SPSiteScheduleUnits( NumSPSiteScheduleNamePtrs ) = units; + ShowContinueError(".." + cAlphaFieldNames(5) + "=\"" + cAlphaArgs(5) + "\"."); + ShowContinueError("..Conditions for day will be set to Relative Humidity = 100%"); + if (DesDayInput(EnvrnNum).HumIndType == DDHumIndType_DewPoint) { + DesDayInput(EnvrnNum).DewPointNeedsSet = true; + } else { + // wet-bulb + DesDayInput(EnvrnNum).HumIndValue = DesDayInput(EnvrnNum).MaxDryBulb; + } + } + } + + // A10, \field Solar Model Indicator + if (lAlphaFieldBlanks(10)) { + DesDayInput(EnvrnNum).SolarModel = ASHRAE_ClearSky; + } else if (UtilityRoutines::SameString(cAlphaArgs(10), "ASHRAEClearSky") || UtilityRoutines::SameString(cAlphaArgs(10), "CLEARSKY")) { + DesDayInput(EnvrnNum).SolarModel = ASHRAE_ClearSky; + } else if (UtilityRoutines::SameString(cAlphaArgs(10), "ZhangHuang")) { + DesDayInput(EnvrnNum).SolarModel = Zhang_Huang; + } else if (UtilityRoutines::SameString(cAlphaArgs(10), "ASHRAETau")) { + DesDayInput(EnvrnNum).SolarModel = ASHRAE_Tau; + } else if (UtilityRoutines::SameString(cAlphaArgs(10), "Schedule")) { + DesDayInput(EnvrnNum).SolarModel = SolarModel_Schedule; + } else { + ShowWarningError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cAlphaFieldNames(10) + "=\"" + cAlphaArgs(10) + "\"."); + ShowContinueError("Model used will be ASHRAE ClearSky"); + DesDayInput(EnvrnNum).SolarModel = ASHRAE_ClearSky; + } + + if (DesDayInput(EnvrnNum).SolarModel == SolarModel_Schedule) { + // A11, \field Beam Solar Day Schedule Name + if (!lAlphaFieldBlanks(11)) { + DesDayInput(EnvrnNum).BeamSolarSchPtr = GetDayScheduleIndex(cAlphaArgs(11)); + if (DesDayInput(EnvrnNum).BeamSolarSchPtr == 0) { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cAlphaFieldNames(11) + "=\"" + cAlphaArgs(11) + "\"."); + ShowContinueError("..Required when " + cAlphaFieldNames(10) + " indicates \"Schedule\"."); + ErrorsFound = true; + } else { + GetSingleDayScheduleValues(DesDayInput(EnvrnNum).BeamSolarSchPtr, DDBeamSolarValues(_, _, EnvrnNum)); + schPtr = FindNumberInList(DesDayInput(EnvrnNum).BeamSolarSchPtr, SPSiteScheduleNamePtr, NumSPSiteScheduleNamePtrs); + units = "[W/m2]"; + unitType = OutputProcessor::Unit::W_m2; + if (schPtr == 0) { + ++NumSPSiteScheduleNamePtrs; + SPSiteScheduleNamePtr(NumSPSiteScheduleNamePtrs) = DesDayInput(EnvrnNum).BeamSolarSchPtr; + SPSiteScheduleUnits(NumSPSiteScheduleNamePtrs) = units; SetupOutputVariable("Sizing Period Site Beam Solar Schedule Value", unitType, SPSiteBeamSolarScheduleValue(EnvrnNum), "Zone", "Average", cAlphaArgs(11)); - } else if ( SPSiteScheduleUnits( schPtr ) != units ) { - ++NumSPSiteScheduleNamePtrs; - SPSiteScheduleNamePtr( NumSPSiteScheduleNamePtrs ) = DesDayInput( EnvrnNum ).BeamSolarSchPtr; - SPSiteScheduleUnits( NumSPSiteScheduleNamePtrs ) = units; + } else if (SPSiteScheduleUnits(schPtr) != units) { + ++NumSPSiteScheduleNamePtrs; + SPSiteScheduleNamePtr(NumSPSiteScheduleNamePtrs) = DesDayInput(EnvrnNum).BeamSolarSchPtr; + SPSiteScheduleUnits(NumSPSiteScheduleNamePtrs) = units; SetupOutputVariable("Sizing Period Site Beam Solar Schedule Value", unitType, SPSiteBeamSolarScheduleValue(EnvrnNum), "Zone", "Average", cAlphaArgs(11)); - } - if ( ! CheckDayScheduleValueMinMax( DesDayInput( EnvrnNum ).BeamSolarSchPtr, 0.0, ">=" ) ) { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cAlphaFieldNames( 11 ) + "=\"" + cAlphaArgs( 11 ) + "\"." ); - ShowContinueError( "..Specified [Schedule] Values are not >= 0.0" ); - ErrorsFound = true; - } - } - } else { // should have entered beam schedule - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cAlphaFieldNames( 11 ) + " is blank." ); - ErrorsFound = true; - } - // A12, \field Diffuse Solar Day Schedule Name - if ( ! lAlphaFieldBlanks( 12 ) ) { - DesDayInput( EnvrnNum ).DiffuseSolarSchPtr = GetDayScheduleIndex( cAlphaArgs( 12 ) ); - if ( DesDayInput( EnvrnNum ).DiffuseSolarSchPtr == 0 ) { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cAlphaFieldNames( 12 ) + "=\"" + cAlphaArgs( 12 ) + "\"." ); - ShowContinueError( "..Required when " + cAlphaFieldNames( 10 ) + " indicates \"Schedule\"." ); - ErrorsFound = true; - } else { - GetSingleDayScheduleValues( DesDayInput( EnvrnNum ).DiffuseSolarSchPtr, DDDiffuseSolarValues( _, _, EnvrnNum ) ); - schPtr = FindNumberInList( DesDayInput( EnvrnNum ).DiffuseSolarSchPtr, SPSiteScheduleNamePtr, NumSPSiteScheduleNamePtrs ); - units = "[W/m2]"; - unitType = OutputProcessor::Unit::W_m2; - if ( schPtr == 0 ) { - ++NumSPSiteScheduleNamePtrs; - SPSiteScheduleNamePtr( NumSPSiteScheduleNamePtrs ) = DesDayInput( EnvrnNum ).DiffuseSolarSchPtr; - SPSiteScheduleUnits( NumSPSiteScheduleNamePtrs ) = units; + } + if (!CheckDayScheduleValueMinMax(DesDayInput(EnvrnNum).BeamSolarSchPtr, 0.0, ">=")) { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cAlphaFieldNames(11) + "=\"" + cAlphaArgs(11) + "\"."); + ShowContinueError("..Specified [Schedule] Values are not >= 0.0"); + ErrorsFound = true; + } + } + } else { // should have entered beam schedule + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cAlphaFieldNames(11) + " is blank."); + ErrorsFound = true; + } + // A12, \field Diffuse Solar Day Schedule Name + if (!lAlphaFieldBlanks(12)) { + DesDayInput(EnvrnNum).DiffuseSolarSchPtr = GetDayScheduleIndex(cAlphaArgs(12)); + if (DesDayInput(EnvrnNum).DiffuseSolarSchPtr == 0) { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cAlphaFieldNames(12) + "=\"" + cAlphaArgs(12) + "\"."); + ShowContinueError("..Required when " + cAlphaFieldNames(10) + " indicates \"Schedule\"."); + ErrorsFound = true; + } else { + GetSingleDayScheduleValues(DesDayInput(EnvrnNum).DiffuseSolarSchPtr, DDDiffuseSolarValues(_, _, EnvrnNum)); + schPtr = FindNumberInList(DesDayInput(EnvrnNum).DiffuseSolarSchPtr, SPSiteScheduleNamePtr, NumSPSiteScheduleNamePtrs); + units = "[W/m2]"; + unitType = OutputProcessor::Unit::W_m2; + if (schPtr == 0) { + ++NumSPSiteScheduleNamePtrs; + SPSiteScheduleNamePtr(NumSPSiteScheduleNamePtrs) = DesDayInput(EnvrnNum).DiffuseSolarSchPtr; + SPSiteScheduleUnits(NumSPSiteScheduleNamePtrs) = units; SetupOutputVariable("Sizing Period Site Diffuse Solar Schedule Value", unitType, SPSiteDiffuseSolarScheduleValue(EnvrnNum), "Zone", "Average", cAlphaArgs(12)); - } else if ( SPSiteScheduleUnits( schPtr ) != units ) { - ++NumSPSiteScheduleNamePtrs; - SPSiteScheduleNamePtr( NumSPSiteScheduleNamePtrs ) = DesDayInput( EnvrnNum ).DiffuseSolarSchPtr; - SPSiteScheduleUnits( NumSPSiteScheduleNamePtrs ) = units; + } else if (SPSiteScheduleUnits(schPtr) != units) { + ++NumSPSiteScheduleNamePtrs; + SPSiteScheduleNamePtr(NumSPSiteScheduleNamePtrs) = DesDayInput(EnvrnNum).DiffuseSolarSchPtr; + SPSiteScheduleUnits(NumSPSiteScheduleNamePtrs) = units; SetupOutputVariable("Sizing Period Site Diffuse Solar Schedule Value", unitType, SPSiteDiffuseSolarScheduleValue(EnvrnNum), "Zone", "Average", cAlphaArgs(12)); - } - if ( ! CheckDayScheduleValueMinMax( DesDayInput( EnvrnNum ).DiffuseSolarSchPtr, 0.0, ">=" ) ) { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cAlphaFieldNames( 12 ) + "=\"" + cAlphaArgs( 12 ) + "\"." ); - ShowContinueError( "..Specified [Schedule] Values are not >= 0.0" ); - ErrorsFound = true; - } - } - } else { // should have entered diffuse schedule - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cAlphaFieldNames( 12 ) + " is blank." ); - ErrorsFound = true; - } - } - - if ( DesDayInput( EnvrnNum ).SolarModel == ASHRAE_ClearSky ) { - if ( lNumericFieldBlanks( 14 ) ) { - ShowWarningError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cNumericFieldNames( 14 ) + " is blank." ); - ShowContinueError( "..Zero clear sky (no solar) will be used." ); - } - } - - // Validate Design Day Month + } + if (!CheckDayScheduleValueMinMax(DesDayInput(EnvrnNum).DiffuseSolarSchPtr, 0.0, ">=")) { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cAlphaFieldNames(12) + "=\"" + cAlphaArgs(12) + "\"."); + ShowContinueError("..Specified [Schedule] Values are not >= 0.0"); + ErrorsFound = true; + } + } + } else { // should have entered diffuse schedule + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cAlphaFieldNames(12) + " is blank."); + ErrorsFound = true; + } + } + + if (DesDayInput(EnvrnNum).SolarModel == ASHRAE_ClearSky) { + if (lNumericFieldBlanks(14)) { + ShowWarningError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cNumericFieldNames(14) + " is blank."); + ShowContinueError("..Zero clear sky (no solar) will be used."); + } + } + + // Validate Design Day Month { auto const SELECT_CASE_var(DesDayInput(EnvrnNum).Month); if ((SELECT_CASE_var == 1) || (SELECT_CASE_var == 3) || (SELECT_CASE_var == 5) || (SELECT_CASE_var == 7) || (SELECT_CASE_var == 8) || (SELECT_CASE_var == 10) || (SELECT_CASE_var == 12)) { - if ( DesDayInput( EnvrnNum ).DayOfMonth > 31 ) { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); + if (DesDayInput(EnvrnNum).DayOfMonth > 31) { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); ShowContinueError(".. invalid field: " + cNumericFieldNames(2) + "=[" + RoundSigDigits(DesDayInput(EnvrnNum).DayOfMonth) + "], Month=[" + RoundSigDigits(DesDayInput(EnvrnNum).Month) + "]."); - ErrorsFound = true; - } - } else if ( ( SELECT_CASE_var == 4 ) || ( SELECT_CASE_var == 6 ) || ( SELECT_CASE_var == 9 ) || ( SELECT_CASE_var == 11 ) ) { - if ( DesDayInput( EnvrnNum ).DayOfMonth > 30 ) { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); + ErrorsFound = true; + } + } else if ((SELECT_CASE_var == 4) || (SELECT_CASE_var == 6) || (SELECT_CASE_var == 9) || (SELECT_CASE_var == 11)) { + if (DesDayInput(EnvrnNum).DayOfMonth > 30) { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); ShowContinueError(".. invalid " + cNumericFieldNames(2) + "=[" + RoundSigDigits(DesDayInput(EnvrnNum).DayOfMonth) + "], Month=[" + RoundSigDigits(DesDayInput(EnvrnNum).Month) + "]."); - ErrorsFound = true; - } - } else if ( SELECT_CASE_var == 2 ) { - if ( DesDayInput( EnvrnNum ).DayOfMonth > 28 ) { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); + ErrorsFound = true; + } + } else if (SELECT_CASE_var == 2) { + if (DesDayInput(EnvrnNum).DayOfMonth > 28) { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); ShowContinueError(".. invalid " + cNumericFieldNames(2) + "=[" + RoundSigDigits(DesDayInput(EnvrnNum).DayOfMonth) + "], Month=[" + RoundSigDigits(DesDayInput(EnvrnNum).Month) + "]."); - ErrorsFound = true; - } - } else { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); + ErrorsFound = true; + } + } else { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); ShowContinueError(".. invalid " + cNumericFieldNames(1) + " invalid (Month) [" + RoundSigDigits(DesDayInput(EnvrnNum).Month) + "]."); - ErrorsFound = true; + ErrorsFound = true; } } - // A9, \field Daylight Saving Time Indicator - if ( UtilityRoutines::SameString( cAlphaArgs( 9 ), "Yes" ) || UtilityRoutines::SameString( cAlphaArgs( 9 ), "1" ) ) { - DesDayInput( EnvrnNum ).DSTIndicator = 1; - } else if ( UtilityRoutines::SameString( cAlphaArgs( 9 ), "No" ) || UtilityRoutines::SameString( cAlphaArgs( 9 ), "0" ) || lAlphaFieldBlanks( 9 ) ) { - DesDayInput( EnvrnNum ).DSTIndicator = 0; - } else { - ShowWarningError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cAlphaFieldNames( 9 ) + "=\"" + cAlphaArgs( 9 ) + "\". \"No\" will be used." ); - DesDayInput( EnvrnNum ).DSTIndicator = 0; - } - - // A2, \field Day Type - DesDayInput( EnvrnNum ).DayType = UtilityRoutines::FindItemInList( cAlphaArgs( 2 ), ValidNames, 12 ); - if ( DesDayInput( EnvrnNum ).DayType == 0 ) { - ShowSevereError( cCurrentModuleObject + "=\"" + DesDayInput( EnvrnNum ).Title + "\", invalid data." ); - ShowContinueError( "..invalid field: " + cAlphaFieldNames( 2 ) + "=\"" + cAlphaArgs( 2 ) + "\"." ); + // A9, \field Daylight Saving Time Indicator + if (UtilityRoutines::SameString(cAlphaArgs(9), "Yes") || UtilityRoutines::SameString(cAlphaArgs(9), "1")) { + DesDayInput(EnvrnNum).DSTIndicator = 1; + } else if (UtilityRoutines::SameString(cAlphaArgs(9), "No") || UtilityRoutines::SameString(cAlphaArgs(9), "0") || lAlphaFieldBlanks(9)) { + DesDayInput(EnvrnNum).DSTIndicator = 0; + } else { + ShowWarningError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cAlphaFieldNames(9) + "=\"" + cAlphaArgs(9) + "\". \"No\" will be used."); + DesDayInput(EnvrnNum).DSTIndicator = 0; + } + + // A2, \field Day Type + DesDayInput(EnvrnNum).DayType = UtilityRoutines::FindItemInList(cAlphaArgs(2), ValidNames, 12); + if (DesDayInput(EnvrnNum).DayType == 0) { + ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); + ShowContinueError("..invalid field: " + cAlphaFieldNames(2) + "=\"" + cAlphaArgs(2) + "\"."); ShowContinueError("Valid values are " "Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Holiday,SummerDesignDay,WinterDesignDay,CustomDay1," "CustomDay2."); - ErrorsFound = true; - } - - Environment( EnvrnNum ).Title = DesDayInput( EnvrnNum ).Title; - Environment( EnvrnNum ).KindOfEnvrn = ksDesignDay; - Environment( EnvrnNum ).DesignDayNum = EnvrnNum; - Environment( EnvrnNum ).RunPeriodDesignNum = 0; - Environment( EnvrnNum ).TotalDays = 1; - Environment( EnvrnNum ).StartMonth = DesDayInput( EnvrnNum ).Month; - Environment( EnvrnNum ).StartDay = DesDayInput( EnvrnNum ).DayOfMonth; - Environment( EnvrnNum ).EndMonth = Environment( EnvrnNum ).StartMonth; - Environment( EnvrnNum ).EndDay = Environment( EnvrnNum ).StartDay; - Environment( EnvrnNum ).DayOfWeek = 0; - Environment( EnvrnNum ).UseDST = false; - Environment( EnvrnNum ).UseHolidays = false; - Environment( EnvrnNum ).StartJDay = DesignDay( EnvrnNum ).DayOfYear; - Environment( EnvrnNum ).EndJDay = Environment( EnvrnNum ).StartJDay; - - //create predefined report on design day - envTitle = DesDayInput( EnvrnNum ).Title; - PreDefTableEntry( pdchDDmaxDB, envTitle, DesDayInput( EnvrnNum ).MaxDryBulb ); - PreDefTableEntry( pdchDDrange, envTitle, DesDayInput( EnvrnNum ).DailyDBRange ); - if ( DesDayInput( EnvrnNum ).HumIndType != DDHumIndType_RelHumSch ) { - PreDefTableEntry( pdchDDhumid, envTitle, DesDayInput( EnvrnNum ).HumIndValue ); - } else { - PreDefTableEntry( pdchDDhumid, envTitle, "N/A" ); - } - PreDefTableEntry( pdchDDhumTyp, envTitle, HumidityIndicatingType( DesDayInput( EnvrnNum ).HumIndType ) ); - PreDefTableEntry( pdchDDwindSp, envTitle, DesDayInput( EnvrnNum ).WindSpeed ); - PreDefTableEntry( pdchDDwindDr, envTitle, DesDayInput( EnvrnNum ).WindDir ); - } - } + ErrorsFound = true; + } + + Environment(EnvrnNum).Title = DesDayInput(EnvrnNum).Title; + Environment(EnvrnNum).KindOfEnvrn = ksDesignDay; + Environment(EnvrnNum).DesignDayNum = EnvrnNum; + Environment(EnvrnNum).RunPeriodDesignNum = 0; + Environment(EnvrnNum).TotalDays = 1; + Environment(EnvrnNum).StartMonth = DesDayInput(EnvrnNum).Month; + Environment(EnvrnNum).StartDay = DesDayInput(EnvrnNum).DayOfMonth; + Environment(EnvrnNum).EndMonth = Environment(EnvrnNum).StartMonth; + Environment(EnvrnNum).EndDay = Environment(EnvrnNum).StartDay; + Environment(EnvrnNum).DayOfWeek = 0; + Environment(EnvrnNum).UseDST = false; + Environment(EnvrnNum).UseHolidays = false; + Environment(EnvrnNum).StartJDay = DesignDay(EnvrnNum).DayOfYear; + Environment(EnvrnNum).EndJDay = Environment(EnvrnNum).StartJDay; + + // create predefined report on design day + envTitle = DesDayInput(EnvrnNum).Title; + PreDefTableEntry(pdchDDmaxDB, envTitle, DesDayInput(EnvrnNum).MaxDryBulb); + PreDefTableEntry(pdchDDrange, envTitle, DesDayInput(EnvrnNum).DailyDBRange); + if (DesDayInput(EnvrnNum).HumIndType != DDHumIndType_RelHumSch) { + PreDefTableEntry(pdchDDhumid, envTitle, DesDayInput(EnvrnNum).HumIndValue); + } else { + PreDefTableEntry(pdchDDhumid, envTitle, "N/A"); + } + PreDefTableEntry(pdchDDhumTyp, envTitle, HumidityIndicatingType(DesDayInput(EnvrnNum).HumIndType)); + PreDefTableEntry(pdchDDwindSp, envTitle, DesDayInput(EnvrnNum).WindSpeed); + PreDefTableEntry(pdchDDwindDr, envTitle, DesDayInput(EnvrnNum).WindDir); + } + } void GetLocationInfo(bool &ErrorsFound) - { - - // SUBROUTINE INFORMATION: - // AUTHOR Richard Liesen - // DATE WRITTEN October 1997 - // MODIFIED - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // This subroutine gets the location info from the IDF file; latitude, - // longitude and time zone number. - - // Using/Aliasing - using namespace DataIPShortCuts; - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - int LocNumAlpha; // Number of alpha names being passed - int LocNumProp; // Number of properties being passed - int IOStat; // IO Status when calling get input subroutine - Array1D_string LocNames( 1 ); // Temp Array to transfer location info - Array1D< Real64 > LocProps( 4 ); // Temporary array to transfer location info - int NumLocations; - - // FLOW: - cCurrentModuleObject = "Site:Location"; - NumLocations = inputProcessor->getNumObjectsFound( cCurrentModuleObject ); - - if ( NumLocations > 1 ) { - ShowSevereError( cCurrentModuleObject + ": Too many objects entered. Only one allowed." ); - ErrorsFound = true; - } - - if ( NumLocations == 1 ) { - //Call Input Get routine to retrieve Location information - inputProcessor->getObjectItem( cCurrentModuleObject, 1, LocNames, LocNumAlpha, LocProps, LocNumProp, IOStat ); - - //set latitude, longitude, and time zone number variables - LocationTitle = LocNames( 1 ); - Latitude = LocProps( 1 ); - Longitude = LocProps( 2 ); - TimeZoneNumber = LocProps( 3 ); - Elevation = LocProps( 4 ); - LocationGathered = true; - } - } + { + + // SUBROUTINE INFORMATION: + // AUTHOR Richard Liesen + // DATE WRITTEN October 1997 + // MODIFIED + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // This subroutine gets the location info from the IDF file; latitude, + // longitude and time zone number. + + // Using/Aliasing + using namespace DataIPShortCuts; + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + int LocNumAlpha; // Number of alpha names being passed + int LocNumProp; // Number of properties being passed + int IOStat; // IO Status when calling get input subroutine + Array1D_string LocNames(1); // Temp Array to transfer location info + Array1D LocProps(4); // Temporary array to transfer location info + int NumLocations; + + // FLOW: + cCurrentModuleObject = "Site:Location"; + NumLocations = inputProcessor->getNumObjectsFound(cCurrentModuleObject); + + if (NumLocations > 1) { + ShowSevereError(cCurrentModuleObject + ": Too many objects entered. Only one allowed."); + ErrorsFound = true; + } + + if (NumLocations == 1) { + // Call Input Get routine to retrieve Location information + inputProcessor->getObjectItem(cCurrentModuleObject, 1, LocNames, LocNumAlpha, LocProps, LocNumProp, IOStat); + + // set latitude, longitude, and time zone number variables + LocationTitle = LocNames(1); + Latitude = LocProps(1); + Longitude = LocProps(2); + TimeZoneNumber = LocProps(3); + Elevation = LocProps(4); + LocationGathered = true; + } + } void GetWeatherProperties(bool &ErrorsFound) - { - - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN July 2009 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // Weather properties are an advanced concept for simulation. Primarily, these properties are - // used in the test suite runs that have specific requirements for certain properties (such as - // sky temperature). - - // METHODOLOGY EMPLOYED: - // na - - // REFERENCES: - // WeatherProperty:SkyTemperature, - // \memo This object is used to override internal sky temperature calculations. - // A1, \field Name - // \reference DesignDays - // \note leave blank for RunPeriods (until we name them) - // \note This field references the applicable design day or runperiod(s) if left blank. - // A2, \field Calculation Type - // \type choice - // \key ScheduleValue - // \key DifferenceScheduleDryBulbValue - // \key DifferenceScheduleDewPointValue - // \key AlgorithmA - // A3; \field Schedule Name - // \type object-list - // \object-list DayScheduleNames - // \object-list ScheduleNames - - // Using/Aliasing - using ScheduleManager::GetDayScheduleIndex; + { + + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN July 2009 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // Weather properties are an advanced concept for simulation. Primarily, these properties are + // used in the test suite runs that have specific requirements for certain properties (such as + // sky temperature). + + // METHODOLOGY EMPLOYED: + // na + + // REFERENCES: + // WeatherProperty:SkyTemperature, + // \memo This object is used to override internal sky temperature calculations. + // A1, \field Name + // \reference DesignDays + // \note leave blank for RunPeriods (until we name them) + // \note This field references the applicable design day or runperiod(s) if left blank. + // A2, \field Calculation Type + // \type choice + // \key ScheduleValue + // \key DifferenceScheduleDryBulbValue + // \key DifferenceScheduleDewPointValue + // \key AlgorithmA + // A3; \field Schedule Name + // \type object-list + // \object-list DayScheduleNames + // \object-list ScheduleNames + + // Using/Aliasing + using ScheduleManager::GetDayScheduleIndex; using ScheduleManager::GetScheduleIndex; - using namespace DataIPShortCuts; - using General::FindNumberInList; - - // SUBROUTINE PARAMETER DEFINITIONS: - static std::string const RoutineName( "GetWeatherProperties:" ); - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - int Item; - int IOStat; - int NumAlpha; - int NumNumerics; - int Found; - int envFound; - int Count; - int schPtr; - bool MultipleEnvironments; - std::string units; - OutputProcessor::Unit unitType; - - cCurrentModuleObject = "WeatherProperty:SkyTemperature"; - NumWPSkyTemperatures = inputProcessor->getNumObjectsFound( cCurrentModuleObject ); - - WPSkyTemperature.allocate( NumWPSkyTemperatures ); // by default, not used. - - for ( Item = 1; Item <= NumWPSkyTemperatures; ++Item ) { - MultipleEnvironments = false; + using namespace DataIPShortCuts; + using General::FindNumberInList; + + // SUBROUTINE PARAMETER DEFINITIONS: + static std::string const RoutineName("GetWeatherProperties:"); + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + int Item; + int IOStat; + int NumAlpha; + int NumNumerics; + int Found; + int envFound; + int Count; + int schPtr; + bool MultipleEnvironments; + std::string units; + OutputProcessor::Unit unitType; + + cCurrentModuleObject = "WeatherProperty:SkyTemperature"; + NumWPSkyTemperatures = inputProcessor->getNumObjectsFound(cCurrentModuleObject); + + WPSkyTemperature.allocate(NumWPSkyTemperatures); // by default, not used. + + for (Item = 1; Item <= NumWPSkyTemperatures; ++Item) { + MultipleEnvironments = false; inputProcessor->getObjectItem(cCurrentModuleObject, Item, cAlphaArgs, NumAlpha, rNumericArgs, NumNumerics, IOStat, lNumericFieldBlanks, lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); { auto const SELECT_CASE_var(cAlphaArgs(1)); - if ( SELECT_CASE_var == "" ) { - Found = 0; - for ( Count = 1; Count <= NumOfEnvrn; ++Count ) { - if ( Environment( Count ).KindOfEnvrn != ksRunPeriodWeather ) continue; - if ( Environment( Count ).WP_Type1 != 0 ) { + if (SELECT_CASE_var == "") { + Found = 0; + for (Count = 1; Count <= NumOfEnvrn; ++Count) { + if (Environment(Count).KindOfEnvrn != ksRunPeriodWeather) continue; + if (Environment(Count).WP_Type1 != 0) { ShowSevereError(RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + "\", indicated Environment Name already assigned."); - if ( ! Environment( Count ).Title.empty() ) { + if (!Environment(Count).Title.empty()) { ShowContinueError("...Environment=\"" + Environment(Count).Title + "\", already using " + cCurrentModuleObject + "=\"" + WPSkyTemperature(Environment(Count).WP_Type1).Name + "\"."); - } else { + } else { ShowContinueError("... Runperiod Environment, already using " + cCurrentModuleObject + "=\"" + WPSkyTemperature(Environment(Count).WP_Type1).Name + "\"."); - } - ErrorsFound = true; - } else { - Environment( Count ).WP_Type1 = Item; - Found = Count; - } - } - MultipleEnvironments = true; - if ( Found == 0 ) { - ShowWarningError( "GetWeatherProperties: WeatherProperty:SkyTemperature=blank, no run periods found." ); - ShowContinueError( "...SkyTemperature will not be applied." ); - continue; - } - } else { // really a name - Found = UtilityRoutines::FindItemInList( cAlphaArgs( 1 ), Environment, &EnvironmentData::Title ); - envFound = Found; - if ( Found == 0 ) { - ShowSevereError( RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs( 1 ) + "\", invalid Environment Name referenced." ); - ShowContinueError( "...remainder of object not processed." ); - ErrorsFound = true; - continue; - } else { - if ( Environment( Found ).WP_Type1 != 0 ) { + } + ErrorsFound = true; + } else { + Environment(Count).WP_Type1 = Item; + Found = Count; + } + } + MultipleEnvironments = true; + if (Found == 0) { + ShowWarningError("GetWeatherProperties: WeatherProperty:SkyTemperature=blank, no run periods found."); + ShowContinueError("...SkyTemperature will not be applied."); + continue; + } + } else { // really a name + Found = UtilityRoutines::FindItemInList(cAlphaArgs(1), Environment, &EnvironmentData::Title); + envFound = Found; + if (Found == 0) { + ShowSevereError(RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + "\", invalid Environment Name referenced."); + ShowContinueError("...remainder of object not processed."); + ErrorsFound = true; + continue; + } else { + if (Environment(Found).WP_Type1 != 0) { ShowSevereError(RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + "\", indicated Environment Name already assigned."); ShowContinueError("...Environment=\"" + Environment(Found).Title + "\", already using " + cCurrentModuleObject + "=\"" + WPSkyTemperature(Environment(Found).WP_Type1).Name + "\"."); - ErrorsFound = true; - } else { - Environment( Found ).WP_Type1 = Item; - } - } + ErrorsFound = true; + } else { + Environment(Found).WP_Type1 = Item; + } + } } } - if ( ! lAlphaFieldBlanks( 1 ) ) { - UtilityRoutines::IsNameEmpty(cAlphaArgs( 1 ), cCurrentModuleObject, ErrorsFound); - WPSkyTemperature( Item ).Name = cAlphaArgs( 1 ); // Name - } else { - WPSkyTemperature( Item ).Name = "All RunPeriods"; - } - // Validate Calculation Type. - if ( UtilityRoutines::SameString( cAlphaArgs( 2 ), "ScheduleValue" ) ) { - WPSkyTemperature( Item ).CalculationType = WP_ScheduleValue; - WPSkyTemperature( Item ).IsSchedule = true; - units = "[C]"; - unitType = OutputProcessor::Unit::C; - } else if ( UtilityRoutines::SameString( cAlphaArgs( 2 ), "DifferenceScheduleDryBulbValue" ) ) { - WPSkyTemperature( Item ).CalculationType = WP_DryBulbDelta; - WPSkyTemperature( Item ).IsSchedule = true; - units = "[deltaC]"; - unitType = OutputProcessor::Unit::deltaC; - } else if ( UtilityRoutines::SameString( cAlphaArgs( 2 ), "DifferenceScheduleDewPointValue" ) ) { - WPSkyTemperature( Item ).CalculationType = WP_DewPointDelta; - WPSkyTemperature( Item ).IsSchedule = true; - units = "[deltaC]"; - unitType = OutputProcessor::Unit::deltaC; - } else { - ShowSevereError( RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs( 1 ) + "\", invalid " + cAlphaFieldNames( 2 ) + '.' ); + if (!lAlphaFieldBlanks(1)) { + UtilityRoutines::IsNameEmpty(cAlphaArgs(1), cCurrentModuleObject, ErrorsFound); + WPSkyTemperature(Item).Name = cAlphaArgs(1); // Name + } else { + WPSkyTemperature(Item).Name = "All RunPeriods"; + } + // Validate Calculation Type. + if (UtilityRoutines::SameString(cAlphaArgs(2), "ScheduleValue")) { + WPSkyTemperature(Item).CalculationType = WP_ScheduleValue; + WPSkyTemperature(Item).IsSchedule = true; + units = "[C]"; + unitType = OutputProcessor::Unit::C; + } else if (UtilityRoutines::SameString(cAlphaArgs(2), "DifferenceScheduleDryBulbValue")) { + WPSkyTemperature(Item).CalculationType = WP_DryBulbDelta; + WPSkyTemperature(Item).IsSchedule = true; + units = "[deltaC]"; + unitType = OutputProcessor::Unit::deltaC; + } else if (UtilityRoutines::SameString(cAlphaArgs(2), "DifferenceScheduleDewPointValue")) { + WPSkyTemperature(Item).CalculationType = WP_DewPointDelta; + WPSkyTemperature(Item).IsSchedule = true; + units = "[deltaC]"; + unitType = OutputProcessor::Unit::deltaC; + } else { + ShowSevereError(RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + "\", invalid " + cAlphaFieldNames(2) + '.'); ShowContinueError("...entered value=\"" + cAlphaArgs(2) + "\", should be one of: ScheduleValue, DifferenceScheduleDryBulbValue, DifferenceScheduleDewPointValue."); - ErrorsFound = true; - } - - WPSkyTemperature( Item ).ScheduleName = cAlphaArgs( 3 ); - if ( Environment( Found ).KindOfEnvrn == ksRunPeriodWeather || Environment( Found ).KindOfEnvrn == ksRunPeriodDesign ) { - WPSkyTemperature( Item ).ScheduleName = cAlphaArgs( 3 ); - // See if it's a schedule. - Found = GetScheduleIndex( cAlphaArgs( 3 ) ); - if ( Found == 0 ) { - ShowSevereError( RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs( 1 ) + "\", invalid " + cAlphaFieldNames( 3 ) + '.' ); - ShowContinueError( "...Entered name=\"" + cAlphaArgs( 3 ) + "\"." ); + ErrorsFound = true; + } + + WPSkyTemperature(Item).ScheduleName = cAlphaArgs(3); + if (Environment(Found).KindOfEnvrn == ksRunPeriodWeather || Environment(Found).KindOfEnvrn == ksRunPeriodDesign) { + WPSkyTemperature(Item).ScheduleName = cAlphaArgs(3); + // See if it's a schedule. + Found = GetScheduleIndex(cAlphaArgs(3)); + if (Found == 0) { + ShowSevereError(RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + "\", invalid " + cAlphaFieldNames(3) + '.'); + ShowContinueError("...Entered name=\"" + cAlphaArgs(3) + "\"."); ShowContinueError("...Should be a full year schedule (\"Schedule:Year\", \"Schedule:Compact\", \"Schedule:File\", or " "\"Schedule:Constant\" objects."); - ErrorsFound = true; - } else { - WPSkyTemperature( Item ).IsSchedule = true; - WPSkyTemperature( Item ).SchedulePtr = Found; - } - } else { // See if it's a valid schedule. - Found = GetDayScheduleIndex( cAlphaArgs( 3 ) ); - if ( Found == 0 ) { - ShowSevereError( RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs( 1 ) + "\", invalid " + cAlphaFieldNames( 3 ) + '.' ); - ShowContinueError( "...Entered name=\"" + cAlphaArgs( 3 ) + "\"." ); + ErrorsFound = true; + } else { + WPSkyTemperature(Item).IsSchedule = true; + WPSkyTemperature(Item).SchedulePtr = Found; + } + } else { // See if it's a valid schedule. + Found = GetDayScheduleIndex(cAlphaArgs(3)); + if (Found == 0) { + ShowSevereError(RoutineName + cCurrentModuleObject + "=\"" + cAlphaArgs(1) + "\", invalid " + cAlphaFieldNames(3) + '.'); + ShowContinueError("...Entered name=\"" + cAlphaArgs(3) + "\"."); ShowContinueError( "...Should be a single day schedule (\"Schedule:Day:Hourly\", \"Schedule:Day:Interval\", or \"Schedule:Day:List\" objects."); - ErrorsFound = true; - } else { - if ( envFound != 0 ) { - schPtr = FindNumberInList( Found, SPSiteScheduleNamePtr, NumSPSiteScheduleNamePtrs ); - if ( schPtr == 0 ) { - ++NumSPSiteScheduleNamePtrs; - SPSiteScheduleNamePtr( NumSPSiteScheduleNamePtrs ) = Found; - SPSiteScheduleUnits( NumSPSiteScheduleNamePtrs ) = units; + ErrorsFound = true; + } else { + if (envFound != 0) { + schPtr = FindNumberInList(Found, SPSiteScheduleNamePtr, NumSPSiteScheduleNamePtrs); + if (schPtr == 0) { + ++NumSPSiteScheduleNamePtrs; + SPSiteScheduleNamePtr(NumSPSiteScheduleNamePtrs) = Found; + SPSiteScheduleUnits(NumSPSiteScheduleNamePtrs) = units; SetupOutputVariable("Sizing Period Site Sky Temperature Schedule Value", unitType, SPSiteSkyTemperatureScheduleValue(envFound), "Zone", "Average", cAlphaArgs(3)); - } else if ( SPSiteScheduleUnits( schPtr ) != units ) { - ++NumSPSiteScheduleNamePtrs; - SPSiteScheduleNamePtr( NumSPSiteScheduleNamePtrs ) = Found; - SPSiteScheduleUnits( NumSPSiteScheduleNamePtrs ) = units; + } else if (SPSiteScheduleUnits(schPtr) != units) { + ++NumSPSiteScheduleNamePtrs; + SPSiteScheduleNamePtr(NumSPSiteScheduleNamePtrs) = Found; + SPSiteScheduleUnits(NumSPSiteScheduleNamePtrs) = units; SetupOutputVariable("Sizing Period Site Sky Temperature Schedule Value", unitType, SPSiteSkyTemperatureScheduleValue(envFound), "Zone", "Average", cAlphaArgs(3)); - } - WPSkyTemperature( Item ).IsSchedule = true; - WPSkyTemperature( Item ).SchedulePtr = Found; - } - } - } - } - } + } + WPSkyTemperature(Item).IsSchedule = true; + WPSkyTemperature(Item).SchedulePtr = Found; + } + } + } + } + } void GetGroundTemps(bool &ErrorsFound) - { - - // SUBROUTINE INFORMATION: - // AUTHOR Richard Liesen - // DATE WRITTEN October 1997 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // This file reads the Ground Temps from the input file and puts them - // in a new variable. - - // Using/Aliasing - using namespace DataIPShortCuts; - using namespace GroundTemperatureManager; - - // Formats - static gio::Fmt Format_720( "(' ',A,12(', ',F6.2))" ); - - // FLOW: - // Initialize Site:GroundTemperature:BuildingSurface object - siteBuildingSurfaceGroundTempsPtr = GetGroundTempModelAndInit( "SITE:GROUNDTEMPERATURE:BUILDINGSURFACE", "" ); - if ( siteBuildingSurfaceGroundTempsPtr ){ - ErrorsFound = siteBuildingSurfaceGroundTempsPtr->errorsFound ? true : ErrorsFound; - } - - // Initialize Site:GroundTemperature:FCFactorMethod object - siteFCFactorMethodGroundTempsPtr = GetGroundTempModelAndInit( "SITE:GROUNDTEMPERATURE:FCFACTORMETHOD", "" ); - if ( siteFCFactorMethodGroundTempsPtr ) { - ErrorsFound = siteFCFactorMethodGroundTempsPtr->errorsFound ? true : ErrorsFound; - } - - // Initialize Site:GroundTemperature:Shallow object - siteShallowGroundTempsPtr = GetGroundTempModelAndInit( "SITE:GROUNDTEMPERATURE:SHALLOW", "" ); - if ( siteShallowGroundTempsPtr ) { - ErrorsFound = siteShallowGroundTempsPtr->errorsFound ? true : ErrorsFound; - } - - // Initialize Site:GroundTemperature:Deep object - siteDeepGroundTempsPtr = GetGroundTempModelAndInit( "SITE:GROUNDTEMPERATURE:DEEP", "" ); - if ( siteDeepGroundTempsPtr ) { - ErrorsFound = siteDeepGroundTempsPtr->errorsFound ? true : ErrorsFound; - } - } + { + + // SUBROUTINE INFORMATION: + // AUTHOR Richard Liesen + // DATE WRITTEN October 1997 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // This file reads the Ground Temps from the input file and puts them + // in a new variable. + + // Using/Aliasing + using namespace DataIPShortCuts; + using namespace GroundTemperatureManager; + + // Formats + static gio::Fmt Format_720("(' ',A,12(', ',F6.2))"); + + // FLOW: + // Initialize Site:GroundTemperature:BuildingSurface object + siteBuildingSurfaceGroundTempsPtr = GetGroundTempModelAndInit("SITE:GROUNDTEMPERATURE:BUILDINGSURFACE", ""); + if (siteBuildingSurfaceGroundTempsPtr) { + ErrorsFound = siteBuildingSurfaceGroundTempsPtr->errorsFound ? true : ErrorsFound; + } + + // Initialize Site:GroundTemperature:FCFactorMethod object + siteFCFactorMethodGroundTempsPtr = GetGroundTempModelAndInit("SITE:GROUNDTEMPERATURE:FCFACTORMETHOD", ""); + if (siteFCFactorMethodGroundTempsPtr) { + ErrorsFound = siteFCFactorMethodGroundTempsPtr->errorsFound ? true : ErrorsFound; + } + + // Initialize Site:GroundTemperature:Shallow object + siteShallowGroundTempsPtr = GetGroundTempModelAndInit("SITE:GROUNDTEMPERATURE:SHALLOW", ""); + if (siteShallowGroundTempsPtr) { + ErrorsFound = siteShallowGroundTempsPtr->errorsFound ? true : ErrorsFound; + } + + // Initialize Site:GroundTemperature:Deep object + siteDeepGroundTempsPtr = GetGroundTempModelAndInit("SITE:GROUNDTEMPERATURE:DEEP", ""); + if (siteDeepGroundTempsPtr) { + ErrorsFound = siteDeepGroundTempsPtr->errorsFound ? true : ErrorsFound; + } + } void GetGroundReflectances(bool &ErrorsFound) - { - - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN March 2002 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // This file reads the Ground Reflectances from the input file (optional) and - // places them in the monthly array. - - // Using/Aliasing - using namespace DataIPShortCuts; - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - - int GndNumAlpha; // Number of construction alpha names being passed - int GndNumProp; // dummy variable for properties being passed - int IOStat; // IO Status when calling get input subroutine - int I; // Loop counter variable - Array1D_string GndAlphas; // Construction Alpha names defined - Array1D< Real64 > GndProps; // Temporary array to transfer ground reflectances - - // Formats - static gio::Fmt Format_720( "(' Site:GroundReflectance',12(', ',F5.2))" ); - - // FLOW: - cCurrentModuleObject = "Site:GroundReflectance"; - I = inputProcessor->getNumObjectsFound( cCurrentModuleObject ); - if ( I != 0 ) { - GndProps.allocate( 12 ); - GndAlphas.allocate( 1 ); - if ( I == 1 ) { - //Get the object names for each construction from the input processor - inputProcessor->getObjectItem( cCurrentModuleObject, 1, GndAlphas, GndNumAlpha, GndProps, GndNumProp, IOStat ); - - if ( GndNumProp < 12 ) { - ShowSevereError( cCurrentModuleObject + ": Less than 12 values entered." ); - ErrorsFound = true; - } - - //Assign the ground reflectances to the variable - GroundReflectances( {1,12} ) = GndProps( {1,12} ); - - } else { - ShowSevereError( cCurrentModuleObject + ": Too many objects entered. Only one allowed." ); - ErrorsFound = true; - } - GndProps.deallocate(); - GndAlphas.deallocate(); - } - - // Write Final Ground Reflectance Information to the initialization output file + { + + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN March 2002 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // This file reads the Ground Reflectances from the input file (optional) and + // places them in the monthly array. + + // Using/Aliasing + using namespace DataIPShortCuts; + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + + int GndNumAlpha; // Number of construction alpha names being passed + int GndNumProp; // dummy variable for properties being passed + int IOStat; // IO Status when calling get input subroutine + int I; // Loop counter variable + Array1D_string GndAlphas; // Construction Alpha names defined + Array1D GndProps; // Temporary array to transfer ground reflectances + + // Formats + static gio::Fmt Format_720("(' Site:GroundReflectance',12(', ',F5.2))"); + + // FLOW: + cCurrentModuleObject = "Site:GroundReflectance"; + I = inputProcessor->getNumObjectsFound(cCurrentModuleObject); + if (I != 0) { + GndProps.allocate(12); + GndAlphas.allocate(1); + if (I == 1) { + // Get the object names for each construction from the input processor + inputProcessor->getObjectItem(cCurrentModuleObject, 1, GndAlphas, GndNumAlpha, GndProps, GndNumProp, IOStat); + + if (GndNumProp < 12) { + ShowSevereError(cCurrentModuleObject + ": Less than 12 values entered."); + ErrorsFound = true; + } + + // Assign the ground reflectances to the variable + GroundReflectances({1, 12}) = GndProps({1, 12}); + + } else { + ShowSevereError(cCurrentModuleObject + ": Too many objects entered. Only one allowed."); + ErrorsFound = true; + } + GndProps.deallocate(); + GndAlphas.deallocate(); + } + + // Write Final Ground Reflectance Information to the initialization output file gio::write(OutputFileInits, fmtA) << "! " ",Jan{dimensionless},Feb{dimensionless},Mar{dimensionless},Apr{dimensionless}," "May{dimensionless},Jun{dimensionless},Jul{dimensionless},Aug{dimensionless},Sep{dimensionless},Oct{" "dimensionless},Nov{dimensionless},Dec{dimensionless}"; - gio::write( OutputFileInits, "(' ',A,$)" ) << "Site:GroundReflectance"; - for ( I = 1; I <= 12; ++I ) { - gio::write( OutputFileInits, "(', ',F5.2,$)" ) << GroundReflectances( I ); - } - gio::write( OutputFileInits ); - } + gio::write(OutputFileInits, "(' ',A,$)") << "Site:GroundReflectance"; + for (I = 1; I <= 12; ++I) { + gio::write(OutputFileInits, "(', ',F5.2,$)") << GroundReflectances(I); + } + gio::write(OutputFileInits); + } void GetSnowGroundRefModifiers(bool &ErrorsFound) - { - - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN March 2002 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // This file reads the Snow Ground Reflectance Modifiers from the input file (optional) and - // places them in the variables. - - // Using/Aliasing - using namespace DataIPShortCuts; - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - - int GndNumAlpha; // Number of construction alpha names being passed - int GndNumProp; // dummy variable for properties being passed - int IOStat; // IO Status when calling get input subroutine - int I; // Loop counter variable - Array1D_string GndAlphas; // Construction Alpha names defined - Array1D< Real64 > GndProps; // Temporary array to transfer ground reflectances - - // Formats - static gio::Fmt Format_720( "(' Site:GroundReflectance:SnowModifier',2(', ',F7.3))" ); - static gio::Fmt Format_721( "(A,12(', ',F5.2))" ); - - // FLOW: - cCurrentModuleObject = "Site:GroundReflectance:SnowModifier"; - I = inputProcessor->getNumObjectsFound( cCurrentModuleObject ); - if ( I != 0 ) { - GndProps.allocate( 2 ); - GndAlphas.allocate( 1 ); - if ( I == 1 ) { - //Get the object names for each construction from the input processor - inputProcessor->getObjectItem( cCurrentModuleObject, 1, GndAlphas, GndNumAlpha, GndProps, GndNumProp, IOStat ); - - //Assign the ground reflectances to the variable - SnowGndRefModifier = GndProps( 1 ); - SnowGndRefModifierForDayltg = GndProps( 2 ); - - } else { - ShowSevereError( cCurrentModuleObject + ": Too many objects entered. Only one allowed." ); - ErrorsFound = true; - } - GndProps.deallocate(); - GndAlphas.deallocate(); - } - - // Write Final Ground Reflectance Modifier Information to the initialization output file - gio::write( OutputFileInits, fmtA ) << "! , Normal, Daylighting {dimensionless}"; - gio::write( OutputFileInits, Format_720 ) << SnowGndRefModifier << SnowGndRefModifierForDayltg; + { + + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN March 2002 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // This file reads the Snow Ground Reflectance Modifiers from the input file (optional) and + // places them in the variables. + + // Using/Aliasing + using namespace DataIPShortCuts; + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + + int GndNumAlpha; // Number of construction alpha names being passed + int GndNumProp; // dummy variable for properties being passed + int IOStat; // IO Status when calling get input subroutine + int I; // Loop counter variable + Array1D_string GndAlphas; // Construction Alpha names defined + Array1D GndProps; // Temporary array to transfer ground reflectances + + // Formats + static gio::Fmt Format_720("(' Site:GroundReflectance:SnowModifier',2(', ',F7.3))"); + static gio::Fmt Format_721("(A,12(', ',F5.2))"); + + // FLOW: + cCurrentModuleObject = "Site:GroundReflectance:SnowModifier"; + I = inputProcessor->getNumObjectsFound(cCurrentModuleObject); + if (I != 0) { + GndProps.allocate(2); + GndAlphas.allocate(1); + if (I == 1) { + // Get the object names for each construction from the input processor + inputProcessor->getObjectItem(cCurrentModuleObject, 1, GndAlphas, GndNumAlpha, GndProps, GndNumProp, IOStat); + + // Assign the ground reflectances to the variable + SnowGndRefModifier = GndProps(1); + SnowGndRefModifierForDayltg = GndProps(2); + + } else { + ShowSevereError(cCurrentModuleObject + ": Too many objects entered. Only one allowed."); + ErrorsFound = true; + } + GndProps.deallocate(); + GndAlphas.deallocate(); + } + + // Write Final Ground Reflectance Modifier Information to the initialization output file + gio::write(OutputFileInits, fmtA) << "! , Normal, Daylighting {dimensionless}"; + gio::write(OutputFileInits, Format_720) << SnowGndRefModifier << SnowGndRefModifierForDayltg; gio::write(OutputFileInits, fmtA) << "! " ",Jan{dimensionless},Feb{dimensionless},Mar{dimensionless},Apr{" "dimensionless},May{dimensionless},Jun{dimensionless},Jul{dimensionless},Aug{dimensionless},Sep{" "dimensionless},Oct{dimensionless},Nov{dimensionless},Dec{dimensionless}"; - gio::write( OutputFileInits, fmtAN ) << " Site:GroundReflectance:Snow"; - for ( I = 1; I <= 12; ++I ) { - gio::write( OutputFileInits, "(', ',F5.2,$)" ) << max( min( GroundReflectances( I ) * SnowGndRefModifier, 1.0 ), 0.0 ); - } - gio::write( OutputFileInits ); + gio::write(OutputFileInits, fmtAN) << " Site:GroundReflectance:Snow"; + for (I = 1; I <= 12; ++I) { + gio::write(OutputFileInits, "(', ',F5.2,$)") << max(min(GroundReflectances(I) * SnowGndRefModifier, 1.0), 0.0); + } + gio::write(OutputFileInits); gio::write(OutputFileInits, fmtA) << "! " ",Jan{dimensionless},Feb{dimensionless},Mar{dimensionless},Apr{" "dimensionless},May{dimensionless},Jun{dimensionless},Jul{dimensionless},Aug{dimensionless},Sep{" "dimensionless},Oct{dimensionless},Nov{dimensionless},Dec{dimensionless}"; - gio::write( OutputFileInits, fmtAN ) << " Site:GroundReflectance:Snow:Daylighting"; - for ( I = 1; I <= 12; ++I ) { - gio::write( OutputFileInits, "(', ',F5.2,$)" ) << max( min( GroundReflectances( I ) * SnowGndRefModifierForDayltg, 1.0 ), 0.0 ); - } - gio::write( OutputFileInits ); - } + gio::write(OutputFileInits, fmtAN) << " Site:GroundReflectance:Snow:Daylighting"; + for (I = 1; I <= 12; ++I) { + gio::write(OutputFileInits, "(', ',F5.2,$)") << max(min(GroundReflectances(I) * SnowGndRefModifierForDayltg, 1.0), 0.0); + } + gio::write(OutputFileInits); + } void GetWaterMainsTemperatures(bool &ErrorsFound) - { - - // SUBROUTINE INFORMATION: - // AUTHOR Peter Graham Ellis - // DATE WRITTEN January 2005 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // Reads the input data for the WATER MAINS TEMPERATURES object. - - // Using/Aliasing - using namespace DataIPShortCuts; - using ScheduleManager::GetScheduleIndex; - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - int NumObjects; - int NumAlphas; // Number of elements in the alpha array - int NumNums; // Number of elements in the numeric array - int IOStat; // IO Status when calling get input subroutine - Array1D_string AlphArray( 2 ); // Character string data - Array1D< Real64 > NumArray( 2 ); // Numeric data - - // FLOW: - cCurrentModuleObject = "Site:WaterMainsTemperature"; - NumObjects = inputProcessor->getNumObjectsFound( cCurrentModuleObject ); - - if ( NumObjects == 1 ) { + { + + // SUBROUTINE INFORMATION: + // AUTHOR Peter Graham Ellis + // DATE WRITTEN January 2005 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // Reads the input data for the WATER MAINS TEMPERATURES object. + + // Using/Aliasing + using namespace DataIPShortCuts; + using ScheduleManager::GetScheduleIndex; + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + int NumObjects; + int NumAlphas; // Number of elements in the alpha array + int NumNums; // Number of elements in the numeric array + int IOStat; // IO Status when calling get input subroutine + Array1D_string AlphArray(2); // Character string data + Array1D NumArray(2); // Numeric data + + // FLOW: + cCurrentModuleObject = "Site:WaterMainsTemperature"; + NumObjects = inputProcessor->getNumObjectsFound(cCurrentModuleObject); + + if (NumObjects == 1) { inputProcessor->getObjectItem(cCurrentModuleObject, 1, AlphArray, NumAlphas, NumArray, NumNums, IOStat, lNumericFieldBlanks, lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - if ( UtilityRoutines::SameString( AlphArray( 1 ), "Schedule" ) ) { - WaterMainsTempsMethod = ScheduleMethod; - - WaterMainsTempsSchedule = GetScheduleIndex( AlphArray( 2 ) ); - if ( WaterMainsTempsSchedule == 0 ) { - ShowSevereError( cCurrentModuleObject + ": invalid " + cAlphaFieldNames( 2 ) + '=' + AlphArray( 2 ) ); - ErrorsFound = true; - } - - } else if ( UtilityRoutines::SameString( AlphArray( 1 ), "Correlation" ) ) { - WaterMainsTempsMethod = CorrelationMethod; - - if ( NumNums == 0 ) { - ShowSevereError( cCurrentModuleObject + ": Missing Annual Average and Maximum Difference fields." ); - ErrorsFound = true; - } else if ( NumNums == 1 ) { - ShowSevereError( cCurrentModuleObject + ": Missing Maximum Difference field." ); - ErrorsFound = true; - } else { - WaterMainsTempsAnnualAvgAirTemp = NumArray( 1 ); - WaterMainsTempsMaxDiffAirTemp = NumArray( 2 ); - } - - } else { - ShowSevereError( cCurrentModuleObject + ": invalid " + cAlphaFieldNames( 1 ) + '=' + AlphArray( 1 ) ); - ErrorsFound = true; - } - - } else if ( NumObjects > 1 ) { - ShowSevereError( cCurrentModuleObject + ": Too many objects entered. Only one allowed." ); - ErrorsFound = true; - } - } + if (UtilityRoutines::SameString(AlphArray(1), "Schedule")) { + WaterMainsTempsMethod = ScheduleMethod; + + WaterMainsTempsSchedule = GetScheduleIndex(AlphArray(2)); + if (WaterMainsTempsSchedule == 0) { + ShowSevereError(cCurrentModuleObject + ": invalid " + cAlphaFieldNames(2) + '=' + AlphArray(2)); + ErrorsFound = true; + } + + } else if (UtilityRoutines::SameString(AlphArray(1), "Correlation")) { + WaterMainsTempsMethod = CorrelationMethod; + + if (NumNums == 0) { + ShowSevereError(cCurrentModuleObject + ": Missing Annual Average and Maximum Difference fields."); + ErrorsFound = true; + } else if (NumNums == 1) { + ShowSevereError(cCurrentModuleObject + ": Missing Maximum Difference field."); + ErrorsFound = true; + } else { + WaterMainsTempsAnnualAvgAirTemp = NumArray(1); + WaterMainsTempsMaxDiffAirTemp = NumArray(2); + } + + } else { + ShowSevereError(cCurrentModuleObject + ": invalid " + cAlphaFieldNames(1) + '=' + AlphArray(1)); + ErrorsFound = true; + } + + } else if (NumObjects > 1) { + ShowSevereError(cCurrentModuleObject + ": Too many objects entered. Only one allowed."); + ErrorsFound = true; + } + } void CalcWaterMainsTemp() - { - - // SUBROUTINE INFORMATION: - // AUTHOR Peter Graham Ellis - // DATE WRITTEN January 2005 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // Calculates the daily water mains temperature based on input data from the WATER MAINS TEMPERATURES object. - - // METHODOLOGY EMPLOYED: - // Water mains temperature is either taken from a schedule or calculated by a correlation. The correlation - // is fit to Fahrenheit units, so the air temperature values are first convert to F, then mains temperature - // is calculated and converted back to C. - - // REFERENCES: - // Correlation developed by Jay Burch and Craig Christensen at NREL, described in: - // Hendron, R., Anderson, R., Christensen, C., Eastment, M., and Reeves, P. 2004. "Development of an Energy - // Savings Benchmark for All Residential End-Uses", Proceedings of SimBuild 2004, IBPSA-USA National Conference, - // Boulder, CO, August 4 - 6, 2004. - - // Using/Aliasing - using ScheduleManager::GetCurrentScheduleValue; - - // Locals - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - Real64 Tavg; // Annual Average Outdoor Air Temperature (F) - Real64 Tdiff; // Maximum difference in monthly average outdoor air temperatures (deltaF) - Real64 Ratio; // Value used in correlation - Real64 Lag; // Value used in correlation - Real64 Offset; // Value used in correlation - - // FLOW: + { + + // SUBROUTINE INFORMATION: + // AUTHOR Peter Graham Ellis + // DATE WRITTEN January 2005 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // Calculates the daily water mains temperature based on input data from the WATER MAINS TEMPERATURES object. + + // METHODOLOGY EMPLOYED: + // Water mains temperature is either taken from a schedule or calculated by a correlation. The correlation + // is fit to Fahrenheit units, so the air temperature values are first convert to F, then mains temperature + // is calculated and converted back to C. + + // REFERENCES: + // Correlation developed by Jay Burch and Craig Christensen at NREL, described in: + // Hendron, R., Anderson, R., Christensen, C., Eastment, M., and Reeves, P. 2004. "Development of an Energy + // Savings Benchmark for All Residential End-Uses", Proceedings of SimBuild 2004, IBPSA-USA National Conference, + // Boulder, CO, August 4 - 6, 2004. + + // Using/Aliasing + using ScheduleManager::GetCurrentScheduleValue; + + // Locals + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + Real64 Tavg; // Annual Average Outdoor Air Temperature (F) + Real64 Tdiff; // Maximum difference in monthly average outdoor air temperatures (deltaF) + Real64 Ratio; // Value used in correlation + Real64 Lag; // Value used in correlation + Real64 Offset; // Value used in correlation + + // FLOW: { auto const SELECT_CASE_var(WaterMainsTempsMethod); - if ( SELECT_CASE_var == ScheduleMethod ) { - WaterMainsTemp = GetCurrentScheduleValue( WaterMainsTempsSchedule ); + if (SELECT_CASE_var == ScheduleMethod) { + WaterMainsTemp = GetCurrentScheduleValue(WaterMainsTempsSchedule); + + } else if (SELECT_CASE_var == CorrelationMethod) { + // Convert C to F + Tavg = WaterMainsTempsAnnualAvgAirTemp * (9.0 / 5.0) + 32.0; + Tdiff = WaterMainsTempsMaxDiffAirTemp * (9.0 / 5.0); + + Ratio = 0.4 + 0.01 * (Tavg - 44.0); + Lag = 35.0 - 1.0 * (Tavg - 44.0); + Offset = 6.0; + int latitude_sign; + if (Latitude >= 0) { + latitude_sign = -1; + } else { + latitude_sign = 1; + } + + WaterMainsTemp = Tavg + Offset + Ratio * (Tdiff / 2.0) * latitude_sign * std::cos((0.986 * (DayOfYear - 15.0 - Lag)) * DegToRadians); + + if (WaterMainsTemp < 32.0) WaterMainsTemp = 32.0; - } else if ( SELECT_CASE_var == CorrelationMethod ) { - // Convert C to F - Tavg = WaterMainsTempsAnnualAvgAirTemp * ( 9.0 / 5.0 ) + 32.0; - Tdiff = WaterMainsTempsMaxDiffAirTemp * ( 9.0 / 5.0 ); + // Convert F to C + WaterMainsTemp = (WaterMainsTemp - 32.0) * (5.0 / 9.0); + + } else { + WaterMainsTemp = 10.0; // 50 F + } + } + } - Ratio = 0.4 + 0.01 * ( Tavg - 44.0 ); - Lag = 35.0 - 1.0 * ( Tavg - 44.0 ); - Offset = 6.0; - int latitude_sign; - if ( Latitude >= 0 ) { - latitude_sign = -1; - } else { - latitude_sign = 1; - } + void GetWeatherStation(bool &ErrorsFound) + { - WaterMainsTemp = Tavg + Offset + Ratio * ( Tdiff / 2.0 ) * latitude_sign * std::cos( ( 0.986 * ( DayOfYear - 15.0 - Lag ) ) * DegToRadians ); + // SUBROUTINE INFORMATION: + // AUTHOR Peter Graham Ellis + // DATE WRITTEN January 2006 + // MODIFIED na + // RE-ENGINEERED na - if ( WaterMainsTemp < 32.0 ) WaterMainsTemp = 32.0; + // PURPOSE OF THIS SUBROUTINE: + // Reads the input data for the WEATHER STATION object. - // Convert F to C - WaterMainsTemp = ( WaterMainsTemp - 32.0 ) * ( 5.0 / 9.0 ); + // Using/Aliasing + using namespace DataIPShortCuts; + using General::RoundSigDigits; - } else { - WaterMainsTemp = 10.0; // 50 F - } + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + int NumObjects; + int NumAlphas; // Number of elements in the alpha array + int NumNums; // Number of elements in the numeric array + int IOStat; // IO Status when calling get input subroutine + Array1D_string AlphArray(1); // Character string data + Array1D NumArray(4); // Numeric data + Real64 WeatherFileWindSensorHeight; // Height of the wind sensor at the weather station, i.e., weather file + Real64 WeatherFileWindExp; // Exponent for the wind velocity profile at the weather station + Real64 WeatherFileWindBLHeight; // Boundary layer height for the wind velocity profile at the weather station (m) + Real64 WeatherFileTempSensorHeight; // Height of the air temperature sensor at the weather station (m) + + // Formats + static gio::Fmt Format_720("('Environment:Weather Station',6(',',A))"); + + // SUBROUTINE PARAMETER DEFINITIONS: + // na + + // FLOW: + cCurrentModuleObject = "Site:WeatherStation"; + NumObjects = inputProcessor->getNumObjectsFound(cCurrentModuleObject); + + // Default conditions for a weather station in an open field at a height of 10 m. (These should match the IDD defaults.) + WeatherFileWindSensorHeight = 10.0; + WeatherFileWindExp = 0.14; + WeatherFileWindBLHeight = 270.0; + WeatherFileTempSensorHeight = 1.5; + + if (NumObjects == 1) { + inputProcessor->getObjectItem(cCurrentModuleObject, 1, AlphArray, NumAlphas, NumArray, NumNums, IOStat); + + if (NumNums > 0) WeatherFileWindSensorHeight = NumArray(1); + if (NumNums > 1) WeatherFileWindExp = NumArray(2); + if (NumNums > 2) WeatherFileWindBLHeight = NumArray(3); + if (NumNums > 3) WeatherFileTempSensorHeight = NumArray(4); + + } else if (NumObjects > 1) { + ShowSevereError(cCurrentModuleObject + ": Too many objects entered. Only one allowed."); + ErrorsFound = true; } - } - void GetWeatherStation(bool &ErrorsFound) - { - - // SUBROUTINE INFORMATION: - // AUTHOR Peter Graham Ellis - // DATE WRITTEN January 2006 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // Reads the input data for the WEATHER STATION object. - - // Using/Aliasing - using namespace DataIPShortCuts; - using General::RoundSigDigits; - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - int NumObjects; - int NumAlphas; // Number of elements in the alpha array - int NumNums; // Number of elements in the numeric array - int IOStat; // IO Status when calling get input subroutine - Array1D_string AlphArray( 1 ); // Character string data - Array1D< Real64 > NumArray( 4 ); // Numeric data - Real64 WeatherFileWindSensorHeight; // Height of the wind sensor at the weather station, i.e., weather file - Real64 WeatherFileWindExp; // Exponent for the wind velocity profile at the weather station - Real64 WeatherFileWindBLHeight; // Boundary layer height for the wind velocity profile at the weather station (m) - Real64 WeatherFileTempSensorHeight; // Height of the air temperature sensor at the weather station (m) - - // Formats - static gio::Fmt Format_720( "('Environment:Weather Station',6(',',A))" ); - - // SUBROUTINE PARAMETER DEFINITIONS: - // na - - // FLOW: - cCurrentModuleObject = "Site:WeatherStation"; - NumObjects = inputProcessor->getNumObjectsFound( cCurrentModuleObject ); - - // Default conditions for a weather station in an open field at a height of 10 m. (These should match the IDD defaults.) - WeatherFileWindSensorHeight = 10.0; - WeatherFileWindExp = 0.14; - WeatherFileWindBLHeight = 270.0; - WeatherFileTempSensorHeight = 1.5; - - if ( NumObjects == 1 ) { - inputProcessor->getObjectItem( cCurrentModuleObject, 1, AlphArray, NumAlphas, NumArray, NumNums, IOStat ); - - if ( NumNums > 0 ) WeatherFileWindSensorHeight = NumArray( 1 ); - if ( NumNums > 1 ) WeatherFileWindExp = NumArray( 2 ); - if ( NumNums > 2 ) WeatherFileWindBLHeight = NumArray( 3 ); - if ( NumNums > 3 ) WeatherFileTempSensorHeight = NumArray( 4 ); - - } else if ( NumObjects > 1 ) { - ShowSevereError( cCurrentModuleObject + ": Too many objects entered. Only one allowed." ); - ErrorsFound = true; - } - - WeatherFileWindModCoeff = std::pow( WeatherFileWindBLHeight / WeatherFileWindSensorHeight, WeatherFileWindExp ); - WeatherFileTempModCoeff = AtmosphericTempGradient * EarthRadius * WeatherFileTempSensorHeight / ( EarthRadius + WeatherFileTempSensorHeight ); - - // Write to the initialization output file + WeatherFileWindModCoeff = std::pow(WeatherFileWindBLHeight / WeatherFileWindSensorHeight, WeatherFileWindExp); + WeatherFileTempModCoeff = AtmosphericTempGradient * EarthRadius * WeatherFileTempSensorHeight / (EarthRadius + WeatherFileTempSensorHeight); + + // Write to the initialization output file gio::write(OutputFileInits, fmtA) << "! ,Wind Sensor Height Above Ground {m},Wind Speed Profile Exponent " "{},Wind Speed Profile Boundary Layer Thickness {m},Air Temperature Sensor Height Above Ground {m},Wind " "Speed Modifier Coefficient-Internal,Temperature Modifier Coefficient-Internal"; @@ -7819,2054 +7866,2042 @@ Label9999: ; gio::write(OutputFileInits, Format_720) << RoundSigDigits(WeatherFileWindSensorHeight, 3) << RoundSigDigits(WeatherFileWindExp, 3) << RoundSigDigits(WeatherFileWindBLHeight, 3) << RoundSigDigits(WeatherFileTempSensorHeight, 3) << RoundSigDigits(WeatherFileWindModCoeff, 3) << RoundSigDigits(WeatherFileTempModCoeff, 3); - } + } void DayltgCurrentExtHorizIllum() - { - - // SUBROUTINE INFORMATION: - // AUTHOR Fred Winkelmann - // DATE WRITTEN July 1997 - // MODIFIED Nov98 (FW); Nov 2000 (FW) - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // CALCULATES EXTERIOR DAYLIGHT ILLUMINANCE AND LUMINOUS EFFICACY - - // METHODOLOGY EMPLOYED: - // CALLED by SetCurrentWeather. - // CALCULATES THE CURRENT-TIME-STEP - // ILLUMINANCE ON AN UNOBSTRUCTED HORIZONTAL SURFACE FROM THE - // THE SKY AND FROM DIRECT SUN. - - // REFERENCES: - // Based on DOE-2.1E subroutine DEXTIL. - - // USE STATEMENTS: - // na - - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: - // na - - // SUBROUTINE PARAMETER DEFINITIONS: - // na - - // INTERFACE BLOCK SPECIFICATIONS: - // na - - // DERIVED TYPE DEFINITIONS: - // na - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - - Real64 SDIRH; // Exterior horizontal beam irradiance (W/m2) - Real64 SDIFH; // Exterior horizontal sky diffuse irradiance (W/m2) - //REAL(r64) :: PDIRLW ! Luminous efficacy (lum/W) of beam solar radiation - //REAL(r64) :: PDIFLW ! Luminous efficacy (lum/W) of sky diffuse solar radiation - - // DIRECT AND DIFFUSE HORIZONTAL SOLAR IRRADIANCE (W/M2). - // SOLCOS(3), below, is the cosine of the solar zenith angle. - if ( SunIsUp ) { - SDIRH = BeamSolarRad * SOLCOS( 3 ); - SDIFH = DifSolarRad; - // Fraction of sky covered by clouds - CloudFraction = pow_2( SDIFH / ( SDIRH + SDIFH + 0.0001 ) ); - // Luminous efficacy of sky diffuse solar and beam solar (lumens/W); - // Horizontal illuminance from sky and horizontal beam illuminance (lux) - // obtained from solar quantities on weather file and luminous efficacy. - - DayltgLuminousEfficacy( PDIFLW, PDIRLW ); - HISKF = SDIFH * PDIFLW; - HISUNF = SDIRH * PDIRLW; - HISUNFnorm = BeamSolarRad * PDIRLW; - } else { - SDIRH = 0.0; - SDIFH = 0.0; - CloudFraction = 0.0; - PDIFLW = 0.0; - PDIRLW = 0.0; - HISKF = 0.0; - HISUNF = 0.0; - HISUNFnorm = 0.0; - SkyClearness = 0.0; - SkyBrightness = 0.0; - } - } + { + + // SUBROUTINE INFORMATION: + // AUTHOR Fred Winkelmann + // DATE WRITTEN July 1997 + // MODIFIED Nov98 (FW); Nov 2000 (FW) + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // CALCULATES EXTERIOR DAYLIGHT ILLUMINANCE AND LUMINOUS EFFICACY + + // METHODOLOGY EMPLOYED: + // CALLED by SetCurrentWeather. + // CALCULATES THE CURRENT-TIME-STEP + // ILLUMINANCE ON AN UNOBSTRUCTED HORIZONTAL SURFACE FROM THE + // THE SKY AND FROM DIRECT SUN. + + // REFERENCES: + // Based on DOE-2.1E subroutine DEXTIL. + + // USE STATEMENTS: + // na + + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + // na + + // SUBROUTINE PARAMETER DEFINITIONS: + // na + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // DERIVED TYPE DEFINITIONS: + // na + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + + Real64 SDIRH; // Exterior horizontal beam irradiance (W/m2) + Real64 SDIFH; // Exterior horizontal sky diffuse irradiance (W/m2) + // REAL(r64) :: PDIRLW ! Luminous efficacy (lum/W) of beam solar radiation + // REAL(r64) :: PDIFLW ! Luminous efficacy (lum/W) of sky diffuse solar radiation + + // DIRECT AND DIFFUSE HORIZONTAL SOLAR IRRADIANCE (W/M2). + // SOLCOS(3), below, is the cosine of the solar zenith angle. + if (SunIsUp) { + SDIRH = BeamSolarRad * SOLCOS(3); + SDIFH = DifSolarRad; + // Fraction of sky covered by clouds + CloudFraction = pow_2(SDIFH / (SDIRH + SDIFH + 0.0001)); + // Luminous efficacy of sky diffuse solar and beam solar (lumens/W); + // Horizontal illuminance from sky and horizontal beam illuminance (lux) + // obtained from solar quantities on weather file and luminous efficacy. + + DayltgLuminousEfficacy(PDIFLW, PDIRLW); + HISKF = SDIFH * PDIFLW; + HISUNF = SDIRH * PDIRLW; + HISUNFnorm = BeamSolarRad * PDIRLW; + } else { + SDIRH = 0.0; + SDIFH = 0.0; + CloudFraction = 0.0; + PDIFLW = 0.0; + PDIRLW = 0.0; + HISKF = 0.0; + HISUNF = 0.0; + HISUNFnorm = 0.0; + SkyClearness = 0.0; + SkyBrightness = 0.0; + } + } void DayltgLuminousEfficacy(Real64 &DiffLumEff, // Luminous efficacy of sky diffuse solar radiation (lum/W) - Real64 & DirLumEff // Luminous efficacy of beam solar radiation (lum/W) - ) - { - // SUBROUTINE INFORMATION: - // AUTHOR Fred Winkelmann - // DATE WRITTEN July 1997 - // MODIFIED August 2009, BG fixed upper bound for sky clearness bin 7 - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // Uses diffuse horizontal solar irradiance, direct normal solar - // irradiance, atmospheric moisture and sun position - // to determine the luminous efficacy in lumens/watt - // of sky diffuse solar radiation and direct normal solar radiation. - // Based on an empirical method described in - // R. Perez, P. Ineichen, R. Seals, J. Michalsky and R. Stewart, - // "Modeling daylight availability and irradiance components from direct - // global irradiance components from direct and global irradiance," - // Solar Energy 44 (1990) 271-289. - - // Called by DayltgCurrentExtHorizIllum. - - // USE STATEMENTS: - // na - - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: - // na - - // SUBROUTINE PARAMETER DEFINITIONS: + Real64 &DirLumEff // Luminous efficacy of beam solar radiation (lum/W) + ) + { + // SUBROUTINE INFORMATION: + // AUTHOR Fred Winkelmann + // DATE WRITTEN July 1997 + // MODIFIED August 2009, BG fixed upper bound for sky clearness bin 7 + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // Uses diffuse horizontal solar irradiance, direct normal solar + // irradiance, atmospheric moisture and sun position + // to determine the luminous efficacy in lumens/watt + // of sky diffuse solar radiation and direct normal solar radiation. + // Based on an empirical method described in + // R. Perez, P. Ineichen, R. Seals, J. Michalsky and R. Stewart, + // "Modeling daylight availability and irradiance components from direct + // global irradiance components from direct and global irradiance," + // Solar Energy 44 (1990) 271-289. + + // Called by DayltgCurrentExtHorizIllum. + + // USE STATEMENTS: + // na + + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + // na + + // SUBROUTINE PARAMETER DEFINITIONS: static Array1D const ADiffLumEff( 8, {97.24, 107.22, 104.97, 102.39, 100.71, 106.42, 141.88, 152.23}); // Diffuse luminous efficacy coefficients - static Array1D< Real64 > const BDiffLumEff( 8, { -0.46, 1.15, 2.96, 5.59, 5.94, 3.83, 1.90, 0.35 } ); - static Array1D< Real64 > const CDiffLumEff( 8, { 12.00, 0.59, -5.53, -13.95, -22.75, -36.15, -53.24, -45.27 } ); - static Array1D< Real64 > const DDiffLumEff( 8, { -8.91, -3.95, -8.77, -13.90, -23.74, -28.83, -14.03, -7.98 } ); + static Array1D const BDiffLumEff(8, {-0.46, 1.15, 2.96, 5.59, 5.94, 3.83, 1.90, 0.35}); + static Array1D const CDiffLumEff(8, {12.00, 0.59, -5.53, -13.95, -22.75, -36.15, -53.24, -45.27}); + static Array1D const DDiffLumEff(8, {-8.91, -3.95, -8.77, -13.90, -23.74, -28.83, -14.03, -7.98}); static Array1D const ADirLumEff( 8, {57.20, 98.99, 109.83, 110.34, 106.36, 107.19, 105.75, 101.18}); // Direct luminous efficacy coefficients - static Array1D< Real64 > const BDirLumEff( 8, { -4.55, -3.46, -4.90, -5.84, -3.97, -1.25, 0.77, 1.58 } ); - static Array1D< Real64 > const CDirLumEff( 8, { -2.98, -1.21, -1.71, -1.99, -1.75, -1.51, -1.26, -1.10 } ); - static Array1D< Real64 > const DDirLumEff( 8, { 117.12, 12.38, -8.81, -4.56, -6.16, -26.73, -34.44, -8.29 } ); + static Array1D const BDirLumEff(8, {-4.55, -3.46, -4.90, -5.84, -3.97, -1.25, 0.77, 1.58}); + static Array1D const CDirLumEff(8, {-2.98, -1.21, -1.71, -1.99, -1.75, -1.51, -1.26, -1.10}); + static Array1D const DDirLumEff(8, {117.12, 12.38, -8.81, -4.56, -6.16, -26.73, -34.44, -8.29}); static Array1D const ExtraDirNormIll(12, {131153.0, 130613.0, 128992.0, 126816.0, 124731.0, 123240.0, 122652.0, 123120.0, 124576.0, 126658.0, 128814.0, 130471.0}); // Monthly exterrestrial direct normal illuminance (lum/m2) - // INTERFACE BLOCK SPECIFICATIONS: - // na - - // DERIVED TYPE DEFINITIONS: - // na - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - Real64 SunZenith; // Solar zenith angle (radians) - Real64 SunAltitude; // Solar altitude angle (radians) - Real64 SinSunAltitude; // Sine of the solar altitude angle - Real64 Zeta; - int ISkyClearness; // Sky clearness bin - Real64 AirMass; // Relative optical air mass - Real64 AtmosMoisture; // Atmospheric moisture (cm of precipitable water) - - // FLOW: - - SunZenith = std::acos( SOLCOS( 3 ) ); - SunAltitude = PiOvr2 - SunZenith; - SinSunAltitude = std::sin( SunAltitude ); - // Clearness of sky. SkyClearness close to 1.0 corresponds to an overcast sky. - // SkyClearness > 6 is a clear sky. - // DifSolarRad is the diffuse horizontal irradiance. - // BeamSolarRad is the direct normal irradiance. - Zeta = 1.041 * pow_3( SunZenith ); - SkyClearness = ( ( DifSolarRad + BeamSolarRad ) / ( DifSolarRad + 0.0001 ) + Zeta ) / ( 1.0 + Zeta ); - AirMass = ( 1.0 - 0.1 * Elevation / 1000.0 ) / ( SinSunAltitude + 0.15 / std::pow( SunAltitude / DegToRadians + 3.885, 1.253 ) ); - // In the following, 93.73 is the extraterrestrial luminous efficacy - SkyBrightness = ( DifSolarRad * 93.73 ) * AirMass / ExtraDirNormIll( Month ); - if ( SkyClearness <= 1.065 ) { - ISkyClearness = 1; - } else if ( SkyClearness > 1.065 && SkyClearness <= 1.23 ) { - ISkyClearness = 2; - } else if ( SkyClearness > 1.23 && SkyClearness <= 1.50 ) { - ISkyClearness = 3; - } else if ( SkyClearness > 1.50 && SkyClearness <= 1.95 ) { - ISkyClearness = 4; - } else if ( SkyClearness > 1.95 && SkyClearness <= 2.80 ) { - ISkyClearness = 5; - } else if ( SkyClearness > 2.80 && SkyClearness <= 4.50 ) { - ISkyClearness = 6; - } else if ( SkyClearness > 4.50 && SkyClearness <= 6.20 ) { - ISkyClearness = 7; - } else { - ISkyClearness = 8; - } - AtmosMoisture = std::exp( 0.07 * OutDewPointTemp - 0.075 ); - // Sky diffuse luminous efficacy - if ( SkyBrightness <= 0.0 ) { - DiffLumEff = 0.0; - } else { + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // DERIVED TYPE DEFINITIONS: + // na + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + Real64 SunZenith; // Solar zenith angle (radians) + Real64 SunAltitude; // Solar altitude angle (radians) + Real64 SinSunAltitude; // Sine of the solar altitude angle + Real64 Zeta; + int ISkyClearness; // Sky clearness bin + Real64 AirMass; // Relative optical air mass + Real64 AtmosMoisture; // Atmospheric moisture (cm of precipitable water) + + // FLOW: + + SunZenith = std::acos(SOLCOS(3)); + SunAltitude = PiOvr2 - SunZenith; + SinSunAltitude = std::sin(SunAltitude); + // Clearness of sky. SkyClearness close to 1.0 corresponds to an overcast sky. + // SkyClearness > 6 is a clear sky. + // DifSolarRad is the diffuse horizontal irradiance. + // BeamSolarRad is the direct normal irradiance. + Zeta = 1.041 * pow_3(SunZenith); + SkyClearness = ((DifSolarRad + BeamSolarRad) / (DifSolarRad + 0.0001) + Zeta) / (1.0 + Zeta); + AirMass = (1.0 - 0.1 * Elevation / 1000.0) / (SinSunAltitude + 0.15 / std::pow(SunAltitude / DegToRadians + 3.885, 1.253)); + // In the following, 93.73 is the extraterrestrial luminous efficacy + SkyBrightness = (DifSolarRad * 93.73) * AirMass / ExtraDirNormIll(Month); + if (SkyClearness <= 1.065) { + ISkyClearness = 1; + } else if (SkyClearness > 1.065 && SkyClearness <= 1.23) { + ISkyClearness = 2; + } else if (SkyClearness > 1.23 && SkyClearness <= 1.50) { + ISkyClearness = 3; + } else if (SkyClearness > 1.50 && SkyClearness <= 1.95) { + ISkyClearness = 4; + } else if (SkyClearness > 1.95 && SkyClearness <= 2.80) { + ISkyClearness = 5; + } else if (SkyClearness > 2.80 && SkyClearness <= 4.50) { + ISkyClearness = 6; + } else if (SkyClearness > 4.50 && SkyClearness <= 6.20) { + ISkyClearness = 7; + } else { + ISkyClearness = 8; + } + AtmosMoisture = std::exp(0.07 * OutDewPointTemp - 0.075); + // Sky diffuse luminous efficacy + if (SkyBrightness <= 0.0) { + DiffLumEff = 0.0; + } else { DiffLumEff = ADiffLumEff(ISkyClearness) + BDiffLumEff(ISkyClearness) * AtmosMoisture + CDiffLumEff(ISkyClearness) * SOLCOS(3) + DDiffLumEff(ISkyClearness) * std::log(SkyBrightness); - } - // Direct normal luminous efficacy - if ( SkyBrightness <= 0.0 ) { - DirLumEff = 0.0; - } else { + } + // Direct normal luminous efficacy + if (SkyBrightness <= 0.0) { + DirLumEff = 0.0; + } else { DirLumEff = max(0.0, ADirLumEff(ISkyClearness) + BDirLumEff(ISkyClearness) * AtmosMoisture + CDirLumEff(ISkyClearness) * std::exp(5.73 * SunZenith - 5.0) + DDirLumEff(ISkyClearness) * SkyBrightness); - } - } + } + } Real64 GetSTM(Real64 const Longitude) // Longitude from user input - { - // FUNCTION INFORMATION: - // AUTHOR Linda K. Lawrie - // DATE WRITTEN August 2003 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS FUNCTION: - // This function determines the "standard time meridian" from the input - // longitude. Calculates the proper Meridian from Longitude. This - // value is needed for weather calculations so that the sun comes - // up and goes down at the right times. - - // METHODOLOGY EMPLOYED: - // na - - // REFERENCES: - // na - - // USE STATEMENTS: - // na - - // Return value - Real64 GetSTM; - - // Locals - // FUNCTION ARGUMENT DEFINITIONS: - - // FUNCTION PARAMETER DEFINITIONS: - // na - - // INTERFACE BLOCK SPECIFICATIONS: - // na - - // DERIVED TYPE DEFINITIONS: - // na - - // FUNCTION LOCAL VARIABLE DECLARATIONS: - Array1D< Real64 > longl( {-12,12} ); // Lower Longitude value for a Time Zone - Array1D< Real64 > longh( {-12,12} ); // Upper Longitude value for a Time Zone - int i; // Loop variable - Real64 temp; // temporary value used to determine time zone - Real64 tz; // resultant tz meridian - - GetSTM = 0.0; - - longl( 0 ) = -7.5; - longh( 0 ) = 7.5; - for ( i = 1; i <= 12; ++i ) { - longl( i ) = longl( i - 1 ) + 15.0; - longh( i ) = longh( i - 1 ) + 15.0; - } - for ( i = 1; i <= 12; ++i ) { - longl( -i ) = longl( -i + 1 ) - 15.0; - longh( -i ) = longh( -i + 1 ) - 15.0; - } - temp = Longitude; - temp = mod( temp, 360.0 ); - - if ( temp > 180.0 ) temp -= 180.0; - for ( i = -12; i <= 12; ++i ) { - if ( temp > longl( i ) && temp <= longh( i ) ) { - tz = i; - tz = mod( tz, 24.0 ); - GetSTM = tz; - break; - } - } - - return GetSTM; - } + { + // FUNCTION INFORMATION: + // AUTHOR Linda K. Lawrie + // DATE WRITTEN August 2003 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS FUNCTION: + // This function determines the "standard time meridian" from the input + // longitude. Calculates the proper Meridian from Longitude. This + // value is needed for weather calculations so that the sun comes + // up and goes down at the right times. + + // METHODOLOGY EMPLOYED: + // na + + // REFERENCES: + // na + + // USE STATEMENTS: + // na + + // Return value + Real64 GetSTM; + + // Locals + // FUNCTION ARGUMENT DEFINITIONS: + + // FUNCTION PARAMETER DEFINITIONS: + // na + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // DERIVED TYPE DEFINITIONS: + // na + + // FUNCTION LOCAL VARIABLE DECLARATIONS: + Array1D longl({-12, 12}); // Lower Longitude value for a Time Zone + Array1D longh({-12, 12}); // Upper Longitude value for a Time Zone + int i; // Loop variable + Real64 temp; // temporary value used to determine time zone + Real64 tz; // resultant tz meridian + + GetSTM = 0.0; + + longl(0) = -7.5; + longh(0) = 7.5; + for (i = 1; i <= 12; ++i) { + longl(i) = longl(i - 1) + 15.0; + longh(i) = longh(i - 1) + 15.0; + } + for (i = 1; i <= 12; ++i) { + longl(-i) = longl(-i + 1) - 15.0; + longh(-i) = longh(-i + 1) - 15.0; + } + temp = Longitude; + temp = mod(temp, 360.0); + + if (temp > 180.0) temp -= 180.0; + for (i = -12; i <= 12; ++i) { + if (temp > longl(i) && temp <= longh(i)) { + tz = i; + tz = mod(tz, 24.0); + GetSTM = tz; + break; + } + } + + return GetSTM; + } void ProcessEPWHeader(std::string const &HeaderString, std::string &Line, bool &ErrorsFound) - { - - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN December 1999 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // This subroutine processes each header line in the EPW weather file. - - // METHODOLOGY EMPLOYED: - // File is positioned to the correct line, then backspaced. This routine - // reads in the line and processes as appropriate. - - // Using/Aliasing - using General::JulianDay; - - // SUBROUTINE PARAMETER DEFINITIONS: - static gio::Fmt fmtLD( "*" ); - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - static std::string Title; - int Count; - std::string WMO; - std::string::size_type Pos; - Real64 Number; - bool IOStatus; - int PMonth; - int PDay; - int PWeekDay; - int PYear; - int DateType; - int NumHdArgs; - bool errFlag; - std::string ErrNum; - int CurCount; - int CurOne; - int NumEPWHolidays; - int NumGrndTemps; - int TropExtremeCount; // because these can show up as "no dry" need to count and separate. - int actcount; - bool errflag1; - - // Strip off Header value from Line - Pos = index( Line, ',' ); - if ( ( Pos == std::string::npos ) && ( ! has_prefixi( HeaderString, "COMMENTS" ) ) ) { - ShowSevereError( "Invalid Header line in in.epw -- no commas" ); - ShowContinueError( "Line=" + Line ); - ShowFatalError( "Previous conditions cause termination." ); - } - if ( Pos != std::string::npos ) Line.erase( 0, Pos + 1 ); + { + + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN December 1999 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // This subroutine processes each header line in the EPW weather file. + + // METHODOLOGY EMPLOYED: + // File is positioned to the correct line, then backspaced. This routine + // reads in the line and processes as appropriate. + + // Using/Aliasing + using General::JulianDay; + + // SUBROUTINE PARAMETER DEFINITIONS: + static gio::Fmt fmtLD("*"); + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + static std::string Title; + int Count; + std::string WMO; + std::string::size_type Pos; + Real64 Number; + bool IOStatus; + int PMonth; + int PDay; + int PWeekDay; + int PYear; + int DateType; + int NumHdArgs; + bool errFlag; + std::string ErrNum; + int CurCount; + int CurOne; + int NumEPWHolidays; + int NumGrndTemps; + int TropExtremeCount; // because these can show up as "no dry" need to count and separate. + int actcount; + bool errflag1; + + // Strip off Header value from Line + Pos = index(Line, ','); + if ((Pos == std::string::npos) && (!has_prefixi(HeaderString, "COMMENTS"))) { + ShowSevereError("Invalid Header line in in.epw -- no commas"); + ShowContinueError("Line=" + Line); + ShowFatalError("Previous conditions cause termination."); + } + if (Pos != std::string::npos) Line.erase(0, Pos + 1); { auto const SELECT_CASE_var(UtilityRoutines::MakeUPPERCase(HeaderString)); - if ( SELECT_CASE_var == "LOCATION" ) { - - // LOCATION, A1 [City], A2 [State/Province/Region], A3 [Country], - // A4 [Source], N1 [WMO], N2 [Latitude], - // N3 [Longitude], N4 [Time Zone], N5 [Elevation {m}] - - NumHdArgs = 9; - Count = 1; - while ( Count <= NumHdArgs ) { - strip( Line ); - Pos = index( Line, ',' ); - if ( Pos == std::string::npos ) { - if ( len( Line ) == 0 ) { - while ( Pos == std::string::npos ) { - gio::read( WeatherFileUnitNumber, fmtA ) >> Line; - strip( Line ); - uppercase( Line ); - Pos = index( Line, ',' ); - } - } else { - Pos = len( Line ); - } - } + if (SELECT_CASE_var == "LOCATION") { + + // LOCATION, A1 [City], A2 [State/Province/Region], A3 [Country], + // A4 [Source], N1 [WMO], N2 [Latitude], + // N3 [Longitude], N4 [Time Zone], N5 [Elevation {m}] + + NumHdArgs = 9; + Count = 1; + while (Count <= NumHdArgs) { + strip(Line); + Pos = index(Line, ','); + if (Pos == std::string::npos) { + if (len(Line) == 0) { + while (Pos == std::string::npos) { + gio::read(WeatherFileUnitNumber, fmtA) >> Line; + strip(Line); + uppercase(Line); + Pos = index(Line, ','); + } + } else { + Pos = len(Line); + } + } { auto const SELECT_CASE_var1(Count); - if ( SELECT_CASE_var1 == 1 ) { - Title = stripped( Line.substr( 0, Pos ) ); + if (SELECT_CASE_var1 == 1) { + Title = stripped(Line.substr(0, Pos)); - } else if ( ( SELECT_CASE_var1 == 2 ) || ( SELECT_CASE_var1 == 3 ) || ( SELECT_CASE_var1 == 4 ) ) { - Title = strip( Title ) + ' ' + stripped( Line.substr( 0, Pos ) ); + } else if ((SELECT_CASE_var1 == 2) || (SELECT_CASE_var1 == 3) || (SELECT_CASE_var1 == 4)) { + Title = strip(Title) + ' ' + stripped(Line.substr(0, Pos)); - } else if ( SELECT_CASE_var1 == 5 ) { - WMO = stripped( Line.substr( 0, Pos ) ); - Title += " WMO#=" + WMO; + } else if (SELECT_CASE_var1 == 5) { + WMO = stripped(Line.substr(0, Pos)); + Title += " WMO#=" + WMO; - } else if ( ( SELECT_CASE_var1 == 6 ) || ( SELECT_CASE_var1 == 7 ) || ( SELECT_CASE_var1 == 8 ) || ( SELECT_CASE_var1 == 9 ) ) { - Number = UtilityRoutines::ProcessNumber( Line.substr( 0, Pos ), errFlag ); - if ( ! errFlag ) { + } else if ((SELECT_CASE_var1 == 6) || (SELECT_CASE_var1 == 7) || (SELECT_CASE_var1 == 8) || (SELECT_CASE_var1 == 9)) { + Number = UtilityRoutines::ProcessNumber(Line.substr(0, Pos), errFlag); + if (!errFlag) { { auto const SELECT_CASE_var2(Count); - if ( SELECT_CASE_var2 == 6 ) { - WeatherFileLatitude = Number; - } else if ( SELECT_CASE_var2 == 7 ) { - WeatherFileLongitude = Number; - } else if ( SELECT_CASE_var2 == 8 ) { - WeatherFileTimeZone = Number; - } else if ( SELECT_CASE_var2 == 9 ) { - WeatherFileElevation = Number; + if (SELECT_CASE_var2 == 6) { + WeatherFileLatitude = Number; + } else if (SELECT_CASE_var2 == 7) { + WeatherFileLongitude = Number; + } else if (SELECT_CASE_var2 == 8) { + WeatherFileTimeZone = Number; + } else if (SELECT_CASE_var2 == 9) { + WeatherFileElevation = Number; } } - } else { - ShowSevereError( "GetEPWHeader:LOCATION, invalid numeric=" + Line.substr( 0, Pos ) ); - ErrorsFound = true; - } + } else { + ShowSevereError("GetEPWHeader:LOCATION, invalid numeric=" + Line.substr(0, Pos)); + ErrorsFound = true; + } + } + } + Line.erase(0, Pos + 1); + ++Count; + } + WeatherFileLocationTitle = stripped(Title); + + } else if (SELECT_CASE_var == "DESIGN CONDITIONS") { + // No action + + } else if (SELECT_CASE_var == "TYPICAL/EXTREME PERIODS") { + TropExtremeCount = 0; + strip(Line); + Pos = index(Line, ','); + if (Pos == std::string::npos) { + if (len(Line) == 0) { + while (Pos == std::string::npos && len(Line) == 0) { + gio::read(WeatherFileUnitNumber, fmtA) >> Line; + strip(Line); + Pos = index(Line, ','); } + } else { + Pos = len(Line); + } + } + NumEPWTypExtSets = UtilityRoutines::ProcessNumber(Line.substr(0, Pos), IOStatus); + Line.erase(0, Pos + 1); + TypicalExtremePeriods.allocate(NumEPWTypExtSets); + TropExtremeCount = 0; + Count = 1; + while (Count <= NumEPWTypExtSets) { + strip(Line); + Pos = index(Line, ','); + if (Pos != std::string::npos) { + TypicalExtremePeriods(Count).Title = Line.substr(0, Pos); + Line.erase(0, Pos + 1); + } else { + ShowWarningError("ProcessEPWHeader: Invalid Typical/Extreme Periods Header(WeatherFile)=" + Line.substr(0, Pos)); + ShowContinueError("...on processing Typical/Extreme period #" + RoundSigDigits(Count)); + NumEPWTypExtSets = Count - 1; + break; } - Line.erase( 0, Pos + 1 ); - ++Count; - } - WeatherFileLocationTitle = stripped( Title ); - - } else if ( SELECT_CASE_var == "DESIGN CONDITIONS" ) { - // No action - - } else if ( SELECT_CASE_var == "TYPICAL/EXTREME PERIODS" ) { - TropExtremeCount = 0; - strip( Line ); - Pos = index( Line, ',' ); - if ( Pos == std::string::npos ) { - if ( len( Line ) == 0 ) { - while ( Pos == std::string::npos && len( Line ) == 0 ) { - gio::read( WeatherFileUnitNumber, fmtA ) >> Line; - strip( Line ); - Pos = index( Line, ',' ); - } - } else { - Pos = len( Line ); - } - } - NumEPWTypExtSets = UtilityRoutines::ProcessNumber( Line.substr( 0, Pos ), IOStatus ); - Line.erase( 0, Pos + 1 ); - TypicalExtremePeriods.allocate( NumEPWTypExtSets ); - TropExtremeCount = 0; - Count = 1; - while ( Count <= NumEPWTypExtSets ) { - strip( Line ); - Pos = index( Line, ',' ); - if ( Pos != std::string::npos ) { - TypicalExtremePeriods( Count ).Title = Line.substr( 0, Pos ); - Line.erase( 0, Pos + 1 ); - } else { - ShowWarningError( "ProcessEPWHeader: Invalid Typical/Extreme Periods Header(WeatherFile)=" + Line.substr( 0, Pos ) ); - ShowContinueError( "...on processing Typical/Extreme period #" + RoundSigDigits( Count ) ); - NumEPWTypExtSets = Count - 1; - break; - } - Pos = index( Line, ',' ); - if ( Pos != std::string::npos ) { - TypicalExtremePeriods( Count ).TEType = Line.substr( 0, Pos ); - Line.erase( 0, Pos + 1 ); - if ( UtilityRoutines::SameString( TypicalExtremePeriods( Count ).TEType, "EXTREME" ) ) { - if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "NO DRY SEASON - WEEK NEAR ANNUAL MAX" ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "NoDrySeasonMax"; - } else if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "NO DRY SEASON - WEEK NEAR ANNUAL MIN" ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "NoDrySeasonMin"; - } else if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "NO WET SEASON - WEEK NEAR ANNUAL MAX" ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "NoWetSeasonMax"; - } else if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "NO WET SEASON - WEEK NEAR ANNUAL MIN" ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "NoWetSeasonMin"; - // to account for problems earlier in weather files: - } else if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "NO DRY" ) ) { - if ( TropExtremeCount == 0 ) { - TypicalExtremePeriods( Count ).Title = "No Dry Season - Week Near Annual Max"; - TypicalExtremePeriods( Count ).ShortTitle = "NoDrySeasonMax"; - ++TropExtremeCount; - } else if ( TropExtremeCount == 1 ) { - TypicalExtremePeriods( Count ).Title = "No Dry Season - Week Near Annual Min"; - TypicalExtremePeriods( Count ).ShortTitle = "NoDrySeasonMin"; - ++TropExtremeCount; - } - } else { // make new short titles - if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "SUMMER" ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "Summer"; - } else if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "WINTER" ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "Winter"; - } else if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "TROPICAL HOT" ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "TropicalHot"; - } else if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "TROPICAL COLD" ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "TropicalCold"; - } else if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "AUTUMN" ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "Autumn"; - } else if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "NO DRY" ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "NoDrySeason"; - } else if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "NO WET" ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "NoWetSeason"; - } else if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "WET " ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "WetSeason"; - } else if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "DRY " ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "DrySeason"; - } else if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "SPRING" ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "Spring"; - } - } - } else { // not extreme - if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "SUMMER" ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "Summer"; - } else if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "WINTER" ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "Winter"; - } else if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "TROPICAL HOT" ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "TropicalHot"; - } else if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "TROPICAL COLD" ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "TropicalCold"; - } else if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "AUTUMN" ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "Autumn"; - } else if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "NO DRY" ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "NoDrySeason"; - } else if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "NO WET" ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "NoWetSeason"; - } else if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "WET " ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "WetSeason"; - } else if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "DRY " ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "DrySeason"; - } else if ( has_prefixi( TypicalExtremePeriods( Count ).Title, "SPRING" ) ) { - TypicalExtremePeriods( Count ).ShortTitle = "Spring"; - } - } - } else { + Pos = index(Line, ','); + if (Pos != std::string::npos) { + TypicalExtremePeriods(Count).TEType = Line.substr(0, Pos); + Line.erase(0, Pos + 1); + if (UtilityRoutines::SameString(TypicalExtremePeriods(Count).TEType, "EXTREME")) { + if (has_prefixi(TypicalExtremePeriods(Count).Title, "NO DRY SEASON - WEEK NEAR ANNUAL MAX")) { + TypicalExtremePeriods(Count).ShortTitle = "NoDrySeasonMax"; + } else if (has_prefixi(TypicalExtremePeriods(Count).Title, "NO DRY SEASON - WEEK NEAR ANNUAL MIN")) { + TypicalExtremePeriods(Count).ShortTitle = "NoDrySeasonMin"; + } else if (has_prefixi(TypicalExtremePeriods(Count).Title, "NO WET SEASON - WEEK NEAR ANNUAL MAX")) { + TypicalExtremePeriods(Count).ShortTitle = "NoWetSeasonMax"; + } else if (has_prefixi(TypicalExtremePeriods(Count).Title, "NO WET SEASON - WEEK NEAR ANNUAL MIN")) { + TypicalExtremePeriods(Count).ShortTitle = "NoWetSeasonMin"; + // to account for problems earlier in weather files: + } else if (has_prefixi(TypicalExtremePeriods(Count).Title, "NO DRY")) { + if (TropExtremeCount == 0) { + TypicalExtremePeriods(Count).Title = "No Dry Season - Week Near Annual Max"; + TypicalExtremePeriods(Count).ShortTitle = "NoDrySeasonMax"; + ++TropExtremeCount; + } else if (TropExtremeCount == 1) { + TypicalExtremePeriods(Count).Title = "No Dry Season - Week Near Annual Min"; + TypicalExtremePeriods(Count).ShortTitle = "NoDrySeasonMin"; + ++TropExtremeCount; + } + } else { // make new short titles + if (has_prefixi(TypicalExtremePeriods(Count).Title, "SUMMER")) { + TypicalExtremePeriods(Count).ShortTitle = "Summer"; + } else if (has_prefixi(TypicalExtremePeriods(Count).Title, "WINTER")) { + TypicalExtremePeriods(Count).ShortTitle = "Winter"; + } else if (has_prefixi(TypicalExtremePeriods(Count).Title, "TROPICAL HOT")) { + TypicalExtremePeriods(Count).ShortTitle = "TropicalHot"; + } else if (has_prefixi(TypicalExtremePeriods(Count).Title, "TROPICAL COLD")) { + TypicalExtremePeriods(Count).ShortTitle = "TropicalCold"; + } else if (has_prefixi(TypicalExtremePeriods(Count).Title, "AUTUMN")) { + TypicalExtremePeriods(Count).ShortTitle = "Autumn"; + } else if (has_prefixi(TypicalExtremePeriods(Count).Title, "NO DRY")) { + TypicalExtremePeriods(Count).ShortTitle = "NoDrySeason"; + } else if (has_prefixi(TypicalExtremePeriods(Count).Title, "NO WET")) { + TypicalExtremePeriods(Count).ShortTitle = "NoWetSeason"; + } else if (has_prefixi(TypicalExtremePeriods(Count).Title, "WET ")) { + TypicalExtremePeriods(Count).ShortTitle = "WetSeason"; + } else if (has_prefixi(TypicalExtremePeriods(Count).Title, "DRY ")) { + TypicalExtremePeriods(Count).ShortTitle = "DrySeason"; + } else if (has_prefixi(TypicalExtremePeriods(Count).Title, "SPRING")) { + TypicalExtremePeriods(Count).ShortTitle = "Spring"; + } + } + } else { // not extreme + if (has_prefixi(TypicalExtremePeriods(Count).Title, "SUMMER")) { + TypicalExtremePeriods(Count).ShortTitle = "Summer"; + } else if (has_prefixi(TypicalExtremePeriods(Count).Title, "WINTER")) { + TypicalExtremePeriods(Count).ShortTitle = "Winter"; + } else if (has_prefixi(TypicalExtremePeriods(Count).Title, "TROPICAL HOT")) { + TypicalExtremePeriods(Count).ShortTitle = "TropicalHot"; + } else if (has_prefixi(TypicalExtremePeriods(Count).Title, "TROPICAL COLD")) { + TypicalExtremePeriods(Count).ShortTitle = "TropicalCold"; + } else if (has_prefixi(TypicalExtremePeriods(Count).Title, "AUTUMN")) { + TypicalExtremePeriods(Count).ShortTitle = "Autumn"; + } else if (has_prefixi(TypicalExtremePeriods(Count).Title, "NO DRY")) { + TypicalExtremePeriods(Count).ShortTitle = "NoDrySeason"; + } else if (has_prefixi(TypicalExtremePeriods(Count).Title, "NO WET")) { + TypicalExtremePeriods(Count).ShortTitle = "NoWetSeason"; + } else if (has_prefixi(TypicalExtremePeriods(Count).Title, "WET ")) { + TypicalExtremePeriods(Count).ShortTitle = "WetSeason"; + } else if (has_prefixi(TypicalExtremePeriods(Count).Title, "DRY ")) { + TypicalExtremePeriods(Count).ShortTitle = "DrySeason"; + } else if (has_prefixi(TypicalExtremePeriods(Count).Title, "SPRING")) { + TypicalExtremePeriods(Count).ShortTitle = "Spring"; + } + } + } else { ShowWarningError("ProcessEPWHeader: Invalid Typical/Extreme Periods Header(WeatherFile)=" + TypicalExtremePeriods(Count).Title + BlankString + Line.substr(0, Pos)); - ShowContinueError( "...on processing Typical/Extreme period #" + RoundSigDigits( Count ) ); - NumEPWTypExtSets = Count - 1; - break; - } - Pos = index( Line, ',' ); - if ( Pos != std::string::npos ) { - ProcessDateString( Line.substr( 0, Pos ), PMonth, PDay, PWeekDay, DateType, ErrorsFound ); - if ( DateType != InvalidDate ) { - if ( PMonth != 0 && PDay != 0 ) { - TypicalExtremePeriods( Count ).StartMonth = PMonth; - TypicalExtremePeriods( Count ).StartDay = PDay; - } - } else { - ShowSevereError( "ProcessEPWHeader: Invalid Typical/Extreme Periods Start Date Field(WeatherFile)=" + Line.substr( 0, Pos ) ); - ShowContinueError( "...on processing Typical/Extreme period #" + RoundSigDigits( Count ) ); - ErrorsFound = true; - } - Line.erase( 0, Pos + 1 ); - } - Pos = index( Line, ',' ); - if ( Pos != std::string::npos ) { - ProcessDateString( Line.substr( 0, Pos ), PMonth, PDay, PWeekDay, DateType, ErrorsFound ); - if ( DateType != InvalidDate ) { - if ( PMonth != 0 && PDay != 0 ) { - TypicalExtremePeriods( Count ).EndMonth = PMonth; - TypicalExtremePeriods( Count ).EndDay = PDay; - } - } else { - ShowSevereError( "ProcessEPWHeader: Invalid Typical/Extreme Periods End Date Field(WeatherFile)=" + Line.substr( 0, Pos ) ); - ShowContinueError( "...on processing Typical/Extreme period #" + RoundSigDigits( Count ) ); - ErrorsFound = true; - } - Line.erase( 0, Pos + 1 ); - } else { // Pos=0, probably last one - ProcessDateString( Line, PMonth, PDay, PWeekDay, DateType, ErrorsFound ); - if ( DateType != InvalidDate ) { - if ( PMonth != 0 && PDay != 0 ) { - TypicalExtremePeriods( Count ).EndMonth = PMonth; - TypicalExtremePeriods( Count ).EndDay = PDay; - } - } else { - ShowSevereError( "ProcessEPWHeader: Invalid Typical/Extreme Periods End Date Field(WeatherFile)=" + Line.substr( 0, Pos ) ); - ErrorsFound = true; - } - } - ++Count; - } - // Process periods to set up other values. - for ( Count = 1; Count <= NumEPWTypExtSets; ++Count ) { - // JulianDay (Month,Day,LeapYearValue) + ShowContinueError("...on processing Typical/Extreme period #" + RoundSigDigits(Count)); + NumEPWTypExtSets = Count - 1; + break; + } + Pos = index(Line, ','); + if (Pos != std::string::npos) { + ProcessDateString(Line.substr(0, Pos), PMonth, PDay, PWeekDay, DateType, ErrorsFound); + if (DateType != InvalidDate) { + if (PMonth != 0 && PDay != 0) { + TypicalExtremePeriods(Count).StartMonth = PMonth; + TypicalExtremePeriods(Count).StartDay = PDay; + } + } else { + ShowSevereError("ProcessEPWHeader: Invalid Typical/Extreme Periods Start Date Field(WeatherFile)=" + Line.substr(0, Pos)); + ShowContinueError("...on processing Typical/Extreme period #" + RoundSigDigits(Count)); + ErrorsFound = true; + } + Line.erase(0, Pos + 1); + } + Pos = index(Line, ','); + if (Pos != std::string::npos) { + ProcessDateString(Line.substr(0, Pos), PMonth, PDay, PWeekDay, DateType, ErrorsFound); + if (DateType != InvalidDate) { + if (PMonth != 0 && PDay != 0) { + TypicalExtremePeriods(Count).EndMonth = PMonth; + TypicalExtremePeriods(Count).EndDay = PDay; + } + } else { + ShowSevereError("ProcessEPWHeader: Invalid Typical/Extreme Periods End Date Field(WeatherFile)=" + Line.substr(0, Pos)); + ShowContinueError("...on processing Typical/Extreme period #" + RoundSigDigits(Count)); + ErrorsFound = true; + } + Line.erase(0, Pos + 1); + } else { // Pos=0, probably last one + ProcessDateString(Line, PMonth, PDay, PWeekDay, DateType, ErrorsFound); + if (DateType != InvalidDate) { + if (PMonth != 0 && PDay != 0) { + TypicalExtremePeriods(Count).EndMonth = PMonth; + TypicalExtremePeriods(Count).EndDay = PDay; + } + } else { + ShowSevereError("ProcessEPWHeader: Invalid Typical/Extreme Periods End Date Field(WeatherFile)=" + Line.substr(0, Pos)); + ErrorsFound = true; + } + } + ++Count; + } + // Process periods to set up other values. + for (Count = 1; Count <= NumEPWTypExtSets; ++Count) { + // JulianDay (Month,Day,LeapYearValue) { auto const SELECT_CASE_var1(UtilityRoutines::MakeUPPERCase(TypicalExtremePeriods(Count).ShortTitle)); - if ( SELECT_CASE_var1 == "SUMMER" ) { - if ( UtilityRoutines::SameString( TypicalExtremePeriods( Count ).TEType, "EXTREME" ) ) { - TypicalExtremePeriods( Count ).MatchValue = "SummerExtreme"; - TypicalExtremePeriods( Count ).MatchValue1 = "TropicalHot"; - TypicalExtremePeriods( Count ).MatchValue2 = "NoDrySeasonMax"; - } else { - TypicalExtremePeriods( Count ).MatchValue = "SummerTypical"; - } - - } else if ( SELECT_CASE_var1 == "WINTER" ) { - if ( UtilityRoutines::SameString( TypicalExtremePeriods( Count ).TEType, "EXTREME" ) ) { - TypicalExtremePeriods( Count ).MatchValue = "WinterExtreme"; - TypicalExtremePeriods( Count ).MatchValue1 = "TropicalCold"; - TypicalExtremePeriods( Count ).MatchValue2 = "NoDrySeasonMin"; - } else { - TypicalExtremePeriods( Count ).MatchValue = "WinterTypical"; - } - - } else if ( SELECT_CASE_var1 == "AUTUMN" ) { - TypicalExtremePeriods( Count ).MatchValue = "AutumnTypical"; - - } else if ( SELECT_CASE_var1 == "SPRING" ) { - TypicalExtremePeriods( Count ).MatchValue = "SpringTypical"; - - } else if ( SELECT_CASE_var1 == "WETSEASON" ) { - TypicalExtremePeriods( Count ).MatchValue = "WetSeason"; - - } else if ( SELECT_CASE_var1 == "DRYSEASON" ) { - TypicalExtremePeriods( Count ).MatchValue = "DrySeason"; - - } else if ( SELECT_CASE_var1 == "NOWETSEASON" ) { - TypicalExtremePeriods( Count ).MatchValue = "NoWetSeason"; - - } else if ( SELECT_CASE_var1 == "NODRYSEASON" ) { - TypicalExtremePeriods( Count ).MatchValue = "NoDrySeason"; - - } else if ( ( SELECT_CASE_var1 == "NODRYSEASONMAX" ) || ( SELECT_CASE_var1 == "NOWETSEASONMAX" ) ) { - TypicalExtremePeriods( Count ).MatchValue = TypicalExtremePeriods( Count ).ShortTitle; - TypicalExtremePeriods( Count ).MatchValue1 = "TropicalHot"; - TypicalExtremePeriods( Count ).MatchValue2 = "SummerExtreme"; - - } else if ( ( SELECT_CASE_var1 == "NODRYSEASONMIN" ) || ( SELECT_CASE_var1 == "NOWETSEASONMIN" ) ) { - TypicalExtremePeriods( Count ).MatchValue = TypicalExtremePeriods( Count ).ShortTitle; - TypicalExtremePeriods( Count ).MatchValue1 = "TropicalCold"; - TypicalExtremePeriods( Count ).MatchValue2 = "WinterExtreme"; - - } else if ( SELECT_CASE_var1 == "TROPICALHOT" ) { - TypicalExtremePeriods( Count ).MatchValue = "TropicalHot"; - TypicalExtremePeriods( Count ).MatchValue1 = "SummerExtreme"; - TypicalExtremePeriods( Count ).MatchValue2 = "NoDrySeasonMax"; - - } else if ( SELECT_CASE_var1 == "TROPICALCOLD" ) { - TypicalExtremePeriods( Count ).MatchValue = "TropicalCold"; - TypicalExtremePeriods( Count ).MatchValue1 = "WinterExtreme"; - TypicalExtremePeriods( Count ).MatchValue2 = "NoDrySeasonMin"; - - } else { - TypicalExtremePeriods( Count ).MatchValue = "Invalid - no match"; + if (SELECT_CASE_var1 == "SUMMER") { + if (UtilityRoutines::SameString(TypicalExtremePeriods(Count).TEType, "EXTREME")) { + TypicalExtremePeriods(Count).MatchValue = "SummerExtreme"; + TypicalExtremePeriods(Count).MatchValue1 = "TropicalHot"; + TypicalExtremePeriods(Count).MatchValue2 = "NoDrySeasonMax"; + } else { + TypicalExtremePeriods(Count).MatchValue = "SummerTypical"; + } + + } else if (SELECT_CASE_var1 == "WINTER") { + if (UtilityRoutines::SameString(TypicalExtremePeriods(Count).TEType, "EXTREME")) { + TypicalExtremePeriods(Count).MatchValue = "WinterExtreme"; + TypicalExtremePeriods(Count).MatchValue1 = "TropicalCold"; + TypicalExtremePeriods(Count).MatchValue2 = "NoDrySeasonMin"; + } else { + TypicalExtremePeriods(Count).MatchValue = "WinterTypical"; + } + + } else if (SELECT_CASE_var1 == "AUTUMN") { + TypicalExtremePeriods(Count).MatchValue = "AutumnTypical"; + + } else if (SELECT_CASE_var1 == "SPRING") { + TypicalExtremePeriods(Count).MatchValue = "SpringTypical"; + + } else if (SELECT_CASE_var1 == "WETSEASON") { + TypicalExtremePeriods(Count).MatchValue = "WetSeason"; + + } else if (SELECT_CASE_var1 == "DRYSEASON") { + TypicalExtremePeriods(Count).MatchValue = "DrySeason"; + + } else if (SELECT_CASE_var1 == "NOWETSEASON") { + TypicalExtremePeriods(Count).MatchValue = "NoWetSeason"; + + } else if (SELECT_CASE_var1 == "NODRYSEASON") { + TypicalExtremePeriods(Count).MatchValue = "NoDrySeason"; + + } else if ((SELECT_CASE_var1 == "NODRYSEASONMAX") || (SELECT_CASE_var1 == "NOWETSEASONMAX")) { + TypicalExtremePeriods(Count).MatchValue = TypicalExtremePeriods(Count).ShortTitle; + TypicalExtremePeriods(Count).MatchValue1 = "TropicalHot"; + TypicalExtremePeriods(Count).MatchValue2 = "SummerExtreme"; + + } else if ((SELECT_CASE_var1 == "NODRYSEASONMIN") || (SELECT_CASE_var1 == "NOWETSEASONMIN")) { + TypicalExtremePeriods(Count).MatchValue = TypicalExtremePeriods(Count).ShortTitle; + TypicalExtremePeriods(Count).MatchValue1 = "TropicalCold"; + TypicalExtremePeriods(Count).MatchValue2 = "WinterExtreme"; + + } else if (SELECT_CASE_var1 == "TROPICALHOT") { + TypicalExtremePeriods(Count).MatchValue = "TropicalHot"; + TypicalExtremePeriods(Count).MatchValue1 = "SummerExtreme"; + TypicalExtremePeriods(Count).MatchValue2 = "NoDrySeasonMax"; + + } else if (SELECT_CASE_var1 == "TROPICALCOLD") { + TypicalExtremePeriods(Count).MatchValue = "TropicalCold"; + TypicalExtremePeriods(Count).MatchValue1 = "WinterExtreme"; + TypicalExtremePeriods(Count).MatchValue2 = "NoDrySeasonMin"; + + } else { + TypicalExtremePeriods(Count).MatchValue = "Invalid - no match"; } } TypicalExtremePeriods(Count).StartJDay = JulianDay(TypicalExtremePeriods(Count).StartMonth, TypicalExtremePeriods(Count).StartDay, 0); - TypicalExtremePeriods( Count ).EndJDay = JulianDay( TypicalExtremePeriods( Count ).EndMonth, TypicalExtremePeriods( Count ).EndDay, 0 ); - if ( TypicalExtremePeriods( Count ).StartJDay <= TypicalExtremePeriods( Count ).EndJDay ) { - TypicalExtremePeriods( Count ).TotalDays = TypicalExtremePeriods( Count ).EndJDay - TypicalExtremePeriods( Count ).StartJDay + 1; - } else { + TypicalExtremePeriods(Count).EndJDay = JulianDay(TypicalExtremePeriods(Count).EndMonth, TypicalExtremePeriods(Count).EndDay, 0); + if (TypicalExtremePeriods(Count).StartJDay <= TypicalExtremePeriods(Count).EndJDay) { + TypicalExtremePeriods(Count).TotalDays = TypicalExtremePeriods(Count).EndJDay - TypicalExtremePeriods(Count).StartJDay + 1; + } else { TypicalExtremePeriods(Count).TotalDays = JulianDay(12, 31, LeapYearAdd) - TypicalExtremePeriods(Count).StartJDay + 1 + TypicalExtremePeriods(Count).EndJDay; - } - } - - } else if ( SELECT_CASE_var == "GROUND TEMPERATURES" ) { - // Added for ground surfaces defined with F or c factor method. TH 7/2009 - // Assume the 0.5 m set of ground temperatures - // or first set on a weather file, if any. - Pos = index( Line, ',' ); - if ( Pos != std::string::npos ) { - NumGrndTemps = UtilityRoutines::ProcessNumber( Line.substr( 0, Pos ), errFlag ); - if ( ! errFlag && NumGrndTemps >= 1 ) { - Line.erase( 0, Pos + 1 ); - // skip depth, soil conductivity, soil density, soil specific heat - for ( Count = 1; Count <= 4; ++Count ) { - Pos = index( Line, ',' ); - if ( Pos == std::string::npos ) { - Line = BlankString; - break; - } - Line.erase( 0, Pos + 1 ); - } - GroundTempsFCFromEPWHeader = 0.0; - actcount = 0; - for ( Count = 1; Count <= 12; ++Count ) { // take the first set of ground temperatures. - Pos = index( Line, ',' ); - if ( Pos != std::string::npos ) { - Number = UtilityRoutines::ProcessNumber( Line.substr( 0, Pos ), errFlag ); - GroundTempsFCFromEPWHeader( Count ) = Number; - ++actcount; - } else { - if ( len( Line ) > 0 ) { - Number = UtilityRoutines::ProcessNumber( Line.substr( 0, Pos ), errFlag ); - GroundTempsFCFromEPWHeader( Count ) = Number; - ++actcount; - } - break; - } - Line.erase( 0, Pos + 1 ); - } - if ( actcount == 12 ) wthFCGroundTemps = true; - } - } - - } else if ( SELECT_CASE_var == "HOLIDAYS/DAYLIGHT SAVING" ) { - //A1, \field LeapYear Observed - // \type choice - // \key Yes - // \key No - // \note Yes if Leap Year will be observed for this file - // \note No if Leap Year days (29 Feb) should be ignored in this file - //A2, \field Daylight Saving Start Day - //A3, \field Daylight Saving End Day - //N1, \field Number of Holidays - //A4, \field Holiday 1 Name - //A5, \field Holiday 1 Day - // etc. - // Start with Minimum number of NumHdArgs - uppercase( Line ); - NumHdArgs = 4; - Count = 1; - while ( Count <= NumHdArgs ) { - strip( Line ); - Pos = index( Line, ',' ); - if ( Pos == std::string::npos ) { - if ( len( Line ) == 0 ) { - while ( Pos == std::string::npos ) { - gio::read( WeatherFileUnitNumber, fmtA ) >> Line; - strip( Line ); - uppercase( Line ); - Pos = index( Line, ',' ); - } - } else { - Pos = len( Line ); - } - } + } + } + + } else if (SELECT_CASE_var == "GROUND TEMPERATURES") { + // Added for ground surfaces defined with F or c factor method. TH 7/2009 + // Assume the 0.5 m set of ground temperatures + // or first set on a weather file, if any. + Pos = index(Line, ','); + if (Pos != std::string::npos) { + NumGrndTemps = UtilityRoutines::ProcessNumber(Line.substr(0, Pos), errFlag); + if (!errFlag && NumGrndTemps >= 1) { + Line.erase(0, Pos + 1); + // skip depth, soil conductivity, soil density, soil specific heat + for (Count = 1; Count <= 4; ++Count) { + Pos = index(Line, ','); + if (Pos == std::string::npos) { + Line = BlankString; + break; + } + Line.erase(0, Pos + 1); + } + GroundTempsFCFromEPWHeader = 0.0; + actcount = 0; + for (Count = 1; Count <= 12; ++Count) { // take the first set of ground temperatures. + Pos = index(Line, ','); + if (Pos != std::string::npos) { + Number = UtilityRoutines::ProcessNumber(Line.substr(0, Pos), errFlag); + GroundTempsFCFromEPWHeader(Count) = Number; + ++actcount; + } else { + if (len(Line) > 0) { + Number = UtilityRoutines::ProcessNumber(Line.substr(0, Pos), errFlag); + GroundTempsFCFromEPWHeader(Count) = Number; + ++actcount; + } + break; + } + Line.erase(0, Pos + 1); + } + if (actcount == 12) wthFCGroundTemps = true; + } + } + + } else if (SELECT_CASE_var == "HOLIDAYS/DAYLIGHT SAVING") { + // A1, \field LeapYear Observed + // \type choice + // \key Yes + // \key No + // \note Yes if Leap Year will be observed for this file + // \note No if Leap Year days (29 Feb) should be ignored in this file + // A2, \field Daylight Saving Start Day + // A3, \field Daylight Saving End Day + // N1, \field Number of Holidays + // A4, \field Holiday 1 Name + // A5, \field Holiday 1 Day + // etc. + // Start with Minimum number of NumHdArgs + uppercase(Line); + NumHdArgs = 4; + Count = 1; + while (Count <= NumHdArgs) { + strip(Line); + Pos = index(Line, ','); + if (Pos == std::string::npos) { + if (len(Line) == 0) { + while (Pos == std::string::npos) { + gio::read(WeatherFileUnitNumber, fmtA) >> Line; + strip(Line); + uppercase(Line); + Pos = index(Line, ','); + } + } else { + Pos = len(Line); + } + } { auto const SELECT_CASE_var1(Count); - if ( SELECT_CASE_var1 == 1 ) { - if ( Line[ 0 ] == 'Y' ) { - // LeapYear=.TRUE. - WFAllowsLeapYears = true; - WFLeapYearInd = 0; //1 - } else { - // LeapYear=.FALSE. - WFAllowsLeapYears = false; - WFLeapYearInd = 0; - } - - } else if ( SELECT_CASE_var1 == 2 ) { - errflag1 = ErrorsFound; - ErrorsFound = false; - ProcessDateString( Line.substr( 0, Pos ), PMonth, PDay, PWeekDay, DateType, ErrorsFound ); - if ( DateType != InvalidDate ) { - if ( PMonth == 0 && PDay == 0 ) { - EPWDaylightSaving = false; - } else { - EPWDaylightSaving = true; - EPWDST.StDateType = DateType; - EPWDST.StMon = PMonth; - EPWDST.StDay = PDay; - EPWDST.StWeekDay = PWeekDay; - } - } else { - ErrorsFound = errflag1; + if (SELECT_CASE_var1 == 1) { + if (Line[0] == 'Y') { + // LeapYear=.TRUE. + WFAllowsLeapYears = true; + WFLeapYearInd = 0; // 1 + } else { + // LeapYear=.FALSE. + WFAllowsLeapYears = false; + WFLeapYearInd = 0; + } + + } else if (SELECT_CASE_var1 == 2) { + errflag1 = ErrorsFound; + ErrorsFound = false; + ProcessDateString(Line.substr(0, Pos), PMonth, PDay, PWeekDay, DateType, ErrorsFound); + if (DateType != InvalidDate) { + if (PMonth == 0 && PDay == 0) { + EPWDaylightSaving = false; + } else { + EPWDaylightSaving = true; + EPWDST.StDateType = DateType; + EPWDST.StMon = PMonth; + EPWDST.StDay = PDay; + EPWDST.StWeekDay = PWeekDay; + } + } else { + ErrorsFound = errflag1; ShowContinueError("ProcessEPWHeader: Invalid Daylight Saving Period Start Date Field(WeatherFile)=" + Line.substr(0, Pos)); - ShowContinueError( "...invalid header=" + HeaderString ); - ShowContinueError( "...Setting Weather File DST to false." ); - EPWDaylightSaving = false; - } - - } else if ( SELECT_CASE_var1 == 3 ) { - ProcessDateString( Line.substr( 0, Pos ), PMonth, PDay, PWeekDay, DateType, ErrorsFound ); - if ( EPWDaylightSaving ) { - if ( DateType != InvalidDate ) { - EPWDST.EnDateType = DateType; - EPWDST.EnMon = PMonth; - EPWDST.EnDay = PDay; - EPWDST.EnWeekDay = PWeekDay; - } else { + ShowContinueError("...invalid header=" + HeaderString); + ShowContinueError("...Setting Weather File DST to false."); + EPWDaylightSaving = false; + } + + } else if (SELECT_CASE_var1 == 3) { + ProcessDateString(Line.substr(0, Pos), PMonth, PDay, PWeekDay, DateType, ErrorsFound); + if (EPWDaylightSaving) { + if (DateType != InvalidDate) { + EPWDST.EnDateType = DateType; + EPWDST.EnMon = PMonth; + EPWDST.EnDay = PDay; + EPWDST.EnWeekDay = PWeekDay; + } else { ShowWarningError("ProcessEPWHeader: Invalid Daylight Saving Period End Date Field(WeatherFile)=" + Line.substr(0, Pos)); - ShowContinueError( "...Setting Weather File DST to false." ); - EPWDaylightSaving = false; - } - DST = EPWDST; - } - - } else if ( SELECT_CASE_var1 == 4 ) { - NumEPWHolidays = UtilityRoutines::ProcessNumber( Line.substr( 0, Pos ), IOStatus ); - NumSpecialDays = NumEPWHolidays + inputProcessor->getNumObjectsFound( "RunPeriodControl:SpecialDays" ); - SpecialDays.allocate( NumSpecialDays ); - NumHdArgs = 4 + NumEPWHolidays * 2; - CurCount = 0; - - } else if ( ( SELECT_CASE_var1 >= 5 ) ) { - if ( mod( Count, 2 ) != 0 ) { - ++CurCount; - if ( CurCount > NumSpecialDays ) { - ShowSevereError( "Too many SpecialDays" ); - ErrorsFound = true; - } else { - SpecialDays( CurCount ).Name = Line.substr( 0, Pos ); - } - // Process name - } else { - if ( CurCount <= NumSpecialDays ) { - // Process date - ProcessDateString( Line.substr( 0, Pos ), PMonth, PDay, PWeekDay, DateType, ErrorsFound ); - if ( DateType == MonthDay ) { - SpecialDays( CurCount ).DateType = DateType; - SpecialDays( CurCount ).Month = PMonth; - SpecialDays( CurCount ).Day = PDay; - SpecialDays( CurCount ).WeekDay = 0; - SpecialDays( CurCount ).CompDate = PMonth * 32 + PDay; - SpecialDays( CurCount ).Duration = 1; - SpecialDays( CurCount ).DayType = 1; - SpecialDays( CurCount ).WthrFile = true; - } else if ( DateType != InvalidDate ) { - SpecialDays( CurCount ).DateType = DateType; - SpecialDays( CurCount ).Month = PMonth; - SpecialDays( CurCount ).Day = PDay; - SpecialDays( CurCount ).WeekDay = PWeekDay; - SpecialDays( CurCount ).CompDate = 0; - SpecialDays( CurCount ).Duration = 1; - SpecialDays( CurCount ).DayType = 1; - SpecialDays( CurCount ).WthrFile = true; - } else if ( DateType == InvalidDate ) { - ShowSevereError( "Invalid SpecialDay Date Field(WeatherFile)=" + Line.substr( 0, Pos ) ); - ErrorsFound = true; - } - } - } + ShowContinueError("...Setting Weather File DST to false."); + EPWDaylightSaving = false; + } + DST = EPWDST; + } + + } else if (SELECT_CASE_var1 == 4) { + NumEPWHolidays = UtilityRoutines::ProcessNumber(Line.substr(0, Pos), IOStatus); + NumSpecialDays = NumEPWHolidays + inputProcessor->getNumObjectsFound("RunPeriodControl:SpecialDays"); + SpecialDays.allocate(NumSpecialDays); + NumHdArgs = 4 + NumEPWHolidays * 2; + CurCount = 0; + + } else if ((SELECT_CASE_var1 >= 5)) { + if (mod(Count, 2) != 0) { + ++CurCount; + if (CurCount > NumSpecialDays) { + ShowSevereError("Too many SpecialDays"); + ErrorsFound = true; + } else { + SpecialDays(CurCount).Name = Line.substr(0, Pos); + } + // Process name + } else { + if (CurCount <= NumSpecialDays) { + // Process date + ProcessDateString(Line.substr(0, Pos), PMonth, PDay, PWeekDay, DateType, ErrorsFound); + if (DateType == MonthDay) { + SpecialDays(CurCount).DateType = DateType; + SpecialDays(CurCount).Month = PMonth; + SpecialDays(CurCount).Day = PDay; + SpecialDays(CurCount).WeekDay = 0; + SpecialDays(CurCount).CompDate = PMonth * 32 + PDay; + SpecialDays(CurCount).Duration = 1; + SpecialDays(CurCount).DayType = 1; + SpecialDays(CurCount).WthrFile = true; + } else if (DateType != InvalidDate) { + SpecialDays(CurCount).DateType = DateType; + SpecialDays(CurCount).Month = PMonth; + SpecialDays(CurCount).Day = PDay; + SpecialDays(CurCount).WeekDay = PWeekDay; + SpecialDays(CurCount).CompDate = 0; + SpecialDays(CurCount).Duration = 1; + SpecialDays(CurCount).DayType = 1; + SpecialDays(CurCount).WthrFile = true; + } else if (DateType == InvalidDate) { + ShowSevereError("Invalid SpecialDay Date Field(WeatherFile)=" + Line.substr(0, Pos)); + ErrorsFound = true; + } + } + } } } - Line.erase( 0, Pos + 1 ); - ++Count; - } - for ( Count = 1; Count <= NumEPWTypExtSets; ++Count ) { - // JulianDay (Month,Day,LeapYearValue) + Line.erase(0, Pos + 1); + ++Count; + } + for (Count = 1; Count <= NumEPWTypExtSets; ++Count) { + // JulianDay (Month,Day,LeapYearValue) TypicalExtremePeriods(Count).StartJDay = JulianDay(TypicalExtremePeriods(Count).StartMonth, TypicalExtremePeriods(Count).StartDay, LeapYearAdd); TypicalExtremePeriods(Count).EndJDay = JulianDay(TypicalExtremePeriods(Count).EndMonth, TypicalExtremePeriods(Count).EndDay, LeapYearAdd); - if ( TypicalExtremePeriods( Count ).StartJDay <= TypicalExtremePeriods( Count ).EndJDay ) { - TypicalExtremePeriods( Count ).TotalDays = TypicalExtremePeriods( Count ).EndJDay - TypicalExtremePeriods( Count ).StartJDay + 1; - } else { + if (TypicalExtremePeriods(Count).StartJDay <= TypicalExtremePeriods(Count).EndJDay) { + TypicalExtremePeriods(Count).TotalDays = TypicalExtremePeriods(Count).EndJDay - TypicalExtremePeriods(Count).StartJDay + 1; + } else { TypicalExtremePeriods(Count).TotalDays = JulianDay(12, 31, LeapYearAdd) - TypicalExtremePeriods(Count).StartJDay + 1 + TypicalExtremePeriods(Count).EndJDay; - } - } - - } else if ( ( SELECT_CASE_var == "COMMENTS 1" ) || ( SELECT_CASE_var == "COMMENTS 2" ) ) { - - } else if ( SELECT_CASE_var == "DATA PERIODS" ) { - // N1, \field Number of Data Periods - // N2, \field Number of Records per hour - // A1, \field Data Period 1 Name/Description - // A2, \field Data Period 1 Start Day of Week - // \type choice - // \key Sunday - // \key Monday - // \key Tuesday - // \key Wednesday - // \key Thursday - // \key Friday - // \key Saturday - // A3, \field Data Period 1 Start Day - // A4, \field Data Period 1 End Day - uppercase( Line ); - NumHdArgs = 2; - Count = 1; - while ( Count <= NumHdArgs ) { - strip( Line ); - Pos = index( Line, ',' ); - if ( Pos == std::string::npos ) { - if ( len( Line ) == 0 ) { - while ( Pos == std::string::npos ) { - gio::read( WeatherFileUnitNumber, fmtA ) >> Line; - strip( Line ); - uppercase( Line ); - Pos = index( Line, ',' ); - } - } else { - Pos = len( Line ); - } - } + } + } + + } else if ((SELECT_CASE_var == "COMMENTS 1") || (SELECT_CASE_var == "COMMENTS 2")) { + + } else if (SELECT_CASE_var == "DATA PERIODS") { + // N1, \field Number of Data Periods + // N2, \field Number of Records per hour + // A1, \field Data Period 1 Name/Description + // A2, \field Data Period 1 Start Day of Week + // \type choice + // \key Sunday + // \key Monday + // \key Tuesday + // \key Wednesday + // \key Thursday + // \key Friday + // \key Saturday + // A3, \field Data Period 1 Start Day + // A4, \field Data Period 1 End Day + uppercase(Line); + NumHdArgs = 2; + Count = 1; + while (Count <= NumHdArgs) { + strip(Line); + Pos = index(Line, ','); + if (Pos == std::string::npos) { + if (len(Line) == 0) { + while (Pos == std::string::npos) { + gio::read(WeatherFileUnitNumber, fmtA) >> Line; + strip(Line); + uppercase(Line); + Pos = index(Line, ','); + } + } else { + Pos = len(Line); + } + } { auto const SELECT_CASE_var1(Count); - if ( SELECT_CASE_var1 == 1 ) { - NumDataPeriods = UtilityRoutines::ProcessNumber( Line.substr( 0, Pos ), IOStatus ); - DataPeriods.allocate( NumDataPeriods ); - NumHdArgs += 4 * NumDataPeriods; - if ( NumDataPeriods > 0 ) { + if (SELECT_CASE_var1 == 1) { + NumDataPeriods = UtilityRoutines::ProcessNumber(Line.substr(0, Pos), IOStatus); + DataPeriods.allocate(NumDataPeriods); + NumHdArgs += 4 * NumDataPeriods; + if (NumDataPeriods > 0) { for (auto &e : DataPeriods) e.NumDays = 0; - } - CurCount = 0; + } + CurCount = 0; - } else if ( SELECT_CASE_var1 == 2 ) { - NumIntervalsPerHour = UtilityRoutines::ProcessNumber( Line.substr( 0, Pos ), IOStatus ); - // IF (NumIntervalsPerHour /= 1) THEN - // CALL ShowSevereError('Process EPW: Not ready for more than one interval per hour') - // ErrorsFound=.TRUE. - // ENDIF + } else if (SELECT_CASE_var1 == 2) { + NumIntervalsPerHour = UtilityRoutines::ProcessNumber(Line.substr(0, Pos), IOStatus); + // IF (NumIntervalsPerHour /= 1) THEN + // CALL ShowSevereError('Process EPW: Not ready for more than one interval per hour') + // ErrorsFound=.TRUE. + // ENDIF - } else if ( ( SELECT_CASE_var1 >= 3 ) ) { - CurOne = mod( Count - 3, 4 ); + } else if ((SELECT_CASE_var1 >= 3)) { + CurOne = mod(Count - 3, 4); { auto const SELECT_CASE_var2(CurOne); - if ( SELECT_CASE_var2 == 0 ) { - // Description of Data Period - ++CurCount; - if ( CurCount > NumDataPeriods ) { - ShowSevereError( "Too many data periods" ); - ErrorsFound = true; - } else { - DataPeriods( CurCount ).Name = Line.substr( 0, Pos ); - } - - } else if ( SELECT_CASE_var2 == 1 ) { - // Start Day of Week - if ( CurCount <= NumDataPeriods ) { - DataPeriods( CurCount ).DayOfWeek = Line.substr( 0, Pos ); + if (SELECT_CASE_var2 == 0) { + // Description of Data Period + ++CurCount; + if (CurCount > NumDataPeriods) { + ShowSevereError("Too many data periods"); + ErrorsFound = true; + } else { + DataPeriods(CurCount).Name = Line.substr(0, Pos); + } + + } else if (SELECT_CASE_var2 == 1) { + // Start Day of Week + if (CurCount <= NumDataPeriods) { + DataPeriods(CurCount).DayOfWeek = Line.substr(0, Pos); DataPeriods(CurCount).WeekDay = UtilityRoutines::FindItemInList(DataPeriods(CurCount).DayOfWeek, DaysOfWeek, 7); - if ( DataPeriods( CurCount ).WeekDay == 0 ) { - gio::write( ErrNum, fmtLD ) << CurCount; - strip( ErrNum ); + if (DataPeriods(CurCount).WeekDay == 0) { + gio::write(ErrNum, fmtLD) << CurCount; + strip(ErrNum); ShowSevereError("Weather File -- Invalid Start Day of Week for Data Period #" + ErrNum + ", Invalid day=" + DataPeriods(CurCount).DayOfWeek); - ErrorsFound = true; - } - } - - } else if ( SELECT_CASE_var2 == 2 ) { - // DataPeriod Start Day - if ( CurCount <= NumDataPeriods ) { - ProcessDateString( Line.substr( 0, Pos ), PMonth, PDay, PWeekDay, DateType, ErrorsFound, PYear ); - if ( DateType == MonthDay ) { - DataPeriods( CurCount ).StMon = PMonth; - DataPeriods( CurCount ).StDay = PDay; - DataPeriods( CurCount ).StYear = PYear; - if ( PYear != 0 ) DataPeriods( CurCount ).HasYearData = true; - } else { + ErrorsFound = true; + } + } + + } else if (SELECT_CASE_var2 == 2) { + // DataPeriod Start Day + if (CurCount <= NumDataPeriods) { + ProcessDateString(Line.substr(0, Pos), PMonth, PDay, PWeekDay, DateType, ErrorsFound, PYear); + if (DateType == MonthDay) { + DataPeriods(CurCount).StMon = PMonth; + DataPeriods(CurCount).StDay = PDay; + DataPeriods(CurCount).StYear = PYear; + if (PYear != 0) DataPeriods(CurCount).HasYearData = true; + } else { ShowSevereError("Data Periods must be of the form or (WeatherFile), found=" + Line.substr(0, Pos)); - ErrorsFound = true; - } - } - - } else if ( SELECT_CASE_var2 == 3 ) { - if ( CurCount <= NumDataPeriods ) { - ProcessDateString( Line.substr( 0, Pos ), PMonth, PDay, PWeekDay, DateType, ErrorsFound, PYear ); - if ( DateType == MonthDay ) { - DataPeriods( CurCount ).EnMon = PMonth; - DataPeriods( CurCount ).EnDay = PDay; - DataPeriods( CurCount ).EnYear = PYear; - if ( PYear == 0 && DataPeriods( CurCount ).HasYearData ) { - ShowWarningError( "Data Period (WeatherFile) - Start Date contains year. End Date does not." ); - ShowContinueError( "...Assuming same year as Start Date for this data." ); - DataPeriods( CurCount ).EnYear = DataPeriods( CurCount ).StYear; - } - } else { + ErrorsFound = true; + } + } + + } else if (SELECT_CASE_var2 == 3) { + if (CurCount <= NumDataPeriods) { + ProcessDateString(Line.substr(0, Pos), PMonth, PDay, PWeekDay, DateType, ErrorsFound, PYear); + if (DateType == MonthDay) { + DataPeriods(CurCount).EnMon = PMonth; + DataPeriods(CurCount).EnDay = PDay; + DataPeriods(CurCount).EnYear = PYear; + if (PYear == 0 && DataPeriods(CurCount).HasYearData) { + ShowWarningError("Data Period (WeatherFile) - Start Date contains year. End Date does not."); + ShowContinueError("...Assuming same year as Start Date for this data."); + DataPeriods(CurCount).EnYear = DataPeriods(CurCount).StYear; + } + } else { ShowSevereError("Data Periods must be of the form or , (WeatherFile) found=" + Line.substr(0, Pos)); - ErrorsFound = true; - } - } - if ( DataPeriods( CurCount ).StYear == 0 || DataPeriods( CurCount ).EnYear == 0 ) { + ErrorsFound = true; + } + } + if (DataPeriods(CurCount).StYear == 0 || DataPeriods(CurCount).EnYear == 0) { DataPeriods(CurCount).DataStJDay = JulianDay(DataPeriods(CurCount).StMon, DataPeriods(CurCount).StDay, LeapYearAdd); DataPeriods(CurCount).DataEnJDay = JulianDay(DataPeriods(CurCount).EnMon, DataPeriods(CurCount).EnDay, LeapYearAdd); - if ( DataPeriods( CurCount ).DataStJDay <= DataPeriods( CurCount ).DataEnJDay ) { - DataPeriods( CurCount ).NumDays = DataPeriods( CurCount ).DataEnJDay - DataPeriods( CurCount ).DataStJDay + 1; - } else { + if (DataPeriods(CurCount).DataStJDay <= DataPeriods(CurCount).DataEnJDay) { + DataPeriods(CurCount).NumDays = DataPeriods(CurCount).DataEnJDay - DataPeriods(CurCount).DataStJDay + 1; + } else { DataPeriods(CurCount).NumDays = (365 - DataPeriods(CurCount).DataStJDay + 1) + (DataPeriods(CurCount).DataEnJDay - 1 + 1); - } - } else { // weather file has actual year(s) + } + } else { // weather file has actual year(s) JGDate(GregorianToJulian, DataPeriods(CurCount).DataStJDay, DataPeriods(CurCount).StYear, DataPeriods(CurCount).StMon, DataPeriods(CurCount).StDay); JGDate(GregorianToJulian, DataPeriods(CurCount).DataEnJDay, DataPeriods(CurCount).EnYear, DataPeriods(CurCount).EnMon, DataPeriods(CurCount).EnDay); - DataPeriods( CurCount ).NumDays = DataPeriods( CurCount ).DataEnJDay - DataPeriods( CurCount ).DataStJDay + 1; - } - // Have processed the last item for this, can set up Weekdays for months - DataPeriods( CurCount ).MonWeekDay = 0; - if ( ! ErrorsFound ) { + DataPeriods(CurCount).NumDays = DataPeriods(CurCount).DataEnJDay - DataPeriods(CurCount).DataStJDay + 1; + } + // Have processed the last item for this, can set up Weekdays for months + DataPeriods(CurCount).MonWeekDay = 0; + if (!ErrorsFound) { SetupWeekDaysByMonth(DataPeriods(CurCount).StMon, DataPeriods(CurCount).StDay, DataPeriods(CurCount).WeekDay, DataPeriods(CurCount).MonWeekDay); } } } } - } - Line.erase( 0, Pos + 1 ); - ++Count; - } + } + Line.erase(0, Pos + 1); + ++Count; + } - } else { - ShowFatalError( "Invalid EPW Header designation found=" + HeaderString ); + } else { + ShowFatalError("Invalid EPW Header designation found=" + HeaderString); } } - } + } void SkipEPlusWFHeader() - { - - // SUBROUTINE INFORMATION: - // AUTHOR Linda K. Lawrie - // DATE WRITTEN August 2000 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // This subroutine skips the initial header records on the EnergyPlus Weather File (in.epw). - - // METHODOLOGY EMPLOYED: - // List directed reads, as possible. - - // SUBROUTINE PARAMETER DEFINITIONS: - static std::string const Header( "DATA PERIODS" ); - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - std::string::size_type Pos; - std::string Line; - bool StillLooking; - int NumHdArgs; - int Count; - int CurCount; - int CurOne; - int NumPeriods; - bool IOStatus; - - // Read in Header Information - - // Headers should come in order - StillLooking = true; - while ( StillLooking ) { + { + + // SUBROUTINE INFORMATION: + // AUTHOR Linda K. Lawrie + // DATE WRITTEN August 2000 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // This subroutine skips the initial header records on the EnergyPlus Weather File (in.epw). + + // METHODOLOGY EMPLOYED: + // List directed reads, as possible. + + // SUBROUTINE PARAMETER DEFINITIONS: + static std::string const Header("DATA PERIODS"); + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + std::string::size_type Pos; + std::string Line; + bool StillLooking; + int NumHdArgs; + int Count; + int CurCount; + int CurOne; + int NumPeriods; + bool IOStatus; + + // Read in Header Information + + // Headers should come in order + StillLooking = true; + while (StillLooking) { { IOFlags flags; gio::read(WeatherFileUnitNumber, fmtA, flags) >> Line; if (flags.end()) goto Label9998; } - uppercase( Line ); - if ( has( Line, Header ) ) break; - } - - // Dummy process Data Periods line - // 'DATA PERIODS' - // N1, \field Number of Data Periods - // N2, \field Number of Records per hour - // A1, \field Data Period 1 Name/Description - // A2, \field Data Period 1 Start Day of Week - // \type choice - // \key Sunday - // \key Monday - // \key Tuesday - // \key Wednesday - // \key Thursday - // \key Friday - // \key Saturday - // A3, \field Data Period 1 Start Day - // A4, \field Data Period 1 End Day - NumHdArgs = 2; - Count = 1; - while ( Count <= NumHdArgs ) { - strip( Line ); - Pos = index( Line, ',' ); - if ( Pos == std::string::npos ) { - if ( len( Line ) == 0 ) { - while ( Pos == std::string::npos ) { - gio::read( WeatherFileUnitNumber, fmtA ) >> Line; - strip( Line ); - uppercase( Line ); - Pos = index( Line, ',' ); - } - } else { - Pos = len( Line ); - } - } + uppercase(Line); + if (has(Line, Header)) break; + } + + // Dummy process Data Periods line + // 'DATA PERIODS' + // N1, \field Number of Data Periods + // N2, \field Number of Records per hour + // A1, \field Data Period 1 Name/Description + // A2, \field Data Period 1 Start Day of Week + // \type choice + // \key Sunday + // \key Monday + // \key Tuesday + // \key Wednesday + // \key Thursday + // \key Friday + // \key Saturday + // A3, \field Data Period 1 Start Day + // A4, \field Data Period 1 End Day + NumHdArgs = 2; + Count = 1; + while (Count <= NumHdArgs) { + strip(Line); + Pos = index(Line, ','); + if (Pos == std::string::npos) { + if (len(Line) == 0) { + while (Pos == std::string::npos) { + gio::read(WeatherFileUnitNumber, fmtA) >> Line; + strip(Line); + uppercase(Line); + Pos = index(Line, ','); + } + } else { + Pos = len(Line); + } + } { auto const SELECT_CASE_var(Count); - if ( SELECT_CASE_var == 1 ) { - NumPeriods = UtilityRoutines::ProcessNumber( Line.substr( 0, Pos ), IOStatus ); - NumHdArgs += 4 * NumPeriods; - CurCount = 0; + if (SELECT_CASE_var == 1) { + NumPeriods = UtilityRoutines::ProcessNumber(Line.substr(0, Pos), IOStatus); + NumHdArgs += 4 * NumPeriods; + CurCount = 0; - } else if ( SELECT_CASE_var == 2 ) { + } else if (SELECT_CASE_var == 2) { - } else if ( ( SELECT_CASE_var >= 3 ) ) { - CurOne = mod( Count - 3, 4 ); + } else if ((SELECT_CASE_var >= 3)) { + CurOne = mod(Count - 3, 4); { auto const SELECT_CASE_var1(CurOne); - if ( SELECT_CASE_var1 == 0 ) { - // Description of Data Period - ++CurCount; + if (SELECT_CASE_var1 == 0) { + // Description of Data Period + ++CurCount; - } else if ( ( SELECT_CASE_var1 >= 1 ) && ( SELECT_CASE_var1 <= 3 ) ) { + } else if ((SELECT_CASE_var1 >= 1) && (SELECT_CASE_var1 <= 3)) { } } } } - Line.erase( 0, Pos + 1 ); - ++Count; - } + Line.erase(0, Pos + 1); + ++Count; + } - return; + return; -Label9998: ; + Label9998:; ShowFatalError("Unexpected End-of-File on EPW Weather file, while reading header information, looking for header=" + Header, OutputFileStandard); - } + } void ReportMissing_RangeData() - { - - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN January 2002 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // This subroutine reports the counts of missing/out of range data - // for weather file environments. - - // METHODOLOGY EMPLOYED: - // na - - // REFERENCES: - // na - - // USE STATEMENTS: - // na - - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: - // na - - // SUBROUTINE PARAMETER DEFINITIONS: - static std::string const MissString( "Missing Data Found on Weather Data File" ); - static gio::Fmt msFmt( "('Missing ',A,', Number of items=',I5)" ); - static std::string const InvString( "Invalid Data Found on Weather Data File" ); - static gio::Fmt ivFmt( "('Invalid ',A,', Number of items=',I5)" ); - static std::string const RangeString( "Out of Range Data Found on Weather Data File" ); - static gio::Fmt rgFmt( "('Out of Range ',A,' [',A,',',A,'], Number of items=',I5)" ); - - // INTERFACE BLOCK SPECIFICATIONS: - // na - - // DERIVED TYPE DEFINITIONS: - // na - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - bool MissedHeader; - bool OutOfRangeHeader; - std::string ErrString; - - if ( ! DisplayWeatherMissingDataWarnings ) return; - - MissedHeader = false; - if ( Missed.DryBulb > 0 ) { - if ( ! MissedHeader ) { - ShowWarningError( MissString ); - MissedHeader = true; - } - gio::write( ErrString, msFmt ) << "\"Dry Bulb Temperatures\"" << Missed.DryBulb; - ShowMessage( ErrString ); - } - if ( Missed.StnPres > 0 ) { - if ( ! MissedHeader ) { - ShowWarningError( MissString ); - MissedHeader = true; - } - gio::write( ErrString, msFmt ) << "\"Atmospheric Pressure\"" << Missed.StnPres; - ShowMessage( ErrString ); - } - if ( Missed.RelHumid > 0 ) { - if ( ! MissedHeader ) { - ShowWarningError( MissString ); - MissedHeader = true; - } - gio::write( ErrString, msFmt ) << "\"Relative Humidity\"" << Missed.RelHumid; - ShowMessage( ErrString ); - } - if ( Missed.DewPoint > 0 ) { - if ( ! MissedHeader ) { - ShowWarningError( MissString ); - MissedHeader = true; - } - gio::write( ErrString, msFmt ) << "\"Dew Point Temperatures\"" << Missed.DewPoint; - ShowMessage( ErrString ); - } - if ( Missed.WindSpd > 0 ) { - if ( ! MissedHeader ) { - ShowWarningError( MissString ); - MissedHeader = true; - } - gio::write( ErrString, msFmt ) << "\"Wind Speed\"" << Missed.WindSpd; - ShowMessage( ErrString ); - } - if ( Missed.WindDir > 0 ) { - if ( ! MissedHeader ) { - ShowWarningError( MissString ); - MissedHeader = true; - } - gio::write( ErrString, msFmt ) << "\"Wind Direction\"" << Missed.WindDir; - ShowMessage( ErrString ); - } - if ( Missed.DirectRad > 0 ) { - if ( ! MissedHeader ) { - ShowWarningError( MissString ); - MissedHeader = true; - } - gio::write( ErrString, msFmt ) << "\"Direct Radiation\"" << Missed.DirectRad; - ShowMessage( ErrString ); - } - if ( Missed.DiffuseRad > 0 ) { - if ( ! MissedHeader ) { - ShowWarningError( MissString ); - MissedHeader = true; - } - gio::write( ErrString, msFmt ) << "\"Diffuse Radiation\"" << Missed.DiffuseRad; - ShowMessage( ErrString ); - } - // IF (Missed%Visibility>0) THEN - // IF (.not. MissedHeader) THEN - // CALL ShowWarningError(MissString) - // MissedHeader=.TRUE. - // ENDIF - // WRITE(ErrString,msFMT) 'Visibility',Missed%Visibility - // CALL ShowMessage(ErrString) - // ENDIF - // IF (Missed%AerOptDepth>0) THEN - // IF (.not. MissedHeader) THEN - // CALL ShowWarningError(MissString) - // MissedHeader=.TRUE. - // ENDIF - // WRITE(ErrString,msFMT) 'Aerosol Optical Depth',Missed%AerOptDepth - // CALL ShowMessage(ErrString) - // ENDIF - if ( Missed.TotSkyCvr > 0 ) { - if ( ! MissedHeader ) { - ShowWarningError( MissString ); - MissedHeader = true; - } - gio::write( ErrString, msFmt ) << "\"Total Sky Cover\"" << Missed.TotSkyCvr; - ShowMessage( ErrString ); - } - if ( Missed.OpaqSkyCvr > 0 ) { - if ( ! MissedHeader ) { - ShowWarningError( MissString ); - MissedHeader = true; - } - gio::write( ErrString, msFmt ) << "\"Opaque Sky Cover\"" << Missed.OpaqSkyCvr; - ShowMessage( ErrString ); - } - // IF (Missed%Ceiling>0) THEN - // IF (.not. MissedHeader) THEN - // CALL ShowWarningError(MissString) - // MissedHeader=.TRUE. - // ENDIF - // WRITE(ErrString,msFMT) 'Ceiling Height',Missed%Ceiling - // CALL ShowMessage(ErrString) - // ENDIF - // IF (Missed%PrecipWater>0) THEN - // IF (.not. MissedHeader) THEN - // CALL ShowWarningError(MissString) - // MissedHeader=.TRUE. - // ENDIF - // WRITE(ErrString,msFMT) 'Water Precipitation',Missed%PrecipWater - // CALL ShowMessage(ErrString) - // ENDIF - if ( Missed.SnowDepth > 0 ) { - if ( ! MissedHeader ) { - ShowWarningError( MissString ); - MissedHeader = true; - } - gio::write( ErrString, msFmt ) << "\"Snow Depth\"" << Missed.SnowDepth; - ShowMessage( ErrString ); - } - if ( Missed.WeathCodes > 0 ) { - ShowWarningError( InvString ); - gio::write( ErrString, ivFmt ) << "\"Weather Codes\" (not equal 9 digits)" << Missed.WeathCodes; - ShowMessage( ErrString ); - } - // IF (Missed%Albedo>0) THEN - // IF (.not. MissedHeader) THEN - // CALL ShowWarningError(MissString) - // MissedHeader=.TRUE. - // ENDIF - // WRITE(ErrString,msFMT) '"Albedo"',Missed%Albedo - // CALL ShowMessage(ErrString) - // ENDIF - if ( Missed.LiquidPrecip > 0 ) { - if ( ! MissedHeader ) { - ShowWarningError( MissString ); - MissedHeader = true; - } - gio::write( ErrString, msFmt ) << "\"Liquid Precipitation Depth\"" << Missed.LiquidPrecip; - ShowMessage( ErrString ); - } - // IF (Missed%DaysLastSnow>0) THEN - // IF (.not. MissedHeader) THEN - // CALL ShowWarningError(MissString) - // MissedHeader=.TRUE. - // ENDIF - // WRITE(ErrString,msFMT) 'Days Since Last Snow',Missed%DaysLastSnow - // CALL ShowMessage(ErrString) - // ENDIF - - OutOfRangeHeader = false; - if ( OutOfRange.DryBulb > 0 ) { - if ( ! OutOfRangeHeader ) { - ShowWarningError( RangeString ); - OutOfRangeHeader = true; - } + { + + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN January 2002 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // This subroutine reports the counts of missing/out of range data + // for weather file environments. + + // METHODOLOGY EMPLOYED: + // na + + // REFERENCES: + // na + + // USE STATEMENTS: + // na + + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + // na + + // SUBROUTINE PARAMETER DEFINITIONS: + static std::string const MissString("Missing Data Found on Weather Data File"); + static gio::Fmt msFmt("('Missing ',A,', Number of items=',I5)"); + static std::string const InvString("Invalid Data Found on Weather Data File"); + static gio::Fmt ivFmt("('Invalid ',A,', Number of items=',I5)"); + static std::string const RangeString("Out of Range Data Found on Weather Data File"); + static gio::Fmt rgFmt("('Out of Range ',A,' [',A,',',A,'], Number of items=',I5)"); + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // DERIVED TYPE DEFINITIONS: + // na + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + bool MissedHeader; + bool OutOfRangeHeader; + std::string ErrString; + + if (!DisplayWeatherMissingDataWarnings) return; + + MissedHeader = false; + if (Missed.DryBulb > 0) { + if (!MissedHeader) { + ShowWarningError(MissString); + MissedHeader = true; + } + gio::write(ErrString, msFmt) << "\"Dry Bulb Temperatures\"" << Missed.DryBulb; + ShowMessage(ErrString); + } + if (Missed.StnPres > 0) { + if (!MissedHeader) { + ShowWarningError(MissString); + MissedHeader = true; + } + gio::write(ErrString, msFmt) << "\"Atmospheric Pressure\"" << Missed.StnPres; + ShowMessage(ErrString); + } + if (Missed.RelHumid > 0) { + if (!MissedHeader) { + ShowWarningError(MissString); + MissedHeader = true; + } + gio::write(ErrString, msFmt) << "\"Relative Humidity\"" << Missed.RelHumid; + ShowMessage(ErrString); + } + if (Missed.DewPoint > 0) { + if (!MissedHeader) { + ShowWarningError(MissString); + MissedHeader = true; + } + gio::write(ErrString, msFmt) << "\"Dew Point Temperatures\"" << Missed.DewPoint; + ShowMessage(ErrString); + } + if (Missed.WindSpd > 0) { + if (!MissedHeader) { + ShowWarningError(MissString); + MissedHeader = true; + } + gio::write(ErrString, msFmt) << "\"Wind Speed\"" << Missed.WindSpd; + ShowMessage(ErrString); + } + if (Missed.WindDir > 0) { + if (!MissedHeader) { + ShowWarningError(MissString); + MissedHeader = true; + } + gio::write(ErrString, msFmt) << "\"Wind Direction\"" << Missed.WindDir; + ShowMessage(ErrString); + } + if (Missed.DirectRad > 0) { + if (!MissedHeader) { + ShowWarningError(MissString); + MissedHeader = true; + } + gio::write(ErrString, msFmt) << "\"Direct Radiation\"" << Missed.DirectRad; + ShowMessage(ErrString); + } + if (Missed.DiffuseRad > 0) { + if (!MissedHeader) { + ShowWarningError(MissString); + MissedHeader = true; + } + gio::write(ErrString, msFmt) << "\"Diffuse Radiation\"" << Missed.DiffuseRad; + ShowMessage(ErrString); + } + // IF (Missed%Visibility>0) THEN + // IF (.not. MissedHeader) THEN + // CALL ShowWarningError(MissString) + // MissedHeader=.TRUE. + // ENDIF + // WRITE(ErrString,msFMT) 'Visibility',Missed%Visibility + // CALL ShowMessage(ErrString) + // ENDIF + // IF (Missed%AerOptDepth>0) THEN + // IF (.not. MissedHeader) THEN + // CALL ShowWarningError(MissString) + // MissedHeader=.TRUE. + // ENDIF + // WRITE(ErrString,msFMT) 'Aerosol Optical Depth',Missed%AerOptDepth + // CALL ShowMessage(ErrString) + // ENDIF + if (Missed.TotSkyCvr > 0) { + if (!MissedHeader) { + ShowWarningError(MissString); + MissedHeader = true; + } + gio::write(ErrString, msFmt) << "\"Total Sky Cover\"" << Missed.TotSkyCvr; + ShowMessage(ErrString); + } + if (Missed.OpaqSkyCvr > 0) { + if (!MissedHeader) { + ShowWarningError(MissString); + MissedHeader = true; + } + gio::write(ErrString, msFmt) << "\"Opaque Sky Cover\"" << Missed.OpaqSkyCvr; + ShowMessage(ErrString); + } + // IF (Missed%Ceiling>0) THEN + // IF (.not. MissedHeader) THEN + // CALL ShowWarningError(MissString) + // MissedHeader=.TRUE. + // ENDIF + // WRITE(ErrString,msFMT) 'Ceiling Height',Missed%Ceiling + // CALL ShowMessage(ErrString) + // ENDIF + // IF (Missed%PrecipWater>0) THEN + // IF (.not. MissedHeader) THEN + // CALL ShowWarningError(MissString) + // MissedHeader=.TRUE. + // ENDIF + // WRITE(ErrString,msFMT) 'Water Precipitation',Missed%PrecipWater + // CALL ShowMessage(ErrString) + // ENDIF + if (Missed.SnowDepth > 0) { + if (!MissedHeader) { + ShowWarningError(MissString); + MissedHeader = true; + } + gio::write(ErrString, msFmt) << "\"Snow Depth\"" << Missed.SnowDepth; + ShowMessage(ErrString); + } + if (Missed.WeathCodes > 0) { + ShowWarningError(InvString); + gio::write(ErrString, ivFmt) << "\"Weather Codes\" (not equal 9 digits)" << Missed.WeathCodes; + ShowMessage(ErrString); + } + // IF (Missed%Albedo>0) THEN + // IF (.not. MissedHeader) THEN + // CALL ShowWarningError(MissString) + // MissedHeader=.TRUE. + // ENDIF + // WRITE(ErrString,msFMT) '"Albedo"',Missed%Albedo + // CALL ShowMessage(ErrString) + // ENDIF + if (Missed.LiquidPrecip > 0) { + if (!MissedHeader) { + ShowWarningError(MissString); + MissedHeader = true; + } + gio::write(ErrString, msFmt) << "\"Liquid Precipitation Depth\"" << Missed.LiquidPrecip; + ShowMessage(ErrString); + } + // IF (Missed%DaysLastSnow>0) THEN + // IF (.not. MissedHeader) THEN + // CALL ShowWarningError(MissString) + // MissedHeader=.TRUE. + // ENDIF + // WRITE(ErrString,msFMT) 'Days Since Last Snow',Missed%DaysLastSnow + // CALL ShowMessage(ErrString) + // ENDIF + + OutOfRangeHeader = false; + if (OutOfRange.DryBulb > 0) { + if (!OutOfRangeHeader) { + ShowWarningError(RangeString); + OutOfRangeHeader = true; + } gio::write(ErrString, rgFmt) << "Dry Bulb Temperatures" << ">=-90" << "<=70" << OutOfRange.DryBulb; - ShowMessage( ErrString ); - } - if ( OutOfRange.StnPres > 0 ) { - if ( ! OutOfRangeHeader ) { - ShowWarningError( RangeString ); - OutOfRangeHeader = true; - } + ShowMessage(ErrString); + } + if (OutOfRange.StnPres > 0) { + if (!OutOfRangeHeader) { + ShowWarningError(RangeString); + OutOfRangeHeader = true; + } gio::write(ErrString, rgFmt) << "Atmospheric Pressure" << ">31000" << "<=120000" << OutOfRange.StnPres; - ShowMessage( ErrString ); - ShowMessage( "Out of Range values set to last good value" ); - } - if ( OutOfRange.RelHumid > 0 ) { - if ( ! OutOfRangeHeader ) { - ShowWarningError( RangeString ); - OutOfRangeHeader = true; - } + ShowMessage(ErrString); + ShowMessage("Out of Range values set to last good value"); + } + if (OutOfRange.RelHumid > 0) { + if (!OutOfRangeHeader) { + ShowWarningError(RangeString); + OutOfRangeHeader = true; + } gio::write(ErrString, rgFmt) << "Relative Humidity" << ">=0" << "<=110" << OutOfRange.RelHumid; - ShowMessage( ErrString ); - } - if ( OutOfRange.DewPoint > 0 ) { - if ( ! OutOfRangeHeader ) { - ShowWarningError( RangeString ); - OutOfRangeHeader = true; - } + ShowMessage(ErrString); + } + if (OutOfRange.DewPoint > 0) { + if (!OutOfRangeHeader) { + ShowWarningError(RangeString); + OutOfRangeHeader = true; + } gio::write(ErrString, rgFmt) << "Dew Point Temperatures" << ">=-90" << "<=70" << OutOfRange.DewPoint; - ShowMessage( ErrString ); - } - if ( OutOfRange.WindSpd > 0 ) { - if ( ! OutOfRangeHeader ) { - ShowWarningError( RangeString ); - OutOfRangeHeader = true; - } + ShowMessage(ErrString); + } + if (OutOfRange.WindSpd > 0) { + if (!OutOfRangeHeader) { + ShowWarningError(RangeString); + OutOfRangeHeader = true; + } gio::write(ErrString, rgFmt) << "Wind Speed" << ">=0" << "<=40" << OutOfRange.WindSpd; - ShowMessage( ErrString ); - } - if ( OutOfRange.WindDir > 0 ) { - if ( ! OutOfRangeHeader ) { - ShowWarningError( RangeString ); - OutOfRangeHeader = true; - } + ShowMessage(ErrString); + } + if (OutOfRange.WindDir > 0) { + if (!OutOfRangeHeader) { + ShowWarningError(RangeString); + OutOfRangeHeader = true; + } gio::write(ErrString, rgFmt) << "Wind Direction" << ">=0" << "<=360" << OutOfRange.WindDir; - ShowMessage( ErrString ); - } - if ( OutOfRange.DirectRad > 0 ) { - if ( ! OutOfRangeHeader ) { - ShowWarningError( RangeString ); - OutOfRangeHeader = true; - } + ShowMessage(ErrString); + } + if (OutOfRange.DirectRad > 0) { + if (!OutOfRangeHeader) { + ShowWarningError(RangeString); + OutOfRangeHeader = true; + } gio::write(ErrString, rgFmt) << "Direct Radiation" << ">=0" << "NoLimit" << OutOfRange.DirectRad; - ShowMessage( ErrString ); - } - if ( OutOfRange.DiffuseRad > 0 ) { - if ( ! OutOfRangeHeader ) { - ShowWarningError( RangeString ); - OutOfRangeHeader = true; - } + ShowMessage(ErrString); + } + if (OutOfRange.DiffuseRad > 0) { + if (!OutOfRangeHeader) { + ShowWarningError(RangeString); + OutOfRangeHeader = true; + } gio::write(ErrString, rgFmt) << "Diffuse Radiation" << ">=0" << "NoLimit" << OutOfRange.DiffuseRad; - ShowMessage( ErrString ); - } - } + ShowMessage(ErrString); + } + } void SetupInterpolationValues() - { - - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN November 2002 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // This subroutine creates the "interpolation" values / weights that are used for - // interpolating weather data from hourly down to the time step level. - - // METHODOLOGY EMPLOYED: - // Create arrays (InterpolationValues, SolarInterpolationValues) dependent on - // Number of Time Steps in Hour. This will be used in the "SetCurrentWeather" procedure. - - // REFERENCES: - // na - - // USE STATEMENTS: - // na - - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: - // na - - // SUBROUTINE PARAMETER DEFINITIONS: - // na - - // INTERFACE BLOCK SPECIFICATIONS: - // na - - // DERIVED TYPE DEFINITIONS: - // na - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - int halfpoint; - int hpoint; - int tloop; - Real64 tweight; - Real64 tweight1; - - Interpolation.allocate( NumOfTimeStepInHour ); - SolarInterpolation.allocate( NumOfTimeStepInHour ); - Interpolation = 0.0; - SolarInterpolation = 0.0; - halfpoint = 0; - - for ( tloop = 1; tloop <= NumOfTimeStepInHour; ++tloop ) { - if ( NumOfTimeStepInHour == 1 ) { - tweight = 1.0; - } else { - tweight = min( 1.0, ( double( tloop ) / double( NumOfTimeStepInHour ) ) ); - } - - Interpolation( tloop ) = tweight; - } - - if ( mod( NumOfTimeStepInHour, 2 ) == 0 ) { - // even number of time steps. - halfpoint = NumOfTimeStepInHour / 2; - SolarInterpolation( halfpoint ) = 1.0; - tweight = 1.0 / double( NumOfTimeStepInHour ); - hpoint = 1; - for ( tloop = halfpoint + 1; tloop <= NumOfTimeStepInHour; ++tloop ) { - SolarInterpolation( tloop ) = 1.0 - hpoint * tweight; - ++hpoint; - } - hpoint = 1; - for ( tloop = halfpoint - 1; tloop >= 1; --tloop ) { - SolarInterpolation( tloop ) = 1.0 - hpoint * tweight; - ++hpoint; - } - } else { // odd number of time steps - if ( NumOfTimeStepInHour == 1 ) { - SolarInterpolation( 1 ) = 0.5; - } else if ( NumOfTimeStepInHour == 3 ) { - tweight = 1.0 / double( NumOfTimeStepInHour ); - SolarInterpolation( 1 ) = 5.0 / 6.0; - SolarInterpolation( 2 ) = 5.0 / 6.0; - SolarInterpolation( 3 ) = 0.5; - } else { - tweight = 1.0 / double( NumOfTimeStepInHour ); - halfpoint = NumOfTimeStepInHour / 2; - tweight1 = 1.0 - tweight / 2.0; - SolarInterpolation( halfpoint ) = tweight1; - SolarInterpolation( halfpoint + 1 ) = tweight1; - hpoint = 1; - for ( tloop = halfpoint + 2; tloop <= NumOfTimeStepInHour; ++tloop ) { - SolarInterpolation( tloop ) = tweight1 - hpoint * tweight; - ++hpoint; - } - hpoint = 1; - for ( tloop = halfpoint - 1; tloop >= 1; --tloop ) { - SolarInterpolation( tloop ) = tweight1 - hpoint * tweight; - ++hpoint; - } - } - } - } + { + + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN November 2002 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // This subroutine creates the "interpolation" values / weights that are used for + // interpolating weather data from hourly down to the time step level. + + // METHODOLOGY EMPLOYED: + // Create arrays (InterpolationValues, SolarInterpolationValues) dependent on + // Number of Time Steps in Hour. This will be used in the "SetCurrentWeather" procedure. + + // REFERENCES: + // na + + // USE STATEMENTS: + // na + + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + // na + + // SUBROUTINE PARAMETER DEFINITIONS: + // na + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // DERIVED TYPE DEFINITIONS: + // na + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + int halfpoint; + int hpoint; + int tloop; + Real64 tweight; + Real64 tweight1; + + Interpolation.allocate(NumOfTimeStepInHour); + SolarInterpolation.allocate(NumOfTimeStepInHour); + Interpolation = 0.0; + SolarInterpolation = 0.0; + halfpoint = 0; + + for (tloop = 1; tloop <= NumOfTimeStepInHour; ++tloop) { + if (NumOfTimeStepInHour == 1) { + tweight = 1.0; + } else { + tweight = min(1.0, (double(tloop) / double(NumOfTimeStepInHour))); + } + + Interpolation(tloop) = tweight; + } + + if (mod(NumOfTimeStepInHour, 2) == 0) { + // even number of time steps. + halfpoint = NumOfTimeStepInHour / 2; + SolarInterpolation(halfpoint) = 1.0; + tweight = 1.0 / double(NumOfTimeStepInHour); + hpoint = 1; + for (tloop = halfpoint + 1; tloop <= NumOfTimeStepInHour; ++tloop) { + SolarInterpolation(tloop) = 1.0 - hpoint * tweight; + ++hpoint; + } + hpoint = 1; + for (tloop = halfpoint - 1; tloop >= 1; --tloop) { + SolarInterpolation(tloop) = 1.0 - hpoint * tweight; + ++hpoint; + } + } else { // odd number of time steps + if (NumOfTimeStepInHour == 1) { + SolarInterpolation(1) = 0.5; + } else if (NumOfTimeStepInHour == 3) { + tweight = 1.0 / double(NumOfTimeStepInHour); + SolarInterpolation(1) = 5.0 / 6.0; + SolarInterpolation(2) = 5.0 / 6.0; + SolarInterpolation(3) = 0.5; + } else { + tweight = 1.0 / double(NumOfTimeStepInHour); + halfpoint = NumOfTimeStepInHour / 2; + tweight1 = 1.0 - tweight / 2.0; + SolarInterpolation(halfpoint) = tweight1; + SolarInterpolation(halfpoint + 1) = tweight1; + hpoint = 1; + for (tloop = halfpoint + 2; tloop <= NumOfTimeStepInHour; ++tloop) { + SolarInterpolation(tloop) = tweight1 - hpoint * tweight; + ++hpoint; + } + hpoint = 1; + for (tloop = halfpoint - 1; tloop >= 1; --tloop) { + SolarInterpolation(tloop) = tweight1 - hpoint * tweight; + ++hpoint; + } + } + } + } void SetupEnvironmentTypes() - { + { - // SUBROUTINE INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN October 2010 - // MODIFIED na - // RE-ENGINEERED na + // SUBROUTINE INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN October 2010 + // MODIFIED na + // RE-ENGINEERED na - // PURPOSE OF THIS SUBROUTINE: - // Make sure Environment derived type is set prior to getting - // Weather Properties + // PURPOSE OF THIS SUBROUTINE: + // Make sure Environment derived type is set prior to getting + // Weather Properties - // METHODOLOGY EMPLOYED: - // na + // METHODOLOGY EMPLOYED: + // na - // REFERENCES: - // na + // REFERENCES: + // na - // Using/Aliasing + // Using/Aliasing using General::BetweenDates; - using General::InvJulianDay; - using General::JulianDay; - - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: - // na - - // SUBROUTINE PARAMETER DEFINITIONS: - // na - - // INTERFACE BLOCK SPECIFICATIONS: - // na - - // DERIVED TYPE DEFINITIONS: - // na - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - int Loop; - int Loop1; - int JDay1; - int JDay2; - int LocalLeapYearAdd; - - // Transfer weather file information to the Environment derived type - Envrn = TotDesDays + 1; - - // Sizing Periods from Weather File - for ( Loop = 1; Loop <= TotRunDesPers; ++Loop ) { - auto & env = Environment( Envrn ); - auto & runPer = RunPeriodDesignInput( Loop ); - - env.StartMonth = runPer.startMonth; - env.StartDay = runPer.startDay; - env.StartJDay = JulianDay( runPer.startMonth, runPer.startDay, LeapYearAdd ); - env.TotalDays = runPer.totalDays; - env.EndMonth = runPer.endMonth; - env.EndDay = runPer.endDay; - env.EndJDay = JulianDay( runPer.endMonth, runPer.endDay, LeapYearAdd ); - env.NumSimYears = runPer.numSimYears; - if ( env.StartJDay <= env.EndJDay ) { - env.TotalDays = ( env.EndJDay - env.StartJDay + 1 ) * env.NumSimYears; - } else { - env.TotalDays = ( JulianDay( 12, 31, LeapYearAdd ) - env.StartJDay + 1 + env.EndJDay ) * env.NumSimYears; - } - TotRunDesPersDays += env.TotalDays; - env.UseDST = runPer.useDST; - env.UseHolidays = runPer.useHolidays; - env.Title = runPer.title; - env.cKindOfEnvrn = runPer.periodType; - env.KindOfEnvrn = ksRunPeriodDesign; - env.DesignDayNum = 0; - env.RunPeriodDesignNum = Loop; - env.DayOfWeek = runPer.dayOfWeek; - env.MonWeekDay = runPer.monWeekDay; - env.SetWeekDays = false; - env.ApplyWeekendRule = runPer.applyWeekendRule; - env.UseRain = runPer.useRain; - env.UseSnow = runPer.useSnow; - ++Envrn; - } - - // RunPeriods from weather file - for ( Loop = 1; Loop <= TotRunPers; ++Loop ) { // Run Periods. - auto & env = Environment( Envrn ); - auto & runPer = RunPeriodInput( Loop ); - - env.StartMonth = runPer.startMonth; - env.StartDay = runPer.startDay; - env.EndMonth = runPer.endMonth; - env.EndDay = runPer.endDay; - env.NumSimYears = runPer.numSimYears; - if ( runPer.actualWeather ) { - env.CurrentYear = runPer.startYear; - env.IsLeapYear = isLeapYear( runPer.startYear ); - env.TreatYearsAsConsecutive = true; - env.StartYear = runPer.startYear; - env.EndYear = runPer.endYear; - JGDate( GregorianToJulian, env.StartDate, env.StartYear, env.StartMonth, env.StartDay ); - JGDate( GregorianToJulian, env.EndDate, env.EndYear, env.EndMonth, env.EndDay ); - env.StartJDay = env.StartDate; - env.EndJDay = env.EndDate; - env.TotalDays = env.EndDate - env.StartDate + 1; - env.RawSimDays = env.EndDate - env.StartDate + 1; - env.MatchYear = true; - env.ActualWeather = true; - } else if ( runPer.BeginYear < 100 ) { // std RunPeriod - env.CurrentYear = 0; - if ( ! WFAllowsLeapYears ) { - env.IsLeapYear = false; // explicit set - LocalLeapYearAdd = 0; - } else { - env.IsLeapYear = true; // explicit set - LocalLeapYearAdd = 1; - } - env.TreatYearsAsConsecutive = false; - env.RollDayTypeOnRepeat = runPer.RollDayTypeOnRepeat; - env.StartJDay = JulianDay( runPer.startMonth, runPer.startDay, LocalLeapYearAdd ); - env.EndJDay = JulianDay( runPer.endMonth, runPer.endDay, LocalLeapYearAdd ); - // need message if isleapyear and wfleapyearind=0 - if ( env.StartJDay <= env.EndJDay ) { - env.RawSimDays = ( env.EndJDay - env.StartJDay + 1 ); - env.TotalDays = ( env.EndJDay - env.StartJDay + 1 ) * env.NumSimYears; - } else { - env.RawSimDays = ( JulianDay( 12, 31, LeapYearAdd ) - env.StartJDay + 1 + env.EndJDay ); - env.TotalDays = ( JulianDay( 12, 31, LeapYearAdd ) - env.StartJDay + 1 + env.EndJDay ) * env.NumSimYears; - } - - } else { // Using Runperiod and StartYear option. - env.CurrentYear = runPer.BeginYear; - env.IsLeapYear = isLeapYear( env.CurrentYear ); - env.TreatYearsAsConsecutive = true; - env.RollDayTypeOnRepeat = runPer.RollDayTypeOnRepeat; - env.StartJDay = JulianDay( runPer.startMonth, runPer.startDay, LeapYearAdd ); - env.EndJDay = JulianDay( runPer.endMonth, runPer.endDay, LeapYearAdd ); - env.TotalDays = 0; - for ( Loop1 = 1; Loop1 <= env.NumSimYears; ++Loop1 ) { - if ( ! isLeapYear( runPer.BeginYear - 1 + Loop1 ) || ! WFAllowsLeapYears ) { - JDay1 = JulianDay( runPer.startMonth, runPer.startDay, 0 ); - JDay2 = JulianDay( runPer.endMonth, runPer.endDay, 0 ); - if ( JDay1 <= JDay2 ) { - if ( Loop1 == 1 ) env.RawSimDays = ( JDay2 - JDay1 + 1 ); - env.TotalDays += ( JDay2 - JDay1 + 1 ); - } else { - if ( Loop1 == 1 ) env.RawSimDays = JulianDay( 12, 31, 0 ) - JDay1 + 1 + JDay2; - env.TotalDays += JulianDay( 12, 31, 0 ) - JDay1 + 1 + JDay2; - } - } else { // Leap Year - JDay1 = JulianDay( runPer.startMonth, runPer.startDay, 1 ); - JDay2 = JulianDay( runPer.endMonth, runPer.endDay, 1 ); - if ( JDay1 <= JDay2 ) { - env.TotalDays += ( JDay2 - JDay1 + 1 ); - } else { - env.TotalDays += JulianDay( 12, 31, 1 ) - JDay1 + 1 + JDay2; - } - } - } - } - env.UseDST = runPer.useDST; - env.UseHolidays = runPer.useHolidays; - if ( runPer.title == BlankString ) { - env.Title = WeatherFileLocationTitle; - } else { - env.Title = runPer.title; - } - if ( env.KindOfEnvrn == ksReadAllWeatherData ) { - env.cKindOfEnvrn = "ReadAllWeatherDataRunPeriod"; - } else { - env.cKindOfEnvrn = "WeatherFileRunPeriod"; - env.KindOfEnvrn = ksRunPeriodWeather; - } - env.DayOfWeek = runPer.dayOfWeek; - env.MonWeekDay = runPer.monWeekDay; - env.SetWeekDays = false; - env.ApplyWeekendRule = runPer.applyWeekendRule; - env.UseRain = runPer.useRain; - env.UseSnow = runPer.useSnow; - ++Envrn; - } - } - - bool - isLeapYear( int const Year ) - { - - // FUNCTION INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN March 2012 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS FUNCTION: - // From entered year returns true (Yes) if it's a leap year, false (no) if not. - - // METHODOLOGY EMPLOYED: - // na - - // REFERENCES: - // na - - // USE STATEMENTS: - // na - - // Locals - // FUNCTION ARGUMENT DEFINITIONS: - - // FUNCTION PARAMETER DEFINITIONS: - // na - - // INTERFACE BLOCK SPECIFICATIONS: - // na - - // DERIVED TYPE DEFINITIONS: - // na - - // FUNCTION LOCAL VARIABLE DECLARATIONS: - // na - - if ( mod( Year, 4 ) == 0 ) { // Potential Leap Year - if ( ! ( mod( Year, 100 ) == 0 && mod( Year, 400 ) != 0 ) ) { - return true; - } - } - return false; - - } + using General::InvJulianDay; + using General::JulianDay; + + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + // na + + // SUBROUTINE PARAMETER DEFINITIONS: + // na + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // DERIVED TYPE DEFINITIONS: + // na + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + int Loop; + int Loop1; + int JDay1; + int JDay2; + int LocalLeapYearAdd; + + // Transfer weather file information to the Environment derived type + Envrn = TotDesDays + 1; + + // Sizing Periods from Weather File + for (Loop = 1; Loop <= TotRunDesPers; ++Loop) { + auto &env = Environment(Envrn); + auto &runPer = RunPeriodDesignInput(Loop); + + env.StartMonth = runPer.startMonth; + env.StartDay = runPer.startDay; + env.StartJDay = JulianDay(runPer.startMonth, runPer.startDay, LeapYearAdd); + env.TotalDays = runPer.totalDays; + env.EndMonth = runPer.endMonth; + env.EndDay = runPer.endDay; + env.EndJDay = JulianDay(runPer.endMonth, runPer.endDay, LeapYearAdd); + env.NumSimYears = runPer.numSimYears; + if (env.StartJDay <= env.EndJDay) { + env.TotalDays = (env.EndJDay - env.StartJDay + 1) * env.NumSimYears; + } else { + env.TotalDays = (JulianDay(12, 31, LeapYearAdd) - env.StartJDay + 1 + env.EndJDay) * env.NumSimYears; + } + TotRunDesPersDays += env.TotalDays; + env.UseDST = runPer.useDST; + env.UseHolidays = runPer.useHolidays; + env.Title = runPer.title; + env.cKindOfEnvrn = runPer.periodType; + env.KindOfEnvrn = ksRunPeriodDesign; + env.DesignDayNum = 0; + env.RunPeriodDesignNum = Loop; + env.DayOfWeek = runPer.dayOfWeek; + env.MonWeekDay = runPer.monWeekDay; + env.SetWeekDays = false; + env.ApplyWeekendRule = runPer.applyWeekendRule; + env.UseRain = runPer.useRain; + env.UseSnow = runPer.useSnow; + ++Envrn; + } + + // RunPeriods from weather file + for (Loop = 1; Loop <= TotRunPers; ++Loop) { // Run Periods. + auto &env = Environment(Envrn); + auto &runPer = RunPeriodInput(Loop); + + env.StartMonth = runPer.startMonth; + env.StartDay = runPer.startDay; + env.EndMonth = runPer.endMonth; + env.EndDay = runPer.endDay; + env.NumSimYears = runPer.numSimYears; + if (runPer.actualWeather) { + env.CurrentYear = runPer.startYear; + env.IsLeapYear = isLeapYear(runPer.startYear); + env.TreatYearsAsConsecutive = true; + env.StartYear = runPer.startYear; + env.EndYear = runPer.endYear; + JGDate(GregorianToJulian, env.StartDate, env.StartYear, env.StartMonth, env.StartDay); + JGDate(GregorianToJulian, env.EndDate, env.EndYear, env.EndMonth, env.EndDay); + env.StartJDay = env.StartDate; + env.EndJDay = env.EndDate; + env.TotalDays = env.EndDate - env.StartDate + 1; + env.RawSimDays = env.EndDate - env.StartDate + 1; + env.MatchYear = true; + env.ActualWeather = true; + } else if (runPer.BeginYear < 100) { // std RunPeriod + env.CurrentYear = 0; + if (!WFAllowsLeapYears) { + env.IsLeapYear = false; // explicit set + LocalLeapYearAdd = 0; + } else { + env.IsLeapYear = true; // explicit set + LocalLeapYearAdd = 1; + } + env.TreatYearsAsConsecutive = false; + env.RollDayTypeOnRepeat = runPer.RollDayTypeOnRepeat; + env.StartJDay = JulianDay(runPer.startMonth, runPer.startDay, LocalLeapYearAdd); + env.EndJDay = JulianDay(runPer.endMonth, runPer.endDay, LocalLeapYearAdd); + // need message if isleapyear and wfleapyearind=0 + if (env.StartJDay <= env.EndJDay) { + env.RawSimDays = (env.EndJDay - env.StartJDay + 1); + env.TotalDays = (env.EndJDay - env.StartJDay + 1) * env.NumSimYears; + } else { + env.RawSimDays = (JulianDay(12, 31, LeapYearAdd) - env.StartJDay + 1 + env.EndJDay); + env.TotalDays = (JulianDay(12, 31, LeapYearAdd) - env.StartJDay + 1 + env.EndJDay) * env.NumSimYears; + } + + } else { // Using Runperiod and StartYear option. + env.CurrentYear = runPer.BeginYear; + env.IsLeapYear = isLeapYear(env.CurrentYear); + env.TreatYearsAsConsecutive = true; + env.RollDayTypeOnRepeat = runPer.RollDayTypeOnRepeat; + env.StartJDay = JulianDay(runPer.startMonth, runPer.startDay, LeapYearAdd); + env.EndJDay = JulianDay(runPer.endMonth, runPer.endDay, LeapYearAdd); + env.TotalDays = 0; + for (Loop1 = 1; Loop1 <= env.NumSimYears; ++Loop1) { + if (!isLeapYear(runPer.BeginYear - 1 + Loop1) || !WFAllowsLeapYears) { + JDay1 = JulianDay(runPer.startMonth, runPer.startDay, 0); + JDay2 = JulianDay(runPer.endMonth, runPer.endDay, 0); + if (JDay1 <= JDay2) { + if (Loop1 == 1) env.RawSimDays = (JDay2 - JDay1 + 1); + env.TotalDays += (JDay2 - JDay1 + 1); + } else { + if (Loop1 == 1) env.RawSimDays = JulianDay(12, 31, 0) - JDay1 + 1 + JDay2; + env.TotalDays += JulianDay(12, 31, 0) - JDay1 + 1 + JDay2; + } + } else { // Leap Year + JDay1 = JulianDay(runPer.startMonth, runPer.startDay, 1); + JDay2 = JulianDay(runPer.endMonth, runPer.endDay, 1); + if (JDay1 <= JDay2) { + env.TotalDays += (JDay2 - JDay1 + 1); + } else { + env.TotalDays += JulianDay(12, 31, 1) - JDay1 + 1 + JDay2; + } + } + } + } + env.UseDST = runPer.useDST; + env.UseHolidays = runPer.useHolidays; + if (runPer.title == BlankString) { + env.Title = WeatherFileLocationTitle; + } else { + env.Title = runPer.title; + } + if (env.KindOfEnvrn == ksReadAllWeatherData) { + env.cKindOfEnvrn = "ReadAllWeatherDataRunPeriod"; + } else { + env.cKindOfEnvrn = "WeatherFileRunPeriod"; + env.KindOfEnvrn = ksRunPeriodWeather; + } + env.DayOfWeek = runPer.dayOfWeek; + env.MonWeekDay = runPer.monWeekDay; + env.SetWeekDays = false; + env.ApplyWeekendRule = runPer.applyWeekendRule; + env.UseRain = runPer.useRain; + env.UseSnow = runPer.useSnow; + ++Envrn; + } + } + + bool isLeapYear(int const Year) + { + + // FUNCTION INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN March 2012 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS FUNCTION: + // From entered year returns true (Yes) if it's a leap year, false (no) if not. + + // METHODOLOGY EMPLOYED: + // na + + // REFERENCES: + // na + + // USE STATEMENTS: + // na + + // Locals + // FUNCTION ARGUMENT DEFINITIONS: + + // FUNCTION PARAMETER DEFINITIONS: + // na + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // DERIVED TYPE DEFINITIONS: + // na + + // FUNCTION LOCAL VARIABLE DECLARATIONS: + // na + + if (mod(Year, 4) == 0) { // Potential Leap Year + if (!(mod(Year, 100) == 0 && mod(Year, 400) != 0)) { + return true; + } + } + return false; + } void JGDate(int const jflag, // indicates direction of conversion, - int & jdate, // input/output julian date, typically a 7 or 8 digit integer - int & gyyyy, // input/output gregorian year, should be specified as 4 digits - int & gmm, // input/output gregorian month - int & gdd // input/output gregorian day - ) - { - // SUBROUTINE INFORMATION: - // AUTHOR - // DATE WRITTEN - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // Subroutine JGDate is a gregorian date to actual julian date - // converter. the advantage of storing a julian date in the - // jdate format rather than a 5 digit format is that any - // number of days can be add or subtracted to jdate and - // that result is a proper julian date. - - // METHODOLOGY EMPLOYED: - // - - // REFERENCES: - // for discussion of this algorithm, - // see cacm, vol 11, no 10, oct 1968, page 657 - - // USE STATEMENTS: - // na - - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: - // 1 --> gregorian (dd/mm/yyyy) to julian - // 2 --> julian to gregorian. - - // SUBROUTINE PARAMETER DEFINITIONS: - // na - - // INTERFACE BLOCK SPECIFICATIONS: - // na - - // DERIVED TYPE DEFINITIONS: - // na - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - int tdate; // integer*4 variable needed for double precision arithmetic - int tyyyy; // integer*4 variable needed for double precision arithmetic - int tmm; // integer*4 variable needed for double precision arithmetic - int tdd; // integer*4 variable needed for double precision arithmetic - int l; // temporary variable used in conversion. - int n; // temporary variable used in conversion. - - // gregorian to julian - if ( jflag == 1 ) { - tyyyy = gyyyy; - tmm = gmm; - tdd = gdd; - l = ( tmm - 14 ) / 12; - jdate = tdd - 32075 + 1461 * ( tyyyy + 4800 + l ) / 4 + 367 * ( tmm - 2 - l * 12 ) / 12 - 3 * ( ( tyyyy + 4900 + l ) / 100 ) / 4; - - } else if ( jflag == 2 ) { - // julian to gregorian - tdate = jdate; - l = tdate + 68569; - n = 4 * l / 146097; - l -= ( 146097 * n + 3 ) / 4; - tyyyy = 4000 * ( l + 1 ) / 1461001; - l = l - 1461 * tyyyy / 4 + 31; - tmm = 80 * l / 2447; - tdd = l - 2447 * tmm / 80; - l = tmm / 11; - tmm += 2 - 12 * l; - tyyyy += 100 * ( n - 49 ) + l; - //c - gyyyy = tyyyy; - gdd = tdd; - gmm = tmm; - } - //c - } - - int - computeJulianDate( - int const gyyyy, // input/output gregorian year, should be specified as 4 digits - int const gmm, // input/output gregorian month - int const gdd // input/output gregorian day - ) - { - // SUBROUTINE INFORMATION: - // AUTHOR Jason DeGraw - // DATE WRITTEN 10/25/2017 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS SUBROUTINE: - // Split the former JGDate function in two. Convert a gregorian - // date to actual julian date. the advantage of storing a julian date - // in the jdate format rather than a 5 digit format is that any - // number of days can be add or subtracted to jdate and - // that result is a proper julian date. - - // METHODOLOGY EMPLOYED: - // - - // REFERENCES: - // for discussion of this algorithm, - // see cacm, vol 11, no 10, oct 1968, page 657 - - // USE STATEMENTS: - // na - - // Locals - // SUBROUTINE ARGUMENT DEFINITIONS: - // na - - // SUBROUTINE PARAMETER DEFINITIONS: - // na - - // INTERFACE BLOCK SPECIFICATIONS: - // na - - // DERIVED TYPE DEFINITIONS: - // na - - // SUBROUTINE LOCAL VARIABLE DECLARATIONS: - int tyyyy; // integer*4 variable needed for double precision arithmetic - int tmm; // integer*4 variable needed for double precision arithmetic - int tdd; // integer*4 variable needed for double precision arithmetic - int l; // temporary variable used in conversion. - - tyyyy = gyyyy; - tmm = gmm; - tdd = gdd; - l = ( tmm - 14 ) / 12; - return tdd - 32075 + 1461 * ( tyyyy + 4800 + l ) / 4 + 367 * ( tmm - 2 - l * 12 ) / 12 - 3 * ( ( tyyyy + 4900 + l ) / 100 ) / 4; - - } - - int - CalculateDayOfWeek( int const JulianDate ) // from JGDate calculation - { - - // FUNCTION INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN March 2012 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS FUNCTION: - // Using Julian date (from jgdate calc), calculate the correct day of week. - - // METHODOLOGY EMPLOYED: - // Zeller's algorithm. - - // REFERENCES: - // http://en.wikipedia.org/wiki/Zeller%27s_congruence - // and other references around the web. - - // USE STATEMENTS: - // na - - // Return value - int DayOfWeek; // EnergyPlus convention (1=Sunday, 2=Monday, etc) - - // Locals - // FUNCTION ARGUMENT DEFINITIONS: - - // FUNCTION PARAMETER DEFINITIONS: - // na - - // INTERFACE BLOCK SPECIFICATIONS: - // na + int &jdate, // input/output julian date, typically a 7 or 8 digit integer + int &gyyyy, // input/output gregorian year, should be specified as 4 digits + int &gmm, // input/output gregorian month + int &gdd // input/output gregorian day + ) + { + // SUBROUTINE INFORMATION: + // AUTHOR + // DATE WRITTEN + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // Subroutine JGDate is a gregorian date to actual julian date + // converter. the advantage of storing a julian date in the + // jdate format rather than a 5 digit format is that any + // number of days can be add or subtracted to jdate and + // that result is a proper julian date. + + // METHODOLOGY EMPLOYED: + // + + // REFERENCES: + // for discussion of this algorithm, + // see cacm, vol 11, no 10, oct 1968, page 657 + + // USE STATEMENTS: + // na + + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + // 1 --> gregorian (dd/mm/yyyy) to julian + // 2 --> julian to gregorian. + + // SUBROUTINE PARAMETER DEFINITIONS: + // na + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // DERIVED TYPE DEFINITIONS: + // na + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + int tdate; // integer*4 variable needed for double precision arithmetic + int tyyyy; // integer*4 variable needed for double precision arithmetic + int tmm; // integer*4 variable needed for double precision arithmetic + int tdd; // integer*4 variable needed for double precision arithmetic + int l; // temporary variable used in conversion. + int n; // temporary variable used in conversion. + + // gregorian to julian + if (jflag == 1) { + tyyyy = gyyyy; + tmm = gmm; + tdd = gdd; + l = (tmm - 14) / 12; + jdate = tdd - 32075 + 1461 * (tyyyy + 4800 + l) / 4 + 367 * (tmm - 2 - l * 12) / 12 - 3 * ((tyyyy + 4900 + l) / 100) / 4; + + } else if (jflag == 2) { + // julian to gregorian + tdate = jdate; + l = tdate + 68569; + n = 4 * l / 146097; + l -= (146097 * n + 3) / 4; + tyyyy = 4000 * (l + 1) / 1461001; + l = l - 1461 * tyyyy / 4 + 31; + tmm = 80 * l / 2447; + tdd = l - 2447 * tmm / 80; + l = tmm / 11; + tmm += 2 - 12 * l; + tyyyy += 100 * (n - 49) + l; + // c + gyyyy = tyyyy; + gdd = tdd; + gmm = tmm; + } + // c + } + + int computeJulianDate(int const gyyyy, // input/output gregorian year, should be specified as 4 digits + int const gmm, // input/output gregorian month + int const gdd // input/output gregorian day + ) + { + // SUBROUTINE INFORMATION: + // AUTHOR Jason DeGraw + // DATE WRITTEN 10/25/2017 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS SUBROUTINE: + // Split the former JGDate function in two. Convert a gregorian + // date to actual julian date. the advantage of storing a julian date + // in the jdate format rather than a 5 digit format is that any + // number of days can be add or subtracted to jdate and + // that result is a proper julian date. + + // METHODOLOGY EMPLOYED: + // + + // REFERENCES: + // for discussion of this algorithm, + // see cacm, vol 11, no 10, oct 1968, page 657 + + // USE STATEMENTS: + // na + + // Locals + // SUBROUTINE ARGUMENT DEFINITIONS: + // na + + // SUBROUTINE PARAMETER DEFINITIONS: + // na + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // DERIVED TYPE DEFINITIONS: + // na + + // SUBROUTINE LOCAL VARIABLE DECLARATIONS: + int tyyyy; // integer*4 variable needed for double precision arithmetic + int tmm; // integer*4 variable needed for double precision arithmetic + int tdd; // integer*4 variable needed for double precision arithmetic + int l; // temporary variable used in conversion. + + tyyyy = gyyyy; + tmm = gmm; + tdd = gdd; + l = (tmm - 14) / 12; + return tdd - 32075 + 1461 * (tyyyy + 4800 + l) / 4 + 367 * (tmm - 2 - l * 12) / 12 - 3 * ((tyyyy + 4900 + l) / 100) / 4; + } + + int CalculateDayOfWeek(int const JulianDate) // from JGDate calculation + { + + // FUNCTION INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN March 2012 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS FUNCTION: + // Using Julian date (from jgdate calc), calculate the correct day of week. - // DERIVED TYPE DEFINITIONS: - // na + // METHODOLOGY EMPLOYED: + // Zeller's algorithm. - // FUNCTION LOCAL VARIABLE DECLARATIONS: - int JulDate; // Julian date copy - int Gyyyy; // Gregorian yyyy - int Gmm; // Gregorian mm - int Gdd; // Gregorian dd + // REFERENCES: + // http://en.wikipedia.org/wiki/Zeller%27s_congruence + // and other references around the web. - JulDate = JulianDate; - JGDate( JulianToGregorian, JulDate, Gyyyy, Gmm, Gdd ); + // USE STATEMENTS: + // na - // Jan, Feb are 13, 14 months of previous year - if ( Gmm < 3 ) { - Gmm += 12; - --Gyyyy; - } + // Return value + int DayOfWeek; // EnergyPlus convention (1=Sunday, 2=Monday, etc) - DayOfWeek = mod( Gdd + ( 13 * ( Gmm + 1 ) / 5 ) + Gyyyy + ( Gyyyy / 4 ) + 6 * ( Gyyyy / 100 ) + ( Gyyyy / 400 ), 7 ); - if ( DayOfWeek == 0 ) DayOfWeek = 7; + // Locals + // FUNCTION ARGUMENT DEFINITIONS: - return DayOfWeek; - } + // FUNCTION PARAMETER DEFINITIONS: + // na - WeekDay - calculateDayOfWeek( int const year, int const month, int const day ) - { + // INTERFACE BLOCK SPECIFICATIONS: + // na - // FUNCTION INFORMATION: - // AUTHOR Linda Lawrie - // DATE WRITTEN March 2012 - // MODIFIED October 2017, Jason DeGraw - // RE-ENGINEERED na + // DERIVED TYPE DEFINITIONS: + // na - // PURPOSE OF THIS FUNCTION: - // Calculate the correct day of week. + // FUNCTION LOCAL VARIABLE DECLARATIONS: + int JulDate; // Julian date copy + int Gyyyy; // Gregorian yyyy + int Gmm; // Gregorian mm + int Gdd; // Gregorian dd - // METHODOLOGY EMPLOYED: - // Zeller's algorithm. + JulDate = JulianDate; + JGDate(JulianToGregorian, JulDate, Gyyyy, Gmm, Gdd); - // REFERENCES: - // http://en.wikipedia.org/wiki/Zeller%27s_congruence - // and other references around the web. + // Jan, Feb are 13, 14 months of previous year + if (Gmm < 3) { + Gmm += 12; + --Gyyyy; + } + + DayOfWeek = mod(Gdd + (13 * (Gmm + 1) / 5) + Gyyyy + (Gyyyy / 4) + 6 * (Gyyyy / 100) + (Gyyyy / 400), 7); + if (DayOfWeek == 0) DayOfWeek = 7; + + return DayOfWeek; + } + + WeekDay calculateDayOfWeek(int const year, int const month, int const day) + { + + // FUNCTION INFORMATION: + // AUTHOR Linda Lawrie + // DATE WRITTEN March 2012 + // MODIFIED October 2017, Jason DeGraw + // RE-ENGINEERED na + + // PURPOSE OF THIS FUNCTION: + // Calculate the correct day of week. + + // METHODOLOGY EMPLOYED: + // Zeller's algorithm. + + // REFERENCES: + // http://en.wikipedia.org/wiki/Zeller%27s_congruence + // and other references around the web. + + // USE STATEMENTS: + // na + + // Locals + // FUNCTION ARGUMENT DEFINITIONS: + + // FUNCTION PARAMETER DEFINITIONS: + // na + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // DERIVED TYPE DEFINITIONS: + // na + + // FUNCTION LOCAL VARIABLE DECLARATIONS: + int Gyyyy(year); // Gregorian yyyy + int Gmm(month); // Gregorian mm + + // Jan, Feb are 13, 14 months of previous year + if (Gmm < 3) { + Gmm += 12; + --Gyyyy; + } + + DayOfWeek = mod(day + (13 * (Gmm + 1) / 5) + Gyyyy + (Gyyyy / 4) + 6 * (Gyyyy / 100) + (Gyyyy / 400), 7); + if (DayOfWeek == 0) DayOfWeek = 7; + + return static_cast(DayOfWeek); + } + + int calculateDayOfYear(int const Month, int const Day) + { + + // FUNCTION INFORMATION: + // AUTHOR Jason DeGraw + // DATE WRITTEN October 10, 2017 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS FUNCTION: + // Compute the day of the year for non-leap years. + + // METHODOLOGY EMPLOYED: + // Lookup table. - // USE STATEMENTS: - // na + // REFERENCES: + // NA - // Locals - // FUNCTION ARGUMENT DEFINITIONS: + // USE STATEMENTS: + // na - // FUNCTION PARAMETER DEFINITIONS: - // na + // FUNCTION LOCAL VARIABLE DECLARATIONS: + static std::array daysbefore{{0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}}; - // INTERFACE BLOCK SPECIFICATIONS: - // na + // Could probably do some bounds checking here, but for now assume the month is in [1, 12] + return daysbefore[Month - 1] + Day; + } - // DERIVED TYPE DEFINITIONS: - // na + int calculateDayOfYear(int const Month, int const Day, bool const leapYear) + { + + // FUNCTION INFORMATION: + // AUTHOR Jason DeGraw + // DATE WRITTEN October 10, 2017 + // MODIFIED na + // RE-ENGINEERED na - // FUNCTION LOCAL VARIABLE DECLARATIONS: - int Gyyyy(year); // Gregorian yyyy - int Gmm(month); // Gregorian mm + // PURPOSE OF THIS FUNCTION: + // Compute the day of the year for leap and non-leap years. - // Jan, Feb are 13, 14 months of previous year - if ( Gmm < 3 ) { - Gmm += 12; - --Gyyyy; - } + // METHODOLOGY EMPLOYED: + // Lookup table. - DayOfWeek = mod( day + ( 13 * ( Gmm + 1 ) / 5 ) + Gyyyy + ( Gyyyy / 4 ) + 6 * ( Gyyyy / 100 ) + ( Gyyyy / 400 ), 7 ); - if ( DayOfWeek == 0 ) DayOfWeek = 7; + // REFERENCES: + // NA - return static_cast( DayOfWeek ); + // USE STATEMENTS: + // na - } + // FUNCTION LOCAL VARIABLE DECLARATIONS: + static std::array daysbefore{{0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}}; + static std::array daysbeforeleap{{0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335}}; - int - calculateDayOfYear( int const Month, int const Day ) - { + // Could probably do some bounds checking here, but for now assume the month is in [1, 12] + if (leapYear) { + return daysbefore[Month - 1] + Day; + } else { + return daysbeforeleap[Month - 1] + Day; + } + } - // FUNCTION INFORMATION: - // AUTHOR Jason DeGraw - // DATE WRITTEN October 10, 2017 - // MODIFIED na - // RE-ENGINEERED na + bool validMonthDay(int const month, int const day, int const leapYearAdd) + { - // PURPOSE OF THIS FUNCTION: - // Compute the day of the year for non-leap years. - - // METHODOLOGY EMPLOYED: - // Lookup table. - - // REFERENCES: - // NA - - // USE STATEMENTS: - // na - - // FUNCTION LOCAL VARIABLE DECLARATIONS: - static std::array daysbefore{ { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 } }; - - // Could probably do some bounds checking here, but for now assume the month is in [1, 12] - return daysbefore[Month - 1] + Day; - - } - - int - calculateDayOfYear(int const Month, int const Day, bool const leapYear) - { - - // FUNCTION INFORMATION: - // AUTHOR Jason DeGraw - // DATE WRITTEN October 10, 2017 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS FUNCTION: - // Compute the day of the year for leap and non-leap years. - - // METHODOLOGY EMPLOYED: - // Lookup table. - - // REFERENCES: - // NA - - // USE STATEMENTS: - // na - - // FUNCTION LOCAL VARIABLE DECLARATIONS: - static std::array daysbefore{ { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 } }; - static std::array daysbeforeleap{ { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 } }; - - // Could probably do some bounds checking here, but for now assume the month is in [1, 12] - if (leapYear) { - return daysbefore[Month - 1] + Day; - } else { - return daysbeforeleap[Month - 1] + Day; - } - } - - bool - validMonthDay(int const month, int const day, int const leapYearAdd) - { - - // FUNCTION INFORMATION: - // AUTHOR Jason DeGraw - // DATE WRITTEN October 31, 2017 - // MODIFIED na - // RE-ENGINEERED na - - // PURPOSE OF THIS FUNCTION: - // Determine if a month/day+leapyear combination is valid. - - // METHODOLOGY EMPLOYED: - // Lookup table. - - // REFERENCES: - // NA - - // USE STATEMENTS: - // NA - - // FUNCTION LOCAL VARIABLE DECLARATIONS: - // NA - - switch( month ) { - case 1: - case 3: - case 5: - case 7: - case 8: - case 10: - case 12: - if ( day > 31 ) { - return false; - } - break; - case 4: - case 6: - case 9: - case 11: - if ( day > 30 ) { - return false; - } - break; - case 2: - if ( day > 28 + leapYearAdd ) { - return false; - } - break; - default: - return false; - } - return true; - } -} // WeatherManager + // FUNCTION INFORMATION: + // AUTHOR Jason DeGraw + // DATE WRITTEN October 31, 2017 + // MODIFIED na + // RE-ENGINEERED na + + // PURPOSE OF THIS FUNCTION: + // Determine if a month/day+leapyear combination is valid. + + // METHODOLOGY EMPLOYED: + // Lookup table. + + // REFERENCES: + // NA + + // USE STATEMENTS: + // NA + + // FUNCTION LOCAL VARIABLE DECLARATIONS: + // NA + + switch (month) { + case 1: + case 3: + case 5: + case 7: + case 8: + case 10: + case 12: + if (day > 31) { + return false; + } + break; + case 4: + case 6: + case 9: + case 11: + if (day > 30) { + return false; + } + break; + case 2: + if (day > 28 + leapYearAdd) { + return false; + } + break; + default: + return false; + } + return true; + } +} // namespace WeatherManager } // namespace EnergyPlus diff --git a/src/EnergyPlus/WeatherManager.hh b/src/EnergyPlus/WeatherManager.hh index bce275ace27..5ae046bcebc 100644 --- a/src/EnergyPlus/WeatherManager.hh +++ b/src/EnergyPlus/WeatherManager.hh @@ -66,242 +66,259 @@ namespace EnergyPlus { namespace WeatherManager { - // Using/Aliasing - - // Data - // MODULE PARAMETER DEFINITIONS: - // Following are Date Types read in from EPW file or IDF - extern int const InvalidDate; - extern int const MonthDay; - extern int const NthDayInMonth; - extern int const LastDayInMonth; - - extern int const ScheduleMethod; // Constant for water mains temperatures calculation methods - extern int const CorrelationMethod; // Constant for water mains temperatures calculation methods - - extern int const InvalidWeatherFile; - extern int const EPlusWeatherFile; - - extern int const ASHRAE_ClearSky; // Design Day solar model ASHRAE ClearSky (default) - extern int const Zhang_Huang; // Design Day solar model Zhang Huang - extern int const SolarModel_Schedule; // Design Day solar model (beam and diffuse) from user entered schedule - extern int const ASHRAE_Tau; // Design Day solar model ASHRAE tau (per 2009 HOF) - - extern int const DDHumIndType_WetBulb; // Design Day Humidity Indicating Type = Wetbulb (default) - extern int const DDHumIndType_DewPoint; // Design Day Humidity Indicating Type = Dewpoint - extern int const DDHumIndType_Enthalpy; // Design Day Humidity Indicating Type = Enthalpy - extern int const DDHumIndType_HumRatio; // Design Day Humidity Indicating Type = Humidity Ratio - extern int const DDHumIndType_RelHumSch; // Design Day Humidity Indicating Type = relhum schedule - extern int const DDHumIndType_WBProfDef; // Design Day Humidity Indicating Type = Wetbulb default profile - extern int const DDHumIndType_WBProfDif; // Design Day Humidity Indicating Type = Wetbulb difference profile - extern int const DDHumIndType_WBProfMul; // Design Day Humidity Indicating Type = Wetbulb multiplier profile - extern int const DDHumIndType_Count; // # of DDHumIndTypes - - extern int const DDDBRangeType_Default; // Design Day DryBulb Range Type = Default Multipliers - extern int const DDDBRangeType_Multiplier; // Design Day DryBulb Range Type = Multiplier Schedule - extern int const DDDBRangeType_Difference; // Design Day DryBulb Range Type = Difference Schedule - extern int const DDDBRangeType_Profile; // Design Day DryBulb Range Type = Temperature Profile - - extern int const WP_ScheduleValue; // User entered Schedule value for Weather Property - extern int const WP_DryBulbDelta; // User entered DryBulb difference Schedule value for Weather Property - extern int const WP_DewPointDelta; // User entered Dewpoint difference Schedule value for Weather Property - extern int const WP_SkyTAlgorithmA; // place holder - - extern int const GregorianToJulian; // JGDate argument for Gregorian to Julian Date conversion - extern int const JulianToGregorian; // JGDate argument for Julian to Gregorian Date conversion - - extern Real64 const Sigma; // Stefan-Boltzmann constant - extern Real64 const TKelvin; // conversion from Kelvin to Celsius - - extern Array1D_string const DaysOfWeek; - - extern bool Debugout; - - // DERIVED TYPE DEFINITIONS: - - // INTERFACE BLOCK SPECIFICATIONS: - // na - - // MODULE VARIABLE DECLARATIONS: - - extern int const NumDaysInYear; - extern int EnvironmentReportNbr; // Report number for the environment stamp - extern std::string EnvironmentReportChr; // Report number for the environment stamp (character -- for printing) - extern int TimeStampReportNbr; // Report number for the time stamp - extern std::string TimeStampReportChr; // Report number for the time stamp (character -- for printing) - extern int WeatherDataReport; // Report number for the weather data - extern bool WeatherFileExists; // Set to true if a weather file exists - extern std::string LocationTitle; // Location Title from input File - extern bool LocationGathered; // flag to show if Location exists on Input File (we assume one is there and - // correct on weather file) - - extern Real64 WeatherFileLatitude; - extern Real64 WeatherFileLongitude; - extern Real64 WeatherFileTimeZone; - extern Real64 WeatherFileElevation; - extern int WeatherFileUnitNumber; // File unit number for the weather file - extern Array1D< Real64 > GroundTempsFCFromEPWHeader; // F or C factor method - extern Array1D< Real64 > GroundReflectances; // User Specified Ground Reflectances - extern Real64 SnowGndRefModifier; // Modifier to ground reflectance during snow - extern Real64 SnowGndRefModifierForDayltg; // Modifier to ground reflectance during snow for daylighting - extern int WaterMainsTempsMethod; // Water mains temperature calculation method - extern int WaterMainsTempsSchedule; // Water mains temperature schedule - extern Real64 WaterMainsTempsAnnualAvgAirTemp; // Annual average outdoor air temperature (C) - extern Real64 WaterMainsTempsMaxDiffAirTemp; // Maximum difference in monthly average outdoor air temperatures (deltaC) - extern bool wthFCGroundTemps; - extern Real64 RainAmount; - extern Real64 SnowAmount; - - extern int TotRunPers; // Total number of Run Periods (Weather data) to Setup - extern int TotRunDesPers; // Total number of Run Design Periods (Weather data) to Setup - - extern int NumSpecialDays; - extern Array1D_int SpecialDayTypes; // To hold holiday types given in input file - extern Array1D_int WeekDayTypes; // To hold Week day types using specified first day - extern Array1D_int DSTIndex; // To hold DST Index based on weather file or input - - extern int NumDataPeriods; - - extern int NumIntervalsPerHour; - - extern bool UseDaylightSaving; // True if user says to use Weather File specified DaylightSaving Period - extern bool UseSpecialDays; // True if user says to use Weather File specified Special Days for current RunPeriod - extern bool UseRainValues; // True if rain values from weather file are to be used - extern bool UseSnowValues; // True if snow values from weather file are to be used - extern bool EPWDaylightSaving; // True if a DaylightSaving Time Period is input (EPW files) - extern bool IDFDaylightSaving; // True if a DaylightSaving Time Period is input (IDF files) - extern bool DaylightSavingIsActive; // True if a DaylightSavingPeriod should be used for Environment - extern bool WFAllowsLeapYears; // True if the Weather File (WF) header has "Yes" for Leap Years - extern int WFLeapYearInd; // Indicator for current Weather file "Leap Year", used in DayOfYear calculations and others. - extern int curSimDayForEndOfRunPeriod; // normal=number days in sim, but different when repeating runperiods or multi-year files - extern int Envrn; // Counter for environments - extern int NumOfEnvrn; // Number of environments to be simulated - extern int NumEPWTypExtSets; // Number of Typical/Extreme on weather file. - extern int NumWPSkyTemperatures; // Number of WeatherProperty:SkyTemperature items in input file - - extern Array2D_bool TodayIsRain; // Rain indicator, true=rain - extern Array2D_bool TodayIsSnow; // Snow indicator, true=snow - extern Array2D< Real64 > TodayRainAmount; // ficitious indicator of Rain - extern Array2D< Real64 > TodaySnowAmount; // ficitious indicator of Snow - extern Array2D< Real64 > TodayOutDryBulbTemp; // Dry bulb temperature of outside air - extern Array2D< Real64 > TodayOutWetBulbTemp; // Wet bulb temperature of outside air - extern Array2D< Real64 > TodayOutDewPointTemp; // Dew Point Temperature of outside air - extern Array2D< Real64 > TodayOutBaroPress; // Barometric pressure of outside air - extern Array2D< Real64 > TodayOutHumRat; // Humidity ratio of outside air - extern Array2D< Real64 > TodayOutRelHum; // Relative Humidity of outside air - extern Array2D< Real64 > TodayWindSpeed; // Wind speed of outside air - extern Array2D< Real64 > TodayWindDir; // Wind direction of outside air - extern Array2D< Real64 > TodaySkyTemp; // Sky temperature - extern Array2D< Real64 > TodayHorizIRSky; // Horizontal IR from Sky - extern Array2D< Real64 > TodayBeamSolarRad; // Direct normal solar irradiance - extern Array2D< Real64 > TodayDifSolarRad; // Sky diffuse horizontal solar irradiance - extern Array2D< Real64 > TodayAlbedo; // Albedo - extern Array2D< Real64 > TodayLiquidPrecip; // Liquid Precipitation Depth (mm) - - extern Array2D_bool TomorrowIsRain; // Rain indicator, true=rain - extern Array2D_bool TomorrowIsSnow; // Snow indicator, true=snow - extern Array2D< Real64 > TomorrowRainAmount; // ficitious indicator of Rain - extern Array2D< Real64 > TomorrowSnowAmount; // ficitious indicator of Snow - extern Array2D< Real64 > TomorrowOutDryBulbTemp; // Dry bulb temperature of outside air - extern Array2D< Real64 > TomorrowOutDewPointTemp; // Dew Point Temperature of outside air - extern Array2D< Real64 > TomorrowOutBaroPress; // Barometric pressure of outside air - extern Array2D< Real64 > TomorrowOutRelHum; // Relative Humidity of outside air - extern Array2D< Real64 > TomorrowWindSpeed; // Wind speed of outside air - extern Array2D< Real64 > TomorrowWindDir; // Wind direction of outside air - extern Array2D< Real64 > TomorrowSkyTemp; // Sky temperature - extern Array2D< Real64 > TomorrowHorizIRSky; // Horizontal IR from Sky - extern Array2D< Real64 > TomorrowBeamSolarRad; // Direct normal solar irradiance - extern Array2D< Real64 > TomorrowDifSolarRad; // Sky diffuse horizontal solar irradiance - extern Array2D< Real64 > TomorrowAlbedo; // Albedo - extern Array2D< Real64 > TomorrowLiquidPrecip; // Liquid Precipitation Depth - - extern Array3D< Real64 > DDDBRngModifier; // Design Day Dry-bulb Temperature Range Modifier - extern Array3D< Real64 > DDHumIndModifier; // Design Day relative humidity values - // or wet-bulb modifiers (per HumIndType) - extern Array3D< Real64 > DDBeamSolarValues; // Design Day Beam Solar Values - extern Array3D< Real64 > DDDiffuseSolarValues; // Design Day Relative Humidity Values - - extern Array3D< Real64 > DDSkyTempScheduleValues; // Sky temperature - DesignDay input - - extern int RptIsRain; // Rain Report Value - extern int RptIsSnow; // Snow Report Value - extern int RptDayType; // DayType Report Value - - extern Real64 HrAngle; // Current Hour Angle - extern Real64 SolarAltitudeAngle; // Angle of Solar Altitude (degrees) - extern Real64 SolarAzimuthAngle; // Angle of Solar Azimuth (degrees) - extern Real64 HorizIRSky; // Horizontal Infrared Radiation Intensity (W/m2) - extern Real64 TimeStepFraction; // Fraction of hour each time step represents - extern Array1D< Real64 > SPSiteDryBulbRangeModScheduleValue; // reporting Drybulb Temperature Range Modifier Schedule Value - extern Array1D< Real64 > SPSiteHumidityConditionScheduleValue; // reporting Humidity Condition Schedule Value - extern Array1D< Real64 > SPSiteBeamSolarScheduleValue; // reporting Beam Solar Schedule Value - extern Array1D< Real64 > SPSiteDiffuseSolarScheduleValue; // reporting Diffuse Solar Schedule Value - extern Array1D< Real64 > SPSiteSkyTemperatureScheduleValue; // reporting SkyTemperature Modifier Schedule Value - extern Array1D_int SPSiteScheduleNamePtr; // SP Site Schedule Name Ptrs - extern Array1D_string SPSiteScheduleUnits; // SP Site Schedule Units - extern int NumSPSiteScheduleNamePtrs; // Number of SP Site Schedules (DesignDay only) - extern int NumMissing; // Number of hours of missing data - extern Array1D< Real64 > Interpolation; // Interpolation values based on Number of Time Steps in Hour - extern Array1D< Real64 > SolarInterpolation; // Solar Interpolation values based on - // Number of Time Steps in Hour - extern Array1D_int EndDayOfMonth; - extern bool ErrorInWeatherFile; // Set to TRUE when there is a problem with dates - extern int LeapYearAdd; // Set during environment if leap year is active (adds 1 to number days in Feb) - extern bool DatesShouldBeReset; // True when weekdays should be reset - extern bool StartDatesCycleShouldBeReset; // True when start dates on repeat should be reset - extern bool Jan1DatesShouldBeReset; // True if Jan 1 should signal reset of dates - extern bool RPReadAllWeatherData; // True if need to read all weather data prior to simulation - - // SUBROUTINE SPECIFICATIONS FOR MODULE WeatherManager - //PUBLIC ProcessDateString - // Get Input from Input File - - // Types - - enum class WeekDay { Sunday=1, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; - - struct EnvironmentData - { - enum class Type { DesignDay, RunPeriodDesign, RunPeriodWeather, HVACSizeDesignDay, ksHVACSizeRunPeriodDesign, ReadAllWeatherData }; - // Members - std::string Title; // Environment name - std::string cKindOfEnvrn; // kind of environment - int KindOfEnvrn; // Type of environment (see Parameters for KindOfSim in DataGlobals) - int DesignDayNum; // index in DesignDay structure and DesignDayInput - int RunPeriodDesignNum; // for WeatherFileDays, index in RunPeriodDesign and RunPeriodDesignInput - int SeedEnvrnNum; // for HVAC sizing sim, new environments are copies of original environments, this is the index for original - int HVACSizingIterationNum; // environments for HVAC sizing simulations are associated with iteration - int TotalDays; // Number of days in environment - int StartJDay; // Day of year of first day of environment - int StartMonth; - int StartDay; - int StartYear; - int StartDate; - int EndMonth; - int EndDay; - int EndJDay; - int EndYear; - int EndDate; - int DayOfWeek; // Starting Day of Week for the (Weather) RunPeriod (User Input) - bool UseDST; // True if DaylightSavingTime is used for this RunPeriod - bool UseHolidays; // True if Holidays are used for this RunPeriod (from WeatherFile) - bool ApplyWeekendRule; // True if "Weekend Rule" is to be applied to RunPeriod - bool UseRain; // True if Rain from weather file should be used (set rain to true) - bool UseSnow; // True if Snow from weather file should be used (set Snow to true) - Array1D_int MonWeekDay; - bool SetWeekDays; // true when weekdays will be reset (after first year or on repeat) - int NumSimYears; // Total Number of times this period to be performed - int CurrentCycle; // Current cycle through weather file in NumSimYears repeats - int WP_Type1; // WeatherProperties SkyTemperature Pointer - int CurrentYear; // Current year - bool IsLeapYear; // True if current year is leap year. - bool RollDayTypeOnRepeat; // If repeating run period, increment day type on repeat. - bool TreatYearsAsConsecutive; // When year rolls over, increment year and recalculate Leap Year - bool MatchYear; // for actual weather will be true - bool ActualWeather; // true when using actual weather data - int RawSimDays; // number of basic sim days. - - // Default Constructor + // Using/Aliasing + + // Data + // MODULE PARAMETER DEFINITIONS: + // Following are Date Types read in from EPW file or IDF + extern int const InvalidDate; + extern int const MonthDay; + extern int const NthDayInMonth; + extern int const LastDayInMonth; + + extern int const ScheduleMethod; // Constant for water mains temperatures calculation methods + extern int const CorrelationMethod; // Constant for water mains temperatures calculation methods + + extern int const InvalidWeatherFile; + extern int const EPlusWeatherFile; + + extern int const ASHRAE_ClearSky; // Design Day solar model ASHRAE ClearSky (default) + extern int const Zhang_Huang; // Design Day solar model Zhang Huang + extern int const SolarModel_Schedule; // Design Day solar model (beam and diffuse) from user entered schedule + extern int const ASHRAE_Tau; // Design Day solar model ASHRAE tau (per 2009 HOF) + + extern int const DDHumIndType_WetBulb; // Design Day Humidity Indicating Type = Wetbulb (default) + extern int const DDHumIndType_DewPoint; // Design Day Humidity Indicating Type = Dewpoint + extern int const DDHumIndType_Enthalpy; // Design Day Humidity Indicating Type = Enthalpy + extern int const DDHumIndType_HumRatio; // Design Day Humidity Indicating Type = Humidity Ratio + extern int const DDHumIndType_RelHumSch; // Design Day Humidity Indicating Type = relhum schedule + extern int const DDHumIndType_WBProfDef; // Design Day Humidity Indicating Type = Wetbulb default profile + extern int const DDHumIndType_WBProfDif; // Design Day Humidity Indicating Type = Wetbulb difference profile + extern int const DDHumIndType_WBProfMul; // Design Day Humidity Indicating Type = Wetbulb multiplier profile + extern int const DDHumIndType_Count; // # of DDHumIndTypes + + extern int const DDDBRangeType_Default; // Design Day DryBulb Range Type = Default Multipliers + extern int const DDDBRangeType_Multiplier; // Design Day DryBulb Range Type = Multiplier Schedule + extern int const DDDBRangeType_Difference; // Design Day DryBulb Range Type = Difference Schedule + extern int const DDDBRangeType_Profile; // Design Day DryBulb Range Type = Temperature Profile + + extern int const WP_ScheduleValue; // User entered Schedule value for Weather Property + extern int const WP_DryBulbDelta; // User entered DryBulb difference Schedule value for Weather Property + extern int const WP_DewPointDelta; // User entered Dewpoint difference Schedule value for Weather Property + extern int const WP_SkyTAlgorithmA; // place holder + + extern int const GregorianToJulian; // JGDate argument for Gregorian to Julian Date conversion + extern int const JulianToGregorian; // JGDate argument for Julian to Gregorian Date conversion + + extern Real64 const Sigma; // Stefan-Boltzmann constant + extern Real64 const TKelvin; // conversion from Kelvin to Celsius + + extern Array1D_string const DaysOfWeek; + + extern bool Debugout; + + // DERIVED TYPE DEFINITIONS: + + // INTERFACE BLOCK SPECIFICATIONS: + // na + + // MODULE VARIABLE DECLARATIONS: + + extern int const NumDaysInYear; + extern int EnvironmentReportNbr; // Report number for the environment stamp + extern std::string EnvironmentReportChr; // Report number for the environment stamp (character -- for printing) + extern int TimeStampReportNbr; // Report number for the time stamp + extern std::string TimeStampReportChr; // Report number for the time stamp (character -- for printing) + extern int WeatherDataReport; // Report number for the weather data + extern bool WeatherFileExists; // Set to true if a weather file exists + extern std::string LocationTitle; // Location Title from input File + extern bool LocationGathered; // flag to show if Location exists on Input File (we assume one is there and + // correct on weather file) + + extern Real64 WeatherFileLatitude; + extern Real64 WeatherFileLongitude; + extern Real64 WeatherFileTimeZone; + extern Real64 WeatherFileElevation; + extern int WeatherFileUnitNumber; // File unit number for the weather file + extern Array1D GroundTempsFCFromEPWHeader; // F or C factor method + extern Array1D GroundReflectances; // User Specified Ground Reflectances + extern Real64 SnowGndRefModifier; // Modifier to ground reflectance during snow + extern Real64 SnowGndRefModifierForDayltg; // Modifier to ground reflectance during snow for daylighting + extern int WaterMainsTempsMethod; // Water mains temperature calculation method + extern int WaterMainsTempsSchedule; // Water mains temperature schedule + extern Real64 WaterMainsTempsAnnualAvgAirTemp; // Annual average outdoor air temperature (C) + extern Real64 WaterMainsTempsMaxDiffAirTemp; // Maximum difference in monthly average outdoor air temperatures (deltaC) + extern bool wthFCGroundTemps; + extern Real64 RainAmount; + extern Real64 SnowAmount; + + extern int TotRunPers; // Total number of Run Periods (Weather data) to Setup + extern int TotRunDesPers; // Total number of Run Design Periods (Weather data) to Setup + + extern int NumSpecialDays; + extern Array1D_int SpecialDayTypes; // To hold holiday types given in input file + extern Array1D_int WeekDayTypes; // To hold Week day types using specified first day + extern Array1D_int DSTIndex; // To hold DST Index based on weather file or input + + extern int NumDataPeriods; + + extern int NumIntervalsPerHour; + + extern bool UseDaylightSaving; // True if user says to use Weather File specified DaylightSaving Period + extern bool UseSpecialDays; // True if user says to use Weather File specified Special Days for current RunPeriod + extern bool UseRainValues; // True if rain values from weather file are to be used + extern bool UseSnowValues; // True if snow values from weather file are to be used + extern bool EPWDaylightSaving; // True if a DaylightSaving Time Period is input (EPW files) + extern bool IDFDaylightSaving; // True if a DaylightSaving Time Period is input (IDF files) + extern bool DaylightSavingIsActive; // True if a DaylightSavingPeriod should be used for Environment + extern bool WFAllowsLeapYears; // True if the Weather File (WF) header has "Yes" for Leap Years + extern int WFLeapYearInd; // Indicator for current Weather file "Leap Year", used in DayOfYear calculations and others. + extern int curSimDayForEndOfRunPeriod; // normal=number days in sim, but different when repeating runperiods or multi-year files + extern int Envrn; // Counter for environments + extern int NumOfEnvrn; // Number of environments to be simulated + extern int NumEPWTypExtSets; // Number of Typical/Extreme on weather file. + extern int NumWPSkyTemperatures; // Number of WeatherProperty:SkyTemperature items in input file + + extern Array2D_bool TodayIsRain; // Rain indicator, true=rain + extern Array2D_bool TodayIsSnow; // Snow indicator, true=snow + extern Array2D TodayRainAmount; // ficitious indicator of Rain + extern Array2D TodaySnowAmount; // ficitious indicator of Snow + extern Array2D TodayOutDryBulbTemp; // Dry bulb temperature of outside air + extern Array2D TodayOutWetBulbTemp; // Wet bulb temperature of outside air + extern Array2D TodayOutDewPointTemp; // Dew Point Temperature of outside air + extern Array2D TodayOutBaroPress; // Barometric pressure of outside air + extern Array2D TodayOutHumRat; // Humidity ratio of outside air + extern Array2D TodayOutRelHum; // Relative Humidity of outside air + extern Array2D TodayWindSpeed; // Wind speed of outside air + extern Array2D TodayWindDir; // Wind direction of outside air + extern Array2D TodaySkyTemp; // Sky temperature + extern Array2D TodayHorizIRSky; // Horizontal IR from Sky + extern Array2D TodayBeamSolarRad; // Direct normal solar irradiance + extern Array2D TodayDifSolarRad; // Sky diffuse horizontal solar irradiance + extern Array2D TodayAlbedo; // Albedo + extern Array2D TodayLiquidPrecip; // Liquid Precipitation Depth (mm) + + extern Array2D_bool TomorrowIsRain; // Rain indicator, true=rain + extern Array2D_bool TomorrowIsSnow; // Snow indicator, true=snow + extern Array2D TomorrowRainAmount; // ficitious indicator of Rain + extern Array2D TomorrowSnowAmount; // ficitious indicator of Snow + extern Array2D TomorrowOutDryBulbTemp; // Dry bulb temperature of outside air + extern Array2D TomorrowOutDewPointTemp; // Dew Point Temperature of outside air + extern Array2D TomorrowOutBaroPress; // Barometric pressure of outside air + extern Array2D TomorrowOutRelHum; // Relative Humidity of outside air + extern Array2D TomorrowWindSpeed; // Wind speed of outside air + extern Array2D TomorrowWindDir; // Wind direction of outside air + extern Array2D TomorrowSkyTemp; // Sky temperature + extern Array2D TomorrowHorizIRSky; // Horizontal IR from Sky + extern Array2D TomorrowBeamSolarRad; // Direct normal solar irradiance + extern Array2D TomorrowDifSolarRad; // Sky diffuse horizontal solar irradiance + extern Array2D TomorrowAlbedo; // Albedo + extern Array2D TomorrowLiquidPrecip; // Liquid Precipitation Depth + + extern Array3D DDDBRngModifier; // Design Day Dry-bulb Temperature Range Modifier + extern Array3D DDHumIndModifier; // Design Day relative humidity values + // or wet-bulb modifiers (per HumIndType) + extern Array3D DDBeamSolarValues; // Design Day Beam Solar Values + extern Array3D DDDiffuseSolarValues; // Design Day Relative Humidity Values + + extern Array3D DDSkyTempScheduleValues; // Sky temperature - DesignDay input + + extern int RptIsRain; // Rain Report Value + extern int RptIsSnow; // Snow Report Value + extern int RptDayType; // DayType Report Value + + extern Real64 HrAngle; // Current Hour Angle + extern Real64 SolarAltitudeAngle; // Angle of Solar Altitude (degrees) + extern Real64 SolarAzimuthAngle; // Angle of Solar Azimuth (degrees) + extern Real64 HorizIRSky; // Horizontal Infrared Radiation Intensity (W/m2) + extern Real64 TimeStepFraction; // Fraction of hour each time step represents + extern Array1D SPSiteDryBulbRangeModScheduleValue; // reporting Drybulb Temperature Range Modifier Schedule Value + extern Array1D SPSiteHumidityConditionScheduleValue; // reporting Humidity Condition Schedule Value + extern Array1D SPSiteBeamSolarScheduleValue; // reporting Beam Solar Schedule Value + extern Array1D SPSiteDiffuseSolarScheduleValue; // reporting Diffuse Solar Schedule Value + extern Array1D SPSiteSkyTemperatureScheduleValue; // reporting SkyTemperature Modifier Schedule Value + extern Array1D_int SPSiteScheduleNamePtr; // SP Site Schedule Name Ptrs + extern Array1D_string SPSiteScheduleUnits; // SP Site Schedule Units + extern int NumSPSiteScheduleNamePtrs; // Number of SP Site Schedules (DesignDay only) + extern int NumMissing; // Number of hours of missing data + extern Array1D Interpolation; // Interpolation values based on Number of Time Steps in Hour + extern Array1D SolarInterpolation; // Solar Interpolation values based on + // Number of Time Steps in Hour + extern Array1D_int EndDayOfMonth; + extern bool ErrorInWeatherFile; // Set to TRUE when there is a problem with dates + extern int LeapYearAdd; // Set during environment if leap year is active (adds 1 to number days in Feb) + extern bool DatesShouldBeReset; // True when weekdays should be reset + extern bool StartDatesCycleShouldBeReset; // True when start dates on repeat should be reset + extern bool Jan1DatesShouldBeReset; // True if Jan 1 should signal reset of dates + extern bool RPReadAllWeatherData; // True if need to read all weather data prior to simulation + + // SUBROUTINE SPECIFICATIONS FOR MODULE WeatherManager + // PUBLIC ProcessDateString + // Get Input from Input File + + // Types + + enum class WeekDay + { + Sunday = 1, + Monday, + Tuesday, + Wednesday, + Thursday, + Friday, + Saturday + }; + + struct EnvironmentData + { + enum class Type + { + DesignDay, + RunPeriodDesign, + RunPeriodWeather, + HVACSizeDesignDay, + ksHVACSizeRunPeriodDesign, + ReadAllWeatherData + }; + // Members + std::string Title; // Environment name + std::string cKindOfEnvrn; // kind of environment + int KindOfEnvrn; // Type of environment (see Parameters for KindOfSim in DataGlobals) + int DesignDayNum; // index in DesignDay structure and DesignDayInput + int RunPeriodDesignNum; // for WeatherFileDays, index in RunPeriodDesign and RunPeriodDesignInput + int SeedEnvrnNum; // for HVAC sizing sim, new environments are copies of original environments, this is the index for original + int HVACSizingIterationNum; // environments for HVAC sizing simulations are associated with iteration + int TotalDays; // Number of days in environment + int StartJDay; // Day of year of first day of environment + int StartMonth; + int StartDay; + int StartYear; + int StartDate; + int EndMonth; + int EndDay; + int EndJDay; + int EndYear; + int EndDate; + int DayOfWeek; // Starting Day of Week for the (Weather) RunPeriod (User Input) + bool UseDST; // True if DaylightSavingTime is used for this RunPeriod + bool UseHolidays; // True if Holidays are used for this RunPeriod (from WeatherFile) + bool ApplyWeekendRule; // True if "Weekend Rule" is to be applied to RunPeriod + bool UseRain; // True if Rain from weather file should be used (set rain to true) + bool UseSnow; // True if Snow from weather file should be used (set Snow to true) + Array1D_int MonWeekDay; + bool SetWeekDays; // true when weekdays will be reset (after first year or on repeat) + int NumSimYears; // Total Number of times this period to be performed + int CurrentCycle; // Current cycle through weather file in NumSimYears repeats + int WP_Type1; // WeatherProperties SkyTemperature Pointer + int CurrentYear; // Current year + bool IsLeapYear; // True if current year is leap year. + bool RollDayTypeOnRepeat; // If repeating run period, increment day type on repeat. + bool TreatYearsAsConsecutive; // When year rolls over, increment year and recalculate Leap Year + bool MatchYear; // for actual weather will be true + bool ActualWeather; // true when using actual weather data + int RawSimDays; // number of basic sim days. + + // Default Constructor EnvironmentData() : KindOfEnvrn(0), DesignDayNum(0), RunPeriodDesignNum(0), SeedEnvrnNum(0), HVACSizingIterationNum(0), TotalDays(0), StartJDay(0), StartMonth(0), StartDay(0), StartYear(0), StartDate(0), EndMonth(0), EndDay(0), EndJDay(0), EndYear(0), EndDate(0), DayOfWeek(0), @@ -310,338 +327,319 @@ namespace WeatherManager { TreatYearsAsConsecutive(true), MatchYear(false), ActualWeather(false), RawSimDays(0) { } - }; - - struct DesignDayData - { - // Members - std::string Title; // Environment name - Real64 MaxDryBulb; // Maximum Dry-Bulb Temperature (C) - Real64 DailyDBRange; // Daily Temperature Range (deltaC) - Real64 HumIndValue; // Humidity Indicating Value at Max Dry-bulb Temperature - int HumIndType; // Humidity Indicating type (see Parameters) - Real64 PressBarom; // Atmospheric/Barometric Pressure (Pascals) - Real64 WindSpeed; // Wind Speed (m/s) - Real64 WindDir; // Wind Direction (degrees clockwise from North, N=0, E=90, S=180, W=270) - Real64 SkyClear; // Sky Clearness (0 to 1) - int RainInd; // Rain Indicator (1 = raining and surfaces are wet, else 0) - int SnowInd; // Snow Indicator (1 = snow on ground, else 0) - int DayOfMonth; // Day of Month ( 1 - 31 ) - int Month; // Month of Year ( 1 - 12 ) - int DayType; // Day Type Sunday = 1 - Saturday = 7 - int DSTIndicator; // Daylight Saving Time Period Indicator (1=yes, 0=no) for this DesignDay - int SolarModel; // Solar Model for creating solar values for design day. - int DBTempRangeType; // Drybulb Range Type (see Parameters) - int TempRangeSchPtr; // Schedule pointer to a day schedule for dry-bulb temperature range multipliers - int HumIndSchPtr; // Schedule pointer to a day schedule that specifies - // relative humidity (%) or wet-bulb range multipliers per HumIndType - int BeamSolarSchPtr; // Schedule pointer to a day schedule for beam solar - int DiffuseSolarSchPtr; // Schedule pointer to a day schedule for diffuse solar - Real64 TauB; // beam pseudo optical depth for ASHRAE tau model - Real64 TauD; // diffuse pseudo optical depth for ASHRAE tau model - Real64 DailyWBRange; // daily range of wetbulb (deltaC) - bool PressureEntered; // true if a pressure was entered in design day data - bool DewPointNeedsSet; // true if the Dewpoint humidicating value needs to be set (after location determined) - - // Default Constructor + }; + + struct DesignDayData + { + // Members + std::string Title; // Environment name + Real64 MaxDryBulb; // Maximum Dry-Bulb Temperature (C) + Real64 DailyDBRange; // Daily Temperature Range (deltaC) + Real64 HumIndValue; // Humidity Indicating Value at Max Dry-bulb Temperature + int HumIndType; // Humidity Indicating type (see Parameters) + Real64 PressBarom; // Atmospheric/Barometric Pressure (Pascals) + Real64 WindSpeed; // Wind Speed (m/s) + Real64 WindDir; // Wind Direction (degrees clockwise from North, N=0, E=90, S=180, W=270) + Real64 SkyClear; // Sky Clearness (0 to 1) + int RainInd; // Rain Indicator (1 = raining and surfaces are wet, else 0) + int SnowInd; // Snow Indicator (1 = snow on ground, else 0) + int DayOfMonth; // Day of Month ( 1 - 31 ) + int Month; // Month of Year ( 1 - 12 ) + int DayType; // Day Type Sunday = 1 - Saturday = 7 + int DSTIndicator; // Daylight Saving Time Period Indicator (1=yes, 0=no) for this DesignDay + int SolarModel; // Solar Model for creating solar values for design day. + int DBTempRangeType; // Drybulb Range Type (see Parameters) + int TempRangeSchPtr; // Schedule pointer to a day schedule for dry-bulb temperature range multipliers + int HumIndSchPtr; // Schedule pointer to a day schedule that specifies + // relative humidity (%) or wet-bulb range multipliers per HumIndType + int BeamSolarSchPtr; // Schedule pointer to a day schedule for beam solar + int DiffuseSolarSchPtr; // Schedule pointer to a day schedule for diffuse solar + Real64 TauB; // beam pseudo optical depth for ASHRAE tau model + Real64 TauD; // diffuse pseudo optical depth for ASHRAE tau model + Real64 DailyWBRange; // daily range of wetbulb (deltaC) + bool PressureEntered; // true if a pressure was entered in design day data + bool DewPointNeedsSet; // true if the Dewpoint humidicating value needs to be set (after location determined) + + // Default Constructor DesignDayData() : MaxDryBulb(0.0), DailyDBRange(0.0), HumIndValue(0.0), HumIndType(0), PressBarom(0.0), WindSpeed(0.0), WindDir(0.0), SkyClear(0.0), RainInd(0), SnowInd(0), DayOfMonth(0), Month(0), DayType(0), DSTIndicator(0), SolarModel(0), DBTempRangeType(0), TempRangeSchPtr(0), HumIndSchPtr(0), BeamSolarSchPtr(0), DiffuseSolarSchPtr(0), TauB(0.0), TauD(0.0), DailyWBRange(0.0), PressureEntered(false), - DewPointNeedsSet( false ) + DewPointNeedsSet(false) + { + } + }; + + struct RunPeriodData + { + // Members + std::string title; + std::string periodType; + int totalDays; // total number of days in requested period + int startMonth; + int startDay; + int startJulianDate; // Calculated start date (Julian or ordinal) for a weather file run period + int startYear; // entered in "consecutive"/real runperiod object + int endMonth; + int endDay; + int endJulianDate; // Calculated end date (Julian or ordinal) for a weather file run period + int endYear; // entered in "consecutive"/real runperiod object + int dayOfWeek; // Day of Week that the RunPeriod will start on (User Input) + WeekDay startWeekDay; // Day of the week that the RunPeriod will start on (User Input) + bool useDST; // True if DaylightSavingTime is used for this RunPeriod + bool useHolidays; // True if Holidays are used for this RunPeriod (from WeatherFile) + bool applyWeekendRule; // True if "Weekend Rule" is to be applied to RunPeriod + bool useRain; // True if Rain from weather file should be used (set rain to true) + bool useSnow; // True if Snow from weather file should be used (set Snow to true) + Array1D_int monWeekDay; + int numSimYears; // Total Number of years of simulation to be performed + bool isLeapYear; // True if Begin Year is leap year. + bool RollDayTypeOnRepeat; // If repeating run period, increment day type on repeat. + bool TreatYearsAsConsecutive; // When year rolls over, increment year and recalculate Leap Year + bool actualWeather; // true when using actual weather data + int BeginYear; + + // Default Constructor + RunPeriodData() + : totalDays(0), startMonth(1), startDay(1), startJulianDate(0), startYear(2017), endMonth(12), endDay(31), endJulianDate(0), endYear(0), + dayOfWeek(0), startWeekDay(WeekDay::Sunday), useDST(false), useHolidays(false), applyWeekendRule(false), useRain(true), useSnow(true), + monWeekDay(12, 0), numSimYears(1), isLeapYear(false), RollDayTypeOnRepeat(true), TreatYearsAsConsecutive(true), actualWeather(false), + BeginYear(0) { } - }; - - struct RunPeriodData - { - // Members - std::string title; - std::string periodType; - int totalDays; // total number of days in requested period - int startMonth; - int startDay; - int startJulianDate; // Calculated start date (Julian or ordinal) for a weather file run period - int startYear; // entered in "consecutive"/real runperiod object - int endMonth; - int endDay; - int endJulianDate; // Calculated end date (Julian or ordinal) for a weather file run period - int endYear; // entered in "consecutive"/real runperiod object - int dayOfWeek; // Day of Week that the RunPeriod will start on (User Input) - WeekDay startWeekDay; // Day of the week that the RunPeriod will start on (User Input) - bool useDST; // True if DaylightSavingTime is used for this RunPeriod - bool useHolidays; // True if Holidays are used for this RunPeriod (from WeatherFile) - bool applyWeekendRule; // True if "Weekend Rule" is to be applied to RunPeriod - bool useRain; // True if Rain from weather file should be used (set rain to true) - bool useSnow; // True if Snow from weather file should be used (set Snow to true) - Array1D_int monWeekDay; - int numSimYears; // Total Number of years of simulation to be performed - bool isLeapYear; // True if Begin Year is leap year. - bool RollDayTypeOnRepeat; // If repeating run period, increment day type on repeat. - bool TreatYearsAsConsecutive; // When year rolls over, increment year and recalculate Leap Year - bool actualWeather; // true when using actual weather data - int BeginYear; - - // Default Constructor - RunPeriodData() : - totalDays( 0 ), - startMonth( 1 ), - startDay( 1 ), - startJulianDate( 0 ), - startYear( 2017 ), - endMonth( 12 ), - endDay( 31 ), - endJulianDate( 0 ), - endYear( 0 ), - dayOfWeek( 0 ), - startWeekDay( WeekDay::Sunday ), - useDST( false ), - useHolidays( false ), - applyWeekendRule( false ), - useRain( true ), - useSnow( true ), - monWeekDay( 12, 0 ), - numSimYears( 1 ), - isLeapYear( false ), - RollDayTypeOnRepeat( true ), - TreatYearsAsConsecutive( true ), - actualWeather( false ), - BeginYear( 0 ) - {} - - }; - - struct DayWeatherVariables // Derived Type for Storing Weather "Header" Data - { - // Members - int DayOfYear; // Day of year for weather data - int DayOfYear_Schedule; //Day of year in schedule - int Year; // Year of weather data - int Month; // Month of weather data - int DayOfMonth; // Day of month for weather data - int DayOfWeek; // Day of week for weather data - int DaylightSavingIndex; // Daylight Saving Time Period indicator (0=no,1=yes) - int HolidayIndex; // Holiday indicator (0=no holiday, non-zero=holiday type) - Real64 SinSolarDeclinAngle; // Sine of the solar declination angle - Real64 CosSolarDeclinAngle; // Cosine of the solar declination angle - Real64 EquationOfTime; // Value of the equation of time formula - - // Default Constructor + }; + + struct DayWeatherVariables // Derived Type for Storing Weather "Header" Data + { + // Members + int DayOfYear; // Day of year for weather data + int DayOfYear_Schedule; // Day of year in schedule + int Year; // Year of weather data + int Month; // Month of weather data + int DayOfMonth; // Day of month for weather data + int DayOfWeek; // Day of week for weather data + int DaylightSavingIndex; // Daylight Saving Time Period indicator (0=no,1=yes) + int HolidayIndex; // Holiday indicator (0=no holiday, non-zero=holiday type) + Real64 SinSolarDeclinAngle; // Sine of the solar declination angle + Real64 CosSolarDeclinAngle; // Cosine of the solar declination angle + Real64 EquationOfTime; // Value of the equation of time formula + + // Default Constructor DayWeatherVariables() : DayOfYear(0), DayOfYear_Schedule(0), Year(0), Month(0), DayOfMonth(0), DayOfWeek(0), DaylightSavingIndex(0), HolidayIndex(0), SinSolarDeclinAngle(0.0), CosSolarDeclinAngle(0.0), EquationOfTime(0.0) { } - }; - - struct SpecialDayData - { - // Members - std::string Name; // Name - int DateType; // Date type as read in from IDF - int Month; // Start Month - int Day; // Start Day of month or Count for DateTypes=NthDayOfMonth - int WeekDay; // For Date types=NthDayOfMonth and LastDayOfMonth - int CompDate; // Start Date in "compressed date" format, only if Month/Day - bool WthrFile; // True if this Special Day came from weather file (EPW) - int Duration; // Number of days this special Day is used for - int DayType; // Day Type desigation for this Special Day period - int ActStMon; - int ActStDay; - bool Used; // Set to true in a run period after use (NthDayOfMonth and LastDayOfMonth only) - - // Default Constructor + }; + + struct SpecialDayData + { + // Members + std::string Name; // Name + int DateType; // Date type as read in from IDF + int Month; // Start Month + int Day; // Start Day of month or Count for DateTypes=NthDayOfMonth + int WeekDay; // For Date types=NthDayOfMonth and LastDayOfMonth + int CompDate; // Start Date in "compressed date" format, only if Month/Day + bool WthrFile; // True if this Special Day came from weather file (EPW) + int Duration; // Number of days this special Day is used for + int DayType; // Day Type desigation for this Special Day period + int ActStMon; + int ActStDay; + bool Used; // Set to true in a run period after use (NthDayOfMonth and LastDayOfMonth only) + + // Default Constructor SpecialDayData() : DateType(0), Month(0), Day(0), WeekDay(0), CompDate(0), WthrFile(false), Duration(0), DayType(0), ActStMon(0), ActStDay(0), Used(false) { } - }; - - struct DataPeriodData - { - // Members - std::string Name; // DataPeriod Title - std::string DayOfWeek; // Start Day of Week for DataPeriod - int NumYearsData; // Number of years for which data is present in EPW. - int WeekDay; - int StMon; - int StDay; - int StYear; - int EnMon; - int EnDay; - int EnYear; - int NumDays; - Array1D_int MonWeekDay; - int DataStJDay; - int DataEnJDay; - bool HasYearData; - - // Default Constructor + }; + + struct DataPeriodData + { + // Members + std::string Name; // DataPeriod Title + std::string DayOfWeek; // Start Day of Week for DataPeriod + int NumYearsData; // Number of years for which data is present in EPW. + int WeekDay; + int StMon; + int StDay; + int StYear; + int EnMon; + int EnDay; + int EnYear; + int NumDays; + Array1D_int MonWeekDay; + int DataStJDay; + int DataEnJDay; + bool HasYearData; + + // Default Constructor DataPeriodData() : NumYearsData(1), WeekDay(0), StMon(0), StDay(0), StYear(0), EnMon(0), EnDay(0), EnYear(0), NumDays(0), MonWeekDay(12, 0), DataStJDay(0), DataEnJDay(0), HasYearData(false) { } - }; - - struct DaylightSavingPeriodData - { - // Members - int StDateType; // Start Date type as from EPW or IDF - int StWeekDay; // For DateTypes=NthDayOfMonth or LastDayOfMonth - int StMon; // DaylightSavingTime (DST) Start Month - int StDay; // DaylightSavingTime (DST) Start Day - int EnDateType; // End Date type as from EPW or IDF - int EnMon; // DaylightSavingTime (DST) End Month - int EnDay; // DaylightSavingTime (DST) End Day - int EnWeekDay; // For DateTypes=NthDayOfMonth or LastDayOfMonth - - // Default Constructor + }; + + struct DaylightSavingPeriodData + { + // Members + int StDateType; // Start Date type as from EPW or IDF + int StWeekDay; // For DateTypes=NthDayOfMonth or LastDayOfMonth + int StMon; // DaylightSavingTime (DST) Start Month + int StDay; // DaylightSavingTime (DST) Start Day + int EnDateType; // End Date type as from EPW or IDF + int EnMon; // DaylightSavingTime (DST) End Month + int EnDay; // DaylightSavingTime (DST) End Day + int EnWeekDay; // For DateTypes=NthDayOfMonth or LastDayOfMonth + + // Default Constructor DaylightSavingPeriodData() : StDateType(0), StWeekDay(0), StMon(0), StDay(0), EnDateType(0), EnMon(0), EnDay(0), EnWeekDay(0) { } - }; - - struct MissingData // This Derived type carries the default missing data - { - // Members - // for those data elements that would be best replaced - // with the previous hour's data for missing data. - Real64 DryBulb; // Dry Bulb Temperature (C) - Real64 DewPoint; // Dew Point Temperature (C) - int RelHumid; // Relative Humidity (%) - Real64 StnPres; // Atmospheric Pressure (Pa) - int WindDir; // Wind Direction (deg) - Real64 WindSpd; // Wind Speed/Velocity (m/s) - int TotSkyCvr; // Total Sky Cover (tenths) - int OpaqSkyCvr; // Opaque Sky Cover (tenths) - Real64 Visibility; // Visibility (km) - int Ceiling; // Ceiling Height (m) - int PrecipWater; // Precipitable Water (mm) - Real64 AerOptDepth; // Aerosol Optical Depth - int SnowDepth; // Snow Depth (cm) - int DaysLastSnow; // Number of Days since last snow - Real64 Albedo; // Albedo - Real64 LiquidPrecip; // Rain/Liquid Precipitation (mm) - - // Default Constructor + }; + + struct MissingData // This Derived type carries the default missing data + { + // Members + // for those data elements that would be best replaced + // with the previous hour's data for missing data. + Real64 DryBulb; // Dry Bulb Temperature (C) + Real64 DewPoint; // Dew Point Temperature (C) + int RelHumid; // Relative Humidity (%) + Real64 StnPres; // Atmospheric Pressure (Pa) + int WindDir; // Wind Direction (deg) + Real64 WindSpd; // Wind Speed/Velocity (m/s) + int TotSkyCvr; // Total Sky Cover (tenths) + int OpaqSkyCvr; // Opaque Sky Cover (tenths) + Real64 Visibility; // Visibility (km) + int Ceiling; // Ceiling Height (m) + int PrecipWater; // Precipitable Water (mm) + Real64 AerOptDepth; // Aerosol Optical Depth + int SnowDepth; // Snow Depth (cm) + int DaysLastSnow; // Number of Days since last snow + Real64 Albedo; // Albedo + Real64 LiquidPrecip; // Rain/Liquid Precipitation (mm) + + // Default Constructor MissingData() : DryBulb(0.0), DewPoint(0.0), RelHumid(0), StnPres(0.0), WindDir(0), WindSpd(0.0), TotSkyCvr(0), OpaqSkyCvr(0), Visibility(0.0), Ceiling(0), PrecipWater(0), AerOptDepth(0.0), SnowDepth(0), DaysLastSnow(0), Albedo(0.0), LiquidPrecip(0.0) { } - }; - - struct MissingDataCounts // This Derived type carries the counts of missing data - { - // Members - // items in the weather reading process. It will count - // only items that are on the source file -- not those that - // are derived from data on the source file. - // Comments below illustrate the data that is being counted: - int DryBulb; // Dry Bulb Temperature (C) - int DewPoint; // Dew Point Temperature (C) - int RelHumid; // Relative Humidity (%) - int StnPres; // Atmospheric Pressure (Pa) - int WindDir; // Wind Direction (deg) - int WindSpd; // Wind Speed/Velocity (m/s) - int DirectRad; // Direct Radiation (wh/m2) - int DiffuseRad; // Diffuse Radiation (wh/m2) - int TotSkyCvr; // Total Sky Cover (tenths) - int OpaqSkyCvr; // Opaque Sky Cover (tenths) - int Visibility; // Visibility (km) - int Ceiling; // Ceiling Height (m) - int PrecipWater; // Precipitable Water (mm) - int AerOptDepth; // Aerosol Optical Depth - int SnowDepth; // Snow Depth (cm) - int DaysLastSnow; // Number of Days since last snow - int WeathCodes; // Weather codes invalid - int Albedo; // Albedo - int LiquidPrecip; // Liquid Precip Depth - - // Default Constructor + }; + + struct MissingDataCounts // This Derived type carries the counts of missing data + { + // Members + // items in the weather reading process. It will count + // only items that are on the source file -- not those that + // are derived from data on the source file. + // Comments below illustrate the data that is being counted: + int DryBulb; // Dry Bulb Temperature (C) + int DewPoint; // Dew Point Temperature (C) + int RelHumid; // Relative Humidity (%) + int StnPres; // Atmospheric Pressure (Pa) + int WindDir; // Wind Direction (deg) + int WindSpd; // Wind Speed/Velocity (m/s) + int DirectRad; // Direct Radiation (wh/m2) + int DiffuseRad; // Diffuse Radiation (wh/m2) + int TotSkyCvr; // Total Sky Cover (tenths) + int OpaqSkyCvr; // Opaque Sky Cover (tenths) + int Visibility; // Visibility (km) + int Ceiling; // Ceiling Height (m) + int PrecipWater; // Precipitable Water (mm) + int AerOptDepth; // Aerosol Optical Depth + int SnowDepth; // Snow Depth (cm) + int DaysLastSnow; // Number of Days since last snow + int WeathCodes; // Weather codes invalid + int Albedo; // Albedo + int LiquidPrecip; // Liquid Precip Depth + + // Default Constructor MissingDataCounts() : DryBulb(0), DewPoint(0), RelHumid(0), StnPres(0), WindDir(0), WindSpd(0), DirectRad(0), DiffuseRad(0), TotSkyCvr(0), OpaqSkyCvr(0), Visibility(0), Ceiling(0), PrecipWater(0), AerOptDepth(0), SnowDepth(0), DaysLastSnow(0), WeathCodes(0), Albedo(0), LiquidPrecip(0) { } - }; - - struct RangeDataCounts // This Derived type carries the counts of out of range - { - // Members - // items in the weather reading process. It will count - // only items that are on the source file -- not those that - // are derived from data on the source file. - // Comments below illustrate the data that is being counted: - int DryBulb; // Dry Bulb Temperature (C) - int DewPoint; // Dew Point Temperature (C) - int RelHumid; // Relative Humidity (%) - int StnPres; // Atmospheric Pressure (Pa) - int WindDir; // Wind Direction (deg) - int WindSpd; // Wind Speed/Velocity (m/s) - int DirectRad; // Direct Radiation (wh/m2) - int DiffuseRad; // Diffuse Radiation (wh/m2) - - // Default Constructor + }; + + struct RangeDataCounts // This Derived type carries the counts of out of range + { + // Members + // items in the weather reading process. It will count + // only items that are on the source file -- not those that + // are derived from data on the source file. + // Comments below illustrate the data that is being counted: + int DryBulb; // Dry Bulb Temperature (C) + int DewPoint; // Dew Point Temperature (C) + int RelHumid; // Relative Humidity (%) + int StnPres; // Atmospheric Pressure (Pa) + int WindDir; // Wind Direction (deg) + int WindSpd; // Wind Speed/Velocity (m/s) + int DirectRad; // Direct Radiation (wh/m2) + int DiffuseRad; // Diffuse Radiation (wh/m2) + + // Default Constructor RangeDataCounts() : DryBulb(0), DewPoint(0), RelHumid(0), StnPres(0), WindDir(0), WindSpd(0), DirectRad(0), DiffuseRad(0) { } - }; - - struct TypicalExtremeData - { - // Members - std::string Title; // Environment name - std::string ShortTitle; // Environment name - std::string MatchValue; // String to be matched for input/running these periods for design. - std::string MatchValue1; // String to be also matched (synonym) - std::string MatchValue2; // String to be also matched (synonym) - std::string TEType; // Typical or Extreme - int TotalDays; // Number of days in environment - int StartJDay; // Day of year of first day of environment - int StartMonth; - int StartDay; - int EndMonth; - int EndDay; - int EndJDay; - - // Default Constructor + }; + + struct TypicalExtremeData + { + // Members + std::string Title; // Environment name + std::string ShortTitle; // Environment name + std::string MatchValue; // String to be matched for input/running these periods for design. + std::string MatchValue1; // String to be also matched (synonym) + std::string MatchValue2; // String to be also matched (synonym) + std::string TEType; // Typical or Extreme + int TotalDays; // Number of days in environment + int StartJDay; // Day of year of first day of environment + int StartMonth; + int StartDay; + int EndMonth; + int EndDay; + int EndJDay; + + // Default Constructor TypicalExtremeData() : TotalDays(0), StartJDay(0), StartMonth(0), StartDay(0), EndMonth(0), EndDay(0), EndJDay(0) { } - }; - - struct WeatherProperties - { - // Members - std::string Name; // Reference Name - std::string ScheduleName; // Schedule Name or Algorithm Name - bool IsSchedule; // Default is using Schedule - int CalculationType; - int SchedulePtr; // pointer to schedule when used - bool UsedForEnvrn; - - // Default Constructor + }; + + struct WeatherProperties + { + // Members + std::string Name; // Reference Name + std::string ScheduleName; // Schedule Name or Algorithm Name + bool IsSchedule; // Default is using Schedule + int CalculationType; + int SchedulePtr; // pointer to schedule when used + bool UsedForEnvrn; + + // Default Constructor WeatherProperties() : IsSchedule(true), CalculationType(0), SchedulePtr(0), UsedForEnvrn(false) { } - }; - - struct UnderwaterBoundary - { - std::string Name; - Real64 distanceFromLeadingEdge; - int OSCMIndex; - int WaterTempScheduleIndex; - int VelocityScheduleIndex; + }; + + struct UnderwaterBoundary + { + std::string Name; + Real64 distanceFromLeadingEdge; + int OSCMIndex; + int WaterTempScheduleIndex; + int VelocityScheduleIndex; UnderwaterBoundary() : Name(""), distanceFromLeadingEdge(0.0), OSCMIndex(0), WaterTempScheduleIndex(0), VelocityScheduleIndex(0) { } - }; - extern std::vector< UnderwaterBoundary > underwaterBoundaries; + }; + extern std::vector underwaterBoundaries; - // Object Data + // Object Data extern DayWeatherVariables TodayVariables; // Today's daily weather variables | Derived Type for Storing Weather "Header" Data | Day of year for // weather data | Year of weather data | Month of weather data | Day of month for weather data | Day of // week for weather data | Daylight Saving Time Period indicator (0=no,1=yes) | Holiday indicator (0=no @@ -652,26 +650,26 @@ namespace WeatherManager { // Day of week for weather data | Daylight Saving Time Period indicator (0=no,1=yes) | Holiday // indicator (0=no holiday, non-zero=holiday type) | Sine of the solar declination angle | Cosine of // the solar declination angle | Value of the equation of time formula - extern Array1D< DayWeatherVariables > DesignDay; // Design day environments + extern Array1D DesignDay; // Design day environments extern MissingData Missing; // Dry Bulb Temperature (C) | Dew Point Temperature (C) | Relative Humidity (%) | Atmospheric Pressure (Pa) | Wind // Direction (deg) | Wind Speed/Velocity (m/s) | Total Sky Cover (tenths) | Opaque Sky Cover (tenths) | Visibility // (km) | Ceiling Height (m) | Precipitable Water (mm) | Aerosol Optical Depth | Snow Depth (cm) | Number of Days // since last snow | Albedo | Rain/Liquid Precipitation (mm) - extern MissingDataCounts Missed; - extern RangeDataCounts OutOfRange; - extern Array1D< DesignDayData > DesDayInput; // Design day Input Data - extern Array1D< EnvironmentData > Environment; // Environment data - extern Array1D< RunPeriodData > RunPeriodInput; - extern Array1D< RunPeriodData > RunPeriodDesignInput; - extern Array1D< TypicalExtremeData > TypicalExtremePeriods; - extern DaylightSavingPeriodData EPWDST; // Daylight Saving Period Data from EPW file - extern DaylightSavingPeriodData IDFDST; // Daylight Saving Period Data from IDF file - extern DaylightSavingPeriodData DST; // Daylight Saving Period Data, if active - extern Array1D< WeatherProperties > WPSkyTemperature; - extern Array1D< SpecialDayData > SpecialDays; - extern Array1D< DataPeriodData > DataPeriods; - - // Functions + extern MissingDataCounts Missed; + extern RangeDataCounts OutOfRange; + extern Array1D DesDayInput; // Design day Input Data + extern Array1D Environment; // Environment data + extern Array1D RunPeriodInput; + extern Array1D RunPeriodDesignInput; + extern Array1D TypicalExtremePeriods; + extern DaylightSavingPeriodData EPWDST; // Daylight Saving Period Data from EPW file + extern DaylightSavingPeriodData IDFDST; // Daylight Saving Period Data from IDF file + extern DaylightSavingPeriodData DST; // Daylight Saving Period Data, if active + extern Array1D WPSkyTemperature; + extern Array1D SpecialDays; + extern Array1D DataPeriods; + + // Functions void clear_state(); void ManageWeather(); @@ -679,40 +677,40 @@ namespace WeatherManager { void ResetEnvironmentCounter(); void GetNextEnvironment(bool &Available, // true if there is another environment, false if the end - bool & ErrorsFound // will be set to true if severe errors are found in inputs - ); + bool &ErrorsFound // will be set to true if severe errors are found in inputs + ); void AddDesignSetToEnvironmentStruct( - int const HVACSizingIterCount // Counter for number of times HVAC Sizing Simulation of Design Period set is being rerun - ); + int const HVACSizingIterCount // Counter for number of times HVAC Sizing Simulation of Design Period set is being rerun + ); bool CheckIfAnyUnderwaterBoundaries(); - Real64 + Real64 calculateWaterBoundaryConvectionCoefficient(Real64 const curWaterTemp, Real64 const curWaterVelocity, Real64 const distanceFromLeadingEdge); - + void UpdateUnderwaterBoundaries(); void ReadVariableLocationOrientation(); void UpdateLocationAndOrientation(); - + void SetupWeekDaysByMonth(int const StMon, int const StDay, int const StWeekDay, Array1A_int WeekDays); void ResetWeekDaysByMonth(Array1A_int WeekDays, - int const LeapYearAdd, - int const StartMonth, - int const StartMonthDay, - int const EndMonth, - int const EndMonthDay, - bool const Rollover, + int const LeapYearAdd, + int const StartMonth, + int const StartMonthDay, + int const EndMonth, + int const EndMonthDay, + bool const Rollover, Optional_bool_const MidSimReset = _); void SetDSTDateRanges(Array1S_int MonWeekDay, // Weekday of each day 1 of month - Array1S_int DSTIndex, // DST Index for each julian day (1:366) - Optional_int DSTActStMon = _, - Optional_int DSTActStDay = _, - Optional_int DSTActEnMon = _, + Array1S_int DSTIndex, // DST Index for each julian day (1:366) + Optional_int DSTActStMon = _, + Optional_int DSTActStDay = _, + Optional_int DSTActEnMon = _, Optional_int DSTActEnDay = _); void SetSpecialDayDates(Array1S_int MonWeekDay); // Weekday of each day 1 of month @@ -724,92 +722,92 @@ namespace WeatherManager { void SetCurrentWeather(); void ReadWeatherForDay(int const DayToRead, // =1 when starting out, otherwise signifies next day - int const Environ, // Environment being simulated - bool const BackSpaceAfterRead // True if weather file is to be backspaced after read - ); + int const Environ, // Environment being simulated + bool const BackSpaceAfterRead // True if weather file is to be backspaced after read + ); void ReadEPlusWeatherForDay(int const DayToRead, // =1 when starting out, otherwise signifies next day - int const Environ, // Environment being simulated - bool const BackSpaceAfterRead // True if weather file is to be backspaced after read - ); + int const Environ, // Environment being simulated + bool const BackSpaceAfterRead // True if weather file is to be backspaced after read + ); Real64 interpolateWindDirection(Real64 const prevHrWindDir, Real64 const curHrWindDir, Real64 const curHrWeight); void SetDayOfWeekInitialValues(int const EnvironDayOfWeek, // Starting Day of Week for the (Weather) RunPeriod (User Input) - int & CurDayOfWeek, // Current Day of Week - bool & UseDayOfWeek // hmmm does not appear to be used anywhere. - ); + int &CurDayOfWeek, // Current Day of Week + bool &UseDayOfWeek // hmmm does not appear to be used anywhere. + ); void InterpretWeatherDataLine(std::string &Line, - bool & ErrorFound, - int & WYear, - int & WMonth, - int & WDay, - int & WHour, - int & WMinute, - Real64 & RField1, // DryBulb - Real64 & RField2, // DewPoint - Real64 & RField3, // RelHum - Real64 & RField4, // AtmPress - Real64 & RField5, // ETHoriz - Real64 & RField6, // ETDirect - Real64 & RField7, // IRHoriz - Real64 & RField8, // GLBHoriz - Real64 & RField9, // DirectRad - Real64 & RField10, // DiffuseRad - Real64 & RField11, // GLBHorizIllum - Real64 & RField12, // DirectNrmIllum - Real64 & RField13, // DiffuseHorizIllum - Real64 & RField14, // ZenLum - Real64 & RField15, // WindDir - Real64 & RField16, // WindSpeed - Real64 & RField17, // TotalSkyCover - Real64 & RField18, // OpaqueSkyCover - Real64 & RField19, // Visibility - Real64 & RField20, // CeilHeight - int & WObs, // PresWeathObs - Array1A_int WCodesArr, // PresWeathConds - Real64 & RField22, // PrecipWater - Real64 & RField23, // AerosolOptDepth - Real64 & RField24, // SnowDepth - Real64 & RField25, // DaysSinceLastSnow - Real64 & RField26, // Albedo - Real64 & RField27 // LiquidPrecip - ); + bool &ErrorFound, + int &WYear, + int &WMonth, + int &WDay, + int &WHour, + int &WMinute, + Real64 &RField1, // DryBulb + Real64 &RField2, // DewPoint + Real64 &RField3, // RelHum + Real64 &RField4, // AtmPress + Real64 &RField5, // ETHoriz + Real64 &RField6, // ETDirect + Real64 &RField7, // IRHoriz + Real64 &RField8, // GLBHoriz + Real64 &RField9, // DirectRad + Real64 &RField10, // DiffuseRad + Real64 &RField11, // GLBHorizIllum + Real64 &RField12, // DirectNrmIllum + Real64 &RField13, // DiffuseHorizIllum + Real64 &RField14, // ZenLum + Real64 &RField15, // WindDir + Real64 &RField16, // WindSpeed + Real64 &RField17, // TotalSkyCover + Real64 &RField18, // OpaqueSkyCover + Real64 &RField19, // Visibility + Real64 &RField20, // CeilHeight + int &WObs, // PresWeathObs + Array1A_int WCodesArr, // PresWeathConds + Real64 &RField22, // PrecipWater + Real64 &RField23, // AerosolOptDepth + Real64 &RField24, // SnowDepth + Real64 &RField25, // DaysSinceLastSnow + Real64 &RField26, // Albedo + Real64 &RField27 // LiquidPrecip + ); void SetUpDesignDay(int const EnvrnNum); // Environment number passed into the routine - //------------------------------------------------------------------------------ + //------------------------------------------------------------------------------ Real64 AirMass(Real64 const CosZen); // COS( solar zenith), 0 - 1 - //------------------------------------------------------------------------------ + //------------------------------------------------------------------------------ void ASHRAETauModel(Real64 const ETR, // extraterrestrial normal irradiance, W/m2 - Real64 const CosZen, // COS( solar zenith angle), 0 - 1 - Real64 const TauB, // beam tau factor - Real64 const TauD, // dif tau factor - Real64 & IDirN, // returned: direct (beam) irradiance on normal surface, W/m2 - Real64 & IDifH, // returned: diffuse irradiance on horiz surface, W/m2 - Real64 & IGlbH // returned: global irradiance on horiz surface, W/m2 - ); + Real64 const CosZen, // COS( solar zenith angle), 0 - 1 + Real64 const TauB, // beam tau factor + Real64 const TauD, // dif tau factor + Real64 &IDirN, // returned: direct (beam) irradiance on normal surface, W/m2 + Real64 &IDifH, // returned: diffuse irradiance on horiz surface, W/m2 + Real64 &IGlbH // returned: global irradiance on horiz surface, W/m2 + ); void AllocateWeatherData(); void CalculateDailySolarCoeffs(int const DayOfYear, // Day of year (1 - 366) - Real64 & A, // ASHRAE "A" - Apparent solar irradiation at air mass = 0 [W/M**2] - Real64 & B, // ASHRAE "B" - Atmospheric extinction coefficient - Real64 & C, // ASHRAE "C" - Diffuse radiation factor - Real64 & AnnVarSolConstant, // Annual variation in the solar constant - Real64 & EquationOfTime, // Equation of Time - Real64 & SineSolarDeclination, // Sine of Solar Declination - Real64 & CosineSolarDeclination // Cosine of Solar Declination - ); + Real64 &A, // ASHRAE "A" - Apparent solar irradiation at air mass = 0 [W/M**2] + Real64 &B, // ASHRAE "B" - Atmospheric extinction coefficient + Real64 &C, // ASHRAE "C" - Diffuse radiation factor + Real64 &AnnVarSolConstant, // Annual variation in the solar constant + Real64 &EquationOfTime, // Equation of Time + Real64 &SineSolarDeclination, // Sine of Solar Declination + Real64 &CosineSolarDeclination // Cosine of Solar Declination + ); void CalculateSunDirectionCosines(Real64 const TimeValue, // Current Time of Day - Real64 const EqOfTime, // Equation of Time - Real64 const SinSolDeclin, // Sine of Solar Declination - Real64 const CosSolDeclin, // Cosine of Solar Declination + Real64 const EqOfTime, // Equation of Time + Real64 const SinSolDeclin, // Sine of Solar Declination + Real64 const CosSolDeclin, // Cosine of Solar Declination Array1A SUNCOS); void DetermineSunUpDown(Array1A SunDirectionCosines); @@ -817,8 +815,8 @@ namespace WeatherManager { void OpenWeatherFile(bool &ErrorsFound); void OpenEPlusWeatherFile(bool &ErrorsFound, // Will be set to true if errors found - bool const ProcessHeader // Set to true when headers should be processed (rather than just read) - ); + bool const ProcessHeader // Set to true when headers should be processed (rather than just read) + ); void CloseWeatherFile(); @@ -867,8 +865,8 @@ namespace WeatherManager { void DayltgCurrentExtHorizIllum(); void DayltgLuminousEfficacy(Real64 &DiffLumEff, // Luminous efficacy of sky diffuse solar radiation (lum/W) - Real64 & DirLumEff // Luminous efficacy of beam solar radiation (lum/W) - ); + Real64 &DirLumEff // Luminous efficacy of beam solar radiation (lum/W) + ); Real64 GetSTM(Real64 const Longitude); // Longitude from user input @@ -882,34 +880,28 @@ namespace WeatherManager { void SetupEnvironmentTypes(); - bool - isLeapYear( int const Year ); + bool isLeapYear(int const Year); - int - computeJulianDate( int const gyyyy, int const gmm, int const gdd ); + int computeJulianDate(int const gyyyy, int const gmm, int const gdd); void JGDate(int const jflag, // indicates direction of conversion, - int & jdate, // input/output julian date, typically a 7 or 8 digit integer - int & gyyyy, // input/output gregorian year, should be specified as 4 digits - int & gmm, // input/output gregorian month - int & gdd // input/output gregorian day - ); + int &jdate, // input/output julian date, typically a 7 or 8 digit integer + int &gyyyy, // input/output gregorian year, should be specified as 4 digits + int &gmm, // input/output gregorian month + int &gdd // input/output gregorian day + ); int CalculateDayOfWeek(int const JulianDate); // from JGDate calculation - WeekDay - calculateDayOfWeek( int const year, int const month, int day ); + WeekDay calculateDayOfWeek(int const year, int const month, int day); - int - calculateDayOfYear( int const Month, int const Day ); + int calculateDayOfYear(int const Month, int const Day); - int - calculateDayOfYear( int const Month, int const Day, bool const leapYear ); + int calculateDayOfYear(int const Month, int const Day, bool const leapYear); - bool - validMonthDay( int const month, int const day, int const leapYearAdd = 0 ); + bool validMonthDay(int const month, int const day, int const leapYearAdd = 0); -} // WeatherManager +} // namespace WeatherManager } // namespace EnergyPlus From 6cfc50cceb98ed90fc191d1ff90818d07bef559a Mon Sep 17 00:00:00 2001 From: energyplus-style-bot Date: Sat, 24 Mar 2018 18:37:08 -0600 Subject: [PATCH 17/47] apply clang-tidy --- src/EnergyPlus/DXCoils.cc | 2 +- src/EnergyPlus/ExternalInterface.cc | 5 +- src/EnergyPlus/FanCoilUnits.cc | 6 +- src/EnergyPlus/HeatBalanceSurfaceManager.cc | 2 +- src/EnergyPlus/PackagedTerminalHeatPump.cc | 4 +- src/EnergyPlus/SurfaceGeometry.cc | 3 +- src/EnergyPlus/WaterCoils.cc | 2 +- .../unit/AirflowNetworkBalanceManager.unit.cc | 13850 ++++++++-------- .../unit/DesiccantDehumidifiers.unit.cc | 13180 +++++++-------- tst/EnergyPlus/unit/HVACFourPipeBeam.unit.cc | 6172 +++---- .../unit/HeatBalanceManager.unit.cc | 2348 +-- .../unit/HeatBalanceSurfaceManager.unit.cc | 4734 +++--- .../unit/OASystemHWPreheatCoil.unit.cc | 3930 ++--- .../PlantHeatExchangerFluidToFluid.unit.cc | 4734 +++--- tst/EnergyPlus/unit/RunPeriod.unit.cc | 250 +- tst/EnergyPlus/unit/SolarShading.unit.cc | 2548 +-- tst/EnergyPlus/unit/UnitHeater.unit.cc | 4652 +++--- tst/EnergyPlus/unit/VentilatedSlab.unit.cc | 4514 ++--- tst/EnergyPlus/unit/WeatherManager.unit.cc | 480 +- tst/EnergyPlus/unit/WindowManager.unit.cc | 5018 +++--- 20 files changed, 33216 insertions(+), 33218 deletions(-) diff --git a/src/EnergyPlus/DXCoils.cc b/src/EnergyPlus/DXCoils.cc index cd34a0b1b87..8ff15ee8bf5 100644 --- a/src/EnergyPlus/DXCoils.cc +++ b/src/EnergyPlus/DXCoils.cc @@ -6346,7 +6346,7 @@ namespace DXCoils { // } else if ( DXCoil( DXCoilNum ).DXCoilType_Num == CoilDX_HeatingEmpirical ) { // SizingMethod = HeatingAirflowSizing; //// DataCoolCoilCap = DXCoolCap; // pass global variable used only for heat pumps (i.e., - ///DX cooling and heating coils) + /// DX cooling and heating coils) // } else if ( DXCoil( DXCoilNum ).DXCoilType_Num == CoilVRF_Heating ) { // SizingMethod = HeatingAirflowSizing; // } else if ( DXCoil( DXCoilNum ).DXCoilType_Num == CoilVRF_Cooling ) { diff --git a/src/EnergyPlus/ExternalInterface.cc b/src/EnergyPlus/ExternalInterface.cc index 4920609b725..db3d9773b17 100644 --- a/src/EnergyPlus/ExternalInterface.cc +++ b/src/EnergyPlus/ExternalInterface.cc @@ -1313,8 +1313,9 @@ namespace ExternalInterface { // verify whether we have duplicate FMU input variables in the idf GlobalNames::VerifyUniqueInterObjectName(UniqueFMUInputVarNames, FMU(i).Instance(j).fmuInputVariable(k).Name, cCurrentModuleObject, FMU(i).Instance(j).Name, ErrorsFound); - // UtilityRoutines::VerifyName( FMU( i ).Instance( j ).fmuInputVariable( k ).Name, FMU( - //i + // UtilityRoutines::VerifyName( FMU( i ).Instance( j ).fmuInputVariable( k + //).Name, FMU( + // i //).Instance( // j //).checkfmuInputVariable, NumFMUInputVariables, IsNotOK, IsBlank, "The FMU input variable \"" + FMU( i ).Instance( j diff --git a/src/EnergyPlus/FanCoilUnits.cc b/src/EnergyPlus/FanCoilUnits.cc index 6127d5c5f4d..1e993809200 100644 --- a/src/EnergyPlus/FanCoilUnits.cc +++ b/src/EnergyPlus/FanCoilUnits.cc @@ -3204,13 +3204,13 @@ namespace FanCoilUnits { // FanCoil( FanCoilNum ).Name ); ShowContinueError( " Iteration limit // exceeded in calculating heating coil output " ); // ShowRecurringWarningErrorAtEnd( "Heating coil Iteration limit exceeded - //in fan coil unit " + FanCoil( FanCoilNum ).Name, FanCoil( FanCoilNum ).MaxIterIndexC ); + // in fan coil unit " + FanCoil( FanCoilNum ).Name, FanCoil( FanCoilNum ).MaxIterIndexC ); // } else if ( SolFlag == -2 ) { // ShowWarningError( "Heating coil control failed in fan coil unit " + // FanCoil( FanCoilNum ).Name ); ShowContinueError( " Bad starting // values for electric heating coil control to meet zone load at constant temperature." ); - // ShowRecurringWarningErrorAtEnd( "Heating coil control failed in fan coil - //unit + // ShowRecurringWarningErrorAtEnd( "Heating coil control failed in fan + // coil unit //" //+ FanCoil( FanCoilNum ).Name, FanCoil( FanCoilNum ).MaxIterIndexC ); // Node( FanCoil( FanCoilNum ).AirInNode ).MassFlowRate = diff --git a/src/EnergyPlus/HeatBalanceSurfaceManager.cc b/src/EnergyPlus/HeatBalanceSurfaceManager.cc index 8fc4bc4d224..a25685538b0 100644 --- a/src/EnergyPlus/HeatBalanceSurfaceManager.cc +++ b/src/EnergyPlus/HeatBalanceSurfaceManager.cc @@ -4718,7 +4718,7 @@ namespace HeatBalanceSurfaceManager { QdotRadHVACInRep(SurfNum) = QdotRadHVACInRepPerArea(SurfNum) * Surface(SurfNum).Area; // Tuned Replaced by one line form below for speed // QdotRadHVACInRepPerArea( SurfNum ) = QHTRadSysSurf( SurfNum ) + QHWBaseboardSurf( SurfNum ) + QSteamBaseboardSurf( - //SurfNum + // SurfNum //) //+ QElecBaseboardSurf( SurfNum ); QdotRadHVACInRep( SurfNum ) = QdotRadHVACInRepPerArea( SurfNum ) * // surfaceArea; diff --git a/src/EnergyPlus/PackagedTerminalHeatPump.cc b/src/EnergyPlus/PackagedTerminalHeatPump.cc index f8038aed446..387329bca6b 100644 --- a/src/EnergyPlus/PackagedTerminalHeatPump.cc +++ b/src/EnergyPlus/PackagedTerminalHeatPump.cc @@ -1325,8 +1325,8 @@ namespace PackagedTerminalHeatPump { } // if ( PTUnit( PTUnitNum ).MaxOATSupHeat > 21.0 ) { - // ShowWarningError( CurrentModuleObject + " = " + PTUnit( PTUnitNum ).Name + ": " + cNumericFields( 11 ) + " should - //be + // ShowWarningError( CurrentModuleObject + " = " + PTUnit( PTUnitNum ).Name + ": " + cNumericFields( 11 ) + " + // should be //<= to 21." //); ShowContinueError( "..." + cNumericFields( 11 ) + " = " + TrimSigDigits( Numbers( 11 ), 1 ) ); // } diff --git a/src/EnergyPlus/SurfaceGeometry.cc b/src/EnergyPlus/SurfaceGeometry.cc index 903b06d094c..3893b2823c1 100644 --- a/src/EnergyPlus/SurfaceGeometry.cc +++ b/src/EnergyPlus/SurfaceGeometry.cc @@ -5865,7 +5865,8 @@ namespace SurfaceGeometry { // are they all similar tilt and azimuth? Issue warnings so people can do it if they really want Real64 const surfaceArea(sum_sub(Surface, &SurfaceData::Area, ExtVentedCavity(Item).SurfPtrs)); - // AvgAzimuth = sum( Surface( ExtVentedCavity( Item ).SurfPtrs ).Azimuth * Surface( ExtVentedCavity( Item ).SurfPtrs ).Area + // AvgAzimuth = sum( Surface( ExtVentedCavity( Item ).SurfPtrs ).Azimuth * Surface( ExtVentedCavity( Item ).SurfPtrs + //).Area //) /// sum( Surface( ExtVentedCavity( Item ).SurfPtrs ).Area ); //Autodesk:F2C++ Array subscript usage: Replaced by below AvgAzimuth = sum_product_sub(Surface, &SurfaceData::Azimuth, &SurfaceData::Area, ExtVentedCavity(Item).SurfPtrs) / diff --git a/src/EnergyPlus/WaterCoils.cc b/src/EnergyPlus/WaterCoils.cc index c617ee96c7c..bc900b36395 100644 --- a/src/EnergyPlus/WaterCoils.cc +++ b/src/EnergyPlus/WaterCoils.cc @@ -2882,7 +2882,7 @@ namespace WaterCoils { // Tuned Replaced by below to eliminate pow calls // for ( CoefPointer = 1; CoefPointer <= 5; ++CoefPointer ) { // DryCoilEfficiency += WaterCoil( CoilNum ).DryFinEfficncyCoef( CoefPointer ) * std::pow( DryFinEfficncy, - //CoefPointer + // CoefPointer //- // 1 //); } // CoefPointer diff --git a/tst/EnergyPlus/unit/AirflowNetworkBalanceManager.unit.cc b/tst/EnergyPlus/unit/AirflowNetworkBalanceManager.unit.cc index 4a6d87dd942..53ebd2b6f13 100644 --- a/tst/EnergyPlus/unit/AirflowNetworkBalanceManager.unit.cc +++ b/tst/EnergyPlus/unit/AirflowNetworkBalanceManager.unit.cc @@ -83,4597 +83,4597 @@ using namespace OutAirNodeManager; namespace EnergyPlus { - TEST_F( EnergyPlusFixture, AirflowNetworkBalanceManagerTest_TestOtherSideCoefficients ) - { - - int i = 2; - - AirflowNetworkNumOfExtSurfaces = 2; - AirflowNetworkNumOfSurfaces = 2; - - MultizoneSurfaceData.allocate( i ); - Surface.allocate( i ); - Surface( 1 ).ExtBoundCond = -2; - Surface( 2 ).ExtBoundCond = -2; - Surface( 1 ).ExtWind = true; - Surface( 2 ).ExtWind = true; - Surface( 1 ).Tilt = 90.0; - Surface( 2 ).Tilt = 90.0; - Surface( 1 ).Azimuth = 0.0; - Surface( 2 ).Azimuth = 180.0; - - MultizoneSurfaceData( 1 ).SurfNum = 1; - MultizoneSurfaceData( 2 ).SurfNum = 2; - - CalcWindPressureCoeffs(); - EXPECT_EQ( 1, MultizoneSurfaceData( 1 ).NodeNums( 2 ) ); - EXPECT_EQ( 2, MultizoneSurfaceData( 2 ).NodeNums( 2 ) ); - EXPECT_EQ( 1, MultizoneExternalNodeData( 1 ).curve ); - EXPECT_EQ( 3, MultizoneExternalNodeData( 2 ).curve ); - - MultizoneSurfaceData.deallocate(); - MultizoneExternalNodeData.deallocate(); - Surface.deallocate(); - } +TEST_F(EnergyPlusFixture, AirflowNetworkBalanceManagerTest_TestOtherSideCoefficients) +{ + + int i = 2; + + AirflowNetworkNumOfExtSurfaces = 2; + AirflowNetworkNumOfSurfaces = 2; + + MultizoneSurfaceData.allocate(i); + Surface.allocate(i); + Surface(1).ExtBoundCond = -2; + Surface(2).ExtBoundCond = -2; + Surface(1).ExtWind = true; + Surface(2).ExtWind = true; + Surface(1).Tilt = 90.0; + Surface(2).Tilt = 90.0; + Surface(1).Azimuth = 0.0; + Surface(2).Azimuth = 180.0; + + MultizoneSurfaceData(1).SurfNum = 1; + MultizoneSurfaceData(2).SurfNum = 2; + + CalcWindPressureCoeffs(); + EXPECT_EQ(1, MultizoneSurfaceData(1).NodeNums(2)); + EXPECT_EQ(2, MultizoneSurfaceData(2).NodeNums(2)); + EXPECT_EQ(1, MultizoneExternalNodeData(1).curve); + EXPECT_EQ(3, MultizoneExternalNodeData(2).curve); + + MultizoneSurfaceData.deallocate(); + MultizoneExternalNodeData.deallocate(); + Surface.deallocate(); +} TEST_F(EnergyPlusFixture, TestZoneVentingSch) { - // Unit test for #5021 - - Zone.allocate( 1 ); - Zone( 1 ).Name = "SALA DE AULA"; - - Surface.allocate( 2 ); - Surface( 1 ).Name = "WINDOW AULA 1"; - Surface( 1 ).Zone = 1; - Surface( 1 ).ZoneName = "SALA DE AULA"; - Surface( 1 ).Azimuth = 0.0; - Surface( 1 ).ExtBoundCond = 0; - Surface( 1 ).HeatTransSurf = true; - Surface( 1 ).Tilt = 90.0; - Surface( 1 ).Sides = 4; - Surface( 2 ).Name = "WINDOW AULA 2"; - Surface( 2 ).Zone = 1; - Surface( 2 ).ZoneName = "SALA DE AULA"; - Surface( 2 ).Azimuth = 180.0; - Surface( 2 ).ExtBoundCond = 0; - Surface( 2 ).HeatTransSurf = true; - Surface( 2 ).Tilt = 90.0; - Surface( 2 ).Sides = 4; - - SurfaceWindow.allocate( 2 ); - SurfaceWindow( 1 ).OriginalClass = 11; - SurfaceWindow( 2 ).OriginalClass = 11; - NumOfZones = 1; - - std::string const idf_objects = delimited_string( { - "Version,8.3;", - "Schedule:Constant,OnSch,,1.0;", - "Schedule:Constant,Aula people sched,,0.0;", - "Schedule:Constant,Sempre 21,,21.0;", - "AirflowNetwork:SimulationControl,", - " NaturalVentilation, !- Name", - " MultizoneWithoutDistribution, !- AirflowNetwork Control", - " SurfaceAverageCalculation, !- Wind Pressure Coefficient Type", - " , !- Height Selection for Local Wind Pressure Calculation", - " LOWRISE, !- Building Type", - " 1000, !- Maximum Number of Iterations{ dimensionless }", - " LinearInitializationMethod, !- Initialization Type", - " 0.0001, !- Relative Airflow Convergence Tolerance{ dimensionless }", - " 0.0001, !- Absolute Airflow Convergence Tolerance{ kg / s }", - " -0.5, !- Convergence Acceleration Limit{ dimensionless }", - " 90, !- Azimuth Angle of Long Axis of Building{ deg }", - " 0.36; !- Ratio of Building Width Along Short Axis to Width Along Long Axis", - "AirflowNetwork:MultiZone:Zone,", - " sala de aula, !- Zone Name", - " Temperature, !- Ventilation Control Mode", - " Sempre 21, !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 1, !- Minimum Venting Open Factor{ dimensionless }", - " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", - " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", - " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", - " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", - " Aula people sched, !- Venting Availability Schedule Name", - " Standard; !- Single Sided Wind Pressure Coefficient Algorithm", - "AirflowNetwork:MultiZone:Surface,", - " window aula 1, !- Surface Name", - " Simple Window, !- Leakage Component Name", - " , !- External Node Name", - " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - " ZoneLevel, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " , !- Minimum Venting Open Factor{ dimensionless }", - " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", - " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", - " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", - " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", - " Aula people sched; !- Venting Availability Schedule Name", - "AirflowNetwork:MultiZone:Surface,", - " window aula 2, !- Surface Name", - " Simple Window, !- Leakage Component Name", - " , !- External Node Name", - " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - " Temperature, !- Ventilation Control Mode", - " Sempre 21, !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 1, !- Minimum Venting Open Factor{ dimensionless }", - " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", - " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", - " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", - " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", - " Aula people sched; !- Venting Availability Schedule Name", - "AirflowNetwork:MultiZone:Component:SimpleOpening,", - " Simple Window, !- Name", - " 0.0010, !- Air Mass Flow Coefficient When Opening is Closed{ kg / s - m }", - " 0.65, !- Air Mass Flow Exponent When Opening is Closed{ dimensionless }", - " 0.01, !- Minimum Density Difference for Two - Way Flow{ kg / m3 }", - " 0.78; !- Discharge Coefficient{ dimensionless }", - } ); - - ASSERT_TRUE (process_idf(idf_objects)); - GetAirflowNetworkInput(); - - //MultizoneZoneData has only 1 element so may be hardcoded - auto GetIndex = UtilityRoutines::FindItemInList( MultizoneZoneData( 1 ).VentingSchName, Schedule( {1,NumSchedules} ) ); - EXPECT_EQ( GetIndex, MultizoneZoneData( 1 ).VentingSchNum ); - - Zone.deallocate(); - Surface.deallocate(); - SurfaceWindow.deallocate(); - } + // Unit test for #5021 + + Zone.allocate(1); + Zone(1).Name = "SALA DE AULA"; + + Surface.allocate(2); + Surface(1).Name = "WINDOW AULA 1"; + Surface(1).Zone = 1; + Surface(1).ZoneName = "SALA DE AULA"; + Surface(1).Azimuth = 0.0; + Surface(1).ExtBoundCond = 0; + Surface(1).HeatTransSurf = true; + Surface(1).Tilt = 90.0; + Surface(1).Sides = 4; + Surface(2).Name = "WINDOW AULA 2"; + Surface(2).Zone = 1; + Surface(2).ZoneName = "SALA DE AULA"; + Surface(2).Azimuth = 180.0; + Surface(2).ExtBoundCond = 0; + Surface(2).HeatTransSurf = true; + Surface(2).Tilt = 90.0; + Surface(2).Sides = 4; + + SurfaceWindow.allocate(2); + SurfaceWindow(1).OriginalClass = 11; + SurfaceWindow(2).OriginalClass = 11; + NumOfZones = 1; + + std::string const idf_objects = delimited_string({ + "Version,8.3;", + "Schedule:Constant,OnSch,,1.0;", + "Schedule:Constant,Aula people sched,,0.0;", + "Schedule:Constant,Sempre 21,,21.0;", + "AirflowNetwork:SimulationControl,", + " NaturalVentilation, !- Name", + " MultizoneWithoutDistribution, !- AirflowNetwork Control", + " SurfaceAverageCalculation, !- Wind Pressure Coefficient Type", + " , !- Height Selection for Local Wind Pressure Calculation", + " LOWRISE, !- Building Type", + " 1000, !- Maximum Number of Iterations{ dimensionless }", + " LinearInitializationMethod, !- Initialization Type", + " 0.0001, !- Relative Airflow Convergence Tolerance{ dimensionless }", + " 0.0001, !- Absolute Airflow Convergence Tolerance{ kg / s }", + " -0.5, !- Convergence Acceleration Limit{ dimensionless }", + " 90, !- Azimuth Angle of Long Axis of Building{ deg }", + " 0.36; !- Ratio of Building Width Along Short Axis to Width Along Long Axis", + "AirflowNetwork:MultiZone:Zone,", + " sala de aula, !- Zone Name", + " Temperature, !- Ventilation Control Mode", + " Sempre 21, !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " 1, !- Minimum Venting Open Factor{ dimensionless }", + " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", + " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", + " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", + " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", + " Aula people sched, !- Venting Availability Schedule Name", + " Standard; !- Single Sided Wind Pressure Coefficient Algorithm", + "AirflowNetwork:MultiZone:Surface,", + " window aula 1, !- Surface Name", + " Simple Window, !- Leakage Component Name", + " , !- External Node Name", + " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + " ZoneLevel, !- Ventilation Control Mode", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " , !- Minimum Venting Open Factor{ dimensionless }", + " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", + " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", + " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", + " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", + " Aula people sched; !- Venting Availability Schedule Name", + "AirflowNetwork:MultiZone:Surface,", + " window aula 2, !- Surface Name", + " Simple Window, !- Leakage Component Name", + " , !- External Node Name", + " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + " Temperature, !- Ventilation Control Mode", + " Sempre 21, !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " 1, !- Minimum Venting Open Factor{ dimensionless }", + " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", + " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", + " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", + " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", + " Aula people sched; !- Venting Availability Schedule Name", + "AirflowNetwork:MultiZone:Component:SimpleOpening,", + " Simple Window, !- Name", + " 0.0010, !- Air Mass Flow Coefficient When Opening is Closed{ kg / s - m }", + " 0.65, !- Air Mass Flow Exponent When Opening is Closed{ dimensionless }", + " 0.01, !- Minimum Density Difference for Two - Way Flow{ kg / m3 }", + " 0.78; !- Discharge Coefficient{ dimensionless }", + }); + + ASSERT_TRUE(process_idf(idf_objects)); + GetAirflowNetworkInput(); + + // MultizoneZoneData has only 1 element so may be hardcoded + auto GetIndex = UtilityRoutines::FindItemInList(MultizoneZoneData(1).VentingSchName, Schedule({1, NumSchedules})); + EXPECT_EQ(GetIndex, MultizoneZoneData(1).VentingSchNum); + + Zone.deallocate(); + Surface.deallocate(); + SurfaceWindow.deallocate(); +} TEST_F(EnergyPlusFixture, AirflowNetworkBalanceManager_TestTriangularWindowWarning) { - // Unit test for #5384 - - Zone.allocate( 1 ); - Zone( 1 ).Name = "WEST_ZONE"; - - Surface.allocate( 3 ); - Surface( 1 ).Name = "SURFACE_1"; - Surface( 1 ).Zone = 1; - Surface( 1 ).ZoneName = "WEST_ZONE"; - Surface( 1 ).Azimuth = 0.0; - Surface( 1 ).ExtBoundCond = 0; - Surface( 1 ).HeatTransSurf = true; - Surface( 1 ).Tilt = 90.0; - Surface( 1 ).Sides = 4; - Surface( 2 ).Name = "SURFACE_2"; - Surface( 2 ).Zone = 1; - Surface( 2 ).ZoneName = "WEST_ZONE"; - Surface( 2 ).Azimuth = 180.0; - Surface( 2 ).ExtBoundCond = 0; - Surface( 2 ).HeatTransSurf = true; - Surface( 2 ).Tilt = 90.0; - Surface( 2 ).Sides = 4; - Surface( 3 ).Name = "WINDOW1"; - Surface( 3 ).Zone = 1; - Surface( 3 ).ZoneName = "WEST_ZONE"; - Surface( 3 ).Azimuth = 180.0; - Surface( 3 ).ExtBoundCond = 0; - Surface( 3 ).HeatTransSurf = true; - Surface( 3 ).Tilt = 90.0; - Surface( 3 ).Sides = 3; - Surface( 3 ).Vertex.allocate( 3 ); - Surface( 3 ).Vertex( 1 ).x = 3.0; - Surface( 3 ).Vertex( 2 ).x = 3.0; - Surface( 3 ).Vertex( 3 ).x = 1.0; - Surface( 3 ).Vertex( 1 ).y = 10.778; - Surface( 3 ).Vertex( 2 ).y = 10.778; - Surface( 3 ).Vertex( 3 ).y = 10.778; - Surface( 3 ).Vertex( 1 ).z = 2.0; - Surface( 3 ).Vertex( 2 ).z = 1.0; - Surface( 3 ).Vertex( 3 ).z = 1.0; - - SurfaceWindow.allocate( 3 ); - SurfaceWindow( 1 ).OriginalClass = 11; - SurfaceWindow( 2 ).OriginalClass = 11; - SurfaceWindow( 3 ).OriginalClass = 11; - NumOfZones = 1; - - std::string const idf_objects = delimited_string( { - "Version,8.3;", - "Schedule:Constant,OnSch,,1.0;", - "Schedule:Constant,Aula people sched,,0.0;", - "Schedule:Constant,Sempre 21,,21.0;", - "AirflowNetwork:SimulationControl,", - " NaturalVentilation, !- Name", - " MultizoneWithoutDistribution, !- AirflowNetwork Control", - " SurfaceAverageCalculation, !- Wind Pressure Coefficient Type", - " , !- Height Selection for Local Wind Pressure Calculation", - " LOWRISE, !- Building Type", - " 1000, !- Maximum Number of Iterations{ dimensionless }", - " LinearInitializationMethod, !- Initialization Type", - " 0.0001, !- Relative Airflow Convergence Tolerance{ dimensionless }", - " 0.0001, !- Absolute Airflow Convergence Tolerance{ kg / s }", - " -0.5, !- Convergence Acceleration Limit{ dimensionless }", - " 90, !- Azimuth Angle of Long Axis of Building{ deg }", - " 0.36; !- Ratio of Building Width Along Short Axis to Width Along Long Axis", - "AirflowNetwork:MultiZone:Zone,", - " WEST_ZONE, !- Zone Name", - " Temperature, !- Ventilation Control Mode", - " Sempre 21, !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 1, !- Minimum Venting Open Factor{ dimensionless }", - " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", - " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", - " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", - " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", - " Aula people sched, !- Venting Availability Schedule Name", - " Standard; !- Single Sided Wind Pressure Coefficient Algorithm", - "AirflowNetwork:MultiZone:Surface,", - " Surface_1, !- Surface Name", - " CR-1, !- Leakage Component Name", - " , !- External Node Name", - " 1; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - "AirflowNetwork:MultiZone:Surface,", - " Surface_2, !- Surface Name", - " CR-1, !- Leakage Component Name", - " , !- External Node Name", - " 1; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - "AirflowNetwork:MultiZone:Surface,", - " Window1, !- Surface Name", - " Simple Window, !- Leakage Component Name", - " , !- External Node Name", - " 1; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - "AirflowNetwork:MultiZone:Component:SimpleOpening,", - " Simple Window, !- Name", - " 0.0010, !- Air Mass Flow Coefficient When Opening is Closed{ kg / s - m }", - " 0.65, !- Air Mass Flow Exponent When Opening is Closed{ dimensionless }", - " 0.01, !- Minimum Density Difference for Two - Way Flow{ kg / m3 }", - " 0.78; !- Discharge Coefficient{ dimensionless }", - "AirflowNetwork:MultiZone:ReferenceCrackConditions,", - " ReferenceCrackConditions, !- Name", - " 20.0, !- Reference Temperature{ C }", - " 101320, !- Reference Barometric Pressure{ Pa }", - " 0.005; !- Reference Humidity Ratio{ kgWater / kgDryAir }", - "AirflowNetwork:MultiZone:Surface:Crack,", - " CR-1, !- Name", - " 0.01, !- Air Mass Flow Coefficient at Reference Conditions{ kg / s }", - " 0.667, !- Air Mass Flow Exponent{ dimensionless }", - " ReferenceCrackConditions; !- Reference Crack Conditions", - } ); - - ASSERT_TRUE( process_idf( idf_objects ) ); - GetAirflowNetworkInput( ); - std::string const error_string = delimited_string( { - " ** Warning ** GetAirflowNetworkInput: AirflowNetwork:MultiZone:Surface=\"WINDOW1\".", - " ** ~~~ ** The opening is a Triangular subsurface. A rectangular subsurface will be used with equivalent width and height.", - } ); - - EXPECT_TRUE( compare_err_stream( error_string, true ) ); - - AirflowNetworkNodeData.deallocate( ); - AirflowNetworkCompData.deallocate( ); - MultizoneExternalNodeData.deallocate( ); - Zone.deallocate( ); - Surface.deallocate( ); - SurfaceWindow.deallocate( ); - } + // Unit test for #5384 + + Zone.allocate(1); + Zone(1).Name = "WEST_ZONE"; + + Surface.allocate(3); + Surface(1).Name = "SURFACE_1"; + Surface(1).Zone = 1; + Surface(1).ZoneName = "WEST_ZONE"; + Surface(1).Azimuth = 0.0; + Surface(1).ExtBoundCond = 0; + Surface(1).HeatTransSurf = true; + Surface(1).Tilt = 90.0; + Surface(1).Sides = 4; + Surface(2).Name = "SURFACE_2"; + Surface(2).Zone = 1; + Surface(2).ZoneName = "WEST_ZONE"; + Surface(2).Azimuth = 180.0; + Surface(2).ExtBoundCond = 0; + Surface(2).HeatTransSurf = true; + Surface(2).Tilt = 90.0; + Surface(2).Sides = 4; + Surface(3).Name = "WINDOW1"; + Surface(3).Zone = 1; + Surface(3).ZoneName = "WEST_ZONE"; + Surface(3).Azimuth = 180.0; + Surface(3).ExtBoundCond = 0; + Surface(3).HeatTransSurf = true; + Surface(3).Tilt = 90.0; + Surface(3).Sides = 3; + Surface(3).Vertex.allocate(3); + Surface(3).Vertex(1).x = 3.0; + Surface(3).Vertex(2).x = 3.0; + Surface(3).Vertex(3).x = 1.0; + Surface(3).Vertex(1).y = 10.778; + Surface(3).Vertex(2).y = 10.778; + Surface(3).Vertex(3).y = 10.778; + Surface(3).Vertex(1).z = 2.0; + Surface(3).Vertex(2).z = 1.0; + Surface(3).Vertex(3).z = 1.0; + + SurfaceWindow.allocate(3); + SurfaceWindow(1).OriginalClass = 11; + SurfaceWindow(2).OriginalClass = 11; + SurfaceWindow(3).OriginalClass = 11; + NumOfZones = 1; + + std::string const idf_objects = delimited_string({ + "Version,8.3;", + "Schedule:Constant,OnSch,,1.0;", + "Schedule:Constant,Aula people sched,,0.0;", + "Schedule:Constant,Sempre 21,,21.0;", + "AirflowNetwork:SimulationControl,", + " NaturalVentilation, !- Name", + " MultizoneWithoutDistribution, !- AirflowNetwork Control", + " SurfaceAverageCalculation, !- Wind Pressure Coefficient Type", + " , !- Height Selection for Local Wind Pressure Calculation", + " LOWRISE, !- Building Type", + " 1000, !- Maximum Number of Iterations{ dimensionless }", + " LinearInitializationMethod, !- Initialization Type", + " 0.0001, !- Relative Airflow Convergence Tolerance{ dimensionless }", + " 0.0001, !- Absolute Airflow Convergence Tolerance{ kg / s }", + " -0.5, !- Convergence Acceleration Limit{ dimensionless }", + " 90, !- Azimuth Angle of Long Axis of Building{ deg }", + " 0.36; !- Ratio of Building Width Along Short Axis to Width Along Long Axis", + "AirflowNetwork:MultiZone:Zone,", + " WEST_ZONE, !- Zone Name", + " Temperature, !- Ventilation Control Mode", + " Sempre 21, !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " 1, !- Minimum Venting Open Factor{ dimensionless }", + " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", + " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", + " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", + " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", + " Aula people sched, !- Venting Availability Schedule Name", + " Standard; !- Single Sided Wind Pressure Coefficient Algorithm", + "AirflowNetwork:MultiZone:Surface,", + " Surface_1, !- Surface Name", + " CR-1, !- Leakage Component Name", + " , !- External Node Name", + " 1; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + "AirflowNetwork:MultiZone:Surface,", + " Surface_2, !- Surface Name", + " CR-1, !- Leakage Component Name", + " , !- External Node Name", + " 1; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + "AirflowNetwork:MultiZone:Surface,", + " Window1, !- Surface Name", + " Simple Window, !- Leakage Component Name", + " , !- External Node Name", + " 1; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + "AirflowNetwork:MultiZone:Component:SimpleOpening,", + " Simple Window, !- Name", + " 0.0010, !- Air Mass Flow Coefficient When Opening is Closed{ kg / s - m }", + " 0.65, !- Air Mass Flow Exponent When Opening is Closed{ dimensionless }", + " 0.01, !- Minimum Density Difference for Two - Way Flow{ kg / m3 }", + " 0.78; !- Discharge Coefficient{ dimensionless }", + "AirflowNetwork:MultiZone:ReferenceCrackConditions,", + " ReferenceCrackConditions, !- Name", + " 20.0, !- Reference Temperature{ C }", + " 101320, !- Reference Barometric Pressure{ Pa }", + " 0.005; !- Reference Humidity Ratio{ kgWater / kgDryAir }", + "AirflowNetwork:MultiZone:Surface:Crack,", + " CR-1, !- Name", + " 0.01, !- Air Mass Flow Coefficient at Reference Conditions{ kg / s }", + " 0.667, !- Air Mass Flow Exponent{ dimensionless }", + " ReferenceCrackConditions; !- Reference Crack Conditions", + }); + + ASSERT_TRUE(process_idf(idf_objects)); + GetAirflowNetworkInput(); + std::string const error_string = delimited_string({ + " ** Warning ** GetAirflowNetworkInput: AirflowNetwork:MultiZone:Surface=\"WINDOW1\".", + " ** ~~~ ** The opening is a Triangular subsurface. A rectangular subsurface will be used with equivalent width and height.", + }); + + EXPECT_TRUE(compare_err_stream(error_string, true)); + + AirflowNetworkNodeData.deallocate(); + AirflowNetworkCompData.deallocate(); + MultizoneExternalNodeData.deallocate(); + Zone.deallocate(); + Surface.deallocate(); + SurfaceWindow.deallocate(); +} TEST_F(EnergyPlusFixture, TestAFNPressureStat) { - // Unit test for a new feature of PressureStat and #5687 - int i; - - std::string const idf_objects = delimited_string( { - "Version,8.4;", - " Building,", - " Small Office with AirflowNetwork model, !- Name", - " 0, !- North Axis {deg}", - " Suburbs, !- Terrain", - " 0.001, !- Loads Convergence Tolerance Value", - " 0.0050000, !- Temperature Convergence Tolerance Value {deltaC}", - " FullInteriorAndExterior, !- Solar Distribution", - " 25, !- Maximum Number of Warmup Days", - " 6; !- Minimum Number of Warmup Days", - - " Timestep,6;", - - " SurfaceConvectionAlgorithm:Inside,TARP;", - - " SurfaceConvectionAlgorithm:Outside,DOE-2;", - - " HeatBalanceAlgorithm,ConductionTransferFunction;", - - " Schedule:Constant,FanAndCoilAvailSched,,1.0;", - " Schedule:Constant,On,,1.0;", - " Schedule:Constant,WindowVentSched,,21.0;", - " Schedule:Constant,VentingSched,,0.0;", - - " Site:GroundTemperature:BuildingSurface,20.03,20.03,20.13,20.30,20.43,20.52,20.62,20.77,20.78,20.55,20.44,20.20;", - - " Material,", - " A1 - 1 IN STUCCO, !- Name", - " Smooth, !- Roughness", - " 2.5389841E-02, !- Thickness {m}", - " 0.6918309, !- Conductivity {W/m-K}", - " 1858.142, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.9200000, !- Solar Absorptance", - " 0.9200000; !- Visible Absorptance", - - " Material,", - " C4 - 4 IN COMMON BRICK, !- Name", - " Rough, !- Roughness", - " 0.1014984, !- Thickness {m}", - " 0.7264224, !- Conductivity {W/m-K}", - " 1922.216, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7600000, !- Solar Absorptance", - " 0.7600000; !- Visible Absorptance", - - " Material,", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Name", - " Smooth, !- Roughness", - " 1.9050000E-02, !- Thickness {m}", - " 0.7264224, !- Conductivity {W/m-K}", - " 1601.846, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.9200000, !- Solar Absorptance", - " 0.9200000; !- Visible Absorptance", - - " Material,", - " C6 - 8 IN CLAY TILE, !- Name", - " Smooth, !- Roughness", - " 0.2033016, !- Thickness {m}", - " 0.5707605, !- Conductivity {W/m-K}", - " 1121.292, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.8200000, !- Solar Absorptance", - " 0.8200000; !- Visible Absorptance", - - " Material,", - " C10 - 8 IN HW CONCRETE, !- Name", - " MediumRough, !- Roughness", - " 0.2033016, !- Thickness {m}", - " 1.729577, !- Conductivity {W/m-K}", - " 2242.585, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - - " Material,", - " E2 - 1 / 2 IN SLAG OR STONE, !- Name", - " Rough, !- Roughness", - " 1.2710161E-02, !- Thickness {m}", - " 1.435549, !- Conductivity {W/m-K}", - " 881.0155, !- Density {kg/m3}", - " 1673.600, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.5500000, !- Solar Absorptance", - " 0.5500000; !- Visible Absorptance", - - " Material,", - " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Name", - " Rough, !- Roughness", - " 9.5402403E-03, !- Thickness {m}", - " 0.1902535, !- Conductivity {W/m-K}", - " 1121.292, !- Density {kg/m3}", - " 1673.600, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " B5 - 1 IN DENSE INSULATION, !- Name", - " VeryRough, !- Roughness", - " 2.5389841E-02, !- Thickness {m}", - " 4.3239430E-02, !- Conductivity {W/m-K}", - " 91.30524, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.5000000, !- Solar Absorptance", - " 0.5000000; !- Visible Absorptance", - - " Material,", - " C12 - 2 IN HW CONCRETE, !- Name", - " MediumRough, !- Roughness", - " 5.0901599E-02, !- Thickness {m}", - " 1.729577, !- Conductivity {W/m-K}", - " 2242.585, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - - " Material,", - " 1.375in-Solid-Core, !- Name", - " Smooth, !- Roughness", - " 3.4925E-02, !- Thickness {m}", - " 0.1525000, !- Conductivity {W/m-K}", - " 614.5000, !- Density {kg/m3}", - " 1630.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.9200000, !- Solar Absorptance", - " 0.9200000; !- Visible Absorptance", - - " Construction,", - " EXTWALL80, !- Name", - " A1 - 1 IN STUCCO, !- Outside Layer", - " C4 - 4 IN COMMON BRICK, !- Layer 2", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", - - " Construction,", - " PARTITION06, !- Name", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer", - " C6 - 8 IN CLAY TILE, !- Layer 2", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", - - " Construction,", - " FLOOR SLAB 8 IN, !- Name", - " C10 - 8 IN HW CONCRETE; !- Outside Layer", - - " Construction,", - " ROOF34, !- Name", - " E2 - 1 / 2 IN SLAG OR STONE, !- Outside Layer", - " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Layer 2", - " C12 - 2 IN HW CONCRETE; !- Layer 3", - - " Construction,", - " CEILING:ZONE, !- Name", - " B5 - 1 IN DENSE INSULATION, !- Outside Layer", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 2", - - " Construction,", - " CEILING:ATTIC, !- Name", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer", - " B5 - 1 IN DENSE INSULATION; !- Layer 2", - - " Construction,", - " DOOR-CON, !- Name", - " 1.375in-Solid-Core; !- Outside Layer", - - " Construction,", - " window - 90.1 - 2004 - nonres - fixed, !- Name", - " ASHRAE NonRes Fixed Assembly Window; !- Outside Layer", - - " WindowMaterial:SimpleGlazingSystem,", - " ASHRAE NonRes Fixed Assembly Window, !- Name", - " 3.23646, !- U - Factor{ W / m2 - K }", - " 0.39, !- Solar Heat Gain Coefficient", - " ; !- Visible Transmittance", - - " Zone,", - " West Zone, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " Zone,", - " EAST ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " Zone,", - " NORTH ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - " Zone,", - " ATTIC ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " CounterClockWise, !- Vertex Entry Direction", - " World; !- Coordinate System", - - " BuildingSurface:Detailed,", - " Zn001:Wall001, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " West Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall002, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " West Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall003, !- Name", - " Wall, !- Surface Type", - " PARTITION06, !- Construction Name", - " West Zone, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn003:Wall004, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall004, !- Name", - " Wall, !- Surface Type", - " PARTITION06, !- Construction Name", - " West Zone, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn002:Wall004, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Flr001, !- Name", - " Floor, !- Surface Type", - " FLOOR SLAB 8 IN, !- Construction Name", - " West Zone, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn001:Flr001, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,0, !- X,Y,Z ==> Vertex 1 {m}", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,0,0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Ceil001, !- Name", - " CEILING, !- Surface Type", - " CEILING:ZONE, !- Construction Name", - " West Zone, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn004:Flr001, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn002:Wall001, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " EAST ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 9.144000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 9.144000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn002:Wall002, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " EAST ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn002:Wall003, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " EAST ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 12.19200,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn002:Wall004, !- Name", - " Wall, !- Surface Type", - " PARTITION06, !- Construction Name", - " EAST ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn001:Wall004, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn002:Wall005, !- Name", - " Wall, !- Surface Type", - " PARTITION06, !- Construction Name", - " EAST ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn003:Wall005, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 9.144000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn002:Flr001, !- Name", - " Floor, !- Surface Type", - " FLOOR SLAB 8 IN, !- Construction Name", - " EAST ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn002:Flr001, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,0,0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn002:Ceil001, !- Name", - " CEILING, !- Surface Type", - " CEILING:ZONE, !- Construction Name", - " EAST ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn004:Flr002, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn003:Wall001, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " NORTH ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn003:Wall002, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " NORTH ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 9.144000,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 9.144000,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn003:Wall003, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " NORTH ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 9.144000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 9.144000,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", - " 9.144000,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn003:Wall004, !- Name", - " Wall, !- Surface Type", - " PARTITION06, !- Construction Name", - " NORTH ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn001:Wall003, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn003:Wall005, !- Name", - " Wall, !- Surface Type", - " PARTITION06, !- Construction Name", - " NORTH ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn002:Wall005, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 9.144000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 9.144000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn003:Flr001, !- Name", - " Floor, !- Surface Type", - " FLOOR SLAB 8 IN, !- Construction Name", - " NORTH ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn003:Flr001, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 1 {m}", - " 0,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", - " 9.144000,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", - " 9.144000,6.096000,0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn003:Ceil001, !- Name", - " CEILING, !- Surface Type", - " CEILING:ZONE, !- Construction Name", - " NORTH ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn004:Flr003, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 9.144000,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Wall001, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,3.962400, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,0,3.962400; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Wall002, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,0,3.962400, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,0,3.962400; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Wall003, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 12.19200,0,3.962400, !- X,Y,Z ==> Vertex 1 {m}", - " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,6.096000,3.962400; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Wall004, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 12.19200,6.096000,3.962400, !- X,Y,Z ==> Vertex 1 {m}", - " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 9.144000,6.096000,3.962400; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Wall005, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 9.144000,6.096000,3.962400, !- X,Y,Z ==> Vertex 1 {m}", - " 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 9.144000,12.19200,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 9.144000,12.19200,3.962400; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Wall006, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 9.144000,12.19200,3.962400, !- X,Y,Z ==> Vertex 1 {m}", - " 9.144000,12.19200,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 0,12.19200,3.962400; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Wall007, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,12.19200,3.962400, !- X,Y,Z ==> Vertex 1 {m}", - " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 0,6.096000,3.962400; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Wall008, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,6.096000,3.962400, !- X,Y,Z ==> Vertex 1 {m}", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 0,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 0,0,3.962400; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Roof001, !- Name", - " Roof, !- Surface Type", - " ROOF34, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,6.096000,3.962400, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,3.962400, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,0,3.962400, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,6.096000,3.962400; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Roof002, !- Name", - " Roof, !- Surface Type", - " ROOF34, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.962400, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,0,3.962400, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,0,3.962400, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,6.096000,3.962400; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Roof003, !- Name", - " Roof, !- Surface Type", - " ROOF34, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,12.19200,3.962400, !- X,Y,Z ==> Vertex 1 {m}", - " 0,6.096000,3.962400, !- X,Y,Z ==> Vertex 2 {m}", - " 9.144000,6.096000,3.962400, !- X,Y,Z ==> Vertex 3 {m}", - " 9.144000,12.19200,3.962400; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Flr001, !- Name", - " Floor, !- Surface Type", - " CEILING:ATTIC, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn001:Ceil001, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Flr002, !- Name", - " Floor, !- Surface Type", - " CEILING:ATTIC, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn002:Ceil001, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Flr003, !- Name", - " Floor, !- Surface Type", - " CEILING:ATTIC, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn003:Ceil001, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 9.144000,12.19200,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 9.144000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " FenestrationSurface:Detailed,", - " Zn001:Wall001:Win001, !- Name", - " Window, !- Surface Type", - " window - 90.1 - 2004 - nonres - fixed, !- Construction Name", - " Zn001:Wall001, !- Building Surface Name", - " , !- Outside Boundary Condition Object", - " 0.5000000, !- View Factor to Ground", - " , !- Shading Control Name", - " , !- Frame and Divider Name", - " 1.0, !- Multiplier", - " 4, !- Number of Vertices", - " 0.548000,0,2.5000, !- X,Y,Z ==> Vertex 1 {m}", - " 0.548000,0,0.5000, !- X,Y,Z ==> Vertex 2 {m}", - " 5.548000,0,0.5000, !- X,Y,Z ==> Vertex 3 {m}", - " 5.548000,0,2.5000; !- X,Y,Z ==> Vertex 4 {m}", - - " FenestrationSurface:Detailed,", - " Zn001:Wall003:Door001, !- Name", - " DOOR, !- Surface Type", - " DOOR-CON, !- Construction Name", - " Zn001:Wall003, !- Building Surface Name", - " Zn003:Wall004:Door001, !- Outside Boundary Condition Object", - " 0.5000000, !- View Factor to Ground", - " , !- Shading Control Name", - " , !- Frame and Divider Name", - " 1.0, !- Multiplier", - " 4, !- Number of Vertices", - " 3.500,6.096000,2.0, !- X,Y,Z ==> Vertex 1 {m}", - " 3.500,6.096000,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 2.500,6.096000,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 2.500,6.096000,2.0; !- X,Y,Z ==> Vertex 4 {m}", - - " FenestrationSurface:Detailed,", - " Zn003:Wall002:Win001, !- Name", - " Window, !- Surface Type", - " window - 90.1 - 2004 - nonres - fixed, !- Construction Name", - " Zn003:Wall002, !- Building Surface Name", - " , !- Outside Boundary Condition Object", - " 0.5000000, !- View Factor to Ground", - " , !- Shading Control Name", - " , !- Frame and Divider Name", - " 1.0, !- Multiplier", - " 4, !- Number of Vertices", - " 5.548000,12.19200,2.5000, !- X,Y,Z ==> Vertex 1 {m}", - " 5.548000,12.19200,0.5000, !- X,Y,Z ==> Vertex 2 {m}", - " 0.548000,12.19200,0.5000, !- X,Y,Z ==> Vertex 3 {m}", - " 0.548000,12.19200,2.5000; !- X,Y,Z ==> Vertex 4 {m}", - - " FenestrationSurface:Detailed,", - " Zn003:Wall004:Door001, !- Name", - " DOOR, !- Surface Type", - " DOOR-CON, !- Construction Name", - " Zn003:Wall004, !- Building Surface Name", - " Zn001:Wall003:Door001, !- Outside Boundary Condition Object", - " 0.5000000, !- View Factor to Ground", - " , !- Shading Control Name", - " , !- Frame and Divider Name", - " 1.0, !- Multiplier", - " 4, !- Number of Vertices", - " 2.500,6.096000,2.0, !- X,Y,Z ==> Vertex 1 {m}", - " 2.500,6.096000,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 3.500,6.096000,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 3.500,6.096000,2.0; !- X,Y,Z ==> Vertex 4 {m}", - - " AirflowNetwork:SimulationControl,", - " AriflowNetwork_All, !- Name", - " MultizoneWithDistribution, !- AirflowNetwork Control", - " INPUT, !- Wind Pressure Coefficient Type", - " ExternalNode, !- Height Selection for Local Wind Pressure Calculation", - " LOWRISE, !- Building Type", - " 500, !- Maximum Number of Iterations {dimensionless}", - " ZeroNodePressures, !- Initialization Type", - " 1.0E-05, !- Relative Airflow Convergence Tolerance {dimensionless}", - " 1.0E-06, !- Absolute Airflow Convergence Tolerance {kg/s}", - " -0.5, !- Convergence Acceleration Limit {dimensionless}", - " 0.0, !- Azimuth Angle of Long Axis of Building {deg}", - " 1.0; !- Ratio of Building Width Along Short Axis to Width Along Long Axis", - - " AirflowNetwork:MultiZone:Zone,", - " West Zone, !- Zone Name", - " Temperature, !- Ventilation Control Mode", - " WindowVentSched, !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 0.3, !- Minimum Venting Open Factor {dimensionless}", - " 5.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", - " 10.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", - " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", - " 300000.0, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", - " VentingSched; !- Venting Availability Schedule Name", - - " AirflowNetwork:MultiZone:Zone,", - " EAST ZONE, !- Zone Name", - " NoVent, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 1.0, !- Minimum Venting Open Factor {dimensionless}", - " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", - " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", - " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", - " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", - - " AirflowNetwork:MultiZone:Zone,", - " NORTH ZONE, !- Zone Name", - " Temperature, !- Ventilation Control Mode", - " WindowVentSched, !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 1.0, !- Minimum Venting Open Factor {dimensionless}", - " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", - " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", - " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", - " 300000.0, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", - " VentingSched; !- Venting Availability Schedule Name", - - " AirflowNetwork:MultiZone:Zone,", - " ATTIC ZONE, !- Zone Name", - " NoVent, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 1.0, !- Minimum Venting Open Factor {dimensionless}", - " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", - " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", - " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", - " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", - - " AirflowNetwork:MultiZone:Surface,", - " Zn001:Wall001, !- Surface Name", - " ELA-1, !- Leakage Component Name", - " SFacade, !- External Node Name", - " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - - " AirflowNetwork:MultiZone:Surface,", - " Zn001:Wall001:Win001, !- Surface Name", - " CRcri, !- Leakage Component Name", - " SFacade, !- External Node Name", - " 0.5; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - - " AirflowNetwork:MultiZone:Surface,", - " Zn001:Wall002, !- Surface Name", - " CR-1, !- Leakage Component Name", - " WFacade, !- External Node Name", - " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - - " AirflowNetwork:MultiZone:Surface,", - " Zn001:Wall003, !- Surface Name", - " CRcri, !- Leakage Component Name", - " , !- External Node Name", - " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - - " AirflowNetwork:MultiZone:Surface,", - " Zn001:Wall003:Door001, !- Surface Name", - " CRcri, !- Leakage Component Name", - " , !- External Node Name", - " 0.5; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - - " AirflowNetwork:MultiZone:Surface,", - " Zn001:Wall004, !- Surface Name", - " CRcri, !- Leakage Component Name", - " , !- External Node Name", - " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - - " AirflowNetwork:MultiZone:Surface,", - " Zn001:Ceil001, !- Surface Name", - " CRcri, !- Leakage Component Name", - " , !- External Node Name", - " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - - " AirflowNetwork:MultiZone:Surface,", - " Zn002:Wall002, !- Surface Name", - " CR-1, !- Leakage Component Name", - " SFacade, !- External Node Name", - " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - - " AirflowNetwork:MultiZone:Surface,", - " Zn002:Wall003, !- Surface Name", - " CR-1, !- Leakage Component Name", - " EFacade, !- External Node Name", - " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - - " AirflowNetwork:MultiZone:Surface,", - " Zn002:Wall005, !- Surface Name", - " CRcri, !- Leakage Component Name", - " , !- External Node Name", - " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - - " AirflowNetwork:MultiZone:Surface,", - " Zn002:Ceil001, !- Surface Name", - " CRcri, !- Leakage Component Name", - " , !- External Node Name", - " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - - " AirflowNetwork:MultiZone:Surface,", - " Zn003:Wall001, !- Surface Name", - " CR-1, !- Leakage Component Name", - " WFacade, !- External Node Name", - " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - - " AirflowNetwork:MultiZone:Surface,", - " Zn003:Wall002, !- Surface Name", - " CR-1, !- Leakage Component Name", - " NFacade, !- External Node Name", - " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - - " AirflowNetwork:MultiZone:Surface,", - " Zn003:Wall002:Win001, !- Surface Name", - " CRcri, !- Leakage Component Name", - " NFacade, !- External Node Name", - " 0.5; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - - " AirflowNetwork:MultiZone:Surface,", - " Zn003:Wall003, !- Surface Name", - " Zone3 Exhaust Fan, !- Leakage Component Name", - " EFacade, !- External Node Name", - " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - - " AirflowNetwork:MultiZone:Surface,", - " Zn003:Ceil001, !- Surface Name", - " CRcri, !- Leakage Component Name", - " , !- External Node Name", - " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - - " AirflowNetwork:MultiZone:Surface,", - " Zn004:Roof001, !- Surface Name", - " CR-1, !- Leakage Component Name", - " Horizontal, !- External Node Name", - " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - - " AirflowNetwork:MultiZone:Surface,", - " Zn004:Roof002, !- Surface Name", - " CR-1, !- Leakage Component Name", - " Horizontal, !- External Node Name", - " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - - " AirflowNetwork:MultiZone:Surface,", - " Zn004:Roof003, !- Surface Name", - " CR-1, !- Leakage Component Name", - " Horizontal, !- External Node Name", - " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - - " AirflowNetwork:MultiZone:ReferenceCrackConditions,", - " ReferenceCrackConditions,!- Name", - " 20.0, !- Reference Temperature {C}", - " 101325, !- Reference Barometric Pressure {Pa}", - " 0.0; !- Reference Humidity Ratio {kgWater/kgDryAir}", - - " AirflowNetwork:MultiZone:Surface:Crack,", - " CR-1, !- Name", - " 0.01, !- Air Mass Flow Coefficient at Reference Conditions {kg/s}", - " 0.667; !- Air Mass Flow Exponent {dimensionless}", - - " AirflowNetwork:MultiZone:Surface:Crack,", - " CRcri, !- Name", - " 0.05, !- Air Mass Flow Coefficient at Reference Conditions {kg/s}", - " 0.667; !- Air Mass Flow Exponent {dimensionless}", - - " AirflowNetwork:MultiZone:Component:ZoneExhaustFan,", - " Zone3 Exhaust Fan, !- Name", - " 0.01, !- Air Mass Flow Coefficient When the Zone Exhaust Fan is Off at Reference Conditions {kg/s}", - " 0.667; !- Air Mass Flow Exponent When the Zone Exhaust Fan is Off {dimensionless}", - - " AirflowNetwork:MultiZone:Surface:EffectiveLeakageArea,", - " ELA-1, !- Name", - " 0.007, !- Effective Leakage Area {m2}", - " 1.0, !- Discharge Coefficient {dimensionless}", - " 4.0, !- Reference Pressure Difference {Pa}", - " 0.667; !- Air Mass Flow Exponent {dimensionless}", - - " AirflowNetwork:MultiZone:ExternalNode,", - " NFacade, !- Name", - " 1.524, !- External Node Height {m}", - " NFacade_WPCValue; !- Wind Pressure Coefficient Values Object Name", - - " AirflowNetwork:MultiZone:ExternalNode,", - " EFacade, !- Name", - " 1.524, !- External Node Height {m}", - " EFacade_WPCValue; !- Wind Pressure Coefficient Values Object Name", - - " AirflowNetwork:MultiZone:ExternalNode,", - " SFacade, !- Name", - " 1.524, !- External Node Height {m}", - " SFacade_WPCValue; !- Wind Pressure Coefficient Values Object Name", - - " AirflowNetwork:MultiZone:ExternalNode,", - " WFacade, !- Name", - " 1.524, !- External Node Height {m}", - " WFacade_WPCValue; !- Wind Pressure Coefficient Values Object Name", - - " AirflowNetwork:MultiZone:ExternalNode,", - " Horizontal, !- Name", - " 3.028, !- External Node Height {m}", - " Horizontal_WPCValue; !- Wind Pressure Coefficient Values Object Name", - - " AirflowNetwork:MultiZone:WindPressureCoefficientArray,", - " Every 30 Degrees, !- Name", - " 0, !- Wind Direction 1 {deg}", - " 30, !- Wind Direction 2 {deg}", - " 60, !- Wind Direction 3 {deg}", - " 90, !- Wind Direction 4 {deg}", - " 120, !- Wind Direction 5 {deg}", - " 150, !- Wind Direction 6 {deg}", - " 180, !- Wind Direction 7 {deg}", - " 210, !- Wind Direction 8 {deg}", - " 240, !- Wind Direction 9 {deg}", - " 270, !- Wind Direction 10 {deg}", - " 300, !- Wind Direction 11 {deg}", - " 330; !- Wind Direction 12 {deg}", - - " AirflowNetwork:MultiZone:WindPressureCoefficientValues,", - " NFacade_WPCValue, !- Name", - " Every 30 Degrees, !- AirflowNetwork:MultiZone:WindPressureCoefficientArray Name", - " 0.60, !- Wind Pressure Coefficient Value 1 {dimensionless}", - " 0.48, !- Wind Pressure Coefficient Value 2 {dimensionless}", - " 0.04, !- Wind Pressure Coefficient Value 3 {dimensionless}", - " -0.56, !- Wind Pressure Coefficient Value 4 {dimensionless}", - " -0.56, !- Wind Pressure Coefficient Value 5 {dimensionless}", - " -0.42, !- Wind Pressure Coefficient Value 6 {dimensionless}", - " -0.37, !- Wind Pressure Coefficient Value 7 {dimensionless}", - " -0.42, !- Wind Pressure Coefficient Value 8 {dimensionless}", - " -0.56, !- Wind Pressure Coefficient Value 9 {dimensionless}", - " -0.56, !- Wind Pressure Coefficient Value 10 {dimensionless}", - " 0.04, !- Wind Pressure Coefficient Value 11 {dimensionless}", - " 0.48; !- Wind Pressure Coefficient Value 12 {dimensionless}", - - " AirflowNetwork:MultiZone:WindPressureCoefficientValues,", - " EFacade_WPCValue, !- Name", - " Every 30 Degrees, !- AirflowNetwork:MultiZone:WindPressureCoefficientArray Name", - " -0.56, !- Wind Pressure Coefficient Value 1 {dimensionless}", - " 0.04, !- Wind Pressure Coefficient Value 2 {dimensionless}", - " 0.48, !- Wind Pressure Coefficient Value 3 {dimensionless}", - " 0.60, !- Wind Pressure Coefficient Value 4 {dimensionless}", - " 0.48, !- Wind Pressure Coefficient Value 5 {dimensionless}", - " 0.04, !- Wind Pressure Coefficient Value 6 {dimensionless}", - " -0.56, !- Wind Pressure Coefficient Value 7 {dimensionless}", - " -0.56, !- Wind Pressure Coefficient Value 8 {dimensionless}", - " -0.42, !- Wind Pressure Coefficient Value 9 {dimensionless}", - " -0.37, !- Wind Pressure Coefficient Value 10 {dimensionless}", - " -0.42, !- Wind Pressure Coefficient Value 11 {dimensionless}", - " -0.56; !- Wind Pressure Coefficient Value 12 {dimensionless}", - - " AirflowNetwork:MultiZone:WindPressureCoefficientValues,", - " SFacade_WPCValue, !- Name", - " Every 30 Degrees, !- AirflowNetwork:MultiZone:WindPressureCoefficientArray Name", - " -0.37, !- Wind Pressure Coefficient Value 1 {dimensionless}", - " -0.42, !- Wind Pressure Coefficient Value 2 {dimensionless}", - " -0.56, !- Wind Pressure Coefficient Value 3 {dimensionless}", - " -0.56, !- Wind Pressure Coefficient Value 4 {dimensionless}", - " 0.04, !- Wind Pressure Coefficient Value 5 {dimensionless}", - " 0.48, !- Wind Pressure Coefficient Value 6 {dimensionless}", - " 0.60, !- Wind Pressure Coefficient Value 7 {dimensionless}", - " 0.48, !- Wind Pressure Coefficient Value 8 {dimensionless}", - " 0.04, !- Wind Pressure Coefficient Value 9 {dimensionless}", - " -0.56, !- Wind Pressure Coefficient Value 10 {dimensionless}", - " -0.56, !- Wind Pressure Coefficient Value 11 {dimensionless}", - " -0.42; !- Wind Pressure Coefficient Value 12 {dimensionless}", - - " AirflowNetwork:MultiZone:WindPressureCoefficientValues,", - " WFacade_WPCValue, !- Name", - " Every 30 Degrees, !- AirflowNetwork:MultiZone:WindPressureCoefficientArray Name", - " -0.56, !- Wind Pressure Coefficient Value 1 {dimensionless}", - " -0.56, !- Wind Pressure Coefficient Value 2 {dimensionless}", - " -0.42, !- Wind Pressure Coefficient Value 3 {dimensionless}", - " -0.37, !- Wind Pressure Coefficient Value 4 {dimensionless}", - " -0.42, !- Wind Pressure Coefficient Value 5 {dimensionless}", - " -0.56, !- Wind Pressure Coefficient Value 6 {dimensionless}", - " -0.56, !- Wind Pressure Coefficient Value 7 {dimensionless}", - " 0.04, !- Wind Pressure Coefficient Value 8 {dimensionless}", - " 0.48, !- Wind Pressure Coefficient Value 9 {dimensionless}", - " 0.60, !- Wind Pressure Coefficient Value 10 {dimensionless}", - " 0.48, !- Wind Pressure Coefficient Value 11 {dimensionless}", - " 0.04; !- Wind Pressure Coefficient Value 12 {dimensionless}", - - " AirflowNetwork:MultiZone:WindPressureCoefficientValues,", - " Horizontal_WPCValue, !- Name", - " Every 30 Degrees, !- AirflowNetwork:MultiZone:WindPressureCoefficientArray Name", - " 0.00, !- Wind Pressure Coefficient Value 1 {dimensionless}", - " 0.00, !- Wind Pressure Coefficient Value 2 {dimensionless}", - " 0.00, !- Wind Pressure Coefficient Value 3 {dimensionless}", - " 0.00, !- Wind Pressure Coefficient Value 4 {dimensionless}", - " 0.00, !- Wind Pressure Coefficient Value 5 {dimensionless}", - " 0.00, !- Wind Pressure Coefficient Value 6 {dimensionless}", - " 0.00, !- Wind Pressure Coefficient Value 7 {dimensionless}", - " 0.00, !- Wind Pressure Coefficient Value 8 {dimensionless}", - " 0.00, !- Wind Pressure Coefficient Value 9 {dimensionless}", - " 0.00, !- Wind Pressure Coefficient Value 10 {dimensionless}", - " 0.00, !- Wind Pressure Coefficient Value 11 {dimensionless}", - " 0.00; !- Wind Pressure Coefficient Value 12 {dimensionless}", - - " AirflowNetwork:Distribution:Node,", - " EquipmentInletNode, !- Name", - " Zone Equipment Inlet Node, !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " EquipmentOutletNode, !- Name", - " , !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " SupplyMainNode, !- Name", - " , !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " MainSplitterNode, !- Name", - " , !- Component Name or Node Name", - " AirLoopHVAC:ZoneSplitter,!- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " Zone1SupplyNode, !- Name", - " , !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " ReheatInlet1Node, !- Name", - " Zone 1 Reheat Air Inlet Node, !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " Zone1SupplyRegisterNode, !- Name", - " Zone 1 Reheat Air Outlet Node, !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " Zone1OutletNode, !- Name", - " Zone 1 Outlet Node, !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " Zone2SupplyNode, !- Name", - " , !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " ReheatInlet2Node, !- Name", - " Zone 2 Reheat Air Inlet Node, !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " Zone2SupplyRegisterNode, !- Name", - " Zone 2 Reheat Air Outlet Node, !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " Zone2OutletNode, !- Name", - " Zone 2 Outlet Node, !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " Zone3SupplyNode, !- Name", - " , !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " Zone3SupplyRegisterNode, !- Name", - " Zone 3 Inlet Node, !- Component Name or Node Name", - " , !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " Zone3OutletNode, !- Name", - " Zone 3 Outlet Node, !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " Zone1ReturnNode, !- Name", - " , !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " Zone2ReturnNode, !- Name", - " , !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " Zone3ReturnNode, !- Name", - " , !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " MainMixerNode, !- Name", - " , !- Component Name or Node Name", - " AirLoopHVAC:ZoneMixer, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " MainReturnNode, !- Name", - " Return Air Mixer Outlet, !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " MainInletNode, !- Name", - " Air Loop Inlet Node, !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " OA System Node, !- Name", - " , !- Component Name or Node Name", - " AirLoopHVAC:OutdoorAirSystem, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " OA Inlet Node, !- Name", - " Outside Air Inlet Node, !- Component Name or Node Name", - " OAMixerOutdoorAirStreamNode, !- Component Object Type or Node Type", - " 1.5; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " FanInletNode, !- Name", - " Mixed Air Node, !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " FanOutletNode, !- Name", - " Cooling Coil Air Inlet Node, !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " HeatingInletNode, !- Name", - " Heating Coil Air Inlet Node, !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " HeatingOutletNode, !- Name", - " Air Loop Outlet Node, !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Component:Leak,", - " MainSupplyLeak, !- Name", - " 0.0025, !- Air Mass Flow Coefficient {kg/s}", - " 0.65; !- Air Mass Flow Exponent {dimensionless}", - - " AirflowNetwork:Distribution:Component:ConstantPressureDrop,", - " SupplyCPDComp, !- Name", - " 1.0; !- Pressure Difference Across the Component {Pa}", - - " AirflowNetwork:Distribution:Component:LeakageRatio,", - " ZoneSupplyELR1, !- Name", - " 0.01, !- Effective Leakage Ratio {dimensionless}", - " 1.9, !- Maximum Flow Rate {m3/s}", - " 59.0, !- Reference Pressure Difference {Pa}", - " 0.65; !- Air Mass Flow Exponent {dimensionless}", - - " AirflowNetwork:Distribution:Component:LeakageRatio,", - " ZoneSupplyELR2, !- Name", - " 0.01, !- Effective Leakage Ratio {dimensionless}", - " 1.9, !- Maximum Flow Rate {m3/s}", - " 59.0, !- Reference Pressure Difference {Pa}", - " 0.65; !- Air Mass Flow Exponent {dimensionless}", - - " AirflowNetwork:Distribution:Component:LeakageRatio,", - " ZoneSupplyELR3, !- Name", - " 0.01, !- Effective Leakage Ratio {dimensionless}", - " 1.9, !- Maximum Flow Rate {m3/s}", - " 59.0, !- Reference Pressure Difference {Pa}", - " 0.65; !- Air Mass Flow Exponent {dimensionless}", - - " AirflowNetwork:Distribution:Component:LeakageRatio,", - " ReturnLeakELR1, !- Name", - " 0.03, !- Effective Leakage Ratio {dimensionless}", - " 1.9, !- Maximum Flow Rate {m3/s}", - " 41.0, !- Reference Pressure Difference {Pa}", - " 0.65; !- Air Mass Flow Exponent {dimensionless}", - - " AirflowNetwork:Distribution:Component:LeakageRatio,", - " ReturnLeakELR2, !- Name", - " 0.03, !- Effective Leakage Ratio {dimensionless}", - " 1.9, !- Maximum Flow Rate {m3/s}", - " 40.0, !- Reference Pressure Difference {Pa}", - " 0.65; !- Air Mass Flow Exponent {dimensionless}", - - " AirflowNetwork:Distribution:Component:LeakageRatio,", - " ReturnLeakELR3, !- Name", - " 0.04, !- Effective Leakage Ratio {dimensionless}", - " 1.9, !- Maximum Flow Rate {m3/s}", - " 43.0, !- Reference Pressure Difference {Pa}", - " 0.65; !- Air Mass Flow Exponent {dimensionless}", - - " AirflowNetwork:Distribution:Component:Duct,", - " MainTruck1, !- Name", - " 3.0, !- Duct Length {m}", - " 0.6, !- Hydraulic Diameter {m}", - " 0.2827, !- Cross Section Area {m2}", - " 0.0009, !- Surface Roughness {m}", - " 0.01, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", - " 0.772, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", - " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", - - " AirflowNetwork:Distribution:Component:Duct,", - " MainTruck2, !- Name", - " 4.0, !- Duct Length {m}", - " 0.6, !- Hydraulic Diameter {m}", - " 0.2827, !- Cross Section Area {m2}", - " 0.0009, !- Surface Roughness {m}", - " 0.01, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", - " 0.772, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", - " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", - - " AirflowNetwork:Distribution:Component:Duct,", - " Zone1Supply, !- Name", - " 5.0, !- Duct Length {m}", - " 0.4, !- Hydraulic Diameter {m}", - " 0.1256, !- Cross Section Area {m2}", - " 0.0009, !- Surface Roughness {m}", - " 1.00, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", - " 0.772, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", - " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", - - " AirflowNetwork:Distribution:Component:Duct,", - " Zone2Supply, !- Name", - " 4.0, !- Duct Length {m}", - " 0.39, !- Hydraulic Diameter {m}", - " 0.1195, !- Cross Section Area {m2}", - " 0.0009, !- Surface Roughness {m}", - " 2.5, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", - " 0.772, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", - " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", - - " AirflowNetwork:Distribution:Component:Duct,", - " Zone3Supply, !- Name", - " 4.0, !- Duct Length {m}", - " 0.44, !- Hydraulic Diameter {m}", - " 0.1521, !- Cross Section Area {m2}", - " 0.0009, !- Surface Roughness {m}", - " 1.0, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", - " 0.772, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", - " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", - - " AirflowNetwork:Distribution:Component:Duct,", - " Zone1Return, !- Name", - " 4.0, !- Duct Length {m}", - " 0.50, !- Hydraulic Diameter {m}", - " 0.1963, !- Cross Section Area {m2}", - " 0.0009, !- Surface Roughness {m}", - " 1.0, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", - " 0.772, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", - " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", - - " AirflowNetwork:Distribution:Component:Duct,", - " Zone2Return, !- Name", - " 4.0, !- Duct Length {m}", - " 0.48, !- Hydraulic Diameter {m}", - " 0.1809, !- Cross Section Area {m2}", - " 0.0009, !- Surface Roughness {m}", - " 1.0, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", - " 0.772, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", - " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", - - " AirflowNetwork:Distribution:Component:Duct,", - " Zone3Return, !- Name", - " 4.0, !- Duct Length {m}", - " 0.55, !- Hydraulic Diameter {m}", - " 0.2376, !- Cross Section Area {m2}", - " 0.0009, !- Surface Roughness {m}", - " 1.0, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", - " 0.772, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", - " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", - - " AirflowNetwork:Distribution:Component:Duct,", - " ZoneConnectionDuct, !- Name", - " 0.1, !- Duct Length {m}", - " 1.0, !- Hydraulic Diameter {m}", - " 0.7854, !- Cross Section Area {m2}", - " 0.0001, !- Surface Roughness {m}", - " 30.00, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", - " 0.001, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", - " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", - - " AirflowNetwork:Distribution:Component:Duct,", - " MixerConnectionDuct, !- Name", - " 0.1, !- Duct Length {m}", - " 1.0, !- Hydraulic Diameter {m}", - " 0.7854, !- Cross Section Area {m2}", - " 0.0001, !- Surface Roughness {m}", - " 1.00, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", - " 0.001, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", - " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", - - " AirflowNetwork:Distribution:Component:Duct,", - " AirLoopReturn, !- Name", - " 0.1, !- Duct Length {m}", - " 1.0, !- Hydraulic Diameter {m}", - " 0.7854, !- Cross Section Area {m2}", - " 0.0001, !- Surface Roughness {m}", - " 1.00, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", - " 0.001, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", - " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", - - " AirflowNetwork:Distribution:Component:Duct,", - " AirLoopSupply, !- Name", - " 0.1, !- Duct Length {m}", - " 1.0, !- Hydraulic Diameter {m}", - " 0.7854, !- Cross Section Area {m2}", - " 0.0001, !- Surface Roughness {m}", - " 1.00, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", - " 0.001, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", - " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", - - " AirflowNetwork:Distribution:Component:Fan,", - " Supply Fan 1, !- Fan Name", - " Fan:ConstantVolume; !- Supply Fan Object Type", - - " AirflowNetwork:Distribution:Component:Coil,", - " ACDXCoil 1, !- Coil Name", - " Coil:Cooling:DX:SingleSpeed, !- Coil Object Type", - " 0.1, !- Air Path Length {m}", - " 1.00; !- Air Path Hydraulic Diameter {m}", - - " AirflowNetwork:Distribution:Component:Coil,", - " Main Heating Coil 1, !- Coil Name", - " Coil:Heating:Fuel, !- Coil Object Type", - " 0.1, !- Air Path Length {m}", - " 1.00; !- Air Path Hydraulic Diameter {m}", - - " AirflowNetwork:Distribution:Component:TerminalUnit,", - " Reheat Zone 1, !- Terminal Unit Name", - " AirTerminal:SingleDuct:ConstantVolume:Reheat, !- Terminal Unit Object Type", - " 0.1, !- Air Path Length {m}", - " 0.44; !- Air Path Hydraulic Diameter {m}", - - " AirflowNetwork:Distribution:Component:TerminalUnit,", - " Reheat Zone 2, !- Terminal Unit Name", - " AirTerminal:SingleDuct:ConstantVolume:Reheat, !- Terminal Unit Object Type", - " 0.1, !- Air Path Length {m}", - " 0.44; !- Air Path Hydraulic Diameter {m}", - - " AirflowNetwork:Distribution:Component:Leak,", - " OAFlow, !- Name", - " 0.025, !- Air Mass Flow Coefficient {kg/s}", - " 0.65; !- Air Mass Flow Exponent {dimensionless}", - - " AirflowNetwork:Distribution:Component:Leak,", - " OAFlow1, !- Name", - " 0.025, !- Air Mass Flow Coefficient {kg/s}", - " 0.65; !- Air Mass Flow Exponent {dimensionless}", - - " AirflowNetwork:Distribution:Linkage,", - " Main Link 1, !- Name", - " EquipmentInletNode, !- Node 1 Name", - " EquipmentOutletNode, !- Node 2 Name", - " MainTruck1, !- Component Name", - " Attic Zone; !- Thermal Zone Name", - - " AirflowNetwork:Distribution:Linkage,", - " Main CDP Link, !- Name", - " EquipmentOutletNode, !- Node 1 Name", - " SupplyMainNode, !- Node 2 Name", - " SupplyCPDComp; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " Main Link 2, !- Name", - " SupplyMainNode, !- Node 1 Name", - " MainSplitterNode, !- Node 2 Name", - " MainTruck2, !- Component Name", - " Attic Zone; !- Thermal Zone Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone1Supply1Link, !- Name", - " MainSplitterNode, !- Node 1 Name", - " Zone1SupplyNode, !- Node 2 Name", - " Zone1Supply, !- Component Name", - " Attic Zone; !- Thermal Zone Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone1Supply2Link, !- Name", - " Zone1SupplyNode, !- Node 1 Name", - " ReheatInlet1Node, !- Node 2 Name", - " Zone1Supply, !- Component Name", - " Attic Zone; !- Thermal Zone Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone1ReheatCoilLink, !- Name", - " ReheatInlet1Node, !- Node 1 Name", - " Zone1SupplyRegisterNode, !- Node 2 Name", - " Reheat Zone 1; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone1SupplyConnectionLink, !- Name", - " Zone1SupplyRegisterNode, !- Node 1 Name", - " West Zone, !- Node 2 Name", - " ZoneConnectionDuct; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone1ReturnConnectionLink, !- Name", - " West Zone, !- Node 1 Name", - " Zone1OutletNode, !- Node 2 Name", - " ZoneConnectionDuct; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone2Supply1Link, !- Name", - " MainSplitterNode, !- Node 1 Name", - " Zone2SupplyNode, !- Node 2 Name", - " Zone2Supply, !- Component Name", - " Attic Zone; !- Thermal Zone Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone2Supply2Link, !- Name", - " Zone2SupplyNode, !- Node 1 Name", - " ReheatInlet2Node, !- Node 2 Name", - " Zone2Supply, !- Component Name", - " Attic Zone; !- Thermal Zone Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone2ReheatCoilLink, !- Name", - " ReheatInlet2Node, !- Node 1 Name", - " Zone2SupplyRegisterNode, !- Node 2 Name", - " Reheat Zone 2; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone2SupplyConnectionLink, !- Name", - " Zone2SupplyRegisterNode, !- Node 1 Name", - " EAST ZONE, !- Node 2 Name", - " ZoneConnectionDuct; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone2returnConnectionLink, !- Name", - " EAST ZONE, !- Node 1 Name", - " Zone2OutletNode, !- Node 2 Name", - " ZoneConnectionDuct; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone3Supply1Link, !- Name", - " MainSplitterNode, !- Node 1 Name", - " Zone3SupplyNode, !- Node 2 Name", - " Zone3Supply, !- Component Name", - " Attic Zone; !- Thermal Zone Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone3SupplyLink, !- Name", - " Zone3SupplyNode, !- Node 1 Name", - " Zone3SupplyRegisterNode, !- Node 2 Name", - " Zone3Supply, !- Component Name", - " Attic Zone; !- Thermal Zone Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone3SupplyConnectionLink, !- Name", - " Zone3SupplyRegisterNode, !- Node 1 Name", - " NORTH ZONE, !- Node 2 Name", - " ZoneConnectionDuct; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone3ReturnConnectionLink, !- Name", - " NORTH ZONE, !- Node 1 Name", - " Zone3OutletNode, !- Node 2 Name", - " ZoneConnectionDuct; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone1Return1Link, !- Name", - " Zone1OutletNode, !- Node 1 Name", - " Zone1ReturnNode, !- Node 2 Name", - " Zone1Return, !- Component Name", - " Attic Zone; !- Thermal Zone Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone1Return2Link, !- Name", - " Zone1ReturnNode, !- Node 1 Name", - " MainMixerNode, !- Node 2 Name", - " Zone1Return, !- Component Name", - " Attic Zone; !- Thermal Zone Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone2Return1Link, !- Name", - " Zone2OutletNode, !- Node 1 Name", - " Zone2ReturnNode, !- Node 2 Name", - " Zone2Return, !- Component Name", - " Attic Zone; !- Thermal Zone Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone2Return2Link, !- Name", - " Zone2ReturnNode, !- Node 1 Name", - " MainMixerNode, !- Node 2 Name", - " Zone2Return, !- Component Name", - " Attic Zone; !- Thermal Zone Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone3Return1Link, !- Name", - " Zone3OutletNode, !- Node 1 Name", - " Zone3ReturnNode, !- Node 2 Name", - " Zone3Return, !- Component Name", - " Attic Zone; !- Thermal Zone Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone3Return2Link, !- Name", - " Zone3ReturnNode, !- Node 1 Name", - " MainMixerNode, !- Node 2 Name", - " Zone3Return, !- Component Name", - " Attic Zone; !- Thermal Zone Name", - - " AirflowNetwork:Distribution:Linkage,", - " ReturnMixerLink, !- Name", - " MainMixerNode, !- Node 1 Name", - " MainReturnNode, !- Node 2 Name", - " MixerConnectionDuct, !- Component Name", - " Attic Zone; !- Thermal Zone Name", - - " AirflowNetwork:Distribution:Linkage,", - " AirLoopReturnLink, !- Name", - " MainReturnNode, !- Node 1 Name", - " MainInletNode, !- Node 2 Name", - " AirLoopReturn; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " OASystemInletLink, !- Name", - " MainInletNode, !- Node 1 Name", - " OA System Node, !- Node 2 Name", - " ZoneConnectionDuct; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " OASystemFanLink, !- Name", - " OA Inlet Node, !- Node 1 Name", - " OA System Node, !- Node 2 Name", - " OA Fan; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " OASystemReliefLink, !- Name", - " OA System Node, !- Node 1 Name", - " OA Inlet Node, !- Node 2 Name", - " Relief Fan; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " OAMixerOutletLink, !- Name", - " OA System Node, !- Node 1 Name", - " FanInletNode, !- Node 2 Name", - " ZoneConnectionDuct; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " SupplyFanLink, !- Name", - " FanInletNode, !- Node 1 Name", - " FanOutletNode, !- Node 2 Name", - " Supply Fan 1; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " CoolingCoilLink, !- Name", - " FanOutletNode, !- Node 1 Name", - " HeatingInletNode, !- Node 2 Name", - " ACDXCoil 1; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " HeatingCoilLink, !- Name", - " HeatingInletNode, !- Node 1 Name", - " HeatingOutletNode, !- Node 2 Name", - " Main Heating Coil 1; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " EquipmentAirLoopLink, !- Name", - " HeatingOutletNode, !- Node 1 Name", - " EquipmentInletNode, !- Node 2 Name", - " AirLoopSupply; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone1ReturnLeakLink, !- Name", - " Zone1ReturnNode, !- Node 1 Name", - " OA Inlet Node, !- Node 2 Name", - " ReturnLeakELR1; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " MainSupplyLeakLink, !- Name", - " SupplyMainNode, !- Node 1 Name", - " ATTIC ZONE, !- Node 2 Name", - " MainSupplyLeak; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone1SupplyLeakLink, !- Name", - " Zone1SupplyNode, !- Node 1 Name", - " ATTIC ZONE, !- Node 2 Name", - " ZoneSupplyELR1; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone2ReturnLeakLink, !- Name", - " Zone2ReturnNode, !- Node 1 Name", - " OA Inlet Node, !- Node 2 Name", - " ReturnLeakELR2; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone3ReturnLeakLink, !- Name", - " Zone3ReturnNode, !- Node 1 Name", - " OA Inlet Node, !- Node 2 Name", - " ReturnLeakELR3; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone2SupplyLeakLink, !- Name", - " Zone2SupplyNode, !- Node 1 Name", - " ATTIC ZONE, !- Node 2 Name", - " ZoneSupplyELR2; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " Zone3SupplyLeakLink, !- Name", - " Zone3SupplyNode, !- Node 1 Name", - " ATTIC ZONE, !- Node 2 Name", - " ZoneSupplyELR3; !- Component Name", - - " AirflowNetwork:ZoneControl:PressureController,", - " PressureController, !- Name", - " NORTH ZONE, !- Control Zone Name", - " AirflowNetwork:Distribution:Component:ReliefAirFlow, !- Control Object Type", - " Relief Fan, !- Control Object Name", - " , !- Pressure Control Availability Schedule Name", - " Pressure Setpoint Schedule; !- Pressure Setpoint Schedule Name", - - " Schedule:Compact,", - " Pressure Setpoint Schedule, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 3/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,0.5, !- Field 3", - " Through: 9/30, !- Field 4", - " For: AllDays, !- Field 5", - " Until: 24:00,3.5, !- Field 6", - " Through: 12/31, !- Field 7", - " For: AllDays, !- Field 8", - " Until: 24:00,0.5; !- Field 9", - - " AirflowNetwork:Distribution:Component:OutdoorAirFlow,", - " OA Fan, !- Name", - " 0.001, !- Air Mass Flow Coefficient When the Zone Exhaust Fan is Off at Reference Conditions {kg/s}", - " 0.667; !- Air Mass Flow Exponent When the Zone Exhaust Fan is Off {dimensionless}", - - " AirflowNetwork:Distribution:Component:ReliefAirFlow,", - " Relief Fan, !- Name", - " 0.001, !- Air Mass Flow Coefficient When the Zone Exhaust Fan is Off at Reference Conditions {kg/s}", - " 0.667; !- Air Mass Flow Exponent When the Zone Exhaust Fan is Off {dimensionless}", - - " AirLoopHVAC,", - " Typical Terminal Reheat 1, !- Name", - " , !- Controller List Name", - " Reheat System 1 Avail List, !- Availability Manager List Name", - " 1.9, !- Design Supply Air Flow Rate {m3/s}", - " Air Loop Branches, !- Branch List Name", - " , !- Connector List Name", - " Air Loop Inlet Node, !- Supply Side Inlet Node Name", - " Return Air Mixer Outlet, !- Demand Side Outlet Node Name", - " Zone Equipment Inlet Node, !- Demand Side Inlet Node Names", - " Air Loop Outlet Node; !- Supply Side Outlet Node Names", - - " Fan:ZoneExhaust,", - " Zone3 Exhaust Fan, !- Name", - " On, !- Availability Schedule Name", - " 0.7, !- Fan Total Efficiency", - " 500, !- Pressure Rise {Pa}", - " 0.01, !- Maximum Flow Rate {m3/s}", - " Zone3 Exhaust Node, !- Air Inlet Node Name", - " Zone3 Exhaust Fan Outlet Node, !- Air Outlet Node Name", - " Zone Exhaust; !- End-Use Subcategory", - - " Fan:ConstantVolume,", - " Supply Fan 1, !- Name", - " FanAndCoilAvailSched, !- Availability Schedule Name", - " 0.7, !- Fan Total Efficiency", - " 600.0, !- Pressure Rise {Pa}", - " 1.9, !- Maximum Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1.0, !- Motor In Airstream Fraction", - " Mixed Air Node, !- Air Inlet Node Name", - " Cooling Coil Air Inlet Node; !- Air Outlet Node Name", - - } ); - - ASSERT_TRUE( process_idf( idf_objects ) ); - - using namespace EnergyPlus::DataIPShortCuts; - - lNumericFieldBlanks.allocate ( 1000 ); - lAlphaFieldBlanks.allocate( 1000 ); - cAlphaFieldNames.allocate( 1000 ); - cNumericFieldNames.allocate( 1000 ); - cAlphaArgs.allocate( 1000 ); - rNumericArgs.allocate( 1000 ); - lNumericFieldBlanks = false; - lAlphaFieldBlanks = false; - cAlphaFieldNames = " "; - cNumericFieldNames = " "; - cAlphaArgs = " "; - rNumericArgs = 0.0; - - bool ErrorsFound = false; - // Read objects - HeatBalanceManager::GetProjectControlData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetZoneData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetWindowGlassSpectralData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetMaterialData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetConstructData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - SurfaceGeometry::GetGeometryParameters( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - - SurfaceGeometry::CosBldgRotAppGonly = 1.0; - SurfaceGeometry::SinBldgRotAppGonly = 0.0; - SurfaceGeometry::GetSurfaceData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - - // Read AirflowNetwork inputs - GetAirflowNetworkInput( ); - - Real64 PresssureSet = 0.5; + // Unit test for a new feature of PressureStat and #5687 + int i; + + std::string const idf_objects = delimited_string({ + "Version,8.4;", + " Building,", + " Small Office with AirflowNetwork model, !- Name", + " 0, !- North Axis {deg}", + " Suburbs, !- Terrain", + " 0.001, !- Loads Convergence Tolerance Value", + " 0.0050000, !- Temperature Convergence Tolerance Value {deltaC}", + " FullInteriorAndExterior, !- Solar Distribution", + " 25, !- Maximum Number of Warmup Days", + " 6; !- Minimum Number of Warmup Days", + + " Timestep,6;", + + " SurfaceConvectionAlgorithm:Inside,TARP;", + + " SurfaceConvectionAlgorithm:Outside,DOE-2;", + + " HeatBalanceAlgorithm,ConductionTransferFunction;", + + " Schedule:Constant,FanAndCoilAvailSched,,1.0;", + " Schedule:Constant,On,,1.0;", + " Schedule:Constant,WindowVentSched,,21.0;", + " Schedule:Constant,VentingSched,,0.0;", + + " Site:GroundTemperature:BuildingSurface,20.03,20.03,20.13,20.30,20.43,20.52,20.62,20.77,20.78,20.55,20.44,20.20;", + + " Material,", + " A1 - 1 IN STUCCO, !- Name", + " Smooth, !- Roughness", + " 2.5389841E-02, !- Thickness {m}", + " 0.6918309, !- Conductivity {W/m-K}", + " 1858.142, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.9200000, !- Solar Absorptance", + " 0.9200000; !- Visible Absorptance", + + " Material,", + " C4 - 4 IN COMMON BRICK, !- Name", + " Rough, !- Roughness", + " 0.1014984, !- Thickness {m}", + " 0.7264224, !- Conductivity {W/m-K}", + " 1922.216, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7600000, !- Solar Absorptance", + " 0.7600000; !- Visible Absorptance", + + " Material,", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Name", + " Smooth, !- Roughness", + " 1.9050000E-02, !- Thickness {m}", + " 0.7264224, !- Conductivity {W/m-K}", + " 1601.846, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.9200000, !- Solar Absorptance", + " 0.9200000; !- Visible Absorptance", + + " Material,", + " C6 - 8 IN CLAY TILE, !- Name", + " Smooth, !- Roughness", + " 0.2033016, !- Thickness {m}", + " 0.5707605, !- Conductivity {W/m-K}", + " 1121.292, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.8200000, !- Solar Absorptance", + " 0.8200000; !- Visible Absorptance", + + " Material,", + " C10 - 8 IN HW CONCRETE, !- Name", + " MediumRough, !- Roughness", + " 0.2033016, !- Thickness {m}", + " 1.729577, !- Conductivity {W/m-K}", + " 2242.585, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + + " Material,", + " E2 - 1 / 2 IN SLAG OR STONE, !- Name", + " Rough, !- Roughness", + " 1.2710161E-02, !- Thickness {m}", + " 1.435549, !- Conductivity {W/m-K}", + " 881.0155, !- Density {kg/m3}", + " 1673.600, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.5500000, !- Solar Absorptance", + " 0.5500000; !- Visible Absorptance", + + " Material,", + " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Name", + " Rough, !- Roughness", + " 9.5402403E-03, !- Thickness {m}", + " 0.1902535, !- Conductivity {W/m-K}", + " 1121.292, !- Density {kg/m3}", + " 1673.600, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " B5 - 1 IN DENSE INSULATION, !- Name", + " VeryRough, !- Roughness", + " 2.5389841E-02, !- Thickness {m}", + " 4.3239430E-02, !- Conductivity {W/m-K}", + " 91.30524, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.5000000, !- Solar Absorptance", + " 0.5000000; !- Visible Absorptance", + + " Material,", + " C12 - 2 IN HW CONCRETE, !- Name", + " MediumRough, !- Roughness", + " 5.0901599E-02, !- Thickness {m}", + " 1.729577, !- Conductivity {W/m-K}", + " 2242.585, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + + " Material,", + " 1.375in-Solid-Core, !- Name", + " Smooth, !- Roughness", + " 3.4925E-02, !- Thickness {m}", + " 0.1525000, !- Conductivity {W/m-K}", + " 614.5000, !- Density {kg/m3}", + " 1630.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.9200000, !- Solar Absorptance", + " 0.9200000; !- Visible Absorptance", + + " Construction,", + " EXTWALL80, !- Name", + " A1 - 1 IN STUCCO, !- Outside Layer", + " C4 - 4 IN COMMON BRICK, !- Layer 2", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", + + " Construction,", + " PARTITION06, !- Name", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer", + " C6 - 8 IN CLAY TILE, !- Layer 2", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", + + " Construction,", + " FLOOR SLAB 8 IN, !- Name", + " C10 - 8 IN HW CONCRETE; !- Outside Layer", + + " Construction,", + " ROOF34, !- Name", + " E2 - 1 / 2 IN SLAG OR STONE, !- Outside Layer", + " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Layer 2", + " C12 - 2 IN HW CONCRETE; !- Layer 3", + + " Construction,", + " CEILING:ZONE, !- Name", + " B5 - 1 IN DENSE INSULATION, !- Outside Layer", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 2", + + " Construction,", + " CEILING:ATTIC, !- Name", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer", + " B5 - 1 IN DENSE INSULATION; !- Layer 2", + + " Construction,", + " DOOR-CON, !- Name", + " 1.375in-Solid-Core; !- Outside Layer", + + " Construction,", + " window - 90.1 - 2004 - nonres - fixed, !- Name", + " ASHRAE NonRes Fixed Assembly Window; !- Outside Layer", + + " WindowMaterial:SimpleGlazingSystem,", + " ASHRAE NonRes Fixed Assembly Window, !- Name", + " 3.23646, !- U - Factor{ W / m2 - K }", + " 0.39, !- Solar Heat Gain Coefficient", + " ; !- Visible Transmittance", + + " Zone,", + " West Zone, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " Zone,", + " EAST ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " Zone,", + " NORTH ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + " Zone,", + " ATTIC ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " CounterClockWise, !- Vertex Entry Direction", + " World; !- Coordinate System", + + " BuildingSurface:Detailed,", + " Zn001:Wall001, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " West Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall002, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " West Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall003, !- Name", + " Wall, !- Surface Type", + " PARTITION06, !- Construction Name", + " West Zone, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn003:Wall004, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall004, !- Name", + " Wall, !- Surface Type", + " PARTITION06, !- Construction Name", + " West Zone, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn002:Wall004, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Flr001, !- Name", + " Floor, !- Surface Type", + " FLOOR SLAB 8 IN, !- Construction Name", + " West Zone, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn001:Flr001, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,0, !- X,Y,Z ==> Vertex 1 {m}", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,0,0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Ceil001, !- Name", + " CEILING, !- Surface Type", + " CEILING:ZONE, !- Construction Name", + " West Zone, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn004:Flr001, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn002:Wall001, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " EAST ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 9.144000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 9.144000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn002:Wall002, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " EAST ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn002:Wall003, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " EAST ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 12.19200,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn002:Wall004, !- Name", + " Wall, !- Surface Type", + " PARTITION06, !- Construction Name", + " EAST ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn001:Wall004, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn002:Wall005, !- Name", + " Wall, !- Surface Type", + " PARTITION06, !- Construction Name", + " EAST ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn003:Wall005, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 9.144000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn002:Flr001, !- Name", + " Floor, !- Surface Type", + " FLOOR SLAB 8 IN, !- Construction Name", + " EAST ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn002:Flr001, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,0,0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn002:Ceil001, !- Name", + " CEILING, !- Surface Type", + " CEILING:ZONE, !- Construction Name", + " EAST ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn004:Flr002, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn003:Wall001, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " NORTH ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn003:Wall002, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " NORTH ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 9.144000,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 9.144000,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn003:Wall003, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " NORTH ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 9.144000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 9.144000,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", + " 9.144000,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn003:Wall004, !- Name", + " Wall, !- Surface Type", + " PARTITION06, !- Construction Name", + " NORTH ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn001:Wall003, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn003:Wall005, !- Name", + " Wall, !- Surface Type", + " PARTITION06, !- Construction Name", + " NORTH ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn002:Wall005, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 9.144000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 9.144000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn003:Flr001, !- Name", + " Floor, !- Surface Type", + " FLOOR SLAB 8 IN, !- Construction Name", + " NORTH ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn003:Flr001, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 1 {m}", + " 0,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", + " 9.144000,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", + " 9.144000,6.096000,0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn003:Ceil001, !- Name", + " CEILING, !- Surface Type", + " CEILING:ZONE, !- Construction Name", + " NORTH ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn004:Flr003, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 9.144000,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Wall001, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,3.962400, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,0,3.962400; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Wall002, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,0,3.962400, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,0,3.962400; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Wall003, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 12.19200,0,3.962400, !- X,Y,Z ==> Vertex 1 {m}", + " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,6.096000,3.962400; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Wall004, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 12.19200,6.096000,3.962400, !- X,Y,Z ==> Vertex 1 {m}", + " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 9.144000,6.096000,3.962400; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Wall005, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 9.144000,6.096000,3.962400, !- X,Y,Z ==> Vertex 1 {m}", + " 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 9.144000,12.19200,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 9.144000,12.19200,3.962400; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Wall006, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 9.144000,12.19200,3.962400, !- X,Y,Z ==> Vertex 1 {m}", + " 9.144000,12.19200,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 0,12.19200,3.962400; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Wall007, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,12.19200,3.962400, !- X,Y,Z ==> Vertex 1 {m}", + " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 0,6.096000,3.962400; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Wall008, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,6.096000,3.962400, !- X,Y,Z ==> Vertex 1 {m}", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 0,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 0,0,3.962400; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Roof001, !- Name", + " Roof, !- Surface Type", + " ROOF34, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,6.096000,3.962400, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,3.962400, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,0,3.962400, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,6.096000,3.962400; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Roof002, !- Name", + " Roof, !- Surface Type", + " ROOF34, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.962400, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,0,3.962400, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,0,3.962400, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,6.096000,3.962400; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Roof003, !- Name", + " Roof, !- Surface Type", + " ROOF34, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,12.19200,3.962400, !- X,Y,Z ==> Vertex 1 {m}", + " 0,6.096000,3.962400, !- X,Y,Z ==> Vertex 2 {m}", + " 9.144000,6.096000,3.962400, !- X,Y,Z ==> Vertex 3 {m}", + " 9.144000,12.19200,3.962400; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Flr001, !- Name", + " Floor, !- Surface Type", + " CEILING:ATTIC, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn001:Ceil001, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Flr002, !- Name", + " Floor, !- Surface Type", + " CEILING:ATTIC, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn002:Ceil001, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Flr003, !- Name", + " Floor, !- Surface Type", + " CEILING:ATTIC, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn003:Ceil001, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 9.144000,12.19200,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 9.144000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " FenestrationSurface:Detailed,", + " Zn001:Wall001:Win001, !- Name", + " Window, !- Surface Type", + " window - 90.1 - 2004 - nonres - fixed, !- Construction Name", + " Zn001:Wall001, !- Building Surface Name", + " , !- Outside Boundary Condition Object", + " 0.5000000, !- View Factor to Ground", + " , !- Shading Control Name", + " , !- Frame and Divider Name", + " 1.0, !- Multiplier", + " 4, !- Number of Vertices", + " 0.548000,0,2.5000, !- X,Y,Z ==> Vertex 1 {m}", + " 0.548000,0,0.5000, !- X,Y,Z ==> Vertex 2 {m}", + " 5.548000,0,0.5000, !- X,Y,Z ==> Vertex 3 {m}", + " 5.548000,0,2.5000; !- X,Y,Z ==> Vertex 4 {m}", + + " FenestrationSurface:Detailed,", + " Zn001:Wall003:Door001, !- Name", + " DOOR, !- Surface Type", + " DOOR-CON, !- Construction Name", + " Zn001:Wall003, !- Building Surface Name", + " Zn003:Wall004:Door001, !- Outside Boundary Condition Object", + " 0.5000000, !- View Factor to Ground", + " , !- Shading Control Name", + " , !- Frame and Divider Name", + " 1.0, !- Multiplier", + " 4, !- Number of Vertices", + " 3.500,6.096000,2.0, !- X,Y,Z ==> Vertex 1 {m}", + " 3.500,6.096000,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 2.500,6.096000,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 2.500,6.096000,2.0; !- X,Y,Z ==> Vertex 4 {m}", + + " FenestrationSurface:Detailed,", + " Zn003:Wall002:Win001, !- Name", + " Window, !- Surface Type", + " window - 90.1 - 2004 - nonres - fixed, !- Construction Name", + " Zn003:Wall002, !- Building Surface Name", + " , !- Outside Boundary Condition Object", + " 0.5000000, !- View Factor to Ground", + " , !- Shading Control Name", + " , !- Frame and Divider Name", + " 1.0, !- Multiplier", + " 4, !- Number of Vertices", + " 5.548000,12.19200,2.5000, !- X,Y,Z ==> Vertex 1 {m}", + " 5.548000,12.19200,0.5000, !- X,Y,Z ==> Vertex 2 {m}", + " 0.548000,12.19200,0.5000, !- X,Y,Z ==> Vertex 3 {m}", + " 0.548000,12.19200,2.5000; !- X,Y,Z ==> Vertex 4 {m}", + + " FenestrationSurface:Detailed,", + " Zn003:Wall004:Door001, !- Name", + " DOOR, !- Surface Type", + " DOOR-CON, !- Construction Name", + " Zn003:Wall004, !- Building Surface Name", + " Zn001:Wall003:Door001, !- Outside Boundary Condition Object", + " 0.5000000, !- View Factor to Ground", + " , !- Shading Control Name", + " , !- Frame and Divider Name", + " 1.0, !- Multiplier", + " 4, !- Number of Vertices", + " 2.500,6.096000,2.0, !- X,Y,Z ==> Vertex 1 {m}", + " 2.500,6.096000,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 3.500,6.096000,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 3.500,6.096000,2.0; !- X,Y,Z ==> Vertex 4 {m}", + + " AirflowNetwork:SimulationControl,", + " AriflowNetwork_All, !- Name", + " MultizoneWithDistribution, !- AirflowNetwork Control", + " INPUT, !- Wind Pressure Coefficient Type", + " ExternalNode, !- Height Selection for Local Wind Pressure Calculation", + " LOWRISE, !- Building Type", + " 500, !- Maximum Number of Iterations {dimensionless}", + " ZeroNodePressures, !- Initialization Type", + " 1.0E-05, !- Relative Airflow Convergence Tolerance {dimensionless}", + " 1.0E-06, !- Absolute Airflow Convergence Tolerance {kg/s}", + " -0.5, !- Convergence Acceleration Limit {dimensionless}", + " 0.0, !- Azimuth Angle of Long Axis of Building {deg}", + " 1.0; !- Ratio of Building Width Along Short Axis to Width Along Long Axis", + + " AirflowNetwork:MultiZone:Zone,", + " West Zone, !- Zone Name", + " Temperature, !- Ventilation Control Mode", + " WindowVentSched, !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " 0.3, !- Minimum Venting Open Factor {dimensionless}", + " 5.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", + " 10.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", + " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", + " 300000.0, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", + " VentingSched; !- Venting Availability Schedule Name", + + " AirflowNetwork:MultiZone:Zone,", + " EAST ZONE, !- Zone Name", + " NoVent, !- Ventilation Control Mode", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " 1.0, !- Minimum Venting Open Factor {dimensionless}", + " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", + " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", + " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", + " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", + + " AirflowNetwork:MultiZone:Zone,", + " NORTH ZONE, !- Zone Name", + " Temperature, !- Ventilation Control Mode", + " WindowVentSched, !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " 1.0, !- Minimum Venting Open Factor {dimensionless}", + " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", + " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", + " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", + " 300000.0, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", + " VentingSched; !- Venting Availability Schedule Name", + + " AirflowNetwork:MultiZone:Zone,", + " ATTIC ZONE, !- Zone Name", + " NoVent, !- Ventilation Control Mode", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " 1.0, !- Minimum Venting Open Factor {dimensionless}", + " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", + " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", + " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", + " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", + + " AirflowNetwork:MultiZone:Surface,", + " Zn001:Wall001, !- Surface Name", + " ELA-1, !- Leakage Component Name", + " SFacade, !- External Node Name", + " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + + " AirflowNetwork:MultiZone:Surface,", + " Zn001:Wall001:Win001, !- Surface Name", + " CRcri, !- Leakage Component Name", + " SFacade, !- External Node Name", + " 0.5; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + + " AirflowNetwork:MultiZone:Surface,", + " Zn001:Wall002, !- Surface Name", + " CR-1, !- Leakage Component Name", + " WFacade, !- External Node Name", + " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + + " AirflowNetwork:MultiZone:Surface,", + " Zn001:Wall003, !- Surface Name", + " CRcri, !- Leakage Component Name", + " , !- External Node Name", + " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + + " AirflowNetwork:MultiZone:Surface,", + " Zn001:Wall003:Door001, !- Surface Name", + " CRcri, !- Leakage Component Name", + " , !- External Node Name", + " 0.5; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + + " AirflowNetwork:MultiZone:Surface,", + " Zn001:Wall004, !- Surface Name", + " CRcri, !- Leakage Component Name", + " , !- External Node Name", + " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + + " AirflowNetwork:MultiZone:Surface,", + " Zn001:Ceil001, !- Surface Name", + " CRcri, !- Leakage Component Name", + " , !- External Node Name", + " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + + " AirflowNetwork:MultiZone:Surface,", + " Zn002:Wall002, !- Surface Name", + " CR-1, !- Leakage Component Name", + " SFacade, !- External Node Name", + " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + + " AirflowNetwork:MultiZone:Surface,", + " Zn002:Wall003, !- Surface Name", + " CR-1, !- Leakage Component Name", + " EFacade, !- External Node Name", + " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + + " AirflowNetwork:MultiZone:Surface,", + " Zn002:Wall005, !- Surface Name", + " CRcri, !- Leakage Component Name", + " , !- External Node Name", + " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + + " AirflowNetwork:MultiZone:Surface,", + " Zn002:Ceil001, !- Surface Name", + " CRcri, !- Leakage Component Name", + " , !- External Node Name", + " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + + " AirflowNetwork:MultiZone:Surface,", + " Zn003:Wall001, !- Surface Name", + " CR-1, !- Leakage Component Name", + " WFacade, !- External Node Name", + " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + + " AirflowNetwork:MultiZone:Surface,", + " Zn003:Wall002, !- Surface Name", + " CR-1, !- Leakage Component Name", + " NFacade, !- External Node Name", + " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + + " AirflowNetwork:MultiZone:Surface,", + " Zn003:Wall002:Win001, !- Surface Name", + " CRcri, !- Leakage Component Name", + " NFacade, !- External Node Name", + " 0.5; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + + " AirflowNetwork:MultiZone:Surface,", + " Zn003:Wall003, !- Surface Name", + " Zone3 Exhaust Fan, !- Leakage Component Name", + " EFacade, !- External Node Name", + " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + + " AirflowNetwork:MultiZone:Surface,", + " Zn003:Ceil001, !- Surface Name", + " CRcri, !- Leakage Component Name", + " , !- External Node Name", + " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + + " AirflowNetwork:MultiZone:Surface,", + " Zn004:Roof001, !- Surface Name", + " CR-1, !- Leakage Component Name", + " Horizontal, !- External Node Name", + " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + + " AirflowNetwork:MultiZone:Surface,", + " Zn004:Roof002, !- Surface Name", + " CR-1, !- Leakage Component Name", + " Horizontal, !- External Node Name", + " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + + " AirflowNetwork:MultiZone:Surface,", + " Zn004:Roof003, !- Surface Name", + " CR-1, !- Leakage Component Name", + " Horizontal, !- External Node Name", + " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + + " AirflowNetwork:MultiZone:ReferenceCrackConditions,", + " ReferenceCrackConditions,!- Name", + " 20.0, !- Reference Temperature {C}", + " 101325, !- Reference Barometric Pressure {Pa}", + " 0.0; !- Reference Humidity Ratio {kgWater/kgDryAir}", + + " AirflowNetwork:MultiZone:Surface:Crack,", + " CR-1, !- Name", + " 0.01, !- Air Mass Flow Coefficient at Reference Conditions {kg/s}", + " 0.667; !- Air Mass Flow Exponent {dimensionless}", + + " AirflowNetwork:MultiZone:Surface:Crack,", + " CRcri, !- Name", + " 0.05, !- Air Mass Flow Coefficient at Reference Conditions {kg/s}", + " 0.667; !- Air Mass Flow Exponent {dimensionless}", + + " AirflowNetwork:MultiZone:Component:ZoneExhaustFan,", + " Zone3 Exhaust Fan, !- Name", + " 0.01, !- Air Mass Flow Coefficient When the Zone Exhaust Fan is Off at Reference Conditions {kg/s}", + " 0.667; !- Air Mass Flow Exponent When the Zone Exhaust Fan is Off {dimensionless}", + + " AirflowNetwork:MultiZone:Surface:EffectiveLeakageArea,", + " ELA-1, !- Name", + " 0.007, !- Effective Leakage Area {m2}", + " 1.0, !- Discharge Coefficient {dimensionless}", + " 4.0, !- Reference Pressure Difference {Pa}", + " 0.667; !- Air Mass Flow Exponent {dimensionless}", + + " AirflowNetwork:MultiZone:ExternalNode,", + " NFacade, !- Name", + " 1.524, !- External Node Height {m}", + " NFacade_WPCValue; !- Wind Pressure Coefficient Values Object Name", + + " AirflowNetwork:MultiZone:ExternalNode,", + " EFacade, !- Name", + " 1.524, !- External Node Height {m}", + " EFacade_WPCValue; !- Wind Pressure Coefficient Values Object Name", + + " AirflowNetwork:MultiZone:ExternalNode,", + " SFacade, !- Name", + " 1.524, !- External Node Height {m}", + " SFacade_WPCValue; !- Wind Pressure Coefficient Values Object Name", + + " AirflowNetwork:MultiZone:ExternalNode,", + " WFacade, !- Name", + " 1.524, !- External Node Height {m}", + " WFacade_WPCValue; !- Wind Pressure Coefficient Values Object Name", + + " AirflowNetwork:MultiZone:ExternalNode,", + " Horizontal, !- Name", + " 3.028, !- External Node Height {m}", + " Horizontal_WPCValue; !- Wind Pressure Coefficient Values Object Name", + + " AirflowNetwork:MultiZone:WindPressureCoefficientArray,", + " Every 30 Degrees, !- Name", + " 0, !- Wind Direction 1 {deg}", + " 30, !- Wind Direction 2 {deg}", + " 60, !- Wind Direction 3 {deg}", + " 90, !- Wind Direction 4 {deg}", + " 120, !- Wind Direction 5 {deg}", + " 150, !- Wind Direction 6 {deg}", + " 180, !- Wind Direction 7 {deg}", + " 210, !- Wind Direction 8 {deg}", + " 240, !- Wind Direction 9 {deg}", + " 270, !- Wind Direction 10 {deg}", + " 300, !- Wind Direction 11 {deg}", + " 330; !- Wind Direction 12 {deg}", + + " AirflowNetwork:MultiZone:WindPressureCoefficientValues,", + " NFacade_WPCValue, !- Name", + " Every 30 Degrees, !- AirflowNetwork:MultiZone:WindPressureCoefficientArray Name", + " 0.60, !- Wind Pressure Coefficient Value 1 {dimensionless}", + " 0.48, !- Wind Pressure Coefficient Value 2 {dimensionless}", + " 0.04, !- Wind Pressure Coefficient Value 3 {dimensionless}", + " -0.56, !- Wind Pressure Coefficient Value 4 {dimensionless}", + " -0.56, !- Wind Pressure Coefficient Value 5 {dimensionless}", + " -0.42, !- Wind Pressure Coefficient Value 6 {dimensionless}", + " -0.37, !- Wind Pressure Coefficient Value 7 {dimensionless}", + " -0.42, !- Wind Pressure Coefficient Value 8 {dimensionless}", + " -0.56, !- Wind Pressure Coefficient Value 9 {dimensionless}", + " -0.56, !- Wind Pressure Coefficient Value 10 {dimensionless}", + " 0.04, !- Wind Pressure Coefficient Value 11 {dimensionless}", + " 0.48; !- Wind Pressure Coefficient Value 12 {dimensionless}", + + " AirflowNetwork:MultiZone:WindPressureCoefficientValues,", + " EFacade_WPCValue, !- Name", + " Every 30 Degrees, !- AirflowNetwork:MultiZone:WindPressureCoefficientArray Name", + " -0.56, !- Wind Pressure Coefficient Value 1 {dimensionless}", + " 0.04, !- Wind Pressure Coefficient Value 2 {dimensionless}", + " 0.48, !- Wind Pressure Coefficient Value 3 {dimensionless}", + " 0.60, !- Wind Pressure Coefficient Value 4 {dimensionless}", + " 0.48, !- Wind Pressure Coefficient Value 5 {dimensionless}", + " 0.04, !- Wind Pressure Coefficient Value 6 {dimensionless}", + " -0.56, !- Wind Pressure Coefficient Value 7 {dimensionless}", + " -0.56, !- Wind Pressure Coefficient Value 8 {dimensionless}", + " -0.42, !- Wind Pressure Coefficient Value 9 {dimensionless}", + " -0.37, !- Wind Pressure Coefficient Value 10 {dimensionless}", + " -0.42, !- Wind Pressure Coefficient Value 11 {dimensionless}", + " -0.56; !- Wind Pressure Coefficient Value 12 {dimensionless}", + + " AirflowNetwork:MultiZone:WindPressureCoefficientValues,", + " SFacade_WPCValue, !- Name", + " Every 30 Degrees, !- AirflowNetwork:MultiZone:WindPressureCoefficientArray Name", + " -0.37, !- Wind Pressure Coefficient Value 1 {dimensionless}", + " -0.42, !- Wind Pressure Coefficient Value 2 {dimensionless}", + " -0.56, !- Wind Pressure Coefficient Value 3 {dimensionless}", + " -0.56, !- Wind Pressure Coefficient Value 4 {dimensionless}", + " 0.04, !- Wind Pressure Coefficient Value 5 {dimensionless}", + " 0.48, !- Wind Pressure Coefficient Value 6 {dimensionless}", + " 0.60, !- Wind Pressure Coefficient Value 7 {dimensionless}", + " 0.48, !- Wind Pressure Coefficient Value 8 {dimensionless}", + " 0.04, !- Wind Pressure Coefficient Value 9 {dimensionless}", + " -0.56, !- Wind Pressure Coefficient Value 10 {dimensionless}", + " -0.56, !- Wind Pressure Coefficient Value 11 {dimensionless}", + " -0.42; !- Wind Pressure Coefficient Value 12 {dimensionless}", + + " AirflowNetwork:MultiZone:WindPressureCoefficientValues,", + " WFacade_WPCValue, !- Name", + " Every 30 Degrees, !- AirflowNetwork:MultiZone:WindPressureCoefficientArray Name", + " -0.56, !- Wind Pressure Coefficient Value 1 {dimensionless}", + " -0.56, !- Wind Pressure Coefficient Value 2 {dimensionless}", + " -0.42, !- Wind Pressure Coefficient Value 3 {dimensionless}", + " -0.37, !- Wind Pressure Coefficient Value 4 {dimensionless}", + " -0.42, !- Wind Pressure Coefficient Value 5 {dimensionless}", + " -0.56, !- Wind Pressure Coefficient Value 6 {dimensionless}", + " -0.56, !- Wind Pressure Coefficient Value 7 {dimensionless}", + " 0.04, !- Wind Pressure Coefficient Value 8 {dimensionless}", + " 0.48, !- Wind Pressure Coefficient Value 9 {dimensionless}", + " 0.60, !- Wind Pressure Coefficient Value 10 {dimensionless}", + " 0.48, !- Wind Pressure Coefficient Value 11 {dimensionless}", + " 0.04; !- Wind Pressure Coefficient Value 12 {dimensionless}", + + " AirflowNetwork:MultiZone:WindPressureCoefficientValues,", + " Horizontal_WPCValue, !- Name", + " Every 30 Degrees, !- AirflowNetwork:MultiZone:WindPressureCoefficientArray Name", + " 0.00, !- Wind Pressure Coefficient Value 1 {dimensionless}", + " 0.00, !- Wind Pressure Coefficient Value 2 {dimensionless}", + " 0.00, !- Wind Pressure Coefficient Value 3 {dimensionless}", + " 0.00, !- Wind Pressure Coefficient Value 4 {dimensionless}", + " 0.00, !- Wind Pressure Coefficient Value 5 {dimensionless}", + " 0.00, !- Wind Pressure Coefficient Value 6 {dimensionless}", + " 0.00, !- Wind Pressure Coefficient Value 7 {dimensionless}", + " 0.00, !- Wind Pressure Coefficient Value 8 {dimensionless}", + " 0.00, !- Wind Pressure Coefficient Value 9 {dimensionless}", + " 0.00, !- Wind Pressure Coefficient Value 10 {dimensionless}", + " 0.00, !- Wind Pressure Coefficient Value 11 {dimensionless}", + " 0.00; !- Wind Pressure Coefficient Value 12 {dimensionless}", + + " AirflowNetwork:Distribution:Node,", + " EquipmentInletNode, !- Name", + " Zone Equipment Inlet Node, !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " EquipmentOutletNode, !- Name", + " , !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " SupplyMainNode, !- Name", + " , !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " MainSplitterNode, !- Name", + " , !- Component Name or Node Name", + " AirLoopHVAC:ZoneSplitter,!- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " Zone1SupplyNode, !- Name", + " , !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " ReheatInlet1Node, !- Name", + " Zone 1 Reheat Air Inlet Node, !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " Zone1SupplyRegisterNode, !- Name", + " Zone 1 Reheat Air Outlet Node, !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " Zone1OutletNode, !- Name", + " Zone 1 Outlet Node, !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " Zone2SupplyNode, !- Name", + " , !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " ReheatInlet2Node, !- Name", + " Zone 2 Reheat Air Inlet Node, !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " Zone2SupplyRegisterNode, !- Name", + " Zone 2 Reheat Air Outlet Node, !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " Zone2OutletNode, !- Name", + " Zone 2 Outlet Node, !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " Zone3SupplyNode, !- Name", + " , !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " Zone3SupplyRegisterNode, !- Name", + " Zone 3 Inlet Node, !- Component Name or Node Name", + " , !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " Zone3OutletNode, !- Name", + " Zone 3 Outlet Node, !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " Zone1ReturnNode, !- Name", + " , !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " Zone2ReturnNode, !- Name", + " , !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " Zone3ReturnNode, !- Name", + " , !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " MainMixerNode, !- Name", + " , !- Component Name or Node Name", + " AirLoopHVAC:ZoneMixer, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " MainReturnNode, !- Name", + " Return Air Mixer Outlet, !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " MainInletNode, !- Name", + " Air Loop Inlet Node, !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " OA System Node, !- Name", + " , !- Component Name or Node Name", + " AirLoopHVAC:OutdoorAirSystem, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " OA Inlet Node, !- Name", + " Outside Air Inlet Node, !- Component Name or Node Name", + " OAMixerOutdoorAirStreamNode, !- Component Object Type or Node Type", + " 1.5; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " FanInletNode, !- Name", + " Mixed Air Node, !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " FanOutletNode, !- Name", + " Cooling Coil Air Inlet Node, !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " HeatingInletNode, !- Name", + " Heating Coil Air Inlet Node, !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " HeatingOutletNode, !- Name", + " Air Loop Outlet Node, !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Component:Leak,", + " MainSupplyLeak, !- Name", + " 0.0025, !- Air Mass Flow Coefficient {kg/s}", + " 0.65; !- Air Mass Flow Exponent {dimensionless}", + + " AirflowNetwork:Distribution:Component:ConstantPressureDrop,", + " SupplyCPDComp, !- Name", + " 1.0; !- Pressure Difference Across the Component {Pa}", + + " AirflowNetwork:Distribution:Component:LeakageRatio,", + " ZoneSupplyELR1, !- Name", + " 0.01, !- Effective Leakage Ratio {dimensionless}", + " 1.9, !- Maximum Flow Rate {m3/s}", + " 59.0, !- Reference Pressure Difference {Pa}", + " 0.65; !- Air Mass Flow Exponent {dimensionless}", + + " AirflowNetwork:Distribution:Component:LeakageRatio,", + " ZoneSupplyELR2, !- Name", + " 0.01, !- Effective Leakage Ratio {dimensionless}", + " 1.9, !- Maximum Flow Rate {m3/s}", + " 59.0, !- Reference Pressure Difference {Pa}", + " 0.65; !- Air Mass Flow Exponent {dimensionless}", + + " AirflowNetwork:Distribution:Component:LeakageRatio,", + " ZoneSupplyELR3, !- Name", + " 0.01, !- Effective Leakage Ratio {dimensionless}", + " 1.9, !- Maximum Flow Rate {m3/s}", + " 59.0, !- Reference Pressure Difference {Pa}", + " 0.65; !- Air Mass Flow Exponent {dimensionless}", + + " AirflowNetwork:Distribution:Component:LeakageRatio,", + " ReturnLeakELR1, !- Name", + " 0.03, !- Effective Leakage Ratio {dimensionless}", + " 1.9, !- Maximum Flow Rate {m3/s}", + " 41.0, !- Reference Pressure Difference {Pa}", + " 0.65; !- Air Mass Flow Exponent {dimensionless}", + + " AirflowNetwork:Distribution:Component:LeakageRatio,", + " ReturnLeakELR2, !- Name", + " 0.03, !- Effective Leakage Ratio {dimensionless}", + " 1.9, !- Maximum Flow Rate {m3/s}", + " 40.0, !- Reference Pressure Difference {Pa}", + " 0.65; !- Air Mass Flow Exponent {dimensionless}", + + " AirflowNetwork:Distribution:Component:LeakageRatio,", + " ReturnLeakELR3, !- Name", + " 0.04, !- Effective Leakage Ratio {dimensionless}", + " 1.9, !- Maximum Flow Rate {m3/s}", + " 43.0, !- Reference Pressure Difference {Pa}", + " 0.65; !- Air Mass Flow Exponent {dimensionless}", + + " AirflowNetwork:Distribution:Component:Duct,", + " MainTruck1, !- Name", + " 3.0, !- Duct Length {m}", + " 0.6, !- Hydraulic Diameter {m}", + " 0.2827, !- Cross Section Area {m2}", + " 0.0009, !- Surface Roughness {m}", + " 0.01, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", + " 0.772, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", + " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", + + " AirflowNetwork:Distribution:Component:Duct,", + " MainTruck2, !- Name", + " 4.0, !- Duct Length {m}", + " 0.6, !- Hydraulic Diameter {m}", + " 0.2827, !- Cross Section Area {m2}", + " 0.0009, !- Surface Roughness {m}", + " 0.01, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", + " 0.772, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", + " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", + + " AirflowNetwork:Distribution:Component:Duct,", + " Zone1Supply, !- Name", + " 5.0, !- Duct Length {m}", + " 0.4, !- Hydraulic Diameter {m}", + " 0.1256, !- Cross Section Area {m2}", + " 0.0009, !- Surface Roughness {m}", + " 1.00, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", + " 0.772, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", + " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", + + " AirflowNetwork:Distribution:Component:Duct,", + " Zone2Supply, !- Name", + " 4.0, !- Duct Length {m}", + " 0.39, !- Hydraulic Diameter {m}", + " 0.1195, !- Cross Section Area {m2}", + " 0.0009, !- Surface Roughness {m}", + " 2.5, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", + " 0.772, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", + " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", + + " AirflowNetwork:Distribution:Component:Duct,", + " Zone3Supply, !- Name", + " 4.0, !- Duct Length {m}", + " 0.44, !- Hydraulic Diameter {m}", + " 0.1521, !- Cross Section Area {m2}", + " 0.0009, !- Surface Roughness {m}", + " 1.0, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", + " 0.772, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", + " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", + + " AirflowNetwork:Distribution:Component:Duct,", + " Zone1Return, !- Name", + " 4.0, !- Duct Length {m}", + " 0.50, !- Hydraulic Diameter {m}", + " 0.1963, !- Cross Section Area {m2}", + " 0.0009, !- Surface Roughness {m}", + " 1.0, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", + " 0.772, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", + " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", + + " AirflowNetwork:Distribution:Component:Duct,", + " Zone2Return, !- Name", + " 4.0, !- Duct Length {m}", + " 0.48, !- Hydraulic Diameter {m}", + " 0.1809, !- Cross Section Area {m2}", + " 0.0009, !- Surface Roughness {m}", + " 1.0, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", + " 0.772, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", + " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", + + " AirflowNetwork:Distribution:Component:Duct,", + " Zone3Return, !- Name", + " 4.0, !- Duct Length {m}", + " 0.55, !- Hydraulic Diameter {m}", + " 0.2376, !- Cross Section Area {m2}", + " 0.0009, !- Surface Roughness {m}", + " 1.0, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", + " 0.772, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", + " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", + + " AirflowNetwork:Distribution:Component:Duct,", + " ZoneConnectionDuct, !- Name", + " 0.1, !- Duct Length {m}", + " 1.0, !- Hydraulic Diameter {m}", + " 0.7854, !- Cross Section Area {m2}", + " 0.0001, !- Surface Roughness {m}", + " 30.00, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", + " 0.001, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", + " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", + + " AirflowNetwork:Distribution:Component:Duct,", + " MixerConnectionDuct, !- Name", + " 0.1, !- Duct Length {m}", + " 1.0, !- Hydraulic Diameter {m}", + " 0.7854, !- Cross Section Area {m2}", + " 0.0001, !- Surface Roughness {m}", + " 1.00, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", + " 0.001, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", + " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", + + " AirflowNetwork:Distribution:Component:Duct,", + " AirLoopReturn, !- Name", + " 0.1, !- Duct Length {m}", + " 1.0, !- Hydraulic Diameter {m}", + " 0.7854, !- Cross Section Area {m2}", + " 0.0001, !- Surface Roughness {m}", + " 1.00, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", + " 0.001, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", + " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", + + " AirflowNetwork:Distribution:Component:Duct,", + " AirLoopSupply, !- Name", + " 0.1, !- Duct Length {m}", + " 1.0, !- Hydraulic Diameter {m}", + " 0.7854, !- Cross Section Area {m2}", + " 0.0001, !- Surface Roughness {m}", + " 1.00, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", + " 0.001, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", + " 0.0001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", + + " AirflowNetwork:Distribution:Component:Fan,", + " Supply Fan 1, !- Fan Name", + " Fan:ConstantVolume; !- Supply Fan Object Type", + + " AirflowNetwork:Distribution:Component:Coil,", + " ACDXCoil 1, !- Coil Name", + " Coil:Cooling:DX:SingleSpeed, !- Coil Object Type", + " 0.1, !- Air Path Length {m}", + " 1.00; !- Air Path Hydraulic Diameter {m}", + + " AirflowNetwork:Distribution:Component:Coil,", + " Main Heating Coil 1, !- Coil Name", + " Coil:Heating:Fuel, !- Coil Object Type", + " 0.1, !- Air Path Length {m}", + " 1.00; !- Air Path Hydraulic Diameter {m}", + + " AirflowNetwork:Distribution:Component:TerminalUnit,", + " Reheat Zone 1, !- Terminal Unit Name", + " AirTerminal:SingleDuct:ConstantVolume:Reheat, !- Terminal Unit Object Type", + " 0.1, !- Air Path Length {m}", + " 0.44; !- Air Path Hydraulic Diameter {m}", + + " AirflowNetwork:Distribution:Component:TerminalUnit,", + " Reheat Zone 2, !- Terminal Unit Name", + " AirTerminal:SingleDuct:ConstantVolume:Reheat, !- Terminal Unit Object Type", + " 0.1, !- Air Path Length {m}", + " 0.44; !- Air Path Hydraulic Diameter {m}", + + " AirflowNetwork:Distribution:Component:Leak,", + " OAFlow, !- Name", + " 0.025, !- Air Mass Flow Coefficient {kg/s}", + " 0.65; !- Air Mass Flow Exponent {dimensionless}", + + " AirflowNetwork:Distribution:Component:Leak,", + " OAFlow1, !- Name", + " 0.025, !- Air Mass Flow Coefficient {kg/s}", + " 0.65; !- Air Mass Flow Exponent {dimensionless}", + + " AirflowNetwork:Distribution:Linkage,", + " Main Link 1, !- Name", + " EquipmentInletNode, !- Node 1 Name", + " EquipmentOutletNode, !- Node 2 Name", + " MainTruck1, !- Component Name", + " Attic Zone; !- Thermal Zone Name", + + " AirflowNetwork:Distribution:Linkage,", + " Main CDP Link, !- Name", + " EquipmentOutletNode, !- Node 1 Name", + " SupplyMainNode, !- Node 2 Name", + " SupplyCPDComp; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " Main Link 2, !- Name", + " SupplyMainNode, !- Node 1 Name", + " MainSplitterNode, !- Node 2 Name", + " MainTruck2, !- Component Name", + " Attic Zone; !- Thermal Zone Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone1Supply1Link, !- Name", + " MainSplitterNode, !- Node 1 Name", + " Zone1SupplyNode, !- Node 2 Name", + " Zone1Supply, !- Component Name", + " Attic Zone; !- Thermal Zone Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone1Supply2Link, !- Name", + " Zone1SupplyNode, !- Node 1 Name", + " ReheatInlet1Node, !- Node 2 Name", + " Zone1Supply, !- Component Name", + " Attic Zone; !- Thermal Zone Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone1ReheatCoilLink, !- Name", + " ReheatInlet1Node, !- Node 1 Name", + " Zone1SupplyRegisterNode, !- Node 2 Name", + " Reheat Zone 1; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone1SupplyConnectionLink, !- Name", + " Zone1SupplyRegisterNode, !- Node 1 Name", + " West Zone, !- Node 2 Name", + " ZoneConnectionDuct; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone1ReturnConnectionLink, !- Name", + " West Zone, !- Node 1 Name", + " Zone1OutletNode, !- Node 2 Name", + " ZoneConnectionDuct; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone2Supply1Link, !- Name", + " MainSplitterNode, !- Node 1 Name", + " Zone2SupplyNode, !- Node 2 Name", + " Zone2Supply, !- Component Name", + " Attic Zone; !- Thermal Zone Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone2Supply2Link, !- Name", + " Zone2SupplyNode, !- Node 1 Name", + " ReheatInlet2Node, !- Node 2 Name", + " Zone2Supply, !- Component Name", + " Attic Zone; !- Thermal Zone Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone2ReheatCoilLink, !- Name", + " ReheatInlet2Node, !- Node 1 Name", + " Zone2SupplyRegisterNode, !- Node 2 Name", + " Reheat Zone 2; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone2SupplyConnectionLink, !- Name", + " Zone2SupplyRegisterNode, !- Node 1 Name", + " EAST ZONE, !- Node 2 Name", + " ZoneConnectionDuct; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone2returnConnectionLink, !- Name", + " EAST ZONE, !- Node 1 Name", + " Zone2OutletNode, !- Node 2 Name", + " ZoneConnectionDuct; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone3Supply1Link, !- Name", + " MainSplitterNode, !- Node 1 Name", + " Zone3SupplyNode, !- Node 2 Name", + " Zone3Supply, !- Component Name", + " Attic Zone; !- Thermal Zone Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone3SupplyLink, !- Name", + " Zone3SupplyNode, !- Node 1 Name", + " Zone3SupplyRegisterNode, !- Node 2 Name", + " Zone3Supply, !- Component Name", + " Attic Zone; !- Thermal Zone Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone3SupplyConnectionLink, !- Name", + " Zone3SupplyRegisterNode, !- Node 1 Name", + " NORTH ZONE, !- Node 2 Name", + " ZoneConnectionDuct; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone3ReturnConnectionLink, !- Name", + " NORTH ZONE, !- Node 1 Name", + " Zone3OutletNode, !- Node 2 Name", + " ZoneConnectionDuct; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone1Return1Link, !- Name", + " Zone1OutletNode, !- Node 1 Name", + " Zone1ReturnNode, !- Node 2 Name", + " Zone1Return, !- Component Name", + " Attic Zone; !- Thermal Zone Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone1Return2Link, !- Name", + " Zone1ReturnNode, !- Node 1 Name", + " MainMixerNode, !- Node 2 Name", + " Zone1Return, !- Component Name", + " Attic Zone; !- Thermal Zone Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone2Return1Link, !- Name", + " Zone2OutletNode, !- Node 1 Name", + " Zone2ReturnNode, !- Node 2 Name", + " Zone2Return, !- Component Name", + " Attic Zone; !- Thermal Zone Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone2Return2Link, !- Name", + " Zone2ReturnNode, !- Node 1 Name", + " MainMixerNode, !- Node 2 Name", + " Zone2Return, !- Component Name", + " Attic Zone; !- Thermal Zone Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone3Return1Link, !- Name", + " Zone3OutletNode, !- Node 1 Name", + " Zone3ReturnNode, !- Node 2 Name", + " Zone3Return, !- Component Name", + " Attic Zone; !- Thermal Zone Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone3Return2Link, !- Name", + " Zone3ReturnNode, !- Node 1 Name", + " MainMixerNode, !- Node 2 Name", + " Zone3Return, !- Component Name", + " Attic Zone; !- Thermal Zone Name", + + " AirflowNetwork:Distribution:Linkage,", + " ReturnMixerLink, !- Name", + " MainMixerNode, !- Node 1 Name", + " MainReturnNode, !- Node 2 Name", + " MixerConnectionDuct, !- Component Name", + " Attic Zone; !- Thermal Zone Name", + + " AirflowNetwork:Distribution:Linkage,", + " AirLoopReturnLink, !- Name", + " MainReturnNode, !- Node 1 Name", + " MainInletNode, !- Node 2 Name", + " AirLoopReturn; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " OASystemInletLink, !- Name", + " MainInletNode, !- Node 1 Name", + " OA System Node, !- Node 2 Name", + " ZoneConnectionDuct; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " OASystemFanLink, !- Name", + " OA Inlet Node, !- Node 1 Name", + " OA System Node, !- Node 2 Name", + " OA Fan; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " OASystemReliefLink, !- Name", + " OA System Node, !- Node 1 Name", + " OA Inlet Node, !- Node 2 Name", + " Relief Fan; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " OAMixerOutletLink, !- Name", + " OA System Node, !- Node 1 Name", + " FanInletNode, !- Node 2 Name", + " ZoneConnectionDuct; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " SupplyFanLink, !- Name", + " FanInletNode, !- Node 1 Name", + " FanOutletNode, !- Node 2 Name", + " Supply Fan 1; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " CoolingCoilLink, !- Name", + " FanOutletNode, !- Node 1 Name", + " HeatingInletNode, !- Node 2 Name", + " ACDXCoil 1; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " HeatingCoilLink, !- Name", + " HeatingInletNode, !- Node 1 Name", + " HeatingOutletNode, !- Node 2 Name", + " Main Heating Coil 1; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " EquipmentAirLoopLink, !- Name", + " HeatingOutletNode, !- Node 1 Name", + " EquipmentInletNode, !- Node 2 Name", + " AirLoopSupply; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone1ReturnLeakLink, !- Name", + " Zone1ReturnNode, !- Node 1 Name", + " OA Inlet Node, !- Node 2 Name", + " ReturnLeakELR1; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " MainSupplyLeakLink, !- Name", + " SupplyMainNode, !- Node 1 Name", + " ATTIC ZONE, !- Node 2 Name", + " MainSupplyLeak; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone1SupplyLeakLink, !- Name", + " Zone1SupplyNode, !- Node 1 Name", + " ATTIC ZONE, !- Node 2 Name", + " ZoneSupplyELR1; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone2ReturnLeakLink, !- Name", + " Zone2ReturnNode, !- Node 1 Name", + " OA Inlet Node, !- Node 2 Name", + " ReturnLeakELR2; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone3ReturnLeakLink, !- Name", + " Zone3ReturnNode, !- Node 1 Name", + " OA Inlet Node, !- Node 2 Name", + " ReturnLeakELR3; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone2SupplyLeakLink, !- Name", + " Zone2SupplyNode, !- Node 1 Name", + " ATTIC ZONE, !- Node 2 Name", + " ZoneSupplyELR2; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " Zone3SupplyLeakLink, !- Name", + " Zone3SupplyNode, !- Node 1 Name", + " ATTIC ZONE, !- Node 2 Name", + " ZoneSupplyELR3; !- Component Name", + + " AirflowNetwork:ZoneControl:PressureController,", + " PressureController, !- Name", + " NORTH ZONE, !- Control Zone Name", + " AirflowNetwork:Distribution:Component:ReliefAirFlow, !- Control Object Type", + " Relief Fan, !- Control Object Name", + " , !- Pressure Control Availability Schedule Name", + " Pressure Setpoint Schedule; !- Pressure Setpoint Schedule Name", + + " Schedule:Compact,", + " Pressure Setpoint Schedule, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 3/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,0.5, !- Field 3", + " Through: 9/30, !- Field 4", + " For: AllDays, !- Field 5", + " Until: 24:00,3.5, !- Field 6", + " Through: 12/31, !- Field 7", + " For: AllDays, !- Field 8", + " Until: 24:00,0.5; !- Field 9", + + " AirflowNetwork:Distribution:Component:OutdoorAirFlow,", + " OA Fan, !- Name", + " 0.001, !- Air Mass Flow Coefficient When the Zone Exhaust Fan is Off at Reference Conditions {kg/s}", + " 0.667; !- Air Mass Flow Exponent When the Zone Exhaust Fan is Off {dimensionless}", + + " AirflowNetwork:Distribution:Component:ReliefAirFlow,", + " Relief Fan, !- Name", + " 0.001, !- Air Mass Flow Coefficient When the Zone Exhaust Fan is Off at Reference Conditions {kg/s}", + " 0.667; !- Air Mass Flow Exponent When the Zone Exhaust Fan is Off {dimensionless}", + + " AirLoopHVAC,", + " Typical Terminal Reheat 1, !- Name", + " , !- Controller List Name", + " Reheat System 1 Avail List, !- Availability Manager List Name", + " 1.9, !- Design Supply Air Flow Rate {m3/s}", + " Air Loop Branches, !- Branch List Name", + " , !- Connector List Name", + " Air Loop Inlet Node, !- Supply Side Inlet Node Name", + " Return Air Mixer Outlet, !- Demand Side Outlet Node Name", + " Zone Equipment Inlet Node, !- Demand Side Inlet Node Names", + " Air Loop Outlet Node; !- Supply Side Outlet Node Names", + + " Fan:ZoneExhaust,", + " Zone3 Exhaust Fan, !- Name", + " On, !- Availability Schedule Name", + " 0.7, !- Fan Total Efficiency", + " 500, !- Pressure Rise {Pa}", + " 0.01, !- Maximum Flow Rate {m3/s}", + " Zone3 Exhaust Node, !- Air Inlet Node Name", + " Zone3 Exhaust Fan Outlet Node, !- Air Outlet Node Name", + " Zone Exhaust; !- End-Use Subcategory", + + " Fan:ConstantVolume,", + " Supply Fan 1, !- Name", + " FanAndCoilAvailSched, !- Availability Schedule Name", + " 0.7, !- Fan Total Efficiency", + " 600.0, !- Pressure Rise {Pa}", + " 1.9, !- Maximum Flow Rate {m3/s}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Airstream Fraction", + " Mixed Air Node, !- Air Inlet Node Name", + " Cooling Coil Air Inlet Node; !- Air Outlet Node Name", + + }); + + ASSERT_TRUE(process_idf(idf_objects)); + + using namespace EnergyPlus::DataIPShortCuts; + + lNumericFieldBlanks.allocate(1000); + lAlphaFieldBlanks.allocate(1000); + cAlphaFieldNames.allocate(1000); + cNumericFieldNames.allocate(1000); + cAlphaArgs.allocate(1000); + rNumericArgs.allocate(1000); + lNumericFieldBlanks = false; + lAlphaFieldBlanks = false; + cAlphaFieldNames = " "; + cNumericFieldNames = " "; + cAlphaArgs = " "; + rNumericArgs = 0.0; + + bool ErrorsFound = false; + // Read objects + HeatBalanceManager::GetProjectControlData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetZoneData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetWindowGlassSpectralData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetMaterialData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetConstructData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + SurfaceGeometry::GetGeometryParameters(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + + SurfaceGeometry::CosBldgRotAppGonly = 1.0; + SurfaceGeometry::SinBldgRotAppGonly = 0.0; + SurfaceGeometry::GetSurfaceData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + + // Read AirflowNetwork inputs + GetAirflowNetworkInput(); + + Real64 PresssureSet = 0.5; Schedule(UtilityRoutines::FindItemInList("PRESSURE SETPOINT SCHEDULE", Schedule({1, NumSchedules}))).CurrentValue = PresssureSet; // Pressure setpoint Schedule(UtilityRoutines::FindItemInList("FANANDCOILAVAILSCHED", Schedule({1, NumSchedules}))).CurrentValue = 1.0; // set availability and fan schedule to 1 - Schedule( UtilityRoutines::FindItemInList( "ON", Schedule( {1,NumSchedules} )) ).CurrentValue = 1.0; // On - Schedule( UtilityRoutines::FindItemInList( "VENTINGSCHED", Schedule( {1,NumSchedules} )) ).CurrentValue = 25.55; // VentingSched - Schedule( UtilityRoutines::FindItemInList( "WINDOWVENTSCHED", Schedule( {1,NumSchedules} )) ).CurrentValue = 1.0; // WindowVentSched - - AirflowNetworkFanActivated = true; - DataEnvironment::OutDryBulbTemp = -17.29025; - DataEnvironment::OutHumRat = 0.0008389; - DataEnvironment::OutBaroPress = 99063.0; - DataEnvironment::WindSpeed = 4.9; - DataEnvironment::WindDir = 270.0; - - int index = UtilityRoutines::FindItemInList("OA INLET NODE", AirflowNetworkNodeData); - for ( i = 1; i <= 36; ++i ) { - AirflowNetworkNodeSimu( i ).TZ = 23.0; - AirflowNetworkNodeSimu( i ).WZ = 0.0008400; - if ( ( i > 4 && i < 10 ) || i == index) { // NFACADE, EFACADE, SFACADE, WFACADE, HORIZONTAL are always at indexes 5 through 9 + Schedule(UtilityRoutines::FindItemInList("ON", Schedule({1, NumSchedules}))).CurrentValue = 1.0; // On + Schedule(UtilityRoutines::FindItemInList("VENTINGSCHED", Schedule({1, NumSchedules}))).CurrentValue = 25.55; // VentingSched + Schedule(UtilityRoutines::FindItemInList("WINDOWVENTSCHED", Schedule({1, NumSchedules}))).CurrentValue = 1.0; // WindowVentSched + + AirflowNetworkFanActivated = true; + DataEnvironment::OutDryBulbTemp = -17.29025; + DataEnvironment::OutHumRat = 0.0008389; + DataEnvironment::OutBaroPress = 99063.0; + DataEnvironment::WindSpeed = 4.9; + DataEnvironment::WindDir = 270.0; + + int index = UtilityRoutines::FindItemInList("OA INLET NODE", AirflowNetworkNodeData); + for (i = 1; i <= 36; ++i) { + AirflowNetworkNodeSimu(i).TZ = 23.0; + AirflowNetworkNodeSimu(i).WZ = 0.0008400; + if ((i > 4 && i < 10) || i == index) { // NFACADE, EFACADE, SFACADE, WFACADE, HORIZONTAL are always at indexes 5 through 9 AirflowNetworkNodeSimu(i).TZ = DataEnvironment::OutDryBulbTempAt(AirflowNetworkNodeData(i).NodeHeight); // AirflowNetworkNodeData vals differ - AirflowNetworkNodeSimu( i ).WZ = DataEnvironment::OutHumRat; - } - } - - // Set up node values - Node.allocate( 10 ); - if ( MultizoneCompExhaustFanData( 1 ).InletNode == 0 ) { - MultizoneCompExhaustFanData( 1 ).InletNode = 3; - } - Node( MultizoneCompExhaustFanData( 1 ).InletNode ).MassFlowRate = 0.1005046; - - if ( DisSysCompCVFData( 1 ).InletNode == 0 ) { - DisSysCompCVFData( 1 ).InletNode = 1; - } - Node( DisSysCompCVFData( 1 ).InletNode ).MassFlowRate = 2.23418088; - - if ( DisSysCompOutdoorAirData( 1 ).InletNode == 0 ) { - DisSysCompOutdoorAirData( 1 ).InletNode = 5; - DisSysCompOutdoorAirData( 1 ).OutletNode = 6; - } - Node( DisSysCompOutdoorAirData( 1 ).InletNode ).MassFlowRate = 0.5095108; - Node( DisSysCompOutdoorAirData( 1 ).OutletNode ).MassFlowRate = 0.5095108; - - if ( DisSysCompReliefAirData( 1 ).InletNode == 0 ) { - DisSysCompReliefAirData( 1 ).InletNode = 6; - DisSysCompReliefAirData( 1 ).OutletNode = 5; - } - - // Calculate mass flow rate based on pressure setpoint - CalcAirflowNetworkAirBalance( ); - - // Check indoor pressure and mass flow rate - EXPECT_NEAR( PresssureSet, AirflowNetworkNodeSimu( 3 ).PZ, 0.0001 ); - EXPECT_NEAR( 0.00255337, ReliefMassFlowRate, 0.0001 ); - - // Start a test for #5687 to report zero values of AirflowNetwork:Distribution airflow and pressure outputs when a system is off - AirflowNetworkFanActivated = false; - - AirflowNetworkExchangeData.allocate( NumOfZones ); - - UpdateAirflowNetwork( ); - - EXPECT_NEAR( 0.0, AirflowNetworkNodeSimu( 10 ).PZ, 0.0001 ); - EXPECT_NEAR( 0.0, AirflowNetworkNodeSimu( 20 ).PZ, 0.0001 ); - EXPECT_NEAR( 0.0, AirflowNetworkLinkReport( 20 ).FLOW, 0.0001 ); - EXPECT_NEAR( 0.0, AirflowNetworkLinkReport( 50 ).FLOW, 0.0001 ); - - AirflowNetworkExchangeData.deallocate( ); - - // Start a test for #6005 - ANZT = 26.0; - MultizoneSurfaceData( 2 ).HybridVentClose = true; - MultizoneSurfaceData( 5 ).HybridVentClose = true; - MultizoneSurfaceData( 14 ).HybridVentClose = true; - CalcAirflowNetworkAirBalance( ); - EXPECT_EQ( 0.0, MultizoneSurfaceData( 2 ).OpenFactor ); - EXPECT_EQ( 0.0, MultizoneSurfaceData( 5 ).OpenFactor ); - EXPECT_EQ( 0.0, MultizoneSurfaceData( 14 ).OpenFactor ); - EXPECT_EQ( 0.0, SurfaceWindow( 2 ).VentingOpenFactorMultRep ); - EXPECT_EQ( 0.0, SurfaceWindow( 5 ).VentingOpenFactorMultRep ); - EXPECT_EQ( 0.0, SurfaceWindow( 14 ).VentingOpenFactorMultRep ); - - Node.deallocate( ); - } + AirflowNetworkNodeSimu(i).WZ = DataEnvironment::OutHumRat; + } + } + + // Set up node values + Node.allocate(10); + if (MultizoneCompExhaustFanData(1).InletNode == 0) { + MultizoneCompExhaustFanData(1).InletNode = 3; + } + Node(MultizoneCompExhaustFanData(1).InletNode).MassFlowRate = 0.1005046; + + if (DisSysCompCVFData(1).InletNode == 0) { + DisSysCompCVFData(1).InletNode = 1; + } + Node(DisSysCompCVFData(1).InletNode).MassFlowRate = 2.23418088; + + if (DisSysCompOutdoorAirData(1).InletNode == 0) { + DisSysCompOutdoorAirData(1).InletNode = 5; + DisSysCompOutdoorAirData(1).OutletNode = 6; + } + Node(DisSysCompOutdoorAirData(1).InletNode).MassFlowRate = 0.5095108; + Node(DisSysCompOutdoorAirData(1).OutletNode).MassFlowRate = 0.5095108; + + if (DisSysCompReliefAirData(1).InletNode == 0) { + DisSysCompReliefAirData(1).InletNode = 6; + DisSysCompReliefAirData(1).OutletNode = 5; + } + + // Calculate mass flow rate based on pressure setpoint + CalcAirflowNetworkAirBalance(); + + // Check indoor pressure and mass flow rate + EXPECT_NEAR(PresssureSet, AirflowNetworkNodeSimu(3).PZ, 0.0001); + EXPECT_NEAR(0.00255337, ReliefMassFlowRate, 0.0001); + + // Start a test for #5687 to report zero values of AirflowNetwork:Distribution airflow and pressure outputs when a system is off + AirflowNetworkFanActivated = false; + + AirflowNetworkExchangeData.allocate(NumOfZones); + + UpdateAirflowNetwork(); + + EXPECT_NEAR(0.0, AirflowNetworkNodeSimu(10).PZ, 0.0001); + EXPECT_NEAR(0.0, AirflowNetworkNodeSimu(20).PZ, 0.0001); + EXPECT_NEAR(0.0, AirflowNetworkLinkReport(20).FLOW, 0.0001); + EXPECT_NEAR(0.0, AirflowNetworkLinkReport(50).FLOW, 0.0001); + + AirflowNetworkExchangeData.deallocate(); + + // Start a test for #6005 + ANZT = 26.0; + MultizoneSurfaceData(2).HybridVentClose = true; + MultizoneSurfaceData(5).HybridVentClose = true; + MultizoneSurfaceData(14).HybridVentClose = true; + CalcAirflowNetworkAirBalance(); + EXPECT_EQ(0.0, MultizoneSurfaceData(2).OpenFactor); + EXPECT_EQ(0.0, MultizoneSurfaceData(5).OpenFactor); + EXPECT_EQ(0.0, MultizoneSurfaceData(14).OpenFactor); + EXPECT_EQ(0.0, SurfaceWindow(2).VentingOpenFactorMultRep); + EXPECT_EQ(0.0, SurfaceWindow(5).VentingOpenFactorMultRep); + EXPECT_EQ(0.0, SurfaceWindow(14).VentingOpenFactorMultRep); + + Node.deallocate(); +} TEST_F(EnergyPlusFixture, TestZoneVentingSchWithAdaptiveCtrl) { - // Unit test for #5490 - - Zone.allocate( 1 ); - Zone( 1 ).Name = "SOFF"; - - Surface.allocate( 2 ); - Surface( 1 ).Name = "WINDOW 1"; - Surface( 1 ).Zone = 1; - Surface( 1 ).ZoneName = "SOFF"; - Surface( 1 ).Azimuth = 0.0; - Surface( 1 ).ExtBoundCond = 0; - Surface( 1 ).HeatTransSurf = true; - Surface( 1 ).Tilt = 90.0; - Surface( 1 ).Sides = 4; - Surface( 2 ).Name = "WINDOW 2"; - Surface( 2 ).Zone = 1; - Surface( 2 ).ZoneName = "SOFF"; - Surface( 2 ).Azimuth = 180.0; - Surface( 2 ).ExtBoundCond = 0; - Surface( 2 ).HeatTransSurf = true; - Surface( 2 ).Tilt = 90.0; - Surface( 2 ).Sides = 4; - - SurfaceWindow.allocate( 2 ); - SurfaceWindow( 1 ).OriginalClass = 11; - SurfaceWindow( 2 ).OriginalClass = 11; - NumOfZones = 1; - - TotPeople = 1; // Total number of people statements - People.allocate( TotPeople ); - People( 1 ).ZonePtr = 1; - People( 1 ).NumberOfPeople = 100.0; - People( 1 ).NumberOfPeoplePtr = 1; // From dataglobals, always returns a 1 for schedule value - People( 1 ).AdaptiveCEN15251 = true; - - std::string const idf_objects = delimited_string( { - "Version,8.5;", - "Schedule:Constant,OnSch,,1.0;", - "Schedule:Constant,FreeRunningSeason,,0.0;", - "Schedule:Constant,Sempre 21,,21.0;", - "AirflowNetwork:SimulationControl,", - " NaturalVentilation, !- Name", - " MultizoneWithoutDistribution, !- AirflowNetwork Control", - " SurfaceAverageCalculation, !- Wind Pressure Coefficient Type", - " , !- Height Selection for Local Wind Pressure Calculation", - " LOWRISE, !- Building Type", - " 1000, !- Maximum Number of Iterations{ dimensionless }", - " ZeroNodePressures, !- Initialization Type", - " 0.0001, !- Relative Airflow Convergence Tolerance{ dimensionless }", - " 0.0001, !- Absolute Airflow Convergence Tolerance{ kg / s }", - " -0.5, !- Convergence Acceleration Limit{ dimensionless }", - " 90, !- Azimuth Angle of Long Axis of Building{ deg }", - " 0.36; !- Ratio of Building Width Along Short Axis to Width Along Long Axis", - "AirflowNetwork:MultiZone:Zone,", - " Soff, !- Zone Name", - " CEN15251Adaptive, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " , !- Minimum Venting Open Factor{ dimensionless }", - " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", - " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", - " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", - " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", - " FreeRunningSeason; !- Venting Availability Schedule Name", - "AirflowNetwork:MultiZone:Surface,", - " window 1, !- Surface Name", - " Simple Window, !- Leakage Component Name", - " , !- External Node Name", - " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - " ZoneLevel; !- Ventilation Control Mode", - "AirflowNetwork:MultiZone:Surface,", - " window 2, !- Surface Name", - " Simple Window, !- Leakage Component Name", - " , !- External Node Name", - " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - " ZoneLevel; !- Ventilation Control Mode", - "AirflowNetwork:MultiZone:Component:SimpleOpening,", - " Simple Window, !- Name", - " 0.0010, !- Air Mass Flow Coefficient When Opening is Closed{ kg / s - m }", - " 0.65, !- Air Mass Flow Exponent When Opening is Closed{ dimensionless }", - " 0.01, !- Minimum Density Difference for Two - Way Flow{ kg / m3 }", - " 0.78; !- Discharge Coefficient{ dimensionless }", - } ); - - ASSERT_TRUE( process_idf( idf_objects) ); - - GetAirflowNetworkInput( ); - - // The original value before fix is zero. After the fix, the correct schedule number is assigned. - - //changed index 2 to 1 because in new sorted scheedule MultizoneZone(1).VentingSchName ("FREERUNNINGSEASON") - // has index 1 which is the .VentSchNum - auto GetIndex = UtilityRoutines::FindItemInList( MultizoneZoneData( 1 ).VentingSchName, Schedule( {1,NumSchedules} ) ); - EXPECT_EQ( GetIndex , MultizoneZoneData( 1 ).VentingSchNum ); - - Zone.deallocate( ); - Surface.deallocate( ); - SurfaceWindow.deallocate( ); - People.deallocate( ); - } + // Unit test for #5490 + + Zone.allocate(1); + Zone(1).Name = "SOFF"; + + Surface.allocate(2); + Surface(1).Name = "WINDOW 1"; + Surface(1).Zone = 1; + Surface(1).ZoneName = "SOFF"; + Surface(1).Azimuth = 0.0; + Surface(1).ExtBoundCond = 0; + Surface(1).HeatTransSurf = true; + Surface(1).Tilt = 90.0; + Surface(1).Sides = 4; + Surface(2).Name = "WINDOW 2"; + Surface(2).Zone = 1; + Surface(2).ZoneName = "SOFF"; + Surface(2).Azimuth = 180.0; + Surface(2).ExtBoundCond = 0; + Surface(2).HeatTransSurf = true; + Surface(2).Tilt = 90.0; + Surface(2).Sides = 4; + + SurfaceWindow.allocate(2); + SurfaceWindow(1).OriginalClass = 11; + SurfaceWindow(2).OriginalClass = 11; + NumOfZones = 1; + + TotPeople = 1; // Total number of people statements + People.allocate(TotPeople); + People(1).ZonePtr = 1; + People(1).NumberOfPeople = 100.0; + People(1).NumberOfPeoplePtr = 1; // From dataglobals, always returns a 1 for schedule value + People(1).AdaptiveCEN15251 = true; + + std::string const idf_objects = delimited_string({ + "Version,8.5;", + "Schedule:Constant,OnSch,,1.0;", + "Schedule:Constant,FreeRunningSeason,,0.0;", + "Schedule:Constant,Sempre 21,,21.0;", + "AirflowNetwork:SimulationControl,", + " NaturalVentilation, !- Name", + " MultizoneWithoutDistribution, !- AirflowNetwork Control", + " SurfaceAverageCalculation, !- Wind Pressure Coefficient Type", + " , !- Height Selection for Local Wind Pressure Calculation", + " LOWRISE, !- Building Type", + " 1000, !- Maximum Number of Iterations{ dimensionless }", + " ZeroNodePressures, !- Initialization Type", + " 0.0001, !- Relative Airflow Convergence Tolerance{ dimensionless }", + " 0.0001, !- Absolute Airflow Convergence Tolerance{ kg / s }", + " -0.5, !- Convergence Acceleration Limit{ dimensionless }", + " 90, !- Azimuth Angle of Long Axis of Building{ deg }", + " 0.36; !- Ratio of Building Width Along Short Axis to Width Along Long Axis", + "AirflowNetwork:MultiZone:Zone,", + " Soff, !- Zone Name", + " CEN15251Adaptive, !- Ventilation Control Mode", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " , !- Minimum Venting Open Factor{ dimensionless }", + " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", + " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", + " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", + " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", + " FreeRunningSeason; !- Venting Availability Schedule Name", + "AirflowNetwork:MultiZone:Surface,", + " window 1, !- Surface Name", + " Simple Window, !- Leakage Component Name", + " , !- External Node Name", + " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + " ZoneLevel; !- Ventilation Control Mode", + "AirflowNetwork:MultiZone:Surface,", + " window 2, !- Surface Name", + " Simple Window, !- Leakage Component Name", + " , !- External Node Name", + " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + " ZoneLevel; !- Ventilation Control Mode", + "AirflowNetwork:MultiZone:Component:SimpleOpening,", + " Simple Window, !- Name", + " 0.0010, !- Air Mass Flow Coefficient When Opening is Closed{ kg / s - m }", + " 0.65, !- Air Mass Flow Exponent When Opening is Closed{ dimensionless }", + " 0.01, !- Minimum Density Difference for Two - Way Flow{ kg / m3 }", + " 0.78; !- Discharge Coefficient{ dimensionless }", + }); + + ASSERT_TRUE(process_idf(idf_objects)); + + GetAirflowNetworkInput(); + + // The original value before fix is zero. After the fix, the correct schedule number is assigned. + + // changed index 2 to 1 because in new sorted scheedule MultizoneZone(1).VentingSchName ("FREERUNNINGSEASON") + // has index 1 which is the .VentSchNum + auto GetIndex = UtilityRoutines::FindItemInList(MultizoneZoneData(1).VentingSchName, Schedule({1, NumSchedules})); + EXPECT_EQ(GetIndex, MultizoneZoneData(1).VentingSchNum); + + Zone.deallocate(); + Surface.deallocate(); + SurfaceWindow.deallocate(); + People.deallocate(); +} TEST_F(EnergyPlusFixture, AirflowNetworkBalanceManagerTest_PolygonalWindows) { - // Unit test for a new feature - - Zone.allocate( 1 ); - Zone( 1 ).Name = "ZONE 1"; - - Surface.allocate( 14 ); - // Rectangular base surface - Surface( 1 ).Name = "LIVING:NORTH"; - Surface( 1 ).Zone = 1; - Surface( 1 ).ZoneName = "ZONE 1"; - Surface( 1 ).Azimuth = 180.0; - Surface( 1 ).ExtBoundCond = 0; - Surface( 1 ).HeatTransSurf = true; - Surface( 1 ).Tilt = 90.0; - Surface( 1 ).Sides = 4; - Surface( 1 ).Area = 25.17; - Surface( 1 ).Vertex.allocate( 4 ); - Surface( 1 ).Vertex( 1 ).x = 10.323; - Surface( 1 ).Vertex( 2 ).x = 10.323; - Surface( 1 ).Vertex( 3 ).x = 0.0; - Surface( 1 ).Vertex( 4 ).x = 0.0; - Surface( 1 ).Vertex( 1 ).y = 10.778; - Surface( 1 ).Vertex( 2 ).y = 10.778; - Surface( 1 ).Vertex( 3 ).y = 10.778; - Surface( 1 ).Vertex( 4 ).y = 10.778; - Surface( 1 ).Vertex( 1 ).z = 2.4384; - Surface( 1 ).Vertex( 2 ).z = 0.0; - Surface( 1 ).Vertex( 3 ).z = 0.0; - Surface( 1 ).Vertex( 4 ).z = 2.4384; - - // Rectangular base surface - Surface( 2 ).Name = "LIVING:SOUTH"; - Surface( 2 ).Zone = 1; - Surface( 2 ).ZoneName = "ZONE 1"; - Surface( 2 ).Azimuth = 0.0; - Surface( 2 ).ExtBoundCond = 0; - Surface( 2 ).HeatTransSurf = true; - Surface( 2 ).Tilt = 90.0; - Surface( 2 ).Sides = 4; - Surface( 2 ).Width = 10.323; - Surface( 2 ).Height = 2.4384; - Surface( 2 ).Area = 25.17; - Surface( 2 ).Vertex.allocate( 4 ); - Surface( 2 ).Vertex( 1 ).x = 10.323; - Surface( 2 ).Vertex( 2 ).x = 10.323; - Surface( 2 ).Vertex( 3 ).x = 0.0; - Surface( 2 ).Vertex( 4 ).x = 0.0; - Surface( 2 ).Vertex( 1 ).y = 0.0; - Surface( 2 ).Vertex( 2 ).y = 0.0; - Surface( 2 ).Vertex( 3 ).y = 0.0; - Surface( 2 ).Vertex( 4 ).y = 0.0; - Surface( 2 ).Vertex( 1 ).z = 2.4384; - Surface( 2 ).Vertex( 2 ).z = 0.0; - Surface( 2 ).Vertex( 3 ).z = 0.0; - Surface( 2 ).Vertex( 4 ).z = 2.4384; - - // Polygonal base surface - Surface( 3 ).Name = "LIVING:EAST"; - Surface( 3 ).Zone = 1; - Surface( 3 ).ZoneName = "ZONE 1"; - Surface( 3 ).Azimuth = 90.0; - Surface( 3 ).ExtBoundCond = 0; - Surface( 3 ).HeatTransSurf = true; - Surface( 3 ).Tilt = 90.0; - Surface( 3 ).Sides = 5; - Surface( 3 ).Area = 25.17; - Surface( 3 ).Vertex.allocate( 5 ); - Surface( 3 ).Vertex( 1 ).x = 10.0; - Surface( 3 ).Vertex( 2 ).x = 10.0; - Surface( 3 ).Vertex( 3 ).x = 10.0; - Surface( 3 ).Vertex( 4 ).x = 10.0; - Surface( 3 ).Vertex( 5 ).x = 10.0; - Surface( 3 ).Vertex( 1 ).y = 0.0; - Surface( 3 ).Vertex( 2 ).y = 0.0; - Surface( 3 ).Vertex( 3 ).y = 10.0; - Surface( 3 ).Vertex( 4 ).y = 10.0; - Surface( 3 ).Vertex( 5 ).y = 5.0; - Surface( 3 ).Vertex( 1 ).z = 2.0; - Surface( 3 ).Vertex( 2 ).z = 0.0; - Surface( 3 ).Vertex( 3 ).z = 0.0; - Surface( 3 ).Vertex( 4 ).z = 2.0; - Surface( 3 ).Vertex( 5 ).z = 2.5; - - // Triangular window sub surface - Surface( 4 ).Name = "NORTH:WINDOW1"; - Surface( 4 ).Zone = 1; - Surface( 4 ).ZoneName = "ZONE 1"; - Surface( 4 ).Azimuth = 180.0; - Surface( 4 ).ExtBoundCond = 0; - Surface( 4 ).HeatTransSurf = true; - Surface( 4 ).Tilt = 90.0; - Surface( 4 ).Sides = 3; - Surface( 4 ).Area = 1.0; - Surface( 4 ).BaseSurf = 1; - Surface( 4 ).Vertex.allocate( 3 ); - Surface( 4 ).Vertex( 1 ).x = 3.0; - Surface( 4 ).Vertex( 2 ).x = 3.0; - Surface( 4 ).Vertex( 3 ).x = 1.0; - Surface( 4 ).Vertex( 1 ).y = 10.778; - Surface( 4 ).Vertex( 2 ).y = 10.778; - Surface( 4 ).Vertex( 3 ).y = 10.778; - Surface( 4 ).Vertex( 1 ).z = 2.0; - Surface( 4 ).Vertex( 2 ).z = 1.0; - Surface( 4 ).Vertex( 3 ).z = 1.0; - - // Polygonal window sub surface - Surface( 5 ).Name = "NORTH:WINDOW2"; - Surface( 5 ).Zone = 1; - Surface( 5 ).ZoneName = "ZONE 1"; - Surface( 5 ).Azimuth = 180.0; - Surface( 5 ).ExtBoundCond = 0; - Surface( 5 ).HeatTransSurf = true; - Surface( 5 ).Tilt = 90.0; - Surface( 5 ).Sides = 5; - Surface( 5 ).Area = 2.5; - Surface( 5 ).BaseSurf = 1; - Surface( 5 ).Vertex.allocate( 5 ); - Surface( 5 ).Vertex( 1 ).x = 5.0; - Surface( 5 ).Vertex( 2 ).x = 5.0; - Surface( 5 ).Vertex( 3 ).x = 3.0; - Surface( 5 ).Vertex( 4 ).x = 3.0; - Surface( 5 ).Vertex( 5 ).x = 4.0; - Surface( 5 ).Vertex( 1 ).y = 10.778; - Surface( 5 ).Vertex( 2 ).y = 10.778; - Surface( 5 ).Vertex( 3 ).y = 10.778; - Surface( 5 ).Vertex( 4 ).y = 10.778; - Surface( 5 ).Vertex( 5 ).y = 10.778; - Surface( 5 ).Vertex( 1 ).z = 2.0; - Surface( 5 ).Vertex( 2 ).z = 1.0; - Surface( 5 ).Vertex( 3 ).z = 1.0; - Surface( 5 ).Vertex( 4 ).z = 2.0; - Surface( 5 ).Vertex( 5 ).z = 2.5; - - // Triangular window sub surface - Surface( 6 ).Name = "SOUTH:WINDOW1"; - Surface( 6 ).Zone = 1; - Surface( 6 ).ZoneName = "ZONE 1"; - Surface( 6 ).Azimuth = 0.0; - Surface( 6 ).ExtBoundCond = 0; - Surface( 6 ).HeatTransSurf = true; - Surface( 6 ).Tilt = 90.0; - Surface( 6 ).Sides = 3; - Surface( 6 ).Area = 0.5; - Surface( 6 ).BaseSurf = 2; - Surface( 6 ).Vertex.allocate( 3 ); - Surface( 6 ).Vertex( 1 ).x = 9.0; - Surface( 6 ).Vertex( 2 ).x = 9.0; - Surface( 6 ).Vertex( 3 ).x = 8.0; - Surface( 6 ).Vertex( 1 ).y = 0.0; - Surface( 6 ).Vertex( 2 ).y = 0.0; - Surface( 6 ).Vertex( 3 ).y = 0.0; - Surface( 6 ).Vertex( 1 ).z = 2.0; - Surface( 6 ).Vertex( 2 ).z = 1.0; - Surface( 6 ).Vertex( 3 ).z = 1.0; - - // Triangular window sub surface - Surface( 9 ).Name = "SOUTH:WINDOW2"; - Surface( 9 ).Zone = 1; - Surface( 9 ).ZoneName = "ZONE 1"; - Surface( 9 ).Azimuth = 0.0; - Surface( 9 ).ExtBoundCond = 0; - Surface( 9 ).HeatTransSurf = true; - Surface( 9 ).Tilt = 90.0; - Surface( 9 ).Sides = 3; - Surface( 9 ).Area = 0.5; - Surface( 9 ).BaseSurf = 2; - Surface( 9 ).Vertex.allocate( 3 ); - Surface( 9 ).Vertex( 1 ).x = 7.0; - Surface( 9 ).Vertex( 2 ).x = 7.0; - Surface( 9 ).Vertex( 3 ).x = 6.0; - Surface( 9 ).Vertex( 1 ).y = 0.0; - Surface( 9 ).Vertex( 2 ).y = 0.0; - Surface( 9 ).Vertex( 3 ).y = 0.0; - Surface( 9 ).Vertex( 1 ).z = 2.0; - Surface( 9 ).Vertex( 2 ).z = 1.0; - Surface( 9 ).Vertex( 3 ).z = 1.0; - - Surface( 10 ).Name = "EAST:WINDOW1"; - Surface( 10 ).Zone = 1; - Surface( 10 ).ZoneName = "ZONE 1"; - Surface( 10 ).Azimuth = 90.0; - Surface( 10 ).ExtBoundCond = 0; - Surface( 10 ).HeatTransSurf = true; - Surface( 10 ).Tilt = 90.0; - Surface( 10 ).Sides = 3; - Surface( 10 ).Area = 0.5; - Surface( 10 ).BaseSurf = 3; - Surface( 10 ).Vertex.allocate( 3 ); - Surface( 10 ).Vertex( 1 ).x = 10.0; - Surface( 10 ).Vertex( 2 ).x = 10.0; - Surface( 10 ).Vertex( 3 ).x = 10.0; - Surface( 10 ).Vertex( 1 ).y = 1.0; - Surface( 10 ).Vertex( 2 ).y = 1.0; - Surface( 10 ).Vertex( 3 ).y = 2.0; - Surface( 10 ).Vertex( 1 ).z = 2.0; - Surface( 10 ).Vertex( 2 ).z = 1.0; - Surface( 10 ).Vertex( 3 ).z = 1.0; - - // Polygonal horizontal base surface - Surface( 7 ).Name = "ROOF-POLY"; - Surface( 7 ).Zone = 1; - Surface( 7 ).ZoneName = "ZONE 1"; - Surface( 7 ).Azimuth = 0.0; - Surface( 7 ).ExtBoundCond = 0; - Surface( 7 ).HeatTransSurf = true; - Surface( 7 ).Tilt = 0.0; - Surface( 7 ).Sides = 5; - Surface( 7 ).Area = 55.0; - Surface( 7 ).Vertex.allocate( 5 ); - Surface( 7 ).Vertex( 1 ).x = 0.0; - Surface( 7 ).Vertex( 2 ).x = 0.0; - Surface( 7 ).Vertex( 3 ).x = 10.0; - Surface( 7 ).Vertex( 4 ).x = 10.0; - Surface( 7 ).Vertex( 5 ).x = 5.0; - Surface( 7 ).Vertex( 1 ).y = 10.0; - Surface( 7 ).Vertex( 2 ).y = 5.0; - Surface( 7 ).Vertex( 3 ).y = 5.0; - Surface( 7 ).Vertex( 4 ).y = 10.0; - Surface( 7 ).Vertex( 5 ).y = 11.0; - Surface( 7 ).Vertex( 1 ).z = 2.4384; - Surface( 7 ).Vertex( 2 ).z = 2.4384; - Surface( 7 ).Vertex( 3 ).z = 2.4384; - Surface( 7 ).Vertex( 4 ).z = 2.4384; - Surface( 7 ).Vertex( 5 ).z = 2.4384; - - // Polygonal horizontal base surface - Surface( 13 ).Name = "ROOF-POLY-WINDOW1"; - Surface( 13 ).Zone = 1; - Surface( 13 ).ZoneName = "ZONE 1"; - Surface( 13 ).Azimuth = 0.0; - Surface( 13 ).ExtBoundCond = 0; - Surface( 13 ).HeatTransSurf = true; - Surface( 13 ).Tilt = 0.0; - Surface( 13 ).Sides = 3; - Surface( 13 ).Area = 1; - Surface( 13 ).BaseSurf = 7; - Surface( 13 ).Vertex.allocate( 3 ); - Surface( 13 ).Vertex( 1 ).x = 8.0; - Surface( 13 ).Vertex( 2 ).x = 8.0; - Surface( 13 ).Vertex( 3 ).x = 9.0; - Surface( 13 ).Vertex( 1 ).y = 9.0; - Surface( 13 ).Vertex( 2 ).y = 7.0; - Surface( 13 ).Vertex( 3 ).y = 7.0; - Surface( 13 ).Vertex( 1 ).z = 2.4384; - Surface( 13 ).Vertex( 2 ).z = 2.4384; - Surface( 13 ).Vertex( 3 ).z = 2.4384; - - // Polygonal horizontal base surface - Surface( 14 ).Name = "ROOF-POLY-WINDOW2"; - Surface( 14 ).Zone = 1; - Surface( 14 ).ZoneName = "ZONE 1"; - Surface( 14 ).Azimuth = 0.0; - Surface( 14 ).ExtBoundCond = 0; - Surface( 14 ).HeatTransSurf = true; - Surface( 14 ).Tilt = 0.0; - Surface( 14 ).Sides = 3; - Surface( 14 ).Area = 1; - Surface( 14 ).BaseSurf = 7; - Surface( 14 ).Vertex.allocate( 3 ); - Surface( 14 ).Vertex( 1 ).x = 6.0; - Surface( 14 ).Vertex( 2 ).x = 6.0; - Surface( 14 ).Vertex( 3 ).x = 7.0; - Surface( 14 ).Vertex( 1 ).y = 9.0; - Surface( 14 ).Vertex( 2 ).y = 7.0; - Surface( 14 ).Vertex( 3 ).y = 7.0; - Surface( 14 ).Vertex( 1 ).z = 2.4384; - Surface( 14 ).Vertex( 2 ).z = 2.4384; - Surface( 14 ).Vertex( 3 ).z = 2.4384; - - // Rectangular horizontal base surface - Surface( 8 ).Name = "ROOF-REC"; - Surface( 8 ).Zone = 1; - Surface( 8 ).ZoneName = "ZONE 1"; - Surface( 8 ).Azimuth = 0.0; - Surface( 8 ).ExtBoundCond = 0; - Surface( 8 ).HeatTransSurf = true; - Surface( 8 ).Tilt = 0.0; - Surface( 8 ).Sides = 4; - Surface( 8 ).Area = 50.0; - Surface( 8 ).Width = 10.0; - Surface( 8 ).Height = 5.0; - Surface( 8 ).Vertex.allocate( 4 ); - Surface( 8 ).Vertex( 1 ).x = 0.0; - Surface( 8 ).Vertex( 2 ).x = 0.0; - Surface( 8 ).Vertex( 3 ).x = 10.0; - Surface( 8 ).Vertex( 4 ).x = 10.0; - Surface( 8 ).Vertex( 1 ).y = 5.0; - Surface( 8 ).Vertex( 2 ).y = 0.0; - Surface( 8 ).Vertex( 3 ).y = 0.0; - Surface( 8 ).Vertex( 4 ).y = 5.0; - Surface( 8 ).Vertex( 1 ).z = 2.4384; - Surface( 8 ).Vertex( 2 ).z = 2.4384; - Surface( 8 ).Vertex( 3 ).z = 2.4384; - Surface( 8 ).Vertex( 4 ).z = 2.4384; - - // Rectangular horizontal base surface - Surface( 12 ).Name = "ROOF-REC-WINDOW1"; - Surface( 12 ).Zone = 1; - Surface( 12 ).ZoneName = "ZONE 1"; - Surface( 12 ).Azimuth = 0.0; - Surface( 12 ).ExtBoundCond = 0; - Surface( 12 ).HeatTransSurf = true; - Surface( 12 ).Tilt = 0.0; - Surface( 12 ).Sides = 3; - Surface( 12 ).Area = 0.5; - Surface( 12 ).BaseSurf = 8; - Surface( 12 ).Vertex.allocate( 3 ); - Surface( 12 ).Vertex( 1 ).x = 8.0; - Surface( 12 ).Vertex( 2 ).x = 8.0; - Surface( 12 ).Vertex( 3 ).x = 9.0; - Surface( 12 ).Vertex( 1 ).y = 4.0; - Surface( 12 ).Vertex( 2 ).y = 3.0; - Surface( 12 ).Vertex( 3 ).y = 3.0; - Surface( 12 ).Vertex( 1 ).z = 2.4384; - Surface( 12 ).Vertex( 2 ).z = 2.4384; - Surface( 12 ).Vertex( 3 ).z = 2.4384; - - Surface( 11 ).Name = "ROOF-REC-WINDOW2"; - Surface( 11 ).Zone = 1; - Surface( 11 ).ZoneName = "ZONE 1"; - Surface( 11 ).Azimuth = 0.0; - Surface( 11 ).ExtBoundCond = 0; - Surface( 11 ).HeatTransSurf = true; - Surface( 11 ).Tilt = 0.0; - Surface( 11 ).Sides = 3; - Surface( 11 ).Area = 0.5; - Surface( 11 ).BaseSurf = 8; - Surface( 11 ).Vertex.allocate( 3 ); - Surface( 11 ).Vertex( 1 ).x = 7.0; - Surface( 11 ).Vertex( 2 ).x = 7.0; - Surface( 11 ).Vertex( 3 ).x = 8.0; - Surface( 11 ).Vertex( 1 ).y = 4.0; - Surface( 11 ).Vertex( 2 ).y = 3.0; - Surface( 11 ).Vertex( 3 ).y = 3.0; - Surface( 11 ).Vertex( 1 ).z = 2.4384; - Surface( 11 ).Vertex( 2 ).z = 2.4384; - Surface( 11 ).Vertex( 3 ).z = 2.4384; - - SurfaceWindow.allocate( 14 ); - SurfaceWindow( 4 ).OriginalClass = 11; - SurfaceWindow( 5 ).OriginalClass = 11; - SurfaceWindow( 6 ).OriginalClass = 11; - SurfaceWindow( 9 ).OriginalClass = 11; - SurfaceWindow( 10 ).OriginalClass = 11; - SurfaceWindow( 11 ).OriginalClass = 11; - SurfaceWindow( 12 ).OriginalClass = 11; - SurfaceWindow( 13 ).OriginalClass = 11; - SurfaceWindow( 14 ).OriginalClass = 11; - NumOfZones = 1; - - std::string const idf_objects = delimited_string( { - "Version,8.6;", - "Schedule:Constant,OnSch,,1.0;", - "Schedule:Constant,Aula people sched,,0.0;", - "Schedule:Constant,Sempre 21,,21.0;", - "AirflowNetwork:SimulationControl,", - " NaturalVentilation, !- Name", - " MultizoneWithoutDistribution, !- AirflowNetwork Control", - " SurfaceAverageCalculation, !- Wind Pressure Coefficient Type", - " , !- Height Selection for Local Wind Pressure Calculation", - " LOWRISE, !- Building Type", - " 1000, !- Maximum Number of Iterations{ dimensionless }", - " LinearInitializationMethod, !- Initialization Type", - " 0.0001, !- Relative Airflow Convergence Tolerance{ dimensionless }", - " 0.0001, !- Absolute Airflow Convergence Tolerance{ kg / s }", - " -0.5, !- Convergence Acceleration Limit{ dimensionless }", - " 90, !- Azimuth Angle of Long Axis of Building{ deg }", - " 0.36; !- Ratio of Building Width Along Short Axis to Width Along Long Axis", - "AirflowNetwork:MultiZone:Zone,", - " ZONE 1, !- Zone Name", - " Temperature, !- Ventilation Control Mode", - " Sempre 21, !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 1, !- Minimum Venting Open Factor{ dimensionless }", - " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", - " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", - " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", - " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", - " Aula people sched, !- Venting Availability Schedule Name", - " Standard; !- Single Sided Wind Pressure Coefficient Algorithm", - "AirflowNetwork:MultiZone:Surface,", - " NORTH:WINDOW1, !- Surface Name", - " Simple Window, !- Leakage Component Name", - " , !- External Node Name", - " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - " ZoneLevel, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " , !- Minimum Venting Open Factor{ dimensionless }", - " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", - " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", - " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", - " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", - " Aula people sched; !- Venting Availability Schedule Name", - "AirflowNetwork:MultiZone:Surface,", - " NORTH:WINDOW2, !- Surface Name", - " Simple Window, !- Leakage Component Name", - " , !- External Node Name", - " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - " Temperature, !- Ventilation Control Mode", - " Sempre 21, !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 1, !- Minimum Venting Open Factor{ dimensionless }", - " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", - " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", - " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", - " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", - " Aula people sched; !- Venting Availability Schedule Name", - "AirflowNetwork:MultiZone:Surface,", - " SOUTH:WINDOW1, !- Surface Name", - " Simple Window, !- Leakage Component Name", - " , !- External Node Name", - " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - " ZoneLevel, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " , !- Minimum Venting Open Factor{ dimensionless }", - " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", - " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", - " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", - " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", - " Aula people sched, !- Venting Availability Schedule Name", - " , !- Occupant Ventilation Control Name", - " BaseSurfaceAspectRatio; !- Equivalent Rectangle Method", - "AirflowNetwork:MultiZone:Surface,", - " SOUTH:WINDOW2, !- Surface Name", - " Simple Window, !- Leakage Component Name", - " , !- External Node Name", - " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - " Temperature, !- Ventilation Control Mode", - " Sempre 21, !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 1, !- Minimum Venting Open Factor{ dimensionless }", - " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", - " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", - " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", - " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", - " Aula people sched, !- Venting Availability Schedule Name", - " , !- Occupant Ventilation Control Name", - " UserDefinedAspectRatio, !- Equivalent Rectangle Method", - " 1.0; !- Equivalent Rectangle Aspect Ratio", - "AirflowNetwork:MultiZone:Surface,", - " EAST:WINDOW1, !- Surface Name", - " Simple Window, !- Leakage Component Name", - " , !- External Node Name", - " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - " ZoneLevel, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " , !- Minimum Venting Open Factor{ dimensionless }", - " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", - " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", - " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", - " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", - " Aula people sched, !- Venting Availability Schedule Name", - " , !- Occupant Ventilation Control Name", - " BaseSurfaceAspectRatio; !- Equivalent Rectangle Method", - - "AirflowNetwork:MultiZone:Surface,", - " ROOF-REC-WINDOW1, !- Surface Name", - " CR-1, !- Leakage Component Name", - " , !- External Node Name", - " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - " ZoneLevel, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " , !- Minimum Venting Open Factor{ dimensionless }", - " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", - " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", - " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", - " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", - " Aula people sched; !- Venting Availability Schedule Name", - "AirflowNetwork:MultiZone:Surface,", - " ROOF-REC-WINDOW2, !- Surface Name", - " CR-1, !- Leakage Component Name", - " , !- External Node Name", - " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - " ZoneLevel, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " , !- Minimum Venting Open Factor{ dimensionless }", - " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", - " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", - " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", - " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", - " Aula people sched, !- Venting Availability Schedule Name", - " , !- Occupant Ventilation Control Name", - " BaseSurfaceAspectRatio; !- Equivalent Rectangle Method", - - "AirflowNetwork:MultiZone:Surface,", - " ROOF-POLY-WINDOW1, !- Surface Name", - " CR-1, !- Leakage Component Name", - " , !- External Node Name", - " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - " ZoneLevel, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " , !- Minimum Venting Open Factor{ dimensionless }", - " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", - " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", - " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", - " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", - " Aula people sched, !- Venting Availability Schedule Name", - " , !- Occupant Ventilation Control Name", - " BaseSurfaceAspectRatio; !- Equivalent Rectangle Method", - "AirflowNetwork:MultiZone:Surface,", - " ROOF-POLY-WINDOW2, !- Surface Name", - " CR-1, !- Leakage Component Name", - " , !- External Node Name", - " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - " ZoneLevel, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " , !- Minimum Venting Open Factor{ dimensionless }", - " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", - " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", - " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", - " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", - " Aula people sched; !- Venting Availability Schedule Name", - - "AirflowNetwork:MultiZone:Component:SimpleOpening,", - " Simple Window, !- Name", - " 0.0010, !- Air Mass Flow Coefficient When Opening is Closed{ kg / s - m }", - " 0.65, !- Air Mass Flow Exponent When Opening is Closed{ dimensionless }", - " 0.01, !- Minimum Density Difference for Two - Way Flow{ kg / m3 }", - " 0.78; !- Discharge Coefficient{ dimensionless }", - "AirflowNetwork:MultiZone:Surface:Crack,", - " CR-1, !- Name", - " 0.05, !- Air Mass Flow Coefficient at Reference Conditions{ kg / s }", - " 0.667; !- Air Mass Flow Exponent{ dimensionless }", - - } ); - - ASSERT_TRUE( process_idf( idf_objects ) ); - - GetAirflowNetworkInput( ); - - // Choice: Height; Base Surface: Vertical Rectangular - EXPECT_NEAR( 1.0, MultizoneSurfaceData( 1 ).Width, 0.0001 ); - EXPECT_NEAR( 1.0, MultizoneSurfaceData( 1 ).Height, 0.0001 ); - // Choice: Height; Base Surface: Vertical Polygon - EXPECT_NEAR( 1.666667, MultizoneSurfaceData( 2 ).Width, 0.0001 ); - EXPECT_NEAR( 1.5, MultizoneSurfaceData( 2 ).Height, 0.0001 ); - // Choice: Base aspect ratio; Base Surface: Vertical Rectangular - EXPECT_NEAR( 1.454907, MultizoneSurfaceData( 3 ).Width, 0.0001 ); - EXPECT_NEAR( 0.343664, MultizoneSurfaceData( 3 ).Height, 0.0001 ); - // Choice: User aspect ratio; Base Surface: Vertical Rectangular - EXPECT_NEAR( 0.70711, MultizoneSurfaceData( 4 ).Width, 0.0001 ); - EXPECT_NEAR( 0.70711, MultizoneSurfaceData( 4 ).Height, 0.0001 ); - // Choice: Base aspect ratio --> Height; Base Surface: Vertical Polygon - EXPECT_NEAR( 0.5, MultizoneSurfaceData( 5 ).Width, 0.0001 ); - EXPECT_NEAR( 1.0, MultizoneSurfaceData( 5 ).Height, 0.0001 ); - // Choice: Height --> Base aspect ratio; Base Surface: Horizontal Rectangular - EXPECT_NEAR( 1.0, MultizoneSurfaceData( 6 ).Width, 0.0001 ); - EXPECT_NEAR( 0.5, MultizoneSurfaceData( 6 ).Height, 0.0001 ); - // Choice: Base aspect ratio; Base Surface: Horizontal Rectangular - EXPECT_NEAR( 1.0, MultizoneSurfaceData( 7 ).Width, 0.0001 ); - EXPECT_NEAR( 0.5, MultizoneSurfaceData( 7 ).Height, 0.0001 ); - // Choice: Base aspect ratio --> User Aspect Ratio; Base Surface: Horizontal Polygon - EXPECT_NEAR( 1.0, MultizoneSurfaceData( 8 ).Width, 0.0001 ); - EXPECT_NEAR( 1.0, MultizoneSurfaceData( 8 ).Height, 0.0001 ); - // Choice: Height --> User Aspect Ratio; Base Surface: Horizontal Polygon - EXPECT_NEAR( 1.0, MultizoneSurfaceData( 9 ).Width, 0.0001 ); - EXPECT_NEAR( 1.0, MultizoneSurfaceData( 9 ).Height, 0.0001 ); - - Zone.deallocate( ); - Surface.deallocate( ); - SurfaceWindow.deallocate( ); - } + // Unit test for a new feature + + Zone.allocate(1); + Zone(1).Name = "ZONE 1"; + + Surface.allocate(14); + // Rectangular base surface + Surface(1).Name = "LIVING:NORTH"; + Surface(1).Zone = 1; + Surface(1).ZoneName = "ZONE 1"; + Surface(1).Azimuth = 180.0; + Surface(1).ExtBoundCond = 0; + Surface(1).HeatTransSurf = true; + Surface(1).Tilt = 90.0; + Surface(1).Sides = 4; + Surface(1).Area = 25.17; + Surface(1).Vertex.allocate(4); + Surface(1).Vertex(1).x = 10.323; + Surface(1).Vertex(2).x = 10.323; + Surface(1).Vertex(3).x = 0.0; + Surface(1).Vertex(4).x = 0.0; + Surface(1).Vertex(1).y = 10.778; + Surface(1).Vertex(2).y = 10.778; + Surface(1).Vertex(3).y = 10.778; + Surface(1).Vertex(4).y = 10.778; + Surface(1).Vertex(1).z = 2.4384; + Surface(1).Vertex(2).z = 0.0; + Surface(1).Vertex(3).z = 0.0; + Surface(1).Vertex(4).z = 2.4384; + + // Rectangular base surface + Surface(2).Name = "LIVING:SOUTH"; + Surface(2).Zone = 1; + Surface(2).ZoneName = "ZONE 1"; + Surface(2).Azimuth = 0.0; + Surface(2).ExtBoundCond = 0; + Surface(2).HeatTransSurf = true; + Surface(2).Tilt = 90.0; + Surface(2).Sides = 4; + Surface(2).Width = 10.323; + Surface(2).Height = 2.4384; + Surface(2).Area = 25.17; + Surface(2).Vertex.allocate(4); + Surface(2).Vertex(1).x = 10.323; + Surface(2).Vertex(2).x = 10.323; + Surface(2).Vertex(3).x = 0.0; + Surface(2).Vertex(4).x = 0.0; + Surface(2).Vertex(1).y = 0.0; + Surface(2).Vertex(2).y = 0.0; + Surface(2).Vertex(3).y = 0.0; + Surface(2).Vertex(4).y = 0.0; + Surface(2).Vertex(1).z = 2.4384; + Surface(2).Vertex(2).z = 0.0; + Surface(2).Vertex(3).z = 0.0; + Surface(2).Vertex(4).z = 2.4384; + + // Polygonal base surface + Surface(3).Name = "LIVING:EAST"; + Surface(3).Zone = 1; + Surface(3).ZoneName = "ZONE 1"; + Surface(3).Azimuth = 90.0; + Surface(3).ExtBoundCond = 0; + Surface(3).HeatTransSurf = true; + Surface(3).Tilt = 90.0; + Surface(3).Sides = 5; + Surface(3).Area = 25.17; + Surface(3).Vertex.allocate(5); + Surface(3).Vertex(1).x = 10.0; + Surface(3).Vertex(2).x = 10.0; + Surface(3).Vertex(3).x = 10.0; + Surface(3).Vertex(4).x = 10.0; + Surface(3).Vertex(5).x = 10.0; + Surface(3).Vertex(1).y = 0.0; + Surface(3).Vertex(2).y = 0.0; + Surface(3).Vertex(3).y = 10.0; + Surface(3).Vertex(4).y = 10.0; + Surface(3).Vertex(5).y = 5.0; + Surface(3).Vertex(1).z = 2.0; + Surface(3).Vertex(2).z = 0.0; + Surface(3).Vertex(3).z = 0.0; + Surface(3).Vertex(4).z = 2.0; + Surface(3).Vertex(5).z = 2.5; + + // Triangular window sub surface + Surface(4).Name = "NORTH:WINDOW1"; + Surface(4).Zone = 1; + Surface(4).ZoneName = "ZONE 1"; + Surface(4).Azimuth = 180.0; + Surface(4).ExtBoundCond = 0; + Surface(4).HeatTransSurf = true; + Surface(4).Tilt = 90.0; + Surface(4).Sides = 3; + Surface(4).Area = 1.0; + Surface(4).BaseSurf = 1; + Surface(4).Vertex.allocate(3); + Surface(4).Vertex(1).x = 3.0; + Surface(4).Vertex(2).x = 3.0; + Surface(4).Vertex(3).x = 1.0; + Surface(4).Vertex(1).y = 10.778; + Surface(4).Vertex(2).y = 10.778; + Surface(4).Vertex(3).y = 10.778; + Surface(4).Vertex(1).z = 2.0; + Surface(4).Vertex(2).z = 1.0; + Surface(4).Vertex(3).z = 1.0; + + // Polygonal window sub surface + Surface(5).Name = "NORTH:WINDOW2"; + Surface(5).Zone = 1; + Surface(5).ZoneName = "ZONE 1"; + Surface(5).Azimuth = 180.0; + Surface(5).ExtBoundCond = 0; + Surface(5).HeatTransSurf = true; + Surface(5).Tilt = 90.0; + Surface(5).Sides = 5; + Surface(5).Area = 2.5; + Surface(5).BaseSurf = 1; + Surface(5).Vertex.allocate(5); + Surface(5).Vertex(1).x = 5.0; + Surface(5).Vertex(2).x = 5.0; + Surface(5).Vertex(3).x = 3.0; + Surface(5).Vertex(4).x = 3.0; + Surface(5).Vertex(5).x = 4.0; + Surface(5).Vertex(1).y = 10.778; + Surface(5).Vertex(2).y = 10.778; + Surface(5).Vertex(3).y = 10.778; + Surface(5).Vertex(4).y = 10.778; + Surface(5).Vertex(5).y = 10.778; + Surface(5).Vertex(1).z = 2.0; + Surface(5).Vertex(2).z = 1.0; + Surface(5).Vertex(3).z = 1.0; + Surface(5).Vertex(4).z = 2.0; + Surface(5).Vertex(5).z = 2.5; + + // Triangular window sub surface + Surface(6).Name = "SOUTH:WINDOW1"; + Surface(6).Zone = 1; + Surface(6).ZoneName = "ZONE 1"; + Surface(6).Azimuth = 0.0; + Surface(6).ExtBoundCond = 0; + Surface(6).HeatTransSurf = true; + Surface(6).Tilt = 90.0; + Surface(6).Sides = 3; + Surface(6).Area = 0.5; + Surface(6).BaseSurf = 2; + Surface(6).Vertex.allocate(3); + Surface(6).Vertex(1).x = 9.0; + Surface(6).Vertex(2).x = 9.0; + Surface(6).Vertex(3).x = 8.0; + Surface(6).Vertex(1).y = 0.0; + Surface(6).Vertex(2).y = 0.0; + Surface(6).Vertex(3).y = 0.0; + Surface(6).Vertex(1).z = 2.0; + Surface(6).Vertex(2).z = 1.0; + Surface(6).Vertex(3).z = 1.0; + + // Triangular window sub surface + Surface(9).Name = "SOUTH:WINDOW2"; + Surface(9).Zone = 1; + Surface(9).ZoneName = "ZONE 1"; + Surface(9).Azimuth = 0.0; + Surface(9).ExtBoundCond = 0; + Surface(9).HeatTransSurf = true; + Surface(9).Tilt = 90.0; + Surface(9).Sides = 3; + Surface(9).Area = 0.5; + Surface(9).BaseSurf = 2; + Surface(9).Vertex.allocate(3); + Surface(9).Vertex(1).x = 7.0; + Surface(9).Vertex(2).x = 7.0; + Surface(9).Vertex(3).x = 6.0; + Surface(9).Vertex(1).y = 0.0; + Surface(9).Vertex(2).y = 0.0; + Surface(9).Vertex(3).y = 0.0; + Surface(9).Vertex(1).z = 2.0; + Surface(9).Vertex(2).z = 1.0; + Surface(9).Vertex(3).z = 1.0; + + Surface(10).Name = "EAST:WINDOW1"; + Surface(10).Zone = 1; + Surface(10).ZoneName = "ZONE 1"; + Surface(10).Azimuth = 90.0; + Surface(10).ExtBoundCond = 0; + Surface(10).HeatTransSurf = true; + Surface(10).Tilt = 90.0; + Surface(10).Sides = 3; + Surface(10).Area = 0.5; + Surface(10).BaseSurf = 3; + Surface(10).Vertex.allocate(3); + Surface(10).Vertex(1).x = 10.0; + Surface(10).Vertex(2).x = 10.0; + Surface(10).Vertex(3).x = 10.0; + Surface(10).Vertex(1).y = 1.0; + Surface(10).Vertex(2).y = 1.0; + Surface(10).Vertex(3).y = 2.0; + Surface(10).Vertex(1).z = 2.0; + Surface(10).Vertex(2).z = 1.0; + Surface(10).Vertex(3).z = 1.0; + + // Polygonal horizontal base surface + Surface(7).Name = "ROOF-POLY"; + Surface(7).Zone = 1; + Surface(7).ZoneName = "ZONE 1"; + Surface(7).Azimuth = 0.0; + Surface(7).ExtBoundCond = 0; + Surface(7).HeatTransSurf = true; + Surface(7).Tilt = 0.0; + Surface(7).Sides = 5; + Surface(7).Area = 55.0; + Surface(7).Vertex.allocate(5); + Surface(7).Vertex(1).x = 0.0; + Surface(7).Vertex(2).x = 0.0; + Surface(7).Vertex(3).x = 10.0; + Surface(7).Vertex(4).x = 10.0; + Surface(7).Vertex(5).x = 5.0; + Surface(7).Vertex(1).y = 10.0; + Surface(7).Vertex(2).y = 5.0; + Surface(7).Vertex(3).y = 5.0; + Surface(7).Vertex(4).y = 10.0; + Surface(7).Vertex(5).y = 11.0; + Surface(7).Vertex(1).z = 2.4384; + Surface(7).Vertex(2).z = 2.4384; + Surface(7).Vertex(3).z = 2.4384; + Surface(7).Vertex(4).z = 2.4384; + Surface(7).Vertex(5).z = 2.4384; + + // Polygonal horizontal base surface + Surface(13).Name = "ROOF-POLY-WINDOW1"; + Surface(13).Zone = 1; + Surface(13).ZoneName = "ZONE 1"; + Surface(13).Azimuth = 0.0; + Surface(13).ExtBoundCond = 0; + Surface(13).HeatTransSurf = true; + Surface(13).Tilt = 0.0; + Surface(13).Sides = 3; + Surface(13).Area = 1; + Surface(13).BaseSurf = 7; + Surface(13).Vertex.allocate(3); + Surface(13).Vertex(1).x = 8.0; + Surface(13).Vertex(2).x = 8.0; + Surface(13).Vertex(3).x = 9.0; + Surface(13).Vertex(1).y = 9.0; + Surface(13).Vertex(2).y = 7.0; + Surface(13).Vertex(3).y = 7.0; + Surface(13).Vertex(1).z = 2.4384; + Surface(13).Vertex(2).z = 2.4384; + Surface(13).Vertex(3).z = 2.4384; + + // Polygonal horizontal base surface + Surface(14).Name = "ROOF-POLY-WINDOW2"; + Surface(14).Zone = 1; + Surface(14).ZoneName = "ZONE 1"; + Surface(14).Azimuth = 0.0; + Surface(14).ExtBoundCond = 0; + Surface(14).HeatTransSurf = true; + Surface(14).Tilt = 0.0; + Surface(14).Sides = 3; + Surface(14).Area = 1; + Surface(14).BaseSurf = 7; + Surface(14).Vertex.allocate(3); + Surface(14).Vertex(1).x = 6.0; + Surface(14).Vertex(2).x = 6.0; + Surface(14).Vertex(3).x = 7.0; + Surface(14).Vertex(1).y = 9.0; + Surface(14).Vertex(2).y = 7.0; + Surface(14).Vertex(3).y = 7.0; + Surface(14).Vertex(1).z = 2.4384; + Surface(14).Vertex(2).z = 2.4384; + Surface(14).Vertex(3).z = 2.4384; + + // Rectangular horizontal base surface + Surface(8).Name = "ROOF-REC"; + Surface(8).Zone = 1; + Surface(8).ZoneName = "ZONE 1"; + Surface(8).Azimuth = 0.0; + Surface(8).ExtBoundCond = 0; + Surface(8).HeatTransSurf = true; + Surface(8).Tilt = 0.0; + Surface(8).Sides = 4; + Surface(8).Area = 50.0; + Surface(8).Width = 10.0; + Surface(8).Height = 5.0; + Surface(8).Vertex.allocate(4); + Surface(8).Vertex(1).x = 0.0; + Surface(8).Vertex(2).x = 0.0; + Surface(8).Vertex(3).x = 10.0; + Surface(8).Vertex(4).x = 10.0; + Surface(8).Vertex(1).y = 5.0; + Surface(8).Vertex(2).y = 0.0; + Surface(8).Vertex(3).y = 0.0; + Surface(8).Vertex(4).y = 5.0; + Surface(8).Vertex(1).z = 2.4384; + Surface(8).Vertex(2).z = 2.4384; + Surface(8).Vertex(3).z = 2.4384; + Surface(8).Vertex(4).z = 2.4384; + + // Rectangular horizontal base surface + Surface(12).Name = "ROOF-REC-WINDOW1"; + Surface(12).Zone = 1; + Surface(12).ZoneName = "ZONE 1"; + Surface(12).Azimuth = 0.0; + Surface(12).ExtBoundCond = 0; + Surface(12).HeatTransSurf = true; + Surface(12).Tilt = 0.0; + Surface(12).Sides = 3; + Surface(12).Area = 0.5; + Surface(12).BaseSurf = 8; + Surface(12).Vertex.allocate(3); + Surface(12).Vertex(1).x = 8.0; + Surface(12).Vertex(2).x = 8.0; + Surface(12).Vertex(3).x = 9.0; + Surface(12).Vertex(1).y = 4.0; + Surface(12).Vertex(2).y = 3.0; + Surface(12).Vertex(3).y = 3.0; + Surface(12).Vertex(1).z = 2.4384; + Surface(12).Vertex(2).z = 2.4384; + Surface(12).Vertex(3).z = 2.4384; + + Surface(11).Name = "ROOF-REC-WINDOW2"; + Surface(11).Zone = 1; + Surface(11).ZoneName = "ZONE 1"; + Surface(11).Azimuth = 0.0; + Surface(11).ExtBoundCond = 0; + Surface(11).HeatTransSurf = true; + Surface(11).Tilt = 0.0; + Surface(11).Sides = 3; + Surface(11).Area = 0.5; + Surface(11).BaseSurf = 8; + Surface(11).Vertex.allocate(3); + Surface(11).Vertex(1).x = 7.0; + Surface(11).Vertex(2).x = 7.0; + Surface(11).Vertex(3).x = 8.0; + Surface(11).Vertex(1).y = 4.0; + Surface(11).Vertex(2).y = 3.0; + Surface(11).Vertex(3).y = 3.0; + Surface(11).Vertex(1).z = 2.4384; + Surface(11).Vertex(2).z = 2.4384; + Surface(11).Vertex(3).z = 2.4384; + + SurfaceWindow.allocate(14); + SurfaceWindow(4).OriginalClass = 11; + SurfaceWindow(5).OriginalClass = 11; + SurfaceWindow(6).OriginalClass = 11; + SurfaceWindow(9).OriginalClass = 11; + SurfaceWindow(10).OriginalClass = 11; + SurfaceWindow(11).OriginalClass = 11; + SurfaceWindow(12).OriginalClass = 11; + SurfaceWindow(13).OriginalClass = 11; + SurfaceWindow(14).OriginalClass = 11; + NumOfZones = 1; + + std::string const idf_objects = delimited_string({ + "Version,8.6;", + "Schedule:Constant,OnSch,,1.0;", + "Schedule:Constant,Aula people sched,,0.0;", + "Schedule:Constant,Sempre 21,,21.0;", + "AirflowNetwork:SimulationControl,", + " NaturalVentilation, !- Name", + " MultizoneWithoutDistribution, !- AirflowNetwork Control", + " SurfaceAverageCalculation, !- Wind Pressure Coefficient Type", + " , !- Height Selection for Local Wind Pressure Calculation", + " LOWRISE, !- Building Type", + " 1000, !- Maximum Number of Iterations{ dimensionless }", + " LinearInitializationMethod, !- Initialization Type", + " 0.0001, !- Relative Airflow Convergence Tolerance{ dimensionless }", + " 0.0001, !- Absolute Airflow Convergence Tolerance{ kg / s }", + " -0.5, !- Convergence Acceleration Limit{ dimensionless }", + " 90, !- Azimuth Angle of Long Axis of Building{ deg }", + " 0.36; !- Ratio of Building Width Along Short Axis to Width Along Long Axis", + "AirflowNetwork:MultiZone:Zone,", + " ZONE 1, !- Zone Name", + " Temperature, !- Ventilation Control Mode", + " Sempre 21, !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " 1, !- Minimum Venting Open Factor{ dimensionless }", + " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", + " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", + " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", + " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", + " Aula people sched, !- Venting Availability Schedule Name", + " Standard; !- Single Sided Wind Pressure Coefficient Algorithm", + "AirflowNetwork:MultiZone:Surface,", + " NORTH:WINDOW1, !- Surface Name", + " Simple Window, !- Leakage Component Name", + " , !- External Node Name", + " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + " ZoneLevel, !- Ventilation Control Mode", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " , !- Minimum Venting Open Factor{ dimensionless }", + " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", + " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", + " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", + " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", + " Aula people sched; !- Venting Availability Schedule Name", + "AirflowNetwork:MultiZone:Surface,", + " NORTH:WINDOW2, !- Surface Name", + " Simple Window, !- Leakage Component Name", + " , !- External Node Name", + " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + " Temperature, !- Ventilation Control Mode", + " Sempre 21, !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " 1, !- Minimum Venting Open Factor{ dimensionless }", + " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", + " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", + " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", + " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", + " Aula people sched; !- Venting Availability Schedule Name", + "AirflowNetwork:MultiZone:Surface,", + " SOUTH:WINDOW1, !- Surface Name", + " Simple Window, !- Leakage Component Name", + " , !- External Node Name", + " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + " ZoneLevel, !- Ventilation Control Mode", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " , !- Minimum Venting Open Factor{ dimensionless }", + " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", + " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", + " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", + " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", + " Aula people sched, !- Venting Availability Schedule Name", + " , !- Occupant Ventilation Control Name", + " BaseSurfaceAspectRatio; !- Equivalent Rectangle Method", + "AirflowNetwork:MultiZone:Surface,", + " SOUTH:WINDOW2, !- Surface Name", + " Simple Window, !- Leakage Component Name", + " , !- External Node Name", + " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + " Temperature, !- Ventilation Control Mode", + " Sempre 21, !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " 1, !- Minimum Venting Open Factor{ dimensionless }", + " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", + " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", + " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", + " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", + " Aula people sched, !- Venting Availability Schedule Name", + " , !- Occupant Ventilation Control Name", + " UserDefinedAspectRatio, !- Equivalent Rectangle Method", + " 1.0; !- Equivalent Rectangle Aspect Ratio", + "AirflowNetwork:MultiZone:Surface,", + " EAST:WINDOW1, !- Surface Name", + " Simple Window, !- Leakage Component Name", + " , !- External Node Name", + " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + " ZoneLevel, !- Ventilation Control Mode", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " , !- Minimum Venting Open Factor{ dimensionless }", + " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", + " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", + " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", + " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", + " Aula people sched, !- Venting Availability Schedule Name", + " , !- Occupant Ventilation Control Name", + " BaseSurfaceAspectRatio; !- Equivalent Rectangle Method", + + "AirflowNetwork:MultiZone:Surface,", + " ROOF-REC-WINDOW1, !- Surface Name", + " CR-1, !- Leakage Component Name", + " , !- External Node Name", + " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + " ZoneLevel, !- Ventilation Control Mode", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " , !- Minimum Venting Open Factor{ dimensionless }", + " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", + " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", + " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", + " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", + " Aula people sched; !- Venting Availability Schedule Name", + "AirflowNetwork:MultiZone:Surface,", + " ROOF-REC-WINDOW2, !- Surface Name", + " CR-1, !- Leakage Component Name", + " , !- External Node Name", + " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + " ZoneLevel, !- Ventilation Control Mode", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " , !- Minimum Venting Open Factor{ dimensionless }", + " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", + " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", + " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", + " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", + " Aula people sched, !- Venting Availability Schedule Name", + " , !- Occupant Ventilation Control Name", + " BaseSurfaceAspectRatio; !- Equivalent Rectangle Method", + + "AirflowNetwork:MultiZone:Surface,", + " ROOF-POLY-WINDOW1, !- Surface Name", + " CR-1, !- Leakage Component Name", + " , !- External Node Name", + " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + " ZoneLevel, !- Ventilation Control Mode", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " , !- Minimum Venting Open Factor{ dimensionless }", + " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", + " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", + " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", + " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", + " Aula people sched, !- Venting Availability Schedule Name", + " , !- Occupant Ventilation Control Name", + " BaseSurfaceAspectRatio; !- Equivalent Rectangle Method", + "AirflowNetwork:MultiZone:Surface,", + " ROOF-POLY-WINDOW2, !- Surface Name", + " CR-1, !- Leakage Component Name", + " , !- External Node Name", + " 1, !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + " ZoneLevel, !- Ventilation Control Mode", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " , !- Minimum Venting Open Factor{ dimensionless }", + " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor{ deltaC }", + " 100, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor{ deltaC }", + " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor{ deltaJ / kg }", + " 300000, !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor{ deltaJ / kg }", + " Aula people sched; !- Venting Availability Schedule Name", + + "AirflowNetwork:MultiZone:Component:SimpleOpening,", + " Simple Window, !- Name", + " 0.0010, !- Air Mass Flow Coefficient When Opening is Closed{ kg / s - m }", + " 0.65, !- Air Mass Flow Exponent When Opening is Closed{ dimensionless }", + " 0.01, !- Minimum Density Difference for Two - Way Flow{ kg / m3 }", + " 0.78; !- Discharge Coefficient{ dimensionless }", + "AirflowNetwork:MultiZone:Surface:Crack,", + " CR-1, !- Name", + " 0.05, !- Air Mass Flow Coefficient at Reference Conditions{ kg / s }", + " 0.667; !- Air Mass Flow Exponent{ dimensionless }", + + }); + + ASSERT_TRUE(process_idf(idf_objects)); + + GetAirflowNetworkInput(); + + // Choice: Height; Base Surface: Vertical Rectangular + EXPECT_NEAR(1.0, MultizoneSurfaceData(1).Width, 0.0001); + EXPECT_NEAR(1.0, MultizoneSurfaceData(1).Height, 0.0001); + // Choice: Height; Base Surface: Vertical Polygon + EXPECT_NEAR(1.666667, MultizoneSurfaceData(2).Width, 0.0001); + EXPECT_NEAR(1.5, MultizoneSurfaceData(2).Height, 0.0001); + // Choice: Base aspect ratio; Base Surface: Vertical Rectangular + EXPECT_NEAR(1.454907, MultizoneSurfaceData(3).Width, 0.0001); + EXPECT_NEAR(0.343664, MultizoneSurfaceData(3).Height, 0.0001); + // Choice: User aspect ratio; Base Surface: Vertical Rectangular + EXPECT_NEAR(0.70711, MultizoneSurfaceData(4).Width, 0.0001); + EXPECT_NEAR(0.70711, MultizoneSurfaceData(4).Height, 0.0001); + // Choice: Base aspect ratio --> Height; Base Surface: Vertical Polygon + EXPECT_NEAR(0.5, MultizoneSurfaceData(5).Width, 0.0001); + EXPECT_NEAR(1.0, MultizoneSurfaceData(5).Height, 0.0001); + // Choice: Height --> Base aspect ratio; Base Surface: Horizontal Rectangular + EXPECT_NEAR(1.0, MultizoneSurfaceData(6).Width, 0.0001); + EXPECT_NEAR(0.5, MultizoneSurfaceData(6).Height, 0.0001); + // Choice: Base aspect ratio; Base Surface: Horizontal Rectangular + EXPECT_NEAR(1.0, MultizoneSurfaceData(7).Width, 0.0001); + EXPECT_NEAR(0.5, MultizoneSurfaceData(7).Height, 0.0001); + // Choice: Base aspect ratio --> User Aspect Ratio; Base Surface: Horizontal Polygon + EXPECT_NEAR(1.0, MultizoneSurfaceData(8).Width, 0.0001); + EXPECT_NEAR(1.0, MultizoneSurfaceData(8).Height, 0.0001); + // Choice: Height --> User Aspect Ratio; Base Surface: Horizontal Polygon + EXPECT_NEAR(1.0, MultizoneSurfaceData(9).Width, 0.0001); + EXPECT_NEAR(1.0, MultizoneSurfaceData(9).Height, 0.0001); + + Zone.deallocate(); + Surface.deallocate(); + SurfaceWindow.deallocate(); +} TEST_F(EnergyPlusFixture, AirflowNetworkBalanceManager_AFNUserDefinedDuctViewFactors) { - std::string const idf_objects = delimited_string( { - " Version,8.9;", - - " SimulationControl,", - " No, !- Do Zone Sizing Calculation", - " No, !- Do System Sizing Calculation", - " No, !- Do Plant Sizing Calculation", - " No, !- Run Simulation for Sizing Periods", - " Yes; !- Run Simulation for Weather File Run Periods", - - " Building,", - " Exercise 1A, !- Name", - " 0.0, !- North Axis {deg}", - " Country, !- Terrain", - " 0.04, !- Loads Convergence Tolerance Value", - " 0.4, !- Temperature Convergence Tolerance Value {deltaC}", - " FullInteriorAndExterior, !- Solar Distribution", - " , !- Maximum Number of Warmup Days", - " 6; !- Minimum Number of Warmup Days", - - " ShadowCalculation,", - " AverageOverDaysInFrequency, !- Calculation Method", - " 20; !- Calculation Frequency", - - " SurfaceConvectionAlgorithm:Inside,", - " TARP; !- Algorithm", - - " SurfaceConvectionAlgorithm:Outside,", - " TARP; !- Algorithm", - - " HeatBalanceAlgorithm,", - " ConductionTransferFunction; !- Algorithm", - - " Timestep,", - " 4; !- Number of Timesteps per Hour", - - " Site:Location,", - " Pheonix, !- Name", - " 33.43, !- Latitude {deg}", - " -112.02, !- Longitude {deg}", - " -7.0, !- Time Zone {hr}", - " 339.0; !- Elevation {m}", - - " SizingPeriod:DesignDay,", - " CHICAGO_IL_USA Cooling .4% Conditions DB=>MWB, !- Name", - " 7, !- Month", - " 21, !- Day of Month", - " SummerDesignDay, !- Day Type", - " 32.80000, !- Maximum Dry-Bulb Temperature {C}", - " 10.90000, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " 23.60000, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063.21, !- Barometric Pressure {Pa}", - " 0.0, !- Wind Speed {m/s}", - " 0.0, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 1.000000; !- Sky Clearness", - - " SizingPeriod:DesignDay,", - " CHICAGO_IL_USA Heating 99.6% Conditions, !- Name", - " 1, !- Month", - " 21, !- Day of Month", - " WinterDesignDay, !- Day Type", - " -21.20000, !- Maximum Dry-Bulb Temperature {C}", - " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " -21.20000, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063.21, !- Barometric Pressure {Pa}", - " 4.600000, !- Wind Speed {m/s}", - " 270.0000, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 0.0; !- Sky Clearness", - - " RunPeriod,", - " , !- Name", - " 1, !- Begin Month", - " 1, !- Begin Day of Month", - " , !- Begin Year", - " 12, !- End Month", - " 31, !- End Day of Month", - " , !- End Year", - " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " Yes; !- Use Weather File Snow Indicators", - - " Site:GroundTemperature:BuildingSurface,", - " 23.0, !- January Ground Temperature {C}", - " 23.0, !- February Ground Temperature {C}", - " 23.0, !- March Ground Temperature {C}", - " 23.0, !- April Ground Temperature {C}", - " 23.0, !- May Ground Temperature {C}", - " 23.0, !- June Ground Temperature {C}", - " 23.0, !- July Ground Temperature {C}", - " 23.0, !- August Ground Temperature {C}", - " 23.0, !- September Ground Temperature {C}", - " 23.0, !- October Ground Temperature {C}", - " 23.0, !- November Ground Temperature {C}", - " 23.0; !- December Ground Temperature {C}", - - " ScheduleTypeLimits,", - " Temperature, !- Name", - " -60, !- Lower Limit Value", - " 200, !- Upper Limit Value", - " CONTINUOUS, !- Numeric Type", - " Temperature; !- Unit Type", - - " ScheduleTypeLimits,", - " Control Type, !- Name", - " 0, !- Lower Limit Value", - " 4, !- Upper Limit Value", - " DISCRETE; !- Numeric Type", - - " ScheduleTypeLimits,", - " Fraction, !- Name", - " 0.0, !- Lower Limit Value", - " 1.0, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - " Schedule:Compact,", - " HVACAvailSched, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00, !- Field 3", - " 1.0; !- Field 4", - - " Schedule:Compact,", - " Dual Heating Setpoints, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00, !- Field 3", - " 23.0; !- Field 4", - - " Schedule:Compact,", - " Dual Cooling Setpoints, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00, !- Field 3", - " 23.0; !- Field 4", - - " Schedule:Compact,", - " Dual Zone Control Type Sched, !- Name", - " Control Type, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00, !- Field 3", - " 4; !- Field 4", - - " Material,", - " Gypsum Board, !- Name", - " MediumSmooth, !- Roughness", - " 0.0127, !- Thickness {m}", - " 0.160158849, !- Conductivity {W/m-K}", - " 800.923168698, !- Density {kg/m3}", - " 1087.84, !- Specific Heat {J/kg-K}", - " 0.9, !- Thermal Absorptance", - " 0.9, !- Solar Absorptance", - " 1.0; !- Visible Absorptance", - - " Material,", - " Gypsum Board Wall, !- Name", - " MediumSmooth, !- Roughness", - " 0.0127, !- Thickness {m}", - " 0.160158849, !- Conductivity {W/m-K}", - " 800.923168698, !- Density {kg/m3}", - " 1087.84, !- Specific Heat {J/kg-K}", - " 1e-6, !- Thermal Absorptance", - " 1e-6, !- Solar Absorptance", - " 1.0; !- Visible Absorptance", - - " Material,", - " R-19 Insulation, !- Name", - " Rough, !- Roughness", - " 0.88871384, !- Thickness {m}", - " 0.25745056, !- Conductivity {W/m-K}", - " 3.05091836, !- Density {kg/m3}", - " 794.96, !- Specific Heat {J/kg-K}", - " 0.9, !- Thermal Absorptance", - " 0.9, !- Solar Absorptance", - " 1.0; !- Visible Absorptance", - - " Material,", - " R-A Lot, !- Name", - " Rough, !- Roughness", - " 1.25, !- Thickness {m}", - " 0.001, !- Conductivity {W/m-K}", - " 3.05091836, !- Density {kg/m3}", - " 794.96, !- Specific Heat {J/kg-K}", - " 0.9, !- Thermal Absorptance", - " 0.9, !- Solar Absorptance", - " 1.0; !- Visible Absorptance", - - " Material,", - " Shingles, !- Name", - " Rough, !- Roughness", - " 0.006348984, !- Thickness {m}", - " 0.081932979, !- Conductivity {W/m-K}", - " 1121.292436177, !- Density {kg/m3}", - " 1256.04, !- Specific Heat {J/kg-K}", - " 0.9, !- Thermal Absorptance", - " 0.9, !- Solar Absorptance", - " 1.0; !- Visible Absorptance", - - " Material,", - " Felt, !- Name", - " Rough, !- Roughness", - " 0.00216408, !- Thickness {m}", - " 0.081932979, !- Conductivity {W/m-K}", - " 1121.292436177, !- Density {kg/m3}", - " 1507.248, !- Specific Heat {J/kg-K}", - " 0.9, !- Thermal Absorptance", - " 0.9, !- Solar Absorptance", - " 1.0; !- Visible Absorptance", - - " Material,", - " Plywood, !- Name", - " Rough, !- Roughness", - " 0.012701016, !- Thickness {m}", - " 0.11544, !- Conductivity {W/m-K}", - " 544.627754714, !- Density {kg/m3}", - " 1214.172, !- Specific Heat {J/kg-K}", - " 0.9, !- Thermal Absorptance", - " 0.9, !- Solar Absorptance", - " 1.0; !- Visible Absorptance", - - " Material,", - " Hardboard Siding-Gable, !- Name", - " MediumSmooth, !- Roughness", - " 0.0111125, !- Thickness {m}", - " 0.214957246, !- Conductivity {W/m-K}", - " 640.736, !- Density {kg/m3}", - " 1172.304, !- Specific Heat {J/kg-K}", - " 0.90, !- Thermal Absorptance", - " 0.7, !- Solar Absorptance", - " 1.0; !- Visible Absorptance", - - " Material,", - " Studs, !- Name", - " Rough, !- Roughness", - " 0.0003137, !- Thickness {m}", - " 0.02189835, !- Conductivity {W/m-K}", - " 448.516974471, !- Density {kg/m3}", - " 1632.852, !- Specific Heat {J/kg-K}", - " 0.90, !- Thermal Absorptance", - " 0.7, !- Solar Absorptance", - " 1.0; !- Visible Absorptance", - - " Material,", - " Hardboard Siding-Eave, !- Name", - " MediumSmooth, !- Roughness", - " 0.0111125, !- Thickness {m}", - " 0.214957246, !- Conductivity {W/m-K}", - " 640.736, !- Density {kg/m3}", - " 1172.304, !- Specific Heat {J/kg-K}", - " 0.90, !- Thermal Absorptance", - " 0.7, !- Solar Absorptance", - " 1.0; !- Visible Absorptance", - - " Material,", - " HF-C5, !- Name", - " MediumRough, !- Roughness", - " 0.1015000, !- Thickness {m}", - " 1.729600, !- Conductivity {W/m-K}", - " 2243.000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 1.0; !- Visible Absorptance", - - " Construction,", - " CeilingConstruction, !- Name", - " R-19 Insulation, !- Outside Layer", - " Gypsum Board; !- Layer 2", - - " Construction,", - " Reverse:CeilingConstruction, !- Name", - " Gypsum Board, !- Outside Layer", - " R-19 Insulation; !- Layer 2", - - " Construction,", - " Roof, !- Name", - " Shingles, !- Outside Layer", - " Felt, !- Layer 2", - " Plywood; !- Layer 3", - - " Construction,", - " Gables, !- Name", - " Hardboard Siding-Eave; !- Outside Layer", - - " Construction,", - " Eave Walls, !- Name", - " Hardboard Siding-Eave; !- Outside Layer", - - " Construction,", - " Walls, !- Name", - " Hardboard Siding-Eave, !- Outside Layer", - " R-A Lot, !- Layer 2", - " Gypsum Board Wall; !- Layer 3", - - " Construction,", - " LTFLOOR, !- Name", - " HF-C5; !- Outside Layer", - - " GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " Counterclockwise, !- Vertex Entry Direction", - " World; !- Coordinate System", - - " Zone,", - " OCCUPIED ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " Zone,", - " ATTIC ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " BuildingSurface:Detailed,", - " North Wall, !- Name", - " Wall, !- Surface Type", - " Walls, !- Construction Name", - " OCCUPIED ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 16.764, !- Vertex 1 X-coordinate {m}", - " 8.5344, !- Vertex 1 Y-coordinate {m}", - " 2.70, !- Vertex 1 Z-coordinate {m}", - " 16.764, !- Vertex 2 X-coordinate {m}", - " 8.5344, !- Vertex 2 Y-coordinate {m}", - " 0, !- Vertex 2 Z-coordinate {m}", - " 0, !- Vertex 3 X-coordinate {m}", - " 8.5344, !- Vertex 3 Y-coordinate {m}", - " 0, !- Vertex 3 Z-coordinate {m}", - " 0, !- Vertex 4 X-coordinate {m}", - " 8.5344, !- Vertex 4 Y-coordinate {m}", - " 2.70; !- Vertex 4 Z-coordinate {m}", - - " BuildingSurface:Detailed,", - " North Wall Attic, !- Name", - " Wall, !- Surface Type", - " Eave Walls, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 16.764, !- Vertex 1 X-coordinate {m}", - " 8.5344, !- Vertex 1 Y-coordinate {m}", - " 2.7254, !- Vertex 1 Z-coordinate {m}", - " 16.764, !- Vertex 2 X-coordinate {m}", - " 8.5344, !- Vertex 2 Y-coordinate {m}", - " 2.70, !- Vertex 2 Z-coordinate {m}", - " 0, !- Vertex 3 X-coordinate {m}", - " 8.5344, !- Vertex 3 Y-coordinate {m}", - " 2.70, !- Vertex 3 Z-coordinate {m}", - " 0, !- Vertex 4 X-coordinate {m}", - " 8.5344, !- Vertex 4 Y-coordinate {m}", - " 2.7254; !- Vertex 4 Z-coordinate {m}", - - " BuildingSurface:Detailed,", - " East Wall, !- Name", - " Wall, !- Surface Type", - " Walls, !- Construction Name", - " OCCUPIED ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 16.764, !- Vertex 1 X-coordinate {m}", - " 0, !- Vertex 1 Y-coordinate {m}", - " 2.70, !- Vertex 1 Z-coordinate {m}", - " 16.764, !- Vertex 2 X-coordinate {m}", - " 0, !- Vertex 2 Y-coordinate {m}", - " 0, !- Vertex 2 Z-coordinate {m}", - " 16.764, !- Vertex 3 X-coordinate {m}", - " 8.5344, !- Vertex 3 Y-coordinate {m}", - " 0, !- Vertex 3 Z-coordinate {m}", - " 16.764, !- Vertex 4 X-coordinate {m}", - " 8.5344, !- Vertex 4 Y-coordinate {m}", - " 2.70; !- Vertex 4 Z-coordinate {m}", - - " BuildingSurface:Detailed,", - " East Wall Attic, !- Name", - " Wall, !- Surface Type", - " Gables, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50, !- View Factor to Ground", - " 5, !- Number of Vertices", - " 16.764, !- Vertex 1 X-coordinate {m}", - " 0, !- Vertex 1 Y-coordinate {m}", - " 2.7254, !- Vertex 1 Z-coordinate {m}", - " 16.764, !- Vertex 2 X-coordinate {m}", - " 0, !- Vertex 2 Y-coordinate {m}", - " 2.70, !- Vertex 2 Z-coordinate {m}", - " 16.764, !- Vertex 3 X-coordinate {m}", - " 8.5344, !- Vertex 3 Y-coordinate {m}", - " 2.70, !- Vertex 3 Z-coordinate {m}", - " 16.764, !- Vertex 4 X-coordinate {m}", - " 8.5344, !- Vertex 4 Y-coordinate {m}", - " 2.7254, !- Vertex 4 Z-coordinate {m}", - " 16.764, !- Vertex 5 X-coordinate {m}", - " 4.2672, !- Vertex 5 Y-coordinate {m}", - " 4.5034; !- Vertex 5 Z-coordinate {m}", - - " BuildingSurface:Detailed,", - " South Wall, !- Name", - " Wall, !- Surface Type", - " Walls, !- Construction Name", - " OCCUPIED ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0, !- Vertex 1 X-coordinate {m}", - " 0, !- Vertex 1 Y-coordinate {m}", - " 2.70, !- Vertex 1 Z-coordinate {m}", - " 0, !- Vertex 2 X-coordinate {m}", - " 0, !- Vertex 2 Y-coordinate {m}", - " 0, !- Vertex 2 Z-coordinate {m}", - " 16.764, !- Vertex 3 X-coordinate {m}", - " 0, !- Vertex 3 Y-coordinate {m}", - " 0, !- Vertex 3 Z-coordinate {m}", - " 16.764, !- Vertex 4 X-coordinate {m}", - " 0, !- Vertex 4 Y-coordinate {m}", - " 2.70; !- Vertex 4 Z-coordinate {m}", - - " BuildingSurface:Detailed,", - " South Wall Attic, !- Name", - " Wall, !- Surface Type", - " Eave Walls, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0, !- Vertex 1 X-coordinate {m}", - " 0, !- Vertex 1 Y-coordinate {m}", - " 2.7254, !- Vertex 1 Z-coordinate {m}", - " 0, !- Vertex 2 X-coordinate {m}", - " 0, !- Vertex 2 Y-coordinate {m}", - " 2.70, !- Vertex 2 Z-coordinate {m}", - " 16.764, !- Vertex 3 X-coordinate {m}", - " 0, !- Vertex 3 Y-coordinate {m}", - " 2.70, !- Vertex 3 Z-coordinate {m}", - " 16.764, !- Vertex 4 X-coordinate {m}", - " 0, !- Vertex 4 Y-coordinate {m}", - " 2.7254; !- Vertex 4 Z-coordinate {m}", - - " BuildingSurface:Detailed,", - " West Wall, !- Name", - " Wall, !- Surface Type", - " Walls, !- Construction Name", - " OCCUPIED ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0, !- Vertex 1 X-coordinate {m}", - " 8.5344, !- Vertex 1 Y-coordinate {m}", - " 2.70, !- Vertex 1 Z-coordinate {m}", - " 0, !- Vertex 2 X-coordinate {m}", - " 8.5344, !- Vertex 2 Y-coordinate {m}", - " 0, !- Vertex 2 Z-coordinate {m}", - " 0, !- Vertex 3 X-coordinate {m}", - " 0, !- Vertex 3 Y-coordinate {m}", - " 0, !- Vertex 3 Z-coordinate {m}", - " 0, !- Vertex 4 X-coordinate {m}", - " 0, !- Vertex 4 Y-coordinate {m}", - " 2.70; !- Vertex 4 Z-coordinate {m}", - - " BuildingSurface:Detailed,", - " West Wall Attic, !- Name", - " Wall, !- Surface Type", - " Gables, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50, !- View Factor to Ground", - " 5, !- Number of Vertices", - " 0, !- Vertex 1 X-coordinate {m}", - " 8.5344, !- Vertex 1 Y-coordinate {m}", - " 2.7254, !- Vertex 1 Z-coordinate {m}", - " 0, !- Vertex 2 X-coordinate {m}", - " 8.5344, !- Vertex 2 Y-coordinate {m}", - " 2.70, !- Vertex 2 Z-coordinate {m}", - " 0, !- Vertex 3 X-coordinate {m}", - " 0, !- Vertex 3 Y-coordinate {m}", - " 2.70, !- Vertex 3 Z-coordinate {m}", - " 0, !- Vertex 4 X-coordinate {m}", - " 0, !- Vertex 4 Y-coordinate {m}", - " 2.7254, !- Vertex 4 Z-coordinate {m}", - " 0, !- Vertex 5 X-coordinate {m}", - " 4.2672, !- Vertex 5 Y-coordinate {m}", - " 4.5034; !- Vertex 5 Z-coordinate {m}", - - " BuildingSurface:Detailed,", - " Zone Floor, !- Name", - " Floor, !- Surface Type", - " LTFLOOR, !- Construction Name", - " OCCUPIED ZONE, !- Zone Name", - " Ground, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0, !- Vertex 1 X-coordinate {m}", - " 0, !- Vertex 1 Y-coordinate {m}", - " 0, !- Vertex 1 Z-coordinate {m}", - " 0, !- Vertex 2 X-coordinate {m}", - " 8.5344, !- Vertex 2 Y-coordinate {m}", - " 0, !- Vertex 2 Z-coordinate {m}", - " 16.764, !- Vertex 3 X-coordinate {m}", - " 8.5344, !- Vertex 3 Y-coordinate {m}", - " 0, !- Vertex 3 Z-coordinate {m}", - " 16.764, !- Vertex 4 X-coordinate {m}", - " 0, !- Vertex 4 Y-coordinate {m}", - " 0; !- Vertex 4 Z-coordinate {m}", - - " BuildingSurface:Detailed,", - " Zone Ceiling, !- Name", - " Ceiling, !- Surface Type", - " CeilingConstruction, !- Construction Name", - " OCCUPIED ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Attic Floor, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0, !- Vertex 1 X-coordinate {m}", - " 8.5344, !- Vertex 1 Y-coordinate {m}", - " 2.70, !- Vertex 1 Z-coordinate {m}", - " 0, !- Vertex 2 X-coordinate {m}", - " 0, !- Vertex 2 Y-coordinate {m}", - " 2.70, !- Vertex 2 Z-coordinate {m}", - " 16.764, !- Vertex 3 X-coordinate {m}", - " 0, !- Vertex 3 Y-coordinate {m}", - " 2.70, !- Vertex 3 Z-coordinate {m}", - " 16.764, !- Vertex 4 X-coordinate {m}", - " 8.5344, !- Vertex 4 Y-coordinate {m}", - " 2.70; !- Vertex 4 Z-coordinate {m}", - - " BuildingSurface:Detailed,", - " Attic Floor, !- Name", - " Floor, !- Surface Type", - " Reverse:CeilingConstruction, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zone Ceiling, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 16.764, !- Vertex 1 X-coordinate {m}", - " 8.5344, !- Vertex 1 Y-coordinate {m}", - " 2.70, !- Vertex 1 Z-coordinate {m}", - " 16.764, !- Vertex 2 X-coordinate {m}", - " 0, !- Vertex 2 Y-coordinate {m}", - " 2.70, !- Vertex 2 Z-coordinate {m}", - " 0, !- Vertex 3 X-coordinate {m}", - " 0, !- Vertex 3 Y-coordinate {m}", - " 2.70, !- Vertex 3 Z-coordinate {m}", - " 0, !- Vertex 4 X-coordinate {m}", - " 8.5344, !- Vertex 4 Y-coordinate {m}", - " 2.70; !- Vertex 4 Z-coordinate {m}", - - " BuildingSurface:Detailed,", - " Attic Roof South, !- Name", - " Roof, !- Surface Type", - " Roof, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0, !- Vertex 1 X-coordinate {m}", - " 4.2672, !- Vertex 1 Y-coordinate {m}", - " 4.5034, !- Vertex 1 Z-coordinate {m}", - " 0, !- Vertex 2 X-coordinate {m}", - " 0, !- Vertex 2 Y-coordinate {m}", - " 2.7254, !- Vertex 2 Z-coordinate {m}", - " 16.764, !- Vertex 3 X-coordinate {m}", - " 0, !- Vertex 3 Y-coordinate {m}", - " 2.7254, !- Vertex 3 Z-coordinate {m}", - " 16.764, !- Vertex 4 X-coordinate {m}", - " 4.2672, !- Vertex 4 Y-coordinate {m}", - " 4.5034; !- Vertex 4 Z-coordinate {m}", - - " BuildingSurface:Detailed,", - " Attic Roof North, !- Name", - " Roof, !- Surface Type", - " Roof, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 16.764, !- Vertex 1 X-coordinate {m}", - " 4.2672, !- Vertex 1 Y-coordinate {m}", - " 4.5034, !- Vertex 1 Z-coordinate {m}", - " 16.764, !- Vertex 2 X-coordinate {m}", - " 8.5344, !- Vertex 2 Y-coordinate {m}", - " 2.7254, !- Vertex 2 Z-coordinate {m}", - " 0, !- Vertex 3 X-coordinate {m}", - " 8.5344, !- Vertex 3 Y-coordinate {m}", - " 2.7254, !- Vertex 3 Z-coordinate {m}", - " 0, !- Vertex 4 X-coordinate {m}", - " 4.2672, !- Vertex 4 Y-coordinate {m}", - " 4.5034; !- Vertex 4 Z-coordinate {m}", - - " ZoneProperty:UserViewFactors:bySurfaceName,", - " ATTIC ZONE, !- Zone Name", - " Attic Floor, !=From Surface 1", - " Attic Floor, !=To Surface 1", - " 0.000000,", - " Attic Floor, !=From Surface 1", - " Attic Roof South, !=To Surface 2", - " 0.476288,", - " Attic Floor, !=From Surface 1", - " Attic Roof North, !=To Surface 3", - " 0.476288,", - " Attic Floor, !=From Surface 1", - " East Wall Attic, !=To Surface 4", - " 0.023712,", - " Attic Floor, !=From Surface 1", - " West Wall Attic, !=To Surface 5", - " 0.023712,", - " Attic Floor, !=From Surface 1", - " North Wall Attic, !=To Surface 6", - " 0.000000,", - " Attic Floor, !=From Surface 1", - " South Wall Attic, !=To Surface 7", - " 0.000000,", - " Attic Roof South, !=From Surface 2", - " Attic Floor, !=To Surface 1", - " 0.879300,", - " Attic Roof South, !=From Surface 2", - " Attic Roof South, !=To Surface 2", - " 0.000000,", - " Attic Roof South, !=From Surface 2", - " Attic Roof North, !=To Surface 3", - " 0.067378,", - " Attic Roof South, !=From Surface 2", - " East Wall Attic, !=To Surface 4", - " 0.026661,", - " Attic Roof South, !=From Surface 2", - " West Wall Attic, !=To Surface 5", - " 0.026661,", - " Attic Roof South, !=From Surface 2", - " North Wall Attic, !=To Surface 6", - " 0.000000,", - " Attic Roof South, !=From Surface 2", - " South Wall Attic, !=To Surface 7", - " 0.000000,", - " Attic Roof North, !=From Surface 3", - " Attic Floor, !=To Surface 1", - " 0.879300,", - " Attic Roof North, !=From Surface 3", - " Attic Roof South, !=To Surface 2", - " 0.067378,", - " Attic Roof North, !=From Surface 3", - " Attic Roof North, !=To Surface 3", - " 0.000000,", - " Attic Roof North, !=From Surface 3", - " East Wall Attic, !=To Surface 4", - " 0.026661,", - " Attic Roof North, !=From Surface 3", - " West Wall Attic, !=To Surface 5", - " 0.026661,", - " Attic Roof North, !=From Surface 3", - " North Wall Attic, !=To Surface 6", - " 0.000000,", - " Attic Roof North, !=From Surface 3", - " South Wall Attic, !=To Surface 7", - " 0.000000,", - " East Wall Attic, !=From Surface 4", - " Attic Floor, !=To Surface 1", - " 0.447134,", - " East Wall Attic, !=From Surface 4", - " Attic Roof South, !=To Surface 2", - " 0.272318,", - " East Wall Attic, !=From Surface 4", - " Attic Roof North, !=To Surface 3", - " 0.272318,", - " East Wall Attic, !=From Surface 4", - " East Wall Attic, !=To Surface 4", - " 0.000000,", - " East Wall Attic, !=From Surface 4", - " West Wall Attic, !=To Surface 5", - " 0.008231,", - " East Wall Attic, !=From Surface 4", - " North Wall Attic, !=To Surface 6", - " 0.000000,", - " East Wall Attic, !=From Surface 4", - " South Wall Attic, !=To Surface 7", - " 0.000000,", - " West Wall Attic, !=From Surface 5", - " Attic Floor, !=To Surface 1", - " 0.447134,", - " West Wall Attic, !=From Surface 5", - " Attic Roof South, !=To Surface 2", - " 0.272318,", - " West Wall Attic, !=From Surface 5", - " Attic Roof North, !=To Surface 3", - " 0.272318,", - " West Wall Attic, !=From Surface 5", - " East Wall Attic, !=To Surface 4", - " 0.008231,", - " West Wall Attic, !=From Surface 5", - " West Wall Attic, !=To Surface 5", - " 0.000000,", - " West Wall Attic, !=From Surface 5", - " North Wall Attic, !=To Surface 6", - " 0.000000,", - " West Wall Attic, !=From Surface 5", - " South Wall Attic, !=To Surface 7", - " 0.000000,", - " North Wall Attic, !=From Surface 6", - " Attic Floor, !=To Surface 1", - " 0.000000,", - " North Wall Attic, !=From Surface 6", - " Attic Roof South, !=To Surface 2", - " 0.000000,", - " North Wall Attic, !=From Surface 6", - " Attic Roof North, !=To Surface 3", - " 0.000000,", - " North Wall Attic, !=From Surface 6", - " East Wall Attic, !=To Surface 4", - " 0.000000,", - " North Wall Attic, !=From Surface 6", - " West Wall Attic, !=To Surface 5", - " 0.000000,", - " North Wall Attic, !=From Surface 6", - " North Wall Attic, !=To Surface 6", - " 1.000000,", - " North Wall Attic, !=From Surface 6", - " South Wall Attic, !=To Surface 7", - " 0.000000,", - " South Wall Attic, !=From Surface 7", - " Attic Floor, !=To Surface 1", - " 0.000000,", - " South Wall Attic, !=From Surface 7", - " Attic Roof South, !=To Surface 2", - " 0.000000,", - " South Wall Attic, !=From Surface 7", - " Attic Roof North, !=To Surface 3", - " 0.000000,", - " South Wall Attic, !=From Surface 7", - " East Wall Attic, !=To Surface 4", - " 0.000000,", - " South Wall Attic, !=From Surface 7", - " West Wall Attic, !=To Surface 5", - " 0.000000,", - " South Wall Attic, !=From Surface 7", - " North Wall Attic, !=To Surface 6", - " 0.000000,", - " South Wall Attic, !=From Surface 7", - " South Wall Attic, !=To Surface 7", - " 1.000000;", - - " AirflowNetwork:SimulationControl,", - " House AirflowNetwork, !- Name", - " MultizoneWithDistribution, !- AirflowNetwork Control", - " SurfaceAverageCalculation, !- Wind Pressure Coefficient Type", - " , !- Height Selection for Local Wind Pressure Calculation", - " LOWRISE, !- Building Type", - " 500, !- Maximum Number of Iterations {dimensionless}", - " ZeroNodePressures, !- Initialization Type", - " 1.0E-04, !- Relative Airflow Convergence Tolerance {dimensionless}", - " 1.0E-06, !- Absolute Airflow Convergence Tolerance {kg/s}", - " -0.5, !- Convergence Acceleration Limit {dimensionless}", - " 0.0, !- Azimuth Angle of Long Axis of Building {deg}", - " 1.0; !- Ratio of Building Width Along Short Axis to Width Along Long Axis", - - " AirflowNetwork:MultiZone:Zone,", - " OCCUPIED ZONE, !- Zone Name", - " NOVENT, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 1.0, !- Minimum Venting Open Factor {dimensionless}", - " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", - " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", - " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", - " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", - - " AirflowNetwork:MultiZone:Zone,", - " ATTIC ZONE, !- Zone Name", - " NoVent, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 1.0, !- Minimum Venting Open Factor {dimensionless}", - " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", - " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", - " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", - " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", - - " AirflowNetwork:MultiZone:Surface,", - " North Wall Attic, !- Surface Name", - " NorthEaveLeak, !- Leakage Component Name", - " , !- External Node Name", - " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - - " AirflowNetwork:MultiZone:Surface,", - " South Wall Attic, !- Surface Name", - " SouthEaveLeak, !- Leakage Component Name", - " , !- External Node Name", - " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - - " AirflowNetwork:MultiZone:Surface,", - " East Wall, !- Surface Name", - " EastLeak, !- Leakage Component Name", - " , !- External Node Name", - " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - - " AirflowNetwork:MultiZone:Surface,", - " West Wall, !- Surface Name", - " WestLeak, !- Leakage Component Name", - " , !- External Node Name", - " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - - " AirflowNetwork:MultiZone:ReferenceCrackConditions,", - " ReferenceCrackConditions,!- Name", - " 20.0, !- Reference Temperature {C}", - " 101325, !- Reference Barometric Pressure {Pa}", - " 0.0; !- Reference Humidity Ratio {kgWater/kgDryAir}", - - " AirflowNetwork:MultiZone:Surface:Crack,", - " NorthEaveLeak, !- Name", - " 0.2, !- Air Mass Flow Coefficient at Reference Conditions {kg/s}", - " 0.65, !- Air Mass Flow Exponent {dimensionless}", - " ReferenceCrackConditions;!- Reference Crack Conditions", - - " AirflowNetwork:MultiZone:Surface:Crack,", - " SouthEaveLeak, !- Name", - " 0.2, !- Air Mass Flow Coefficient at Reference Conditions {kg/s}", - " 0.65, !- Air Mass Flow Exponent {dimensionless}", - " ReferenceCrackConditions;!- Reference Crack Conditions", - - " AirflowNetwork:MultiZone:Surface:Crack,", - " EastLeak, !- Name", - " 0.05, !- Air Mass Flow Coefficient at Reference Conditions {kg/s}", - " 0.65, !- Air Mass Flow Exponent {dimensionless}", - " ReferenceCrackConditions;!- Reference Crack Conditions", - - " AirflowNetwork:MultiZone:Surface:Crack,", - " WestLeak, !- Name", - " 0.03, !- Air Mass Flow Coefficient at Reference Conditions {kg/s}", - " 0.65, !- Air Mass Flow Exponent {dimensionless}", - " ReferenceCrackConditions;!- Reference Crack Conditions", - - " AirflowNetwork:Distribution:Node,", - " EquipmentInletNode, !- Name", - " Zone Equipment Inlet Node, !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " SplitterNode, !- Name", - " , !- Component Name or Node Name", - " AirLoopHVAC:ZoneSplitter,!- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " ZoneSupplyNode, !- Name", - " , !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " ZoneSupplyRegisterNode, !- Name", - " Zone Inlet Node, !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " ZoneOutletNode, !- Name", - " Zone Outlet Node, !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " ZoneReturnNode, !- Name", - " , !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " MixerNode, !- Name", - " , !- Component Name or Node Name", - " AirLoopHVAC:ZoneMixer, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " MainReturnNode, !- Name", - " Return Air Mixer Outlet, !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " MainInletNode, !- Name", - " Air Loop Inlet Node, !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " FanInletNode, !- Name", - " Air Loop Inlet Node, !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " FanOutletNode, !- Name", - " Cooling Coil Air Inlet Node, !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " HeatingInletNode, !- Name", - " Heating Coil Air Inlet Node, !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Node,", - " HeatingOutletNode, !- Name", - " Air Loop Outlet Node, !- Component Name or Node Name", - " Other, !- Component Object Type or Node Type", - " 3.0; !- Node Height {m}", - - " AirflowNetwork:Distribution:Component:Duct,", - " MainTrunk, !- Name", - " 2.0, !- Duct Length {m}", - " 0.4064, !- Hydraulic Diameter {m}", - " 0.1297, !- Cross Section Area {m2}", - " 0.0009, !- Surface Roughness {m}", - " 0.01, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", - " 0.7139, !- Heat Transmittance Coefficient (U-Factor) for Duct Construction {W/m2-K}", - " 0.0000001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", - - " AirflowNetwork:Distribution:Component:Duct,", - " ZoneSupply, !- Name", - " 16.76, !- Duct Length {m}", - " 0.3048, !- Hydraulic Diameter {m}", - " 0.073205, !- Cross Section Area {m2}", - " 0.0009, !- Surface Roughness {m}", - " 0.91, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", - " 0.00613207547169811, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", - " 0.0000001, !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", - " 0.0325, !- Outside Convection Coefficient {W/m2-K}", - " 0.1625; !- Inside Convection Coefficient {W/m2-K}", - - " AirflowNetwork:Distribution:Component:Duct,", - " ZoneReturn, !- Name", - " 3.0, !- Duct Length {m}", - " 0.50, !- Hydraulic Diameter {m}", - " 0.1963, !- Cross Section Area {m2}", - " 0.0009, !- Surface Roughness {m}", - " 0.01, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", - " 0.00122641509433962, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", - " 0.0000001, !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", - " 0.0065, !- Outside Convection Coefficient {W/m2-K}", - " 0.0325; !- Inside Convection Coefficient {W/m2-K}", - - " AirflowNetwork:Distribution:Component:Duct,", - " ZoneConnectionDuct, !- Name", - " 0.1, !- Duct Length {m}", - " 1.0, !- Hydraulic Diameter {m}", - " 0.7854, !- Cross Section Area {m2}", - " 0.0001, !- Surface Roughness {m}", - " 0.00, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", - " 0.00122641509433962, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", - " 0.0000001, !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", - " 0.0065, !- Outside Convection Coefficient {W/m2-K}", - " 0.0325; !- Inside Convection Coefficient {W/m2-K}", - - " AirflowNetwork:Distribution:Component:Duct,", - " MainReturn, !- Name", - " 1.0, !- Duct Length {m}", - " 0.50, !- Hydraulic Diameter {m}", - " 0.1963, !- Cross Section Area {m2}", - " 0.0009, !- Surface Roughness {m}", - " 0.01, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", - " 0.00122641509433962, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", - " 0.0000001, !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", - " 0.0065, !- Outside Convection Coefficient {W/m2-K}", - " 0.0325; !- Inside Convection Coefficient {W/m2-K}", - - " AirflowNetwork:Distribution:Component:Duct,", - " AirLoopReturn, !- Name", - " 0.1, !- Duct Length {m}", - " 1.00, !- Hydraulic Diameter {m}", - " 0.7854, !- Cross Section Area {m2}", - " 0.0001, !- Surface Roughness {m}", - " 0.00, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", - " 0.00122641509433962, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", - " 0.0000001, !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", - " 0.0065, !- Outside Convection Coefficient {W/m2-K}", - " 0.0325; !- Inside Convection Coefficient {W/m2-K}", - - " AirflowNetwork:Distribution:Component:Duct,", - " AirLoopSupply, !- Name", - " 0.1, !- Duct Length {m}", - " 1.00, !- Hydraulic Diameter {m}", - " 0.7854, !- Cross Section Area {m2}", - " 0.0001, !- Surface Roughness {m}", - " 0.00, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", - " 0.00122641509433962, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", - " 0.0000001, !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", - " 0.0065, !- Outside Convection Coefficient {W/m2-K}", - " 0.0325; !- Inside Convection Coefficient {W/m2-K}", - - " AirflowNetwork:Distribution:Component:Fan,", - " Supply Fan 1, !- Fan Name", - " Fan:ConstantVolume; !- Supply Fan Object Type", - - " AirflowNetwork:Distribution:Component:Coil,", - " ACDXCoil 1, !- Coil Name", - " Coil:Cooling:DX:SingleSpeed, !- Coil Object Type", - " 0.1, !- Air Path Length {m}", - " 1.000; !- Air Path Hydraulic Diameter {m}", - - " AirflowNetwork:Distribution:Component:Coil,", - " Main Heating Coil 1, !- Coil Name", - " Coil:Heating:Fuel, !- Coil Object Type", - " 0.1, !- Air Path Length {m}", - " 1.000; !- Air Path Hydraulic Diameter {m}", - - " AirflowNetwork:Distribution:DuctViewFactors,", - " ZoneSupplyLink1, !- Name of Linkage", - " 1.0, !- Surface Exposure Fraction", - " 0.9, !- Duct surface emittance", - " Attic Floor, !- Surface 1", - " 0.483577, !- View Factor for Surface 1", - " Attic Roof North, !- Surface 2", - " 0.237692, !- View Factor for Surface 2", - " Attic Roof South, !- Surface 3", - " 0.237692, !- View Factor for Surface 3", - " East Wall Attic, !- Surface 4", - " 0.02052, !- View Factor for Surface 4", - " West Wall Attic, !- Surface 5", - " 0.02052; !- View Factor for Surface 5", - - " AirflowNetwork:Distribution:Linkage,", - " Main Link, !- Name", - " EquipmentInletNode, !- Node 1 Name", - " SplitterNode, !- Node 2 Name", - " MainTrunk, !- Component Name", - " Attic Zone; !- Thermal Zone Name", - - " AirflowNetwork:Distribution:Linkage,", - " ZoneSupplyLink1, !- Name", - " SplitterNode, !- Node 1 Name", - " ZoneSupplyNode, !- Node 2 Name", - " ZoneSupply, !- Component Name", - " Attic Zone; !- Thermal Zone Name", - - " AirflowNetwork:Distribution:Linkage,", - " ZoneSupply1Link2, !- Name", - " ZoneSupplyNode, !- Node 1 Name", - " ZoneSupplyRegisterNode, !- Node 2 Name", - " ZoneSupply, !- Component Name", - " Attic Zone; !- Thermal Zone Name", - - " AirflowNetwork:Distribution:Linkage,", - " ZoneSupplyConnectionLink,!- Name", - " ZoneSupplyRegisterNode, !- Node 1 Name", - " OCCUPIED ZONE, !- Node 2 Name", - " ZoneConnectionDuct; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " ZoneReturnConnectionLink,!- Name", - " OCCUPIED ZONE, !- Node 1 Name", - " ZoneOutletNode, !- Node 2 Name", - " ZoneConnectionDuct; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " ZoneReturn1Link, !- Name", - " ZoneOutletNode, !- Node 1 Name", - " ZoneReturnNode, !- Node 2 Name", - " ZoneReturn, !- Component Name", - " Attic Zone; !- Thermal Zone Name", - - " AirflowNetwork:Distribution:Linkage,", - " ZoneReturn2Link, !- Name", - " ZoneReturnNode, !- Node 1 Name", - " MixerNode, !- Node 2 Name", - " ZoneReturn, !- Component Name", - " OCCUPIED Zone; !- Thermal Zone Name", - - " AirflowNetwork:Distribution:Linkage,", - " ReturnMixerLink, !- Name", - " MixerNode, !- Node 1 Name", - " MainReturnNode, !- Node 2 Name", - " MainReturn, !- Component Name", - " OCCUPIED Zone; !- Thermal Zone Name", - - " AirflowNetwork:Distribution:Linkage,", - " SystemReturnLink, !- Name", - " MainReturnNode, !- Node 1 Name", - " MainInletNode, !- Node 2 Name", - " AirLoopReturn; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " SystemInletLink, !- Name", - " MainInletNode, !- Node 1 Name", - " FanInletNode, !- Node 2 Name", - " MainReturn, !- Component Name", - " OCCUPIED ZONE; !- Thermal Zone Name", - - " AirflowNetwork:Distribution:Linkage,", - " SupplyFanLink, !- Name", - " FanInletNode, !- Node 1 Name", - " FanOutletNode, !- Node 2 Name", - " Supply Fan 1; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " CoolingCoilLink, !- Name", - " FanOutletNode, !- Node 1 Name", - " HeatingInletNode, !- Node 2 Name", - " ACDXCoil 1; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " HeatingCoilLink, !- Name", - " HeatingInletNode, !- Node 1 Name", - " HeatingOutletNode, !- Node 2 Name", - " Main Heating Coil 1; !- Component Name", - - " AirflowNetwork:Distribution:Linkage,", - " EquipmentAirLoopLink, !- Name", - " HeatingOutletNode, !- Node 1 Name", - " EquipmentInletNode, !- Node 2 Name", - " AirLoopSupply; !- Component Name", - - " ZoneControl:Thermostat,", - " Zone Thermostat, !- Name", - " OCCUPIED ZONE, !- Zone or ZoneList Name", - " Dual Zone Control Type Sched, !- Control Type Schedule Name", - " ThermostatSetpoint:DualSetpoint, !- Control 1 Object Type", - " Setpoints; !- Control 1 Name", - - " ThermostatSetpoint:DualSetpoint,", - " Setpoints, !- Name", - " Dual Heating Setpoints, !- Heating Setpoint Temperature Schedule Name", - " Dual Cooling Setpoints; !- Cooling Setpoint Temperature Schedule Name", - - " ZoneHVAC:AirDistributionUnit,", - " ZoneDirectAirADU, !- Name", - " Zone1NoReheatAirOutletNode, !- Air Distribution Unit Outlet Node Name", - " AirTerminal:SingleDuct:ConstantVolume:NoReheat, !- Air Terminal Object Type", - " ZoneDirectAir; !- Air Terminal Name", - - " AirTerminal:SingleDuct:ConstantVolume:NoReheat,", - " ZoneDirectAir, !- Name", - " HVACAvailSched, !- Availability Schedule Name", - " Zone Inlet Node 2AT, !- Air Inlet Node Name", - " Zone Inlet Node, !- Zone Supply Air Node Name", - " 2.36; !- Maximum Air Flow Rate {m3/s}", - - " ZoneHVAC:EquipmentList,", - " ZoneEquipment, !- Name", - " SequentialLoad, !- Load Distribution Scheme", - " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", - " ZoneDirectAirADU, !- Zone Equipment 1 Name", - " 1, !- Zone Equipment 1 Cooling Sequence", - " 1; !- Zone Equipment 1 Heating or No-Load Sequence", - - " ZoneHVAC:EquipmentConnections,", - " OCCUPIED ZONE, !- Zone Name", - " ZoneEquipment, !- Zone Conditioning Equipment List Name", - " ZoneInlets, !- Zone Air Inlet Node or NodeList Name", - " , !- Zone Air Exhaust Node or NodeList Name", - " Zone Node, !- Zone Air Node Name", - " Zone Outlet Node; !- Zone Return Air Node Name", - - " Fan:ConstantVolume,", - " Supply Fan 1, !- Name", - " HVACAvailSched, !- Availability Schedule Name", - " 0.7, !- Fan Total Efficiency", - " 400.0, !- Pressure Rise {Pa}", - " 2.36, !- Maximum Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1.0, !- Motor In Airstream Fraction", - " Air Loop Inlet Node, !- Air Inlet Node Name", - " Cooling Coil Air Inlet Node; !- Air Outlet Node Name", - - " Coil:Cooling:DX:SingleSpeed,", - " ACDXCoil 1, !- Name", - " HVACAvailSched, !- Availability Schedule Name", - " 21000, !- Gross Rated Total Cooling Capacity {W}", - " 0.8, !- Gross Rated Sensible Heat Ratio", - " 3.0, !- Gross Rated Cooling COP {W/W}", - " 2.36, !- Rated Air Flow Rate {m3/s}", - " , !- Rated Evaporator Fan Power Per Volume Flow Rate {W/(m3/s)}", - " Cooling Coil Air Inlet Node, !- Air Inlet Node Name", - " Heating Coil Air Inlet Node, !- Air Outlet Node Name", - " WindACCoolCapFT, !- Total Cooling Capacity Function of Temperature Curve Name", - " WindACCoolCapFFF, !- Total Cooling Capacity Function of Flow Fraction Curve Name", - " WindACEIRFT, !- Energy Input Ratio Function of Temperature Curve Name", - " WindACEIRFFF, !- Energy Input Ratio Function of Flow Fraction Curve Name", - " WindACPLFFPLR; !- Part Load Fraction Correlation Curve Name", - - " Coil:Heating:Fuel,", - " Main Heating Coil 1, !- Name", - " HVACAvailSched, !- Availability Schedule Name", - " NaturalGas, !- Fuel Type", - " 0.8, !- Burner Efficiency", - " 8000000, !- Nominal Capacity {W}", - " Heating Coil Air Inlet Node, !- Air Inlet Node Name", - " Air Loop Outlet Node, !- Air Outlet Node Name", - " Air Loop Outlet Node; !- Temperature Setpoint Node Name", - - " CoilSystem:Cooling:DX,", - " DX Cooling Coil System 1,!- Name", - " HVACAvailSched, !- Availability Schedule Name", - " Cooling Coil Air Inlet Node, !- DX Cooling Coil System Inlet Node Name", - " Heating Coil Air Inlet Node, !- DX Cooling Coil System Outlet Node Name", - " Heating Coil Air Inlet Node, !- DX Cooling Coil System Sensor Node Name", - " Coil:Cooling:DX:SingleSpeed, !- Cooling Coil Object Type", - " ACDXCoil 1; !- Cooling Coil Name", - - " AirLoopHVAC,", - " Typical Residential System, !- Name", - " , !- Controller List Name", - " Reheat System 1 Avail List, !- Availability Manager List Name", - " 2.36, !- Design Supply Air Flow Rate {m3/s}", - " Air Loop Branches, !- Branch List Name", - " , !- Connector List Name", - " Air Loop Inlet Node, !- Supply Side Inlet Node Name", - " Return Air Mixer Outlet, !- Demand Side Outlet Node Name", - " Zone Equipment Inlet Node, !- Demand Side Inlet Node Names", - " Air Loop Outlet Node; !- Supply Side Outlet Node Names", - - " AirLoopHVAC:ZoneSplitter,", - " Zone Supply Air Splitter,!- Name", - " Zone Equipment Inlet Node, !- Inlet Node Name", - " Zone Inlet Node 2AT; !- Outlet 1 Node Name", - - " AirLoopHVAC:SupplyPath,", - " TermReheatSupplyPath, !- Name", - " Zone Equipment Inlet Node, !- Supply Air Path Inlet Node Name", - " AirLoopHVAC:ZoneSplitter,!- Component 1 Object Type", - " Zone Supply Air Splitter;!- Component 1 Name", - - " AirLoopHVAC:ZoneMixer,", - " Zone Return Air Mixer, !- Name", - " Return Air Mixer Outlet, !- Outlet Node Name", - " Zone Outlet Node; !- Inlet 1 Node Name", - - " AirLoopHVAC:ReturnPath,", - " TermReheatReturnPath, !- Name", - " Return Air Mixer Outlet, !- Return Air Path Outlet Node Name", - " AirLoopHVAC:ZoneMixer, !- Component 1 Object Type", - " Zone Return Air Mixer; !- Component 1 Name", - - " Branch,", - " Air Loop Main Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Fan:ConstantVolume, !- Component 1 Object Type", - " Supply Fan 1, !- Component 1 Name", - " Air Loop Inlet Node, !- Component 1 Inlet Node Name", - " Cooling Coil Air Inlet Node, !- Component 1 Outlet Node Name", - " CoilSystem:Cooling:DX, !- Component 2 Object Type", - " DX Cooling Coil System 1,!- Component 2 Name", - " Cooling Coil Air Inlet Node, !- Component 2 Inlet Node Name", - " Heating Coil Air Inlet Node, !- Component 2 Outlet Node Name", - " Coil:Heating:Fuel, !- Component 3 Object Type", - " Main Heating Coil 1, !- Component 3 Name", - " Heating Coil Air Inlet Node, !- Component 3 Inlet Node Name", - " Air Loop Outlet Node; !- Component 3 Outlet Node Name", - - " BranchList,", - " Air Loop Branches, !- Name", - " Air Loop Main Branch; !- Branch 1 Name", - - " NodeList,", - " ZoneInlets, !- Name", - " Zone Inlet Node; !- Node 1 Name", - - " NodeList,", - " Supply Air Temp Nodes, !- Name", - " Heating Coil Air Inlet Node, !- Node 1 Name", - " Air Loop Outlet Node; !- Node 2 Name", - - } ); - - ASSERT_TRUE( process_idf( idf_objects ) ); - - bool ErrorsFound = false; - // Read objects - SimulationManager::GetProjectData(); - HeatBalanceManager::GetProjectControlData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetZoneData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetWindowGlassSpectralData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetMaterialData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetConstructData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetHeatBalanceInput(); - HeatBalanceManager::AllocateHeatBalArrays(); - DataEnvironment::OutBaroPress = 101000; - DataHVACGlobals::TimeStepSys = DataGlobals::TimeStepZone; - SurfaceGeometry::GetGeometryParameters( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - - SurfaceGeometry::CosBldgRotAppGonly = 1.0; - SurfaceGeometry::SinBldgRotAppGonly = 0.0; - SurfaceGeometry::GetSurfaceData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - - // Read AirflowNetwork inputs - GetAirflowNetworkInput(); - InitAirflowNetwork(); - - // Check inputs - EXPECT_EQ( AirflowNetworkLinkageViewFactorData( 1 ).LinkageName, "ZONESUPPLYLINK1" ); - EXPECT_EQ( AirflowNetworkLinkageViewFactorData( 1 ).DuctExposureFraction, 1.0 ); - EXPECT_EQ( AirflowNetworkLinkageViewFactorData( 1 ).DuctEmittance, 0.9 ); - EXPECT_EQ( AirflowNetworkLinkageViewFactorData( 1 ).LinkageSurfaceData( 1 ).SurfaceName, "ATTIC FLOOR" ); - EXPECT_EQ( AirflowNetworkLinkageViewFactorData( 1 ).LinkageSurfaceData( 1 ).ViewFactor, 0.483577 ); - EXPECT_EQ( AirflowNetworkLinkageViewFactorData( 1 ).LinkageSurfaceData( 2 ).SurfaceName, "ATTIC ROOF NORTH" ); - EXPECT_EQ( AirflowNetworkLinkageViewFactorData( 1 ).LinkageSurfaceData( 2 ).ViewFactor, 0.237692 ); - EXPECT_EQ( AirflowNetworkLinkageViewFactorData( 1 ).LinkageSurfaceData( 3 ).SurfaceName, "ATTIC ROOF SOUTH" ); - EXPECT_EQ( AirflowNetworkLinkageViewFactorData( 1 ).LinkageSurfaceData( 3 ).ViewFactor, 0.237692 ); - EXPECT_EQ( AirflowNetworkLinkageViewFactorData( 1 ).LinkageSurfaceData( 4 ).SurfaceName, "EAST WALL ATTIC" ); - EXPECT_EQ( AirflowNetworkLinkageViewFactorData( 1 ).LinkageSurfaceData( 4 ).ViewFactor, 0.02052 ); - EXPECT_EQ( AirflowNetworkLinkageViewFactorData( 1 ).LinkageSurfaceData( 5 ).SurfaceName, "WEST WALL ATTIC" ); - EXPECT_EQ( AirflowNetworkLinkageViewFactorData( 1 ).LinkageSurfaceData( 5 ).ViewFactor, 0.02052 ); - - Real64 const tol = 0.01; - - // Outside convection coefficients - // Calculate convection resistance given a convection coefficient - EXPECT_NEAR( CalcDuctOutsideConvResist( 20, 10, 0.001, 101000, 1, 2, 5 ), 0.2, tol ); - EXPECT_NEAR( CalcDuctOutsideConvResist( 20, 10, 0.001, 101000, 1, 2, 20 ), 0.05, tol ); - EXPECT_NEAR( CalcDuctOutsideConvResist( 20, 10, 0.001, 101000, 1, 2, 0.1 ), 10, tol ); - - //// Calculate convection resistance from correlation - EXPECT_NEAR( CalcDuctOutsideConvResist( 20, 10, 0.001, 101000, 0.1, 2, 0 ), 0.2297, tol ); - EXPECT_NEAR( CalcDuctOutsideConvResist( 20, 10, 0.001, 101000, 1.0, 2, 0 ), 0.4093, tol ); - EXPECT_NEAR( CalcDuctOutsideConvResist( 20, 10, 0.001, 101000, 1.5, 2, 0 ), 0.4531, tol ); - - EXPECT_NEAR( CalcDuctOutsideConvResist( 10, 20, 0.001, 101000, 0.1, 2, 0 ), 0.2368, tol ); - EXPECT_NEAR( CalcDuctOutsideConvResist( 10, 20, 0.001, 101000, 1.0, 2, 0 ), 0.4218, tol ); - EXPECT_NEAR( CalcDuctOutsideConvResist( 10, 20, 0.001, 101000, 1.5, 2, 0 ), 0.4670, tol ); - - // Calculate convection resistance given a convection coefficient - EXPECT_NEAR( CalcDuctInsideConvResist( 20, 0.1, 1, 5 ), 0.2, tol ); - EXPECT_NEAR( CalcDuctInsideConvResist( 20, 0.1, 1, 20 ), 0.05, tol ); - EXPECT_NEAR( CalcDuctInsideConvResist( 20, 0.1, 1, 0.1 ), 10, tol ); - - // Calculate convection resistance from correlation - EXPECT_NEAR( CalcDuctInsideConvResist( 20, 0.1, 1, 0 ), 1.611, tol ); - EXPECT_NEAR( CalcDuctInsideConvResist( 20, 1.0, 1, 0 ), 0.2554, tol ); - EXPECT_NEAR( CalcDuctInsideConvResist( 40, 0.1, 1, 0 ), 1.5879, tol ); - EXPECT_NEAR( CalcDuctInsideConvResist( 40, 1.0, 1, 0 ), 0.2516, tol ); - } + std::string const idf_objects = delimited_string({ + " Version,8.9;", + + " SimulationControl,", + " No, !- Do Zone Sizing Calculation", + " No, !- Do System Sizing Calculation", + " No, !- Do Plant Sizing Calculation", + " No, !- Run Simulation for Sizing Periods", + " Yes; !- Run Simulation for Weather File Run Periods", + + " Building,", + " Exercise 1A, !- Name", + " 0.0, !- North Axis {deg}", + " Country, !- Terrain", + " 0.04, !- Loads Convergence Tolerance Value", + " 0.4, !- Temperature Convergence Tolerance Value {deltaC}", + " FullInteriorAndExterior, !- Solar Distribution", + " , !- Maximum Number of Warmup Days", + " 6; !- Minimum Number of Warmup Days", + + " ShadowCalculation,", + " AverageOverDaysInFrequency, !- Calculation Method", + " 20; !- Calculation Frequency", + + " SurfaceConvectionAlgorithm:Inside,", + " TARP; !- Algorithm", + + " SurfaceConvectionAlgorithm:Outside,", + " TARP; !- Algorithm", + + " HeatBalanceAlgorithm,", + " ConductionTransferFunction; !- Algorithm", + + " Timestep,", + " 4; !- Number of Timesteps per Hour", + + " Site:Location,", + " Pheonix, !- Name", + " 33.43, !- Latitude {deg}", + " -112.02, !- Longitude {deg}", + " -7.0, !- Time Zone {hr}", + " 339.0; !- Elevation {m}", + + " SizingPeriod:DesignDay,", + " CHICAGO_IL_USA Cooling .4% Conditions DB=>MWB, !- Name", + " 7, !- Month", + " 21, !- Day of Month", + " SummerDesignDay, !- Day Type", + " 32.80000, !- Maximum Dry-Bulb Temperature {C}", + " 10.90000, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " 23.60000, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063.21, !- Barometric Pressure {Pa}", + " 0.0, !- Wind Speed {m/s}", + " 0.0, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 1.000000; !- Sky Clearness", + + " SizingPeriod:DesignDay,", + " CHICAGO_IL_USA Heating 99.6% Conditions, !- Name", + " 1, !- Month", + " 21, !- Day of Month", + " WinterDesignDay, !- Day Type", + " -21.20000, !- Maximum Dry-Bulb Temperature {C}", + " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " -21.20000, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063.21, !- Barometric Pressure {Pa}", + " 4.600000, !- Wind Speed {m/s}", + " 270.0000, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 0.0; !- Sky Clearness", + + " RunPeriod,", + " , !- Name", + " 1, !- Begin Month", + " 1, !- Begin Day of Month", + " , !- Begin Year", + " 12, !- End Month", + " 31, !- End Day of Month", + " , !- End Year", + " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " Yes; !- Use Weather File Snow Indicators", + + " Site:GroundTemperature:BuildingSurface,", + " 23.0, !- January Ground Temperature {C}", + " 23.0, !- February Ground Temperature {C}", + " 23.0, !- March Ground Temperature {C}", + " 23.0, !- April Ground Temperature {C}", + " 23.0, !- May Ground Temperature {C}", + " 23.0, !- June Ground Temperature {C}", + " 23.0, !- July Ground Temperature {C}", + " 23.0, !- August Ground Temperature {C}", + " 23.0, !- September Ground Temperature {C}", + " 23.0, !- October Ground Temperature {C}", + " 23.0, !- November Ground Temperature {C}", + " 23.0; !- December Ground Temperature {C}", + + " ScheduleTypeLimits,", + " Temperature, !- Name", + " -60, !- Lower Limit Value", + " 200, !- Upper Limit Value", + " CONTINUOUS, !- Numeric Type", + " Temperature; !- Unit Type", + + " ScheduleTypeLimits,", + " Control Type, !- Name", + " 0, !- Lower Limit Value", + " 4, !- Upper Limit Value", + " DISCRETE; !- Numeric Type", + + " ScheduleTypeLimits,", + " Fraction, !- Name", + " 0.0, !- Lower Limit Value", + " 1.0, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + " Schedule:Compact,", + " HVACAvailSched, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00, !- Field 3", + " 1.0; !- Field 4", + + " Schedule:Compact,", + " Dual Heating Setpoints, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00, !- Field 3", + " 23.0; !- Field 4", + + " Schedule:Compact,", + " Dual Cooling Setpoints, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00, !- Field 3", + " 23.0; !- Field 4", + + " Schedule:Compact,", + " Dual Zone Control Type Sched, !- Name", + " Control Type, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00, !- Field 3", + " 4; !- Field 4", + + " Material,", + " Gypsum Board, !- Name", + " MediumSmooth, !- Roughness", + " 0.0127, !- Thickness {m}", + " 0.160158849, !- Conductivity {W/m-K}", + " 800.923168698, !- Density {kg/m3}", + " 1087.84, !- Specific Heat {J/kg-K}", + " 0.9, !- Thermal Absorptance", + " 0.9, !- Solar Absorptance", + " 1.0; !- Visible Absorptance", + + " Material,", + " Gypsum Board Wall, !- Name", + " MediumSmooth, !- Roughness", + " 0.0127, !- Thickness {m}", + " 0.160158849, !- Conductivity {W/m-K}", + " 800.923168698, !- Density {kg/m3}", + " 1087.84, !- Specific Heat {J/kg-K}", + " 1e-6, !- Thermal Absorptance", + " 1e-6, !- Solar Absorptance", + " 1.0; !- Visible Absorptance", + + " Material,", + " R-19 Insulation, !- Name", + " Rough, !- Roughness", + " 0.88871384, !- Thickness {m}", + " 0.25745056, !- Conductivity {W/m-K}", + " 3.05091836, !- Density {kg/m3}", + " 794.96, !- Specific Heat {J/kg-K}", + " 0.9, !- Thermal Absorptance", + " 0.9, !- Solar Absorptance", + " 1.0; !- Visible Absorptance", + + " Material,", + " R-A Lot, !- Name", + " Rough, !- Roughness", + " 1.25, !- Thickness {m}", + " 0.001, !- Conductivity {W/m-K}", + " 3.05091836, !- Density {kg/m3}", + " 794.96, !- Specific Heat {J/kg-K}", + " 0.9, !- Thermal Absorptance", + " 0.9, !- Solar Absorptance", + " 1.0; !- Visible Absorptance", + + " Material,", + " Shingles, !- Name", + " Rough, !- Roughness", + " 0.006348984, !- Thickness {m}", + " 0.081932979, !- Conductivity {W/m-K}", + " 1121.292436177, !- Density {kg/m3}", + " 1256.04, !- Specific Heat {J/kg-K}", + " 0.9, !- Thermal Absorptance", + " 0.9, !- Solar Absorptance", + " 1.0; !- Visible Absorptance", + + " Material,", + " Felt, !- Name", + " Rough, !- Roughness", + " 0.00216408, !- Thickness {m}", + " 0.081932979, !- Conductivity {W/m-K}", + " 1121.292436177, !- Density {kg/m3}", + " 1507.248, !- Specific Heat {J/kg-K}", + " 0.9, !- Thermal Absorptance", + " 0.9, !- Solar Absorptance", + " 1.0; !- Visible Absorptance", + + " Material,", + " Plywood, !- Name", + " Rough, !- Roughness", + " 0.012701016, !- Thickness {m}", + " 0.11544, !- Conductivity {W/m-K}", + " 544.627754714, !- Density {kg/m3}", + " 1214.172, !- Specific Heat {J/kg-K}", + " 0.9, !- Thermal Absorptance", + " 0.9, !- Solar Absorptance", + " 1.0; !- Visible Absorptance", + + " Material,", + " Hardboard Siding-Gable, !- Name", + " MediumSmooth, !- Roughness", + " 0.0111125, !- Thickness {m}", + " 0.214957246, !- Conductivity {W/m-K}", + " 640.736, !- Density {kg/m3}", + " 1172.304, !- Specific Heat {J/kg-K}", + " 0.90, !- Thermal Absorptance", + " 0.7, !- Solar Absorptance", + " 1.0; !- Visible Absorptance", + + " Material,", + " Studs, !- Name", + " Rough, !- Roughness", + " 0.0003137, !- Thickness {m}", + " 0.02189835, !- Conductivity {W/m-K}", + " 448.516974471, !- Density {kg/m3}", + " 1632.852, !- Specific Heat {J/kg-K}", + " 0.90, !- Thermal Absorptance", + " 0.7, !- Solar Absorptance", + " 1.0; !- Visible Absorptance", + + " Material,", + " Hardboard Siding-Eave, !- Name", + " MediumSmooth, !- Roughness", + " 0.0111125, !- Thickness {m}", + " 0.214957246, !- Conductivity {W/m-K}", + " 640.736, !- Density {kg/m3}", + " 1172.304, !- Specific Heat {J/kg-K}", + " 0.90, !- Thermal Absorptance", + " 0.7, !- Solar Absorptance", + " 1.0; !- Visible Absorptance", + + " Material,", + " HF-C5, !- Name", + " MediumRough, !- Roughness", + " 0.1015000, !- Thickness {m}", + " 1.729600, !- Conductivity {W/m-K}", + " 2243.000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 1.0; !- Visible Absorptance", + + " Construction,", + " CeilingConstruction, !- Name", + " R-19 Insulation, !- Outside Layer", + " Gypsum Board; !- Layer 2", + + " Construction,", + " Reverse:CeilingConstruction, !- Name", + " Gypsum Board, !- Outside Layer", + " R-19 Insulation; !- Layer 2", + + " Construction,", + " Roof, !- Name", + " Shingles, !- Outside Layer", + " Felt, !- Layer 2", + " Plywood; !- Layer 3", + + " Construction,", + " Gables, !- Name", + " Hardboard Siding-Eave; !- Outside Layer", + + " Construction,", + " Eave Walls, !- Name", + " Hardboard Siding-Eave; !- Outside Layer", + + " Construction,", + " Walls, !- Name", + " Hardboard Siding-Eave, !- Outside Layer", + " R-A Lot, !- Layer 2", + " Gypsum Board Wall; !- Layer 3", + + " Construction,", + " LTFLOOR, !- Name", + " HF-C5; !- Outside Layer", + + " GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " Counterclockwise, !- Vertex Entry Direction", + " World; !- Coordinate System", + + " Zone,", + " OCCUPIED ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " Zone,", + " ATTIC ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " BuildingSurface:Detailed,", + " North Wall, !- Name", + " Wall, !- Surface Type", + " Walls, !- Construction Name", + " OCCUPIED ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 16.764, !- Vertex 1 X-coordinate {m}", + " 8.5344, !- Vertex 1 Y-coordinate {m}", + " 2.70, !- Vertex 1 Z-coordinate {m}", + " 16.764, !- Vertex 2 X-coordinate {m}", + " 8.5344, !- Vertex 2 Y-coordinate {m}", + " 0, !- Vertex 2 Z-coordinate {m}", + " 0, !- Vertex 3 X-coordinate {m}", + " 8.5344, !- Vertex 3 Y-coordinate {m}", + " 0, !- Vertex 3 Z-coordinate {m}", + " 0, !- Vertex 4 X-coordinate {m}", + " 8.5344, !- Vertex 4 Y-coordinate {m}", + " 2.70; !- Vertex 4 Z-coordinate {m}", + + " BuildingSurface:Detailed,", + " North Wall Attic, !- Name", + " Wall, !- Surface Type", + " Eave Walls, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 16.764, !- Vertex 1 X-coordinate {m}", + " 8.5344, !- Vertex 1 Y-coordinate {m}", + " 2.7254, !- Vertex 1 Z-coordinate {m}", + " 16.764, !- Vertex 2 X-coordinate {m}", + " 8.5344, !- Vertex 2 Y-coordinate {m}", + " 2.70, !- Vertex 2 Z-coordinate {m}", + " 0, !- Vertex 3 X-coordinate {m}", + " 8.5344, !- Vertex 3 Y-coordinate {m}", + " 2.70, !- Vertex 3 Z-coordinate {m}", + " 0, !- Vertex 4 X-coordinate {m}", + " 8.5344, !- Vertex 4 Y-coordinate {m}", + " 2.7254; !- Vertex 4 Z-coordinate {m}", + + " BuildingSurface:Detailed,", + " East Wall, !- Name", + " Wall, !- Surface Type", + " Walls, !- Construction Name", + " OCCUPIED ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 16.764, !- Vertex 1 X-coordinate {m}", + " 0, !- Vertex 1 Y-coordinate {m}", + " 2.70, !- Vertex 1 Z-coordinate {m}", + " 16.764, !- Vertex 2 X-coordinate {m}", + " 0, !- Vertex 2 Y-coordinate {m}", + " 0, !- Vertex 2 Z-coordinate {m}", + " 16.764, !- Vertex 3 X-coordinate {m}", + " 8.5344, !- Vertex 3 Y-coordinate {m}", + " 0, !- Vertex 3 Z-coordinate {m}", + " 16.764, !- Vertex 4 X-coordinate {m}", + " 8.5344, !- Vertex 4 Y-coordinate {m}", + " 2.70; !- Vertex 4 Z-coordinate {m}", + + " BuildingSurface:Detailed,", + " East Wall Attic, !- Name", + " Wall, !- Surface Type", + " Gables, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50, !- View Factor to Ground", + " 5, !- Number of Vertices", + " 16.764, !- Vertex 1 X-coordinate {m}", + " 0, !- Vertex 1 Y-coordinate {m}", + " 2.7254, !- Vertex 1 Z-coordinate {m}", + " 16.764, !- Vertex 2 X-coordinate {m}", + " 0, !- Vertex 2 Y-coordinate {m}", + " 2.70, !- Vertex 2 Z-coordinate {m}", + " 16.764, !- Vertex 3 X-coordinate {m}", + " 8.5344, !- Vertex 3 Y-coordinate {m}", + " 2.70, !- Vertex 3 Z-coordinate {m}", + " 16.764, !- Vertex 4 X-coordinate {m}", + " 8.5344, !- Vertex 4 Y-coordinate {m}", + " 2.7254, !- Vertex 4 Z-coordinate {m}", + " 16.764, !- Vertex 5 X-coordinate {m}", + " 4.2672, !- Vertex 5 Y-coordinate {m}", + " 4.5034; !- Vertex 5 Z-coordinate {m}", + + " BuildingSurface:Detailed,", + " South Wall, !- Name", + " Wall, !- Surface Type", + " Walls, !- Construction Name", + " OCCUPIED ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0, !- Vertex 1 X-coordinate {m}", + " 0, !- Vertex 1 Y-coordinate {m}", + " 2.70, !- Vertex 1 Z-coordinate {m}", + " 0, !- Vertex 2 X-coordinate {m}", + " 0, !- Vertex 2 Y-coordinate {m}", + " 0, !- Vertex 2 Z-coordinate {m}", + " 16.764, !- Vertex 3 X-coordinate {m}", + " 0, !- Vertex 3 Y-coordinate {m}", + " 0, !- Vertex 3 Z-coordinate {m}", + " 16.764, !- Vertex 4 X-coordinate {m}", + " 0, !- Vertex 4 Y-coordinate {m}", + " 2.70; !- Vertex 4 Z-coordinate {m}", + + " BuildingSurface:Detailed,", + " South Wall Attic, !- Name", + " Wall, !- Surface Type", + " Eave Walls, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0, !- Vertex 1 X-coordinate {m}", + " 0, !- Vertex 1 Y-coordinate {m}", + " 2.7254, !- Vertex 1 Z-coordinate {m}", + " 0, !- Vertex 2 X-coordinate {m}", + " 0, !- Vertex 2 Y-coordinate {m}", + " 2.70, !- Vertex 2 Z-coordinate {m}", + " 16.764, !- Vertex 3 X-coordinate {m}", + " 0, !- Vertex 3 Y-coordinate {m}", + " 2.70, !- Vertex 3 Z-coordinate {m}", + " 16.764, !- Vertex 4 X-coordinate {m}", + " 0, !- Vertex 4 Y-coordinate {m}", + " 2.7254; !- Vertex 4 Z-coordinate {m}", + + " BuildingSurface:Detailed,", + " West Wall, !- Name", + " Wall, !- Surface Type", + " Walls, !- Construction Name", + " OCCUPIED ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0, !- Vertex 1 X-coordinate {m}", + " 8.5344, !- Vertex 1 Y-coordinate {m}", + " 2.70, !- Vertex 1 Z-coordinate {m}", + " 0, !- Vertex 2 X-coordinate {m}", + " 8.5344, !- Vertex 2 Y-coordinate {m}", + " 0, !- Vertex 2 Z-coordinate {m}", + " 0, !- Vertex 3 X-coordinate {m}", + " 0, !- Vertex 3 Y-coordinate {m}", + " 0, !- Vertex 3 Z-coordinate {m}", + " 0, !- Vertex 4 X-coordinate {m}", + " 0, !- Vertex 4 Y-coordinate {m}", + " 2.70; !- Vertex 4 Z-coordinate {m}", + + " BuildingSurface:Detailed,", + " West Wall Attic, !- Name", + " Wall, !- Surface Type", + " Gables, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50, !- View Factor to Ground", + " 5, !- Number of Vertices", + " 0, !- Vertex 1 X-coordinate {m}", + " 8.5344, !- Vertex 1 Y-coordinate {m}", + " 2.7254, !- Vertex 1 Z-coordinate {m}", + " 0, !- Vertex 2 X-coordinate {m}", + " 8.5344, !- Vertex 2 Y-coordinate {m}", + " 2.70, !- Vertex 2 Z-coordinate {m}", + " 0, !- Vertex 3 X-coordinate {m}", + " 0, !- Vertex 3 Y-coordinate {m}", + " 2.70, !- Vertex 3 Z-coordinate {m}", + " 0, !- Vertex 4 X-coordinate {m}", + " 0, !- Vertex 4 Y-coordinate {m}", + " 2.7254, !- Vertex 4 Z-coordinate {m}", + " 0, !- Vertex 5 X-coordinate {m}", + " 4.2672, !- Vertex 5 Y-coordinate {m}", + " 4.5034; !- Vertex 5 Z-coordinate {m}", + + " BuildingSurface:Detailed,", + " Zone Floor, !- Name", + " Floor, !- Surface Type", + " LTFLOOR, !- Construction Name", + " OCCUPIED ZONE, !- Zone Name", + " Ground, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0, !- Vertex 1 X-coordinate {m}", + " 0, !- Vertex 1 Y-coordinate {m}", + " 0, !- Vertex 1 Z-coordinate {m}", + " 0, !- Vertex 2 X-coordinate {m}", + " 8.5344, !- Vertex 2 Y-coordinate {m}", + " 0, !- Vertex 2 Z-coordinate {m}", + " 16.764, !- Vertex 3 X-coordinate {m}", + " 8.5344, !- Vertex 3 Y-coordinate {m}", + " 0, !- Vertex 3 Z-coordinate {m}", + " 16.764, !- Vertex 4 X-coordinate {m}", + " 0, !- Vertex 4 Y-coordinate {m}", + " 0; !- Vertex 4 Z-coordinate {m}", + + " BuildingSurface:Detailed,", + " Zone Ceiling, !- Name", + " Ceiling, !- Surface Type", + " CeilingConstruction, !- Construction Name", + " OCCUPIED ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Attic Floor, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0, !- Vertex 1 X-coordinate {m}", + " 8.5344, !- Vertex 1 Y-coordinate {m}", + " 2.70, !- Vertex 1 Z-coordinate {m}", + " 0, !- Vertex 2 X-coordinate {m}", + " 0, !- Vertex 2 Y-coordinate {m}", + " 2.70, !- Vertex 2 Z-coordinate {m}", + " 16.764, !- Vertex 3 X-coordinate {m}", + " 0, !- Vertex 3 Y-coordinate {m}", + " 2.70, !- Vertex 3 Z-coordinate {m}", + " 16.764, !- Vertex 4 X-coordinate {m}", + " 8.5344, !- Vertex 4 Y-coordinate {m}", + " 2.70; !- Vertex 4 Z-coordinate {m}", + + " BuildingSurface:Detailed,", + " Attic Floor, !- Name", + " Floor, !- Surface Type", + " Reverse:CeilingConstruction, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zone Ceiling, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 16.764, !- Vertex 1 X-coordinate {m}", + " 8.5344, !- Vertex 1 Y-coordinate {m}", + " 2.70, !- Vertex 1 Z-coordinate {m}", + " 16.764, !- Vertex 2 X-coordinate {m}", + " 0, !- Vertex 2 Y-coordinate {m}", + " 2.70, !- Vertex 2 Z-coordinate {m}", + " 0, !- Vertex 3 X-coordinate {m}", + " 0, !- Vertex 3 Y-coordinate {m}", + " 2.70, !- Vertex 3 Z-coordinate {m}", + " 0, !- Vertex 4 X-coordinate {m}", + " 8.5344, !- Vertex 4 Y-coordinate {m}", + " 2.70; !- Vertex 4 Z-coordinate {m}", + + " BuildingSurface:Detailed,", + " Attic Roof South, !- Name", + " Roof, !- Surface Type", + " Roof, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0, !- Vertex 1 X-coordinate {m}", + " 4.2672, !- Vertex 1 Y-coordinate {m}", + " 4.5034, !- Vertex 1 Z-coordinate {m}", + " 0, !- Vertex 2 X-coordinate {m}", + " 0, !- Vertex 2 Y-coordinate {m}", + " 2.7254, !- Vertex 2 Z-coordinate {m}", + " 16.764, !- Vertex 3 X-coordinate {m}", + " 0, !- Vertex 3 Y-coordinate {m}", + " 2.7254, !- Vertex 3 Z-coordinate {m}", + " 16.764, !- Vertex 4 X-coordinate {m}", + " 4.2672, !- Vertex 4 Y-coordinate {m}", + " 4.5034; !- Vertex 4 Z-coordinate {m}", + + " BuildingSurface:Detailed,", + " Attic Roof North, !- Name", + " Roof, !- Surface Type", + " Roof, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 16.764, !- Vertex 1 X-coordinate {m}", + " 4.2672, !- Vertex 1 Y-coordinate {m}", + " 4.5034, !- Vertex 1 Z-coordinate {m}", + " 16.764, !- Vertex 2 X-coordinate {m}", + " 8.5344, !- Vertex 2 Y-coordinate {m}", + " 2.7254, !- Vertex 2 Z-coordinate {m}", + " 0, !- Vertex 3 X-coordinate {m}", + " 8.5344, !- Vertex 3 Y-coordinate {m}", + " 2.7254, !- Vertex 3 Z-coordinate {m}", + " 0, !- Vertex 4 X-coordinate {m}", + " 4.2672, !- Vertex 4 Y-coordinate {m}", + " 4.5034; !- Vertex 4 Z-coordinate {m}", + + " ZoneProperty:UserViewFactors:bySurfaceName,", + " ATTIC ZONE, !- Zone Name", + " Attic Floor, !=From Surface 1", + " Attic Floor, !=To Surface 1", + " 0.000000,", + " Attic Floor, !=From Surface 1", + " Attic Roof South, !=To Surface 2", + " 0.476288,", + " Attic Floor, !=From Surface 1", + " Attic Roof North, !=To Surface 3", + " 0.476288,", + " Attic Floor, !=From Surface 1", + " East Wall Attic, !=To Surface 4", + " 0.023712,", + " Attic Floor, !=From Surface 1", + " West Wall Attic, !=To Surface 5", + " 0.023712,", + " Attic Floor, !=From Surface 1", + " North Wall Attic, !=To Surface 6", + " 0.000000,", + " Attic Floor, !=From Surface 1", + " South Wall Attic, !=To Surface 7", + " 0.000000,", + " Attic Roof South, !=From Surface 2", + " Attic Floor, !=To Surface 1", + " 0.879300,", + " Attic Roof South, !=From Surface 2", + " Attic Roof South, !=To Surface 2", + " 0.000000,", + " Attic Roof South, !=From Surface 2", + " Attic Roof North, !=To Surface 3", + " 0.067378,", + " Attic Roof South, !=From Surface 2", + " East Wall Attic, !=To Surface 4", + " 0.026661,", + " Attic Roof South, !=From Surface 2", + " West Wall Attic, !=To Surface 5", + " 0.026661,", + " Attic Roof South, !=From Surface 2", + " North Wall Attic, !=To Surface 6", + " 0.000000,", + " Attic Roof South, !=From Surface 2", + " South Wall Attic, !=To Surface 7", + " 0.000000,", + " Attic Roof North, !=From Surface 3", + " Attic Floor, !=To Surface 1", + " 0.879300,", + " Attic Roof North, !=From Surface 3", + " Attic Roof South, !=To Surface 2", + " 0.067378,", + " Attic Roof North, !=From Surface 3", + " Attic Roof North, !=To Surface 3", + " 0.000000,", + " Attic Roof North, !=From Surface 3", + " East Wall Attic, !=To Surface 4", + " 0.026661,", + " Attic Roof North, !=From Surface 3", + " West Wall Attic, !=To Surface 5", + " 0.026661,", + " Attic Roof North, !=From Surface 3", + " North Wall Attic, !=To Surface 6", + " 0.000000,", + " Attic Roof North, !=From Surface 3", + " South Wall Attic, !=To Surface 7", + " 0.000000,", + " East Wall Attic, !=From Surface 4", + " Attic Floor, !=To Surface 1", + " 0.447134,", + " East Wall Attic, !=From Surface 4", + " Attic Roof South, !=To Surface 2", + " 0.272318,", + " East Wall Attic, !=From Surface 4", + " Attic Roof North, !=To Surface 3", + " 0.272318,", + " East Wall Attic, !=From Surface 4", + " East Wall Attic, !=To Surface 4", + " 0.000000,", + " East Wall Attic, !=From Surface 4", + " West Wall Attic, !=To Surface 5", + " 0.008231,", + " East Wall Attic, !=From Surface 4", + " North Wall Attic, !=To Surface 6", + " 0.000000,", + " East Wall Attic, !=From Surface 4", + " South Wall Attic, !=To Surface 7", + " 0.000000,", + " West Wall Attic, !=From Surface 5", + " Attic Floor, !=To Surface 1", + " 0.447134,", + " West Wall Attic, !=From Surface 5", + " Attic Roof South, !=To Surface 2", + " 0.272318,", + " West Wall Attic, !=From Surface 5", + " Attic Roof North, !=To Surface 3", + " 0.272318,", + " West Wall Attic, !=From Surface 5", + " East Wall Attic, !=To Surface 4", + " 0.008231,", + " West Wall Attic, !=From Surface 5", + " West Wall Attic, !=To Surface 5", + " 0.000000,", + " West Wall Attic, !=From Surface 5", + " North Wall Attic, !=To Surface 6", + " 0.000000,", + " West Wall Attic, !=From Surface 5", + " South Wall Attic, !=To Surface 7", + " 0.000000,", + " North Wall Attic, !=From Surface 6", + " Attic Floor, !=To Surface 1", + " 0.000000,", + " North Wall Attic, !=From Surface 6", + " Attic Roof South, !=To Surface 2", + " 0.000000,", + " North Wall Attic, !=From Surface 6", + " Attic Roof North, !=To Surface 3", + " 0.000000,", + " North Wall Attic, !=From Surface 6", + " East Wall Attic, !=To Surface 4", + " 0.000000,", + " North Wall Attic, !=From Surface 6", + " West Wall Attic, !=To Surface 5", + " 0.000000,", + " North Wall Attic, !=From Surface 6", + " North Wall Attic, !=To Surface 6", + " 1.000000,", + " North Wall Attic, !=From Surface 6", + " South Wall Attic, !=To Surface 7", + " 0.000000,", + " South Wall Attic, !=From Surface 7", + " Attic Floor, !=To Surface 1", + " 0.000000,", + " South Wall Attic, !=From Surface 7", + " Attic Roof South, !=To Surface 2", + " 0.000000,", + " South Wall Attic, !=From Surface 7", + " Attic Roof North, !=To Surface 3", + " 0.000000,", + " South Wall Attic, !=From Surface 7", + " East Wall Attic, !=To Surface 4", + " 0.000000,", + " South Wall Attic, !=From Surface 7", + " West Wall Attic, !=To Surface 5", + " 0.000000,", + " South Wall Attic, !=From Surface 7", + " North Wall Attic, !=To Surface 6", + " 0.000000,", + " South Wall Attic, !=From Surface 7", + " South Wall Attic, !=To Surface 7", + " 1.000000;", + + " AirflowNetwork:SimulationControl,", + " House AirflowNetwork, !- Name", + " MultizoneWithDistribution, !- AirflowNetwork Control", + " SurfaceAverageCalculation, !- Wind Pressure Coefficient Type", + " , !- Height Selection for Local Wind Pressure Calculation", + " LOWRISE, !- Building Type", + " 500, !- Maximum Number of Iterations {dimensionless}", + " ZeroNodePressures, !- Initialization Type", + " 1.0E-04, !- Relative Airflow Convergence Tolerance {dimensionless}", + " 1.0E-06, !- Absolute Airflow Convergence Tolerance {kg/s}", + " -0.5, !- Convergence Acceleration Limit {dimensionless}", + " 0.0, !- Azimuth Angle of Long Axis of Building {deg}", + " 1.0; !- Ratio of Building Width Along Short Axis to Width Along Long Axis", + + " AirflowNetwork:MultiZone:Zone,", + " OCCUPIED ZONE, !- Zone Name", + " NOVENT, !- Ventilation Control Mode", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " 1.0, !- Minimum Venting Open Factor {dimensionless}", + " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", + " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", + " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", + " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", + + " AirflowNetwork:MultiZone:Zone,", + " ATTIC ZONE, !- Zone Name", + " NoVent, !- Ventilation Control Mode", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " 1.0, !- Minimum Venting Open Factor {dimensionless}", + " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", + " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", + " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", + " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", + + " AirflowNetwork:MultiZone:Surface,", + " North Wall Attic, !- Surface Name", + " NorthEaveLeak, !- Leakage Component Name", + " , !- External Node Name", + " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + + " AirflowNetwork:MultiZone:Surface,", + " South Wall Attic, !- Surface Name", + " SouthEaveLeak, !- Leakage Component Name", + " , !- External Node Name", + " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + + " AirflowNetwork:MultiZone:Surface,", + " East Wall, !- Surface Name", + " EastLeak, !- Leakage Component Name", + " , !- External Node Name", + " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + + " AirflowNetwork:MultiZone:Surface,", + " West Wall, !- Surface Name", + " WestLeak, !- Leakage Component Name", + " , !- External Node Name", + " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + + " AirflowNetwork:MultiZone:ReferenceCrackConditions,", + " ReferenceCrackConditions,!- Name", + " 20.0, !- Reference Temperature {C}", + " 101325, !- Reference Barometric Pressure {Pa}", + " 0.0; !- Reference Humidity Ratio {kgWater/kgDryAir}", + + " AirflowNetwork:MultiZone:Surface:Crack,", + " NorthEaveLeak, !- Name", + " 0.2, !- Air Mass Flow Coefficient at Reference Conditions {kg/s}", + " 0.65, !- Air Mass Flow Exponent {dimensionless}", + " ReferenceCrackConditions;!- Reference Crack Conditions", + + " AirflowNetwork:MultiZone:Surface:Crack,", + " SouthEaveLeak, !- Name", + " 0.2, !- Air Mass Flow Coefficient at Reference Conditions {kg/s}", + " 0.65, !- Air Mass Flow Exponent {dimensionless}", + " ReferenceCrackConditions;!- Reference Crack Conditions", + + " AirflowNetwork:MultiZone:Surface:Crack,", + " EastLeak, !- Name", + " 0.05, !- Air Mass Flow Coefficient at Reference Conditions {kg/s}", + " 0.65, !- Air Mass Flow Exponent {dimensionless}", + " ReferenceCrackConditions;!- Reference Crack Conditions", + + " AirflowNetwork:MultiZone:Surface:Crack,", + " WestLeak, !- Name", + " 0.03, !- Air Mass Flow Coefficient at Reference Conditions {kg/s}", + " 0.65, !- Air Mass Flow Exponent {dimensionless}", + " ReferenceCrackConditions;!- Reference Crack Conditions", + + " AirflowNetwork:Distribution:Node,", + " EquipmentInletNode, !- Name", + " Zone Equipment Inlet Node, !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " SplitterNode, !- Name", + " , !- Component Name or Node Name", + " AirLoopHVAC:ZoneSplitter,!- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " ZoneSupplyNode, !- Name", + " , !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " ZoneSupplyRegisterNode, !- Name", + " Zone Inlet Node, !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " ZoneOutletNode, !- Name", + " Zone Outlet Node, !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " ZoneReturnNode, !- Name", + " , !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " MixerNode, !- Name", + " , !- Component Name or Node Name", + " AirLoopHVAC:ZoneMixer, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " MainReturnNode, !- Name", + " Return Air Mixer Outlet, !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " MainInletNode, !- Name", + " Air Loop Inlet Node, !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " FanInletNode, !- Name", + " Air Loop Inlet Node, !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " FanOutletNode, !- Name", + " Cooling Coil Air Inlet Node, !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " HeatingInletNode, !- Name", + " Heating Coil Air Inlet Node, !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Node,", + " HeatingOutletNode, !- Name", + " Air Loop Outlet Node, !- Component Name or Node Name", + " Other, !- Component Object Type or Node Type", + " 3.0; !- Node Height {m}", + + " AirflowNetwork:Distribution:Component:Duct,", + " MainTrunk, !- Name", + " 2.0, !- Duct Length {m}", + " 0.4064, !- Hydraulic Diameter {m}", + " 0.1297, !- Cross Section Area {m2}", + " 0.0009, !- Surface Roughness {m}", + " 0.01, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", + " 0.7139, !- Heat Transmittance Coefficient (U-Factor) for Duct Construction {W/m2-K}", + " 0.0000001; !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", + + " AirflowNetwork:Distribution:Component:Duct,", + " ZoneSupply, !- Name", + " 16.76, !- Duct Length {m}", + " 0.3048, !- Hydraulic Diameter {m}", + " 0.073205, !- Cross Section Area {m2}", + " 0.0009, !- Surface Roughness {m}", + " 0.91, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", + " 0.00613207547169811, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", + " 0.0000001, !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", + " 0.0325, !- Outside Convection Coefficient {W/m2-K}", + " 0.1625; !- Inside Convection Coefficient {W/m2-K}", + + " AirflowNetwork:Distribution:Component:Duct,", + " ZoneReturn, !- Name", + " 3.0, !- Duct Length {m}", + " 0.50, !- Hydraulic Diameter {m}", + " 0.1963, !- Cross Section Area {m2}", + " 0.0009, !- Surface Roughness {m}", + " 0.01, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", + " 0.00122641509433962, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", + " 0.0000001, !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", + " 0.0065, !- Outside Convection Coefficient {W/m2-K}", + " 0.0325; !- Inside Convection Coefficient {W/m2-K}", + + " AirflowNetwork:Distribution:Component:Duct,", + " ZoneConnectionDuct, !- Name", + " 0.1, !- Duct Length {m}", + " 1.0, !- Hydraulic Diameter {m}", + " 0.7854, !- Cross Section Area {m2}", + " 0.0001, !- Surface Roughness {m}", + " 0.00, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", + " 0.00122641509433962, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", + " 0.0000001, !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", + " 0.0065, !- Outside Convection Coefficient {W/m2-K}", + " 0.0325; !- Inside Convection Coefficient {W/m2-K}", + + " AirflowNetwork:Distribution:Component:Duct,", + " MainReturn, !- Name", + " 1.0, !- Duct Length {m}", + " 0.50, !- Hydraulic Diameter {m}", + " 0.1963, !- Cross Section Area {m2}", + " 0.0009, !- Surface Roughness {m}", + " 0.01, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", + " 0.00122641509433962, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", + " 0.0000001, !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", + " 0.0065, !- Outside Convection Coefficient {W/m2-K}", + " 0.0325; !- Inside Convection Coefficient {W/m2-K}", + + " AirflowNetwork:Distribution:Component:Duct,", + " AirLoopReturn, !- Name", + " 0.1, !- Duct Length {m}", + " 1.00, !- Hydraulic Diameter {m}", + " 0.7854, !- Cross Section Area {m2}", + " 0.0001, !- Surface Roughness {m}", + " 0.00, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", + " 0.00122641509433962, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", + " 0.0000001, !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", + " 0.0065, !- Outside Convection Coefficient {W/m2-K}", + " 0.0325; !- Inside Convection Coefficient {W/m2-K}", + + " AirflowNetwork:Distribution:Component:Duct,", + " AirLoopSupply, !- Name", + " 0.1, !- Duct Length {m}", + " 1.00, !- Hydraulic Diameter {m}", + " 0.7854, !- Cross Section Area {m2}", + " 0.0001, !- Surface Roughness {m}", + " 0.00, !- Coefficient for Local Dynamic Loss Due to Fitting {dimensionless}", + " 0.00122641509433962, !- Overall Heat Transmittance Coefficient (U-Factor) from Air to Air {W/m2-K}", + " 0.0000001, !- Overall Moisture Transmittance Coefficient from Air to Air {kg/m2}", + " 0.0065, !- Outside Convection Coefficient {W/m2-K}", + " 0.0325; !- Inside Convection Coefficient {W/m2-K}", + + " AirflowNetwork:Distribution:Component:Fan,", + " Supply Fan 1, !- Fan Name", + " Fan:ConstantVolume; !- Supply Fan Object Type", + + " AirflowNetwork:Distribution:Component:Coil,", + " ACDXCoil 1, !- Coil Name", + " Coil:Cooling:DX:SingleSpeed, !- Coil Object Type", + " 0.1, !- Air Path Length {m}", + " 1.000; !- Air Path Hydraulic Diameter {m}", + + " AirflowNetwork:Distribution:Component:Coil,", + " Main Heating Coil 1, !- Coil Name", + " Coil:Heating:Fuel, !- Coil Object Type", + " 0.1, !- Air Path Length {m}", + " 1.000; !- Air Path Hydraulic Diameter {m}", + + " AirflowNetwork:Distribution:DuctViewFactors,", + " ZoneSupplyLink1, !- Name of Linkage", + " 1.0, !- Surface Exposure Fraction", + " 0.9, !- Duct surface emittance", + " Attic Floor, !- Surface 1", + " 0.483577, !- View Factor for Surface 1", + " Attic Roof North, !- Surface 2", + " 0.237692, !- View Factor for Surface 2", + " Attic Roof South, !- Surface 3", + " 0.237692, !- View Factor for Surface 3", + " East Wall Attic, !- Surface 4", + " 0.02052, !- View Factor for Surface 4", + " West Wall Attic, !- Surface 5", + " 0.02052; !- View Factor for Surface 5", + + " AirflowNetwork:Distribution:Linkage,", + " Main Link, !- Name", + " EquipmentInletNode, !- Node 1 Name", + " SplitterNode, !- Node 2 Name", + " MainTrunk, !- Component Name", + " Attic Zone; !- Thermal Zone Name", + + " AirflowNetwork:Distribution:Linkage,", + " ZoneSupplyLink1, !- Name", + " SplitterNode, !- Node 1 Name", + " ZoneSupplyNode, !- Node 2 Name", + " ZoneSupply, !- Component Name", + " Attic Zone; !- Thermal Zone Name", + + " AirflowNetwork:Distribution:Linkage,", + " ZoneSupply1Link2, !- Name", + " ZoneSupplyNode, !- Node 1 Name", + " ZoneSupplyRegisterNode, !- Node 2 Name", + " ZoneSupply, !- Component Name", + " Attic Zone; !- Thermal Zone Name", + + " AirflowNetwork:Distribution:Linkage,", + " ZoneSupplyConnectionLink,!- Name", + " ZoneSupplyRegisterNode, !- Node 1 Name", + " OCCUPIED ZONE, !- Node 2 Name", + " ZoneConnectionDuct; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " ZoneReturnConnectionLink,!- Name", + " OCCUPIED ZONE, !- Node 1 Name", + " ZoneOutletNode, !- Node 2 Name", + " ZoneConnectionDuct; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " ZoneReturn1Link, !- Name", + " ZoneOutletNode, !- Node 1 Name", + " ZoneReturnNode, !- Node 2 Name", + " ZoneReturn, !- Component Name", + " Attic Zone; !- Thermal Zone Name", + + " AirflowNetwork:Distribution:Linkage,", + " ZoneReturn2Link, !- Name", + " ZoneReturnNode, !- Node 1 Name", + " MixerNode, !- Node 2 Name", + " ZoneReturn, !- Component Name", + " OCCUPIED Zone; !- Thermal Zone Name", + + " AirflowNetwork:Distribution:Linkage,", + " ReturnMixerLink, !- Name", + " MixerNode, !- Node 1 Name", + " MainReturnNode, !- Node 2 Name", + " MainReturn, !- Component Name", + " OCCUPIED Zone; !- Thermal Zone Name", + + " AirflowNetwork:Distribution:Linkage,", + " SystemReturnLink, !- Name", + " MainReturnNode, !- Node 1 Name", + " MainInletNode, !- Node 2 Name", + " AirLoopReturn; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " SystemInletLink, !- Name", + " MainInletNode, !- Node 1 Name", + " FanInletNode, !- Node 2 Name", + " MainReturn, !- Component Name", + " OCCUPIED ZONE; !- Thermal Zone Name", + + " AirflowNetwork:Distribution:Linkage,", + " SupplyFanLink, !- Name", + " FanInletNode, !- Node 1 Name", + " FanOutletNode, !- Node 2 Name", + " Supply Fan 1; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " CoolingCoilLink, !- Name", + " FanOutletNode, !- Node 1 Name", + " HeatingInletNode, !- Node 2 Name", + " ACDXCoil 1; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " HeatingCoilLink, !- Name", + " HeatingInletNode, !- Node 1 Name", + " HeatingOutletNode, !- Node 2 Name", + " Main Heating Coil 1; !- Component Name", + + " AirflowNetwork:Distribution:Linkage,", + " EquipmentAirLoopLink, !- Name", + " HeatingOutletNode, !- Node 1 Name", + " EquipmentInletNode, !- Node 2 Name", + " AirLoopSupply; !- Component Name", + + " ZoneControl:Thermostat,", + " Zone Thermostat, !- Name", + " OCCUPIED ZONE, !- Zone or ZoneList Name", + " Dual Zone Control Type Sched, !- Control Type Schedule Name", + " ThermostatSetpoint:DualSetpoint, !- Control 1 Object Type", + " Setpoints; !- Control 1 Name", + + " ThermostatSetpoint:DualSetpoint,", + " Setpoints, !- Name", + " Dual Heating Setpoints, !- Heating Setpoint Temperature Schedule Name", + " Dual Cooling Setpoints; !- Cooling Setpoint Temperature Schedule Name", + + " ZoneHVAC:AirDistributionUnit,", + " ZoneDirectAirADU, !- Name", + " Zone1NoReheatAirOutletNode, !- Air Distribution Unit Outlet Node Name", + " AirTerminal:SingleDuct:ConstantVolume:NoReheat, !- Air Terminal Object Type", + " ZoneDirectAir; !- Air Terminal Name", + + " AirTerminal:SingleDuct:ConstantVolume:NoReheat,", + " ZoneDirectAir, !- Name", + " HVACAvailSched, !- Availability Schedule Name", + " Zone Inlet Node 2AT, !- Air Inlet Node Name", + " Zone Inlet Node, !- Zone Supply Air Node Name", + " 2.36; !- Maximum Air Flow Rate {m3/s}", + + " ZoneHVAC:EquipmentList,", + " ZoneEquipment, !- Name", + " SequentialLoad, !- Load Distribution Scheme", + " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", + " ZoneDirectAirADU, !- Zone Equipment 1 Name", + " 1, !- Zone Equipment 1 Cooling Sequence", + " 1; !- Zone Equipment 1 Heating or No-Load Sequence", + + " ZoneHVAC:EquipmentConnections,", + " OCCUPIED ZONE, !- Zone Name", + " ZoneEquipment, !- Zone Conditioning Equipment List Name", + " ZoneInlets, !- Zone Air Inlet Node or NodeList Name", + " , !- Zone Air Exhaust Node or NodeList Name", + " Zone Node, !- Zone Air Node Name", + " Zone Outlet Node; !- Zone Return Air Node Name", + + " Fan:ConstantVolume,", + " Supply Fan 1, !- Name", + " HVACAvailSched, !- Availability Schedule Name", + " 0.7, !- Fan Total Efficiency", + " 400.0, !- Pressure Rise {Pa}", + " 2.36, !- Maximum Flow Rate {m3/s}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Airstream Fraction", + " Air Loop Inlet Node, !- Air Inlet Node Name", + " Cooling Coil Air Inlet Node; !- Air Outlet Node Name", + + " Coil:Cooling:DX:SingleSpeed,", + " ACDXCoil 1, !- Name", + " HVACAvailSched, !- Availability Schedule Name", + " 21000, !- Gross Rated Total Cooling Capacity {W}", + " 0.8, !- Gross Rated Sensible Heat Ratio", + " 3.0, !- Gross Rated Cooling COP {W/W}", + " 2.36, !- Rated Air Flow Rate {m3/s}", + " , !- Rated Evaporator Fan Power Per Volume Flow Rate {W/(m3/s)}", + " Cooling Coil Air Inlet Node, !- Air Inlet Node Name", + " Heating Coil Air Inlet Node, !- Air Outlet Node Name", + " WindACCoolCapFT, !- Total Cooling Capacity Function of Temperature Curve Name", + " WindACCoolCapFFF, !- Total Cooling Capacity Function of Flow Fraction Curve Name", + " WindACEIRFT, !- Energy Input Ratio Function of Temperature Curve Name", + " WindACEIRFFF, !- Energy Input Ratio Function of Flow Fraction Curve Name", + " WindACPLFFPLR; !- Part Load Fraction Correlation Curve Name", + + " Coil:Heating:Fuel,", + " Main Heating Coil 1, !- Name", + " HVACAvailSched, !- Availability Schedule Name", + " NaturalGas, !- Fuel Type", + " 0.8, !- Burner Efficiency", + " 8000000, !- Nominal Capacity {W}", + " Heating Coil Air Inlet Node, !- Air Inlet Node Name", + " Air Loop Outlet Node, !- Air Outlet Node Name", + " Air Loop Outlet Node; !- Temperature Setpoint Node Name", + + " CoilSystem:Cooling:DX,", + " DX Cooling Coil System 1,!- Name", + " HVACAvailSched, !- Availability Schedule Name", + " Cooling Coil Air Inlet Node, !- DX Cooling Coil System Inlet Node Name", + " Heating Coil Air Inlet Node, !- DX Cooling Coil System Outlet Node Name", + " Heating Coil Air Inlet Node, !- DX Cooling Coil System Sensor Node Name", + " Coil:Cooling:DX:SingleSpeed, !- Cooling Coil Object Type", + " ACDXCoil 1; !- Cooling Coil Name", + + " AirLoopHVAC,", + " Typical Residential System, !- Name", + " , !- Controller List Name", + " Reheat System 1 Avail List, !- Availability Manager List Name", + " 2.36, !- Design Supply Air Flow Rate {m3/s}", + " Air Loop Branches, !- Branch List Name", + " , !- Connector List Name", + " Air Loop Inlet Node, !- Supply Side Inlet Node Name", + " Return Air Mixer Outlet, !- Demand Side Outlet Node Name", + " Zone Equipment Inlet Node, !- Demand Side Inlet Node Names", + " Air Loop Outlet Node; !- Supply Side Outlet Node Names", + + " AirLoopHVAC:ZoneSplitter,", + " Zone Supply Air Splitter,!- Name", + " Zone Equipment Inlet Node, !- Inlet Node Name", + " Zone Inlet Node 2AT; !- Outlet 1 Node Name", + + " AirLoopHVAC:SupplyPath,", + " TermReheatSupplyPath, !- Name", + " Zone Equipment Inlet Node, !- Supply Air Path Inlet Node Name", + " AirLoopHVAC:ZoneSplitter,!- Component 1 Object Type", + " Zone Supply Air Splitter;!- Component 1 Name", + + " AirLoopHVAC:ZoneMixer,", + " Zone Return Air Mixer, !- Name", + " Return Air Mixer Outlet, !- Outlet Node Name", + " Zone Outlet Node; !- Inlet 1 Node Name", + + " AirLoopHVAC:ReturnPath,", + " TermReheatReturnPath, !- Name", + " Return Air Mixer Outlet, !- Return Air Path Outlet Node Name", + " AirLoopHVAC:ZoneMixer, !- Component 1 Object Type", + " Zone Return Air Mixer; !- Component 1 Name", + + " Branch,", + " Air Loop Main Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Fan:ConstantVolume, !- Component 1 Object Type", + " Supply Fan 1, !- Component 1 Name", + " Air Loop Inlet Node, !- Component 1 Inlet Node Name", + " Cooling Coil Air Inlet Node, !- Component 1 Outlet Node Name", + " CoilSystem:Cooling:DX, !- Component 2 Object Type", + " DX Cooling Coil System 1,!- Component 2 Name", + " Cooling Coil Air Inlet Node, !- Component 2 Inlet Node Name", + " Heating Coil Air Inlet Node, !- Component 2 Outlet Node Name", + " Coil:Heating:Fuel, !- Component 3 Object Type", + " Main Heating Coil 1, !- Component 3 Name", + " Heating Coil Air Inlet Node, !- Component 3 Inlet Node Name", + " Air Loop Outlet Node; !- Component 3 Outlet Node Name", + + " BranchList,", + " Air Loop Branches, !- Name", + " Air Loop Main Branch; !- Branch 1 Name", + + " NodeList,", + " ZoneInlets, !- Name", + " Zone Inlet Node; !- Node 1 Name", + + " NodeList,", + " Supply Air Temp Nodes, !- Name", + " Heating Coil Air Inlet Node, !- Node 1 Name", + " Air Loop Outlet Node; !- Node 2 Name", + + }); + + ASSERT_TRUE(process_idf(idf_objects)); + + bool ErrorsFound = false; + // Read objects + SimulationManager::GetProjectData(); + HeatBalanceManager::GetProjectControlData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetZoneData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetWindowGlassSpectralData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetMaterialData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetConstructData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetHeatBalanceInput(); + HeatBalanceManager::AllocateHeatBalArrays(); + DataEnvironment::OutBaroPress = 101000; + DataHVACGlobals::TimeStepSys = DataGlobals::TimeStepZone; + SurfaceGeometry::GetGeometryParameters(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + + SurfaceGeometry::CosBldgRotAppGonly = 1.0; + SurfaceGeometry::SinBldgRotAppGonly = 0.0; + SurfaceGeometry::GetSurfaceData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + + // Read AirflowNetwork inputs + GetAirflowNetworkInput(); + InitAirflowNetwork(); + + // Check inputs + EXPECT_EQ(AirflowNetworkLinkageViewFactorData(1).LinkageName, "ZONESUPPLYLINK1"); + EXPECT_EQ(AirflowNetworkLinkageViewFactorData(1).DuctExposureFraction, 1.0); + EXPECT_EQ(AirflowNetworkLinkageViewFactorData(1).DuctEmittance, 0.9); + EXPECT_EQ(AirflowNetworkLinkageViewFactorData(1).LinkageSurfaceData(1).SurfaceName, "ATTIC FLOOR"); + EXPECT_EQ(AirflowNetworkLinkageViewFactorData(1).LinkageSurfaceData(1).ViewFactor, 0.483577); + EXPECT_EQ(AirflowNetworkLinkageViewFactorData(1).LinkageSurfaceData(2).SurfaceName, "ATTIC ROOF NORTH"); + EXPECT_EQ(AirflowNetworkLinkageViewFactorData(1).LinkageSurfaceData(2).ViewFactor, 0.237692); + EXPECT_EQ(AirflowNetworkLinkageViewFactorData(1).LinkageSurfaceData(3).SurfaceName, "ATTIC ROOF SOUTH"); + EXPECT_EQ(AirflowNetworkLinkageViewFactorData(1).LinkageSurfaceData(3).ViewFactor, 0.237692); + EXPECT_EQ(AirflowNetworkLinkageViewFactorData(1).LinkageSurfaceData(4).SurfaceName, "EAST WALL ATTIC"); + EXPECT_EQ(AirflowNetworkLinkageViewFactorData(1).LinkageSurfaceData(4).ViewFactor, 0.02052); + EXPECT_EQ(AirflowNetworkLinkageViewFactorData(1).LinkageSurfaceData(5).SurfaceName, "WEST WALL ATTIC"); + EXPECT_EQ(AirflowNetworkLinkageViewFactorData(1).LinkageSurfaceData(5).ViewFactor, 0.02052); + + Real64 const tol = 0.01; + + // Outside convection coefficients + // Calculate convection resistance given a convection coefficient + EXPECT_NEAR(CalcDuctOutsideConvResist(20, 10, 0.001, 101000, 1, 2, 5), 0.2, tol); + EXPECT_NEAR(CalcDuctOutsideConvResist(20, 10, 0.001, 101000, 1, 2, 20), 0.05, tol); + EXPECT_NEAR(CalcDuctOutsideConvResist(20, 10, 0.001, 101000, 1, 2, 0.1), 10, tol); + + //// Calculate convection resistance from correlation + EXPECT_NEAR(CalcDuctOutsideConvResist(20, 10, 0.001, 101000, 0.1, 2, 0), 0.2297, tol); + EXPECT_NEAR(CalcDuctOutsideConvResist(20, 10, 0.001, 101000, 1.0, 2, 0), 0.4093, tol); + EXPECT_NEAR(CalcDuctOutsideConvResist(20, 10, 0.001, 101000, 1.5, 2, 0), 0.4531, tol); + + EXPECT_NEAR(CalcDuctOutsideConvResist(10, 20, 0.001, 101000, 0.1, 2, 0), 0.2368, tol); + EXPECT_NEAR(CalcDuctOutsideConvResist(10, 20, 0.001, 101000, 1.0, 2, 0), 0.4218, tol); + EXPECT_NEAR(CalcDuctOutsideConvResist(10, 20, 0.001, 101000, 1.5, 2, 0), 0.4670, tol); + + // Calculate convection resistance given a convection coefficient + EXPECT_NEAR(CalcDuctInsideConvResist(20, 0.1, 1, 5), 0.2, tol); + EXPECT_NEAR(CalcDuctInsideConvResist(20, 0.1, 1, 20), 0.05, tol); + EXPECT_NEAR(CalcDuctInsideConvResist(20, 0.1, 1, 0.1), 10, tol); + + // Calculate convection resistance from correlation + EXPECT_NEAR(CalcDuctInsideConvResist(20, 0.1, 1, 0), 1.611, tol); + EXPECT_NEAR(CalcDuctInsideConvResist(20, 1.0, 1, 0), 0.2554, tol); + EXPECT_NEAR(CalcDuctInsideConvResist(40, 0.1, 1, 0), 1.5879, tol); + EXPECT_NEAR(CalcDuctInsideConvResist(40, 1.0, 1, 0), 0.2516, tol); +} TEST_F(EnergyPlusFixture, AirflowNetworkBalanceManager_AirThermConductivity) { - Real64 const tol = 0.00001; + Real64 const tol = 0.00001; - EXPECT_NEAR( airThermConductivity( -30 ), 0.02212, tol ); - EXPECT_NEAR( airThermConductivity( -20 ), 0.02212, tol ); - EXPECT_NEAR( airThermConductivity( 0 ), 0.02364, tol ); - EXPECT_NEAR( airThermConductivity( 20 ), 0.02514, tol ); - EXPECT_NEAR( airThermConductivity( 40 ), 0.02662, tol ); - EXPECT_NEAR( airThermConductivity( 60 ), 0.02808, tol ); - EXPECT_NEAR( airThermConductivity( 70 ), 0.02881, tol ); - EXPECT_NEAR( airThermConductivity( 80 ), 0.02881, tol ); - } + EXPECT_NEAR(airThermConductivity(-30), 0.02212, tol); + EXPECT_NEAR(airThermConductivity(-20), 0.02212, tol); + EXPECT_NEAR(airThermConductivity(0), 0.02364, tol); + EXPECT_NEAR(airThermConductivity(20), 0.02514, tol); + EXPECT_NEAR(airThermConductivity(40), 0.02662, tol); + EXPECT_NEAR(airThermConductivity(60), 0.02808, tol); + EXPECT_NEAR(airThermConductivity(70), 0.02881, tol); + EXPECT_NEAR(airThermConductivity(80), 0.02881, tol); +} TEST_F(EnergyPlusFixture, AirflowNetworkBalanceManager_AirDynamicVisc) { - Real64 const tol = 0.000001; + Real64 const tol = 0.000001; - EXPECT_NEAR( airDynamicVisc( -30 ), 1.635e-5, tol ); - EXPECT_NEAR( airDynamicVisc( -20 ), 1.635e-5, tol ); - EXPECT_NEAR( airDynamicVisc( 0 ), 1.729e-5, tol ); - EXPECT_NEAR( airDynamicVisc( 20 ), 1.823e-5, tol ); - EXPECT_NEAR( airDynamicVisc( 40 ), 1.917e-5, tol ); - EXPECT_NEAR( airDynamicVisc( 60 ), 2.011e-5, tol ); - EXPECT_NEAR( airDynamicVisc( 70 ), 2.058e-5, tol ); - EXPECT_NEAR( airDynamicVisc( 80 ), 2.058e-5, tol ); - } + EXPECT_NEAR(airDynamicVisc(-30), 1.635e-5, tol); + EXPECT_NEAR(airDynamicVisc(-20), 1.635e-5, tol); + EXPECT_NEAR(airDynamicVisc(0), 1.729e-5, tol); + EXPECT_NEAR(airDynamicVisc(20), 1.823e-5, tol); + EXPECT_NEAR(airDynamicVisc(40), 1.917e-5, tol); + EXPECT_NEAR(airDynamicVisc(60), 2.011e-5, tol); + EXPECT_NEAR(airDynamicVisc(70), 2.058e-5, tol); + EXPECT_NEAR(airDynamicVisc(80), 2.058e-5, tol); +} TEST_F(EnergyPlusFixture, AirflowNetworkBalanceManager_AirKinematicVisc) { - Real64 const tol = 0.000001; + Real64 const tol = 0.000001; - EXPECT_NEAR( airKinematicVisc( -30, 0.001, 101000 ), 1.169e-5, tol ); - EXPECT_NEAR( airKinematicVisc( -20, 0.001, 101000 ), 1.169e-5, tol ); - EXPECT_NEAR( airKinematicVisc( 0, 0.001, 101000 ), 1.338e-5, tol ); - EXPECT_NEAR( airKinematicVisc( 20, 0.001, 101000 ), 1.516e-5, tol ); - EXPECT_NEAR( airKinematicVisc( 40, 0.001, 101000 ), 1.702e-5, tol ); - EXPECT_NEAR( airKinematicVisc( 60, 0.001, 101000 ), 1.896e-5, tol ); - EXPECT_NEAR( airKinematicVisc( 70, 0.001, 101000 ), 1.995e-5, tol ); - EXPECT_NEAR( airKinematicVisc( 80, 0.001, 101000 ), 1.995e-5, tol ); - } + EXPECT_NEAR(airKinematicVisc(-30, 0.001, 101000), 1.169e-5, tol); + EXPECT_NEAR(airKinematicVisc(-20, 0.001, 101000), 1.169e-5, tol); + EXPECT_NEAR(airKinematicVisc(0, 0.001, 101000), 1.338e-5, tol); + EXPECT_NEAR(airKinematicVisc(20, 0.001, 101000), 1.516e-5, tol); + EXPECT_NEAR(airKinematicVisc(40, 0.001, 101000), 1.702e-5, tol); + EXPECT_NEAR(airKinematicVisc(60, 0.001, 101000), 1.896e-5, tol); + EXPECT_NEAR(airKinematicVisc(70, 0.001, 101000), 1.995e-5, tol); + EXPECT_NEAR(airKinematicVisc(80, 0.001, 101000), 1.995e-5, tol); +} TEST_F(EnergyPlusFixture, AirflowNetworkBalanceManager_AirThermalDiffusivity) { - Real64 const tol = 0.000001; + Real64 const tol = 0.000001; - EXPECT_NEAR( airThermalDiffusivity( -30, 0.001, 101000 ), 1.578e-5, tol ); - EXPECT_NEAR( airThermalDiffusivity( -20, 0.001, 101000 ), 1.578e-5, tol ); - EXPECT_NEAR( airThermalDiffusivity( 0, 0.001, 101000 ), 1.818e-5, tol ); - EXPECT_NEAR( airThermalDiffusivity( 20, 0.001, 101000 ), 2.074e-5, tol ); - EXPECT_NEAR( airThermalDiffusivity( 40, 0.001, 101000 ), 2.346e-5, tol ); - EXPECT_NEAR( airThermalDiffusivity( 60, 0.001, 101000 ), 2.632e-5, tol ); - EXPECT_NEAR( airThermalDiffusivity( 70, 0.001, 101000 ), 2.780e-5, tol ); - EXPECT_NEAR( airThermalDiffusivity( 80, 0.001, 101000 ), 2.780e-5, tol ); - } + EXPECT_NEAR(airThermalDiffusivity(-30, 0.001, 101000), 1.578e-5, tol); + EXPECT_NEAR(airThermalDiffusivity(-20, 0.001, 101000), 1.578e-5, tol); + EXPECT_NEAR(airThermalDiffusivity(0, 0.001, 101000), 1.818e-5, tol); + EXPECT_NEAR(airThermalDiffusivity(20, 0.001, 101000), 2.074e-5, tol); + EXPECT_NEAR(airThermalDiffusivity(40, 0.001, 101000), 2.346e-5, tol); + EXPECT_NEAR(airThermalDiffusivity(60, 0.001, 101000), 2.632e-5, tol); + EXPECT_NEAR(airThermalDiffusivity(70, 0.001, 101000), 2.780e-5, tol); + EXPECT_NEAR(airThermalDiffusivity(80, 0.001, 101000), 2.780e-5, tol); +} TEST_F(EnergyPlusFixture, AirflowNetworkBalanceManager_AirPrandtl) { - Real64 const tol = 0.0001; + Real64 const tol = 0.0001; - EXPECT_NEAR( airPrandtl( -30, 0.001, 101000 ), 0.7362, tol ); - EXPECT_NEAR( airPrandtl( -20, 0.001, 101000 ), 0.7362, tol ); - EXPECT_NEAR( airPrandtl( 0, 0.001, 101000 ), 0.7300, tol ); - EXPECT_NEAR( airPrandtl( 20, 0.001, 101000 ), 0.7251, tol ); - EXPECT_NEAR( airPrandtl( 40, 0.001, 101000 ), 0.7213, tol ); - EXPECT_NEAR( airPrandtl( 60, 0.001, 101000 ), 0.7184, tol ); - EXPECT_NEAR( airPrandtl( 70, 0.001, 101000 ), 0.7172, tol ); - EXPECT_NEAR( airPrandtl( 80, 0.001, 101000 ), 0.7172, tol ); - } + EXPECT_NEAR(airPrandtl(-30, 0.001, 101000), 0.7362, tol); + EXPECT_NEAR(airPrandtl(-20, 0.001, 101000), 0.7362, tol); + EXPECT_NEAR(airPrandtl(0, 0.001, 101000), 0.7300, tol); + EXPECT_NEAR(airPrandtl(20, 0.001, 101000), 0.7251, tol); + EXPECT_NEAR(airPrandtl(40, 0.001, 101000), 0.7213, tol); + EXPECT_NEAR(airPrandtl(60, 0.001, 101000), 0.7184, tol); + EXPECT_NEAR(airPrandtl(70, 0.001, 101000), 0.7172, tol); + EXPECT_NEAR(airPrandtl(80, 0.001, 101000), 0.7172, tol); +} TEST_F(EnergyPlusFixture, TestWindPressureTable) { - // Test a Table:OneIV object as a wind pressure curve + // Test a Table:OneIV object as a wind pressure curve std::string const idf_objects = delimited_string({"Version,8.6;", - "Table:OneIndependentVariable,", - " EFacade_WPCCurve, !- Name", - " Linear, !- Curve Type", - " LinearInterpolationOfTable, !- Interpolation Method", - " 0, !- Minimum Value of X", - " 360, !- Maximum Value of X", - " -1, !- Minimum Table Output", - " 1, !- Maximum Table Output", - " Dimensionless, !- Input Unit Type for X", - " Dimensionless, !- Output Unit Type", - " 1, !- Normalization Reference", - " 0, !- X Value #1", - " -0.56, !- Output Value #1", - " 30, !- X Value #2", - " 0.04, !- Output Value #2", - " 60, !- X Value #3", - " 0.48, !- Output Value #3", - " 90, !- X Value #4", - " 0.6, !- Output Value #4", - " 120, !- X Value #5", - " 0.48, !- Output Value #5", - " 150, !- X Value #6", - " 0.04, !- Output Value #6", - " 180, !- X Value #7", - " -0.56, !- Output Value #7", - " 210, !- N20", - " -0.56, !- N21", - " 240, !- N22", - " -0.42, !- N23", - " 270, !- N24", - " -0.37, !- N25", - " 300, !- N26", - " -0.42, !- N27", - " 330, !- N28", - " -0.56, !- N29", - " 360, !- N30", - " -0.56; !- N31" }); - - // Load and verify the table - ASSERT_TRUE(process_idf(idf_objects)); - EXPECT_EQ(0, CurveManager::NumCurves); - CurveManager::GetCurveInput(); - CurveManager::GetCurvesInputFlag = false; - ASSERT_EQ(1, CurveManager::NumCurves); - EXPECT_EQ("LINEAR", CurveManager::GetCurveType(1)); - EXPECT_EQ("EFACADE_WPCCURVE", CurveManager::GetCurveName(1)); - EXPECT_EQ(1, CurveManager::GetCurveIndex("EFACADE_WPCCURVE")); - EXPECT_EQ(CurveManager::CurveType_TableOneIV, CurveManager::GetCurveObjectTypeNum(1)); - EXPECT_DOUBLE_EQ(-0.56, CurveManager::CurveValue(1, 0.0)); // In-range value - EXPECT_DOUBLE_EQ(0.54, CurveManager::CurveValue(1, 105.0)); // In-range value - EXPECT_DOUBLE_EQ(-0.56, CurveManager::CurveValue(1, -10.0)); // Minimum x - EXPECT_DOUBLE_EQ(-0.56, CurveManager::CurveValue(1, 5000)); // Maximum x - EXPECT_FALSE(has_err_output()); - - // Set up some environmental parameters - DataEnvironment::OutBaroPress = 101325.0; - DataEnvironment::OutDryBulbTemp = 25.0; - DataEnvironment::WindDir = 105.0; - DataEnvironment::OutHumRat = 0.0; // Dry air only - DataEnvironment::SiteTempGradient = 0.0; // Disconnect z from testing - - // Make sure we can compute the right density + "Table:OneIndependentVariable,", + " EFacade_WPCCurve, !- Name", + " Linear, !- Curve Type", + " LinearInterpolationOfTable, !- Interpolation Method", + " 0, !- Minimum Value of X", + " 360, !- Maximum Value of X", + " -1, !- Minimum Table Output", + " 1, !- Maximum Table Output", + " Dimensionless, !- Input Unit Type for X", + " Dimensionless, !- Output Unit Type", + " 1, !- Normalization Reference", + " 0, !- X Value #1", + " -0.56, !- Output Value #1", + " 30, !- X Value #2", + " 0.04, !- Output Value #2", + " 60, !- X Value #3", + " 0.48, !- Output Value #3", + " 90, !- X Value #4", + " 0.6, !- Output Value #4", + " 120, !- X Value #5", + " 0.48, !- Output Value #5", + " 150, !- X Value #6", + " 0.04, !- Output Value #6", + " 180, !- X Value #7", + " -0.56, !- Output Value #7", + " 210, !- N20", + " -0.56, !- N21", + " 240, !- N22", + " -0.42, !- N23", + " 270, !- N24", + " -0.37, !- N25", + " 300, !- N26", + " -0.42, !- N27", + " 330, !- N28", + " -0.56, !- N29", + " 360, !- N30", + " -0.56; !- N31"}); + + // Load and verify the table + ASSERT_TRUE(process_idf(idf_objects)); + EXPECT_EQ(0, CurveManager::NumCurves); + CurveManager::GetCurveInput(); + CurveManager::GetCurvesInputFlag = false; + ASSERT_EQ(1, CurveManager::NumCurves); + EXPECT_EQ("LINEAR", CurveManager::GetCurveType(1)); + EXPECT_EQ("EFACADE_WPCCURVE", CurveManager::GetCurveName(1)); + EXPECT_EQ(1, CurveManager::GetCurveIndex("EFACADE_WPCCURVE")); + EXPECT_EQ(CurveManager::CurveType_TableOneIV, CurveManager::GetCurveObjectTypeNum(1)); + EXPECT_DOUBLE_EQ(-0.56, CurveManager::CurveValue(1, 0.0)); // In-range value + EXPECT_DOUBLE_EQ(0.54, CurveManager::CurveValue(1, 105.0)); // In-range value + EXPECT_DOUBLE_EQ(-0.56, CurveManager::CurveValue(1, -10.0)); // Minimum x + EXPECT_DOUBLE_EQ(-0.56, CurveManager::CurveValue(1, 5000)); // Maximum x + EXPECT_FALSE(has_err_output()); + + // Set up some environmental parameters + DataEnvironment::OutBaroPress = 101325.0; + DataEnvironment::OutDryBulbTemp = 25.0; + DataEnvironment::WindDir = 105.0; + DataEnvironment::OutHumRat = 0.0; // Dry air only + DataEnvironment::SiteTempGradient = 0.0; // Disconnect z from testing + + // Make sure we can compute the right density Real64 rho = Psychrometrics::PsyRhoAirFnPbTdbW(DataEnvironment::OutBaroPress, DataEnvironment::OutDryBulbTemp, DataEnvironment::OutHumRat); - EXPECT_DOUBLE_EQ( 1.1841123742118911, rho ); - //CalcWindPressure(MultizoneExternalNodeData(i).curve, 1 - // Vref, 1 - // AirflowNetworkNodeData(n).NodeHeight, 10 - // MultizoneExternalNodeData(i).azimuth, 0 - // MultizoneExternalNodeData(i).symmetricCurve, MultizoneExternalNodeData(i).useRelativeAngle); - // Compute wind pressure with current defaults - Real64 windSpeed = 1.0; - Real64 dryBulb = DataEnvironment::OutDryBulbTempAt( 10.0 ); - Real64 azimuth = 0.0; - Real64 windDir = DataEnvironment::WindDir; - Real64 humRat = DataEnvironment::OutHumRat; - Real64 p = AirflowNetworkBalanceManager::CalcWindPressure( 1, false, false, azimuth, windSpeed, windDir, dryBulb, humRat ); - EXPECT_DOUBLE_EQ( 0.54*0.5*1.1841123742118911, p); - // Test on an east wall, which has a relative angle of 15 (for wind direction 105) - azimuth = 90.0; - p = AirflowNetworkBalanceManager::CalcWindPressure( 1, false, true, azimuth, windSpeed, windDir, dryBulb, humRat ); - EXPECT_DOUBLE_EQ(-0.26*0.5*1.1841123742118911, p); - // Test on a wall with azimuth 105, for a zero relative angle - azimuth = 105.0; - p = AirflowNetworkBalanceManager::CalcWindPressure( 1, false, true, azimuth, windSpeed, windDir, dryBulb, humRat ); - EXPECT_DOUBLE_EQ(-0.56*0.5*1.1841123742118911, p); - } + EXPECT_DOUBLE_EQ(1.1841123742118911, rho); + // CalcWindPressure(MultizoneExternalNodeData(i).curve, 1 + // Vref, 1 + // AirflowNetworkNodeData(n).NodeHeight, 10 + // MultizoneExternalNodeData(i).azimuth, 0 + // MultizoneExternalNodeData(i).symmetricCurve, MultizoneExternalNodeData(i).useRelativeAngle); + // Compute wind pressure with current defaults + Real64 windSpeed = 1.0; + Real64 dryBulb = DataEnvironment::OutDryBulbTempAt(10.0); + Real64 azimuth = 0.0; + Real64 windDir = DataEnvironment::WindDir; + Real64 humRat = DataEnvironment::OutHumRat; + Real64 p = AirflowNetworkBalanceManager::CalcWindPressure(1, false, false, azimuth, windSpeed, windDir, dryBulb, humRat); + EXPECT_DOUBLE_EQ(0.54 * 0.5 * 1.1841123742118911, p); + // Test on an east wall, which has a relative angle of 15 (for wind direction 105) + azimuth = 90.0; + p = AirflowNetworkBalanceManager::CalcWindPressure(1, false, true, azimuth, windSpeed, windDir, dryBulb, humRat); + EXPECT_DOUBLE_EQ(-0.26 * 0.5 * 1.1841123742118911, p); + // Test on a wall with azimuth 105, for a zero relative angle + azimuth = 105.0; + p = AirflowNetworkBalanceManager::CalcWindPressure(1, false, true, azimuth, windSpeed, windDir, dryBulb, humRat); + EXPECT_DOUBLE_EQ(-0.56 * 0.5 * 1.1841123742118911, p); +} TEST_F(EnergyPlusFixture, TestWPCValue) { - // Test loading a WPC object into a Table:OneIV + // Test loading a WPC object into a Table:OneIV std::string const idf_objects = delimited_string({"Version,8.6;", - "AirflowNetwork:MultiZone:WindPressureCoefficientArray,", - " Every 30 Degrees, !- Name", - " 0, !- Wind Direction 1 {deg}", - " 30, !- Wind Direction 2 {deg}", - " 60, !- Wind Direction 3 {deg}", - " 90, !- Wind Direction 4 {deg}", - " 120, !- Wind Direction 5 {deg}", - " 150, !- Wind Direction 6 {deg}", - " 180, !- Wind Direction 7 {deg}", - " 210, !- Wind Direction 8 {deg}", - " 240, !- Wind Direction 9 {deg}", - " 270, !- Wind Direction 10 {deg}", - " 300, !- Wind Direction 11 {deg}", - " 330; !- Wind Direction 12 {deg}", - "AirflowNetwork:MultiZone:WindPressureCoefficientValues,", - " NFacade_WPCValue, !- Name", - " Every 30 Degrees, !- AirflowNetwork:MultiZone:WindPressureCoefficientArray Name", - " 0.60, !- Wind Pressure Coefficient Value 1 {dimensionless}", - " 0.48, !- Wind Pressure Coefficient Value 2 {dimensionless}", - " 0.04, !- Wind Pressure Coefficient Value 3 {dimensionless}", - " -0.56, !- Wind Pressure Coefficient Value 4 {dimensionless}", - " -0.56, !- Wind Pressure Coefficient Value 5 {dimensionless}", - " -0.42, !- Wind Pressure Coefficient Value 6 {dimensionless}", - " -0.37, !- Wind Pressure Coefficient Value 7 {dimensionless}", - " -0.42, !- Wind Pressure Coefficient Value 8 {dimensionless}", - " -0.56, !- Wind Pressure Coefficient Value 9 {dimensionless}", - " -0.56, !- Wind Pressure Coefficient Value 10 {dimensionless}", - " 0.04, !- Wind Pressure Coefficient Value 11 {dimensionless}", - " 0.48; !- Wind Pressure Coefficient Value 12 {dimensionless}"}); - - // Load and verify the table - ASSERT_TRUE(process_idf(idf_objects)); - EXPECT_EQ(0, CurveManager::NumCurves); - CurveManager::GetCurveInput(); - CurveManager::GetCurvesInputFlag = false; - ASSERT_EQ(1, CurveManager::NumCurves); - EXPECT_EQ("LINEAR", CurveManager::GetCurveType(1)); - EXPECT_EQ("NFACADE_WPCVALUE", CurveManager::GetCurveName(1)); - EXPECT_EQ(1, CurveManager::GetCurveIndex("NFACADE_WPCVALUE")); - EXPECT_EQ(CurveManager::CurveType_TableOneIV, CurveManager::GetCurveObjectTypeNum(1)); - EXPECT_DOUBLE_EQ(0.6, CurveManager::CurveValue(1, 0.0)); // In-range value - EXPECT_DOUBLE_EQ(-0.56, CurveManager::CurveValue(1, 105.0)); // In-range value - EXPECT_DOUBLE_EQ(0.6, CurveManager::CurveValue(1, -10.0)); // Minimum x - EXPECT_DOUBLE_EQ(0.6, CurveManager::CurveValue(1, 5000)); // Maximum x - EXPECT_FALSE(has_err_output()); - - // Set up some environmental parameters - DataEnvironment::OutBaroPress = 101325.0; - DataEnvironment::OutDryBulbTemp = 25.0; - DataEnvironment::WindDir = 105.0; - DataEnvironment::OutHumRat = 0.0; // Dry air only - DataEnvironment::SiteTempGradient = 0.0; // Disconnect z from testing - - Real64 windSpeed = 1.0; - Real64 dryBulb = DataEnvironment::OutDryBulbTempAt(10.0); - Real64 azimuth = 0.0; - Real64 windDir = DataEnvironment::WindDir; - Real64 humRat = DataEnvironment::OutHumRat; - - // Make sure we can compute the right density + "AirflowNetwork:MultiZone:WindPressureCoefficientArray,", + " Every 30 Degrees, !- Name", + " 0, !- Wind Direction 1 {deg}", + " 30, !- Wind Direction 2 {deg}", + " 60, !- Wind Direction 3 {deg}", + " 90, !- Wind Direction 4 {deg}", + " 120, !- Wind Direction 5 {deg}", + " 150, !- Wind Direction 6 {deg}", + " 180, !- Wind Direction 7 {deg}", + " 210, !- Wind Direction 8 {deg}", + " 240, !- Wind Direction 9 {deg}", + " 270, !- Wind Direction 10 {deg}", + " 300, !- Wind Direction 11 {deg}", + " 330; !- Wind Direction 12 {deg}", + "AirflowNetwork:MultiZone:WindPressureCoefficientValues,", + " NFacade_WPCValue, !- Name", + " Every 30 Degrees, !- AirflowNetwork:MultiZone:WindPressureCoefficientArray Name", + " 0.60, !- Wind Pressure Coefficient Value 1 {dimensionless}", + " 0.48, !- Wind Pressure Coefficient Value 2 {dimensionless}", + " 0.04, !- Wind Pressure Coefficient Value 3 {dimensionless}", + " -0.56, !- Wind Pressure Coefficient Value 4 {dimensionless}", + " -0.56, !- Wind Pressure Coefficient Value 5 {dimensionless}", + " -0.42, !- Wind Pressure Coefficient Value 6 {dimensionless}", + " -0.37, !- Wind Pressure Coefficient Value 7 {dimensionless}", + " -0.42, !- Wind Pressure Coefficient Value 8 {dimensionless}", + " -0.56, !- Wind Pressure Coefficient Value 9 {dimensionless}", + " -0.56, !- Wind Pressure Coefficient Value 10 {dimensionless}", + " 0.04, !- Wind Pressure Coefficient Value 11 {dimensionless}", + " 0.48; !- Wind Pressure Coefficient Value 12 {dimensionless}"}); + + // Load and verify the table + ASSERT_TRUE(process_idf(idf_objects)); + EXPECT_EQ(0, CurveManager::NumCurves); + CurveManager::GetCurveInput(); + CurveManager::GetCurvesInputFlag = false; + ASSERT_EQ(1, CurveManager::NumCurves); + EXPECT_EQ("LINEAR", CurveManager::GetCurveType(1)); + EXPECT_EQ("NFACADE_WPCVALUE", CurveManager::GetCurveName(1)); + EXPECT_EQ(1, CurveManager::GetCurveIndex("NFACADE_WPCVALUE")); + EXPECT_EQ(CurveManager::CurveType_TableOneIV, CurveManager::GetCurveObjectTypeNum(1)); + EXPECT_DOUBLE_EQ(0.6, CurveManager::CurveValue(1, 0.0)); // In-range value + EXPECT_DOUBLE_EQ(-0.56, CurveManager::CurveValue(1, 105.0)); // In-range value + EXPECT_DOUBLE_EQ(0.6, CurveManager::CurveValue(1, -10.0)); // Minimum x + EXPECT_DOUBLE_EQ(0.6, CurveManager::CurveValue(1, 5000)); // Maximum x + EXPECT_FALSE(has_err_output()); + + // Set up some environmental parameters + DataEnvironment::OutBaroPress = 101325.0; + DataEnvironment::OutDryBulbTemp = 25.0; + DataEnvironment::WindDir = 105.0; + DataEnvironment::OutHumRat = 0.0; // Dry air only + DataEnvironment::SiteTempGradient = 0.0; // Disconnect z from testing + + Real64 windSpeed = 1.0; + Real64 dryBulb = DataEnvironment::OutDryBulbTempAt(10.0); + Real64 azimuth = 0.0; + Real64 windDir = DataEnvironment::WindDir; + Real64 humRat = DataEnvironment::OutHumRat; + + // Make sure we can compute the right density Real64 rho = Psychrometrics::PsyRhoAirFnPbTdbW(DataEnvironment::OutBaroPress, DataEnvironment::OutDryBulbTemp, DataEnvironment::OutHumRat); - EXPECT_DOUBLE_EQ( 1.1841123742118911, rho ); - - // Compute wind pressure with current defaults - Real64 p = AirflowNetworkBalanceManager::CalcWindPressure( 1, false, false, azimuth, windSpeed, windDir, dryBulb, humRat ); - EXPECT_DOUBLE_EQ( -0.56*0.5*1.1841123742118911, p ); - // Test on an east wall, which has a relative angle of 15 (for wind direction 105) - azimuth = 90.0; - p = AirflowNetworkBalanceManager::CalcWindPressure( 1, false, true, azimuth, windSpeed, windDir, dryBulb, humRat ); - EXPECT_DOUBLE_EQ( 0.54*0.5*1.1841123742118911, p ); - // Test on a wall with azimuth 105, for a zero relative angle - azimuth = 105.0; - p = AirflowNetworkBalanceManager::CalcWindPressure( 1, false, true, azimuth, windSpeed, windDir, dryBulb, humRat ); - EXPECT_DOUBLE_EQ( 0.6*0.5*1.1841123742118911, p ); - } + EXPECT_DOUBLE_EQ(1.1841123742118911, rho); + + // Compute wind pressure with current defaults + Real64 p = AirflowNetworkBalanceManager::CalcWindPressure(1, false, false, azimuth, windSpeed, windDir, dryBulb, humRat); + EXPECT_DOUBLE_EQ(-0.56 * 0.5 * 1.1841123742118911, p); + // Test on an east wall, which has a relative angle of 15 (for wind direction 105) + azimuth = 90.0; + p = AirflowNetworkBalanceManager::CalcWindPressure(1, false, true, azimuth, windSpeed, windDir, dryBulb, humRat); + EXPECT_DOUBLE_EQ(0.54 * 0.5 * 1.1841123742118911, p); + // Test on a wall with azimuth 105, for a zero relative angle + azimuth = 105.0; + p = AirflowNetworkBalanceManager::CalcWindPressure(1, false, true, azimuth, windSpeed, windDir, dryBulb, humRat); + EXPECT_DOUBLE_EQ(0.6 * 0.5 * 1.1841123742118911, p); +} TEST_F(EnergyPlusFixture, TestExternalNodes) { @@ -4721,14 +4721,14 @@ TEST_F(EnergyPlusFixture, TestExternalNodes) " 0.9200000, !- Solar Absorptance", " 0.9200000; !- Visible Absorptance", "WindowMaterial:Glazing,", " WIN-LAY-GLASS-LIGHT, !- Name", " SpectralAverage, !- Optical Data Type", " , !- Window Glass Spectral Data Set Name", " 0.0025, !- Thickness {m}", - " 0.850, !- Solar Transmittance at Normal Incidence", - " 0.075, !- Front Side Solar Reflectance at Normal Incidence", - " 0.075, !- Back Side Solar Reflectance at Normal Incidence", - " 0.901, !- Visible Transmittance at Normal Incidence", - " 0.081, !- Front Side Visible Reflectance at Normal Incidence", - " 0.081, !- Back Side Visible Reflectance at Normal Incidence", - " 0.0, !- Infrared Transmittance at Normal Incidence", - " 0.84, !- Front Side Infrared Hemispherical Emissivity", + " 0.850, !- Solar Transmittance at Normal Incidence", + " 0.075, !- Front Side Solar Reflectance at Normal Incidence", + " 0.075, !- Back Side Solar Reflectance at Normal Incidence", + " 0.901, !- Visible Transmittance at Normal Incidence", + " 0.081, !- Front Side Visible Reflectance at Normal Incidence", + " 0.081, !- Back Side Visible Reflectance at Normal Incidence", + " 0.0, !- Infrared Transmittance at Normal Incidence", + " 0.84, !- Front Side Infrared Hemispherical Emissivity", " 0.84, !- Back Side Infrared Hemispherical Emissivity", " 0.9; !- Conductivity {W/m-K}", "Construction,", " DOOR-CON, !- Name", " 1.375in-Solid-Core; !- Outside Layer", "Construction,", " EXTWALL80, !- Name", " A1 - 1 IN STUCCO, !- Outside Layer", " C4 - 4 IN COMMON BRICK, !- Layer 2", @@ -4878,8 +4878,8 @@ TEST_F(EnergyPlusFixture, TestExternalNodes) " WINDOW, !- Surface Type", " WIN-CON-LIGHT, !- Construction Name", " Surface_1, !- Building Surface Name", - " , !- Outside Boundary Condition Object", - " 0.5000000, !- View Factor to Ground", + " , !- Outside Boundary Condition Object", + " 0.5000000, !- View Factor to Ground", " , !- Shading Control Name", " , !- Frame and Divider Name", " 1.0, !- Multiplier", @@ -4892,8 +4892,8 @@ TEST_F(EnergyPlusFixture, TestExternalNodes) " WINDOW, !- Surface Type", " WIN-CON-LIGHT, !- Construction Name", " Surface_1, !- Building Surface Name", - " , !- Outside Boundary Condition Object", - " 0.5000000, !- View Factor to Ground", + " , !- Outside Boundary Condition Object", + " 0.5000000, !- View Factor to Ground", " , !- Shading Control Name", " , !- Frame and Divider Name", " 1.0, !- Multiplier", @@ -4907,11 +4907,11 @@ TEST_F(EnergyPlusFixture, TestExternalNodes) " DOOR-CON, !- Construction Name", " Surface_3, !- Building Surface Name", " DoorInSurface_17, !- Outside Boundary Condition Object", - " 0.5000000, !- View Factor to Ground", + " 0.5000000, !- View Factor to Ground", " , !- Shading Control Name", " , !- Frame and Divider Name", " 1.0, !- Multiplier", - " 4, !- Number of Vertices", + " 4, !- Number of Vertices", " 3.500,6.096000,2.0, !- X,Y,Z ==> Vertex 1 {m}", " 3.500,6.096000,0.0, !- X,Y,Z ==> Vertex 2 {m}", " 2.500,6.096000,0.0, !- X,Y,Z ==> Vertex 3 {m}", @@ -4922,11 +4922,11 @@ TEST_F(EnergyPlusFixture, TestExternalNodes) " WIN-CON-LIGHT, !- Construction Name", " Surface_15, !- Building Surface Name", " , !- Outside Boundary Condition Object", - " 0.5000000, !- View Factor to Ground", + " 0.5000000, !- View Factor to Ground", " , !- Shading Control Name", " , !- Frame and Divider Name", " 1.0, !- Multiplier", - " 4, !- Number of Vertices", + " 4, !- Number of Vertices", " 6.000000,12.19200,2.333000, !- X,Y,Z ==> Vertex 1 {m}", " 6.000000,12.19200,1.000000, !- X,Y,Z ==> Vertex 2 {m}", " 3.000000,12.19200,1.000000, !- X,Y,Z ==> Vertex 3 {m}", @@ -4937,11 +4937,11 @@ TEST_F(EnergyPlusFixture, TestExternalNodes) " DOOR-CON, !- Construction Name", " Surface_17, !- Building Surface Name", " DoorInSurface_3, !- Outside Boundary Condition Object", - " 0.5000000, !- View Factor to Ground", + " 0.5000000, !- View Factor to Ground", " , !- Shading Control Name", " , !- Frame and Divider Name", " 1.0, !- Multiplier", - " 4, !- Number of Vertices", + " 4, !- Number of Vertices", " 2.500,6.096000,2.0, !- X,Y,Z ==> Vertex 1 {m}", " 2.500,6.096000,0.0, !- X,Y,Z ==> Vertex 2 {m}", " 3.500,6.096000,0.0, !- X,Y,Z ==> Vertex 3 {m}", @@ -4950,20 +4950,20 @@ TEST_F(EnergyPlusFixture, TestExternalNodes) " INPUT, !- Wind Pressure Coefficient Type", " ExternalNode, !- Height Selection for Local Wind Pressure Calculation", " LOWRISE, !- Building Type", " 500, !- Maximum Number of Iterations {dimensionless}", " ZeroNodePressures, !- Initialization Type", - " 1.0E-05, !- Relative Airflow Convergence Tolerance {dimensionless}", - " 1.0E-06, !- Absolute Airflow Convergence Tolerance {kg/s}", - " -0.5, !- Convergence Acceleration Limit {dimensionless}", - " 0.0, !- Azimuth Angle of Long Axis of Building {deg}", + " 1.0E-05, !- Relative Airflow Convergence Tolerance {dimensionless}", + " 1.0E-06, !- Absolute Airflow Convergence Tolerance {kg/s}", + " -0.5, !- Convergence Acceleration Limit {dimensionless}", + " 0.0, !- Azimuth Angle of Long Axis of Building {deg}", " 1.0; !- Ratio of Building Width Along Short Axis to Width Along Long Axis", "AirflowNetwork:MultiZone:Zone,", " WEST_ZONE, !- Zone Name", " NoVent, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", //" Temperature, !- Ventilation Control Mode", //" WindowVentSched, !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 0.3, !- Minimum Venting Open Factor {dimensionless}", - " 5.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", - " 10.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", - " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", - " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", + " 0.3, !- Minimum Venting Open Factor {dimensionless}", + " 5.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", + " 10.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", + " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", + " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", "AirflowNetwork:MultiZone:Zone,", " EAST_ZONE, !- Zone Name", " NoVent, !- Ventilation Control Mode", " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", " 1.0, !- Minimum Venting Open Factor {dimensionless}", @@ -5329,29 +5329,29 @@ TEST_F(EnergyPlusFixture, TestExternalNodesWithTables) " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", "AirflowNetwork:MultiZone:Zone,", " EAST_ZONE, !- Zone Name", " NoVent, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 1.0, !- Minimum Venting Open Factor {dimensionless}", - " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", - " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", - " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", - " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " 1.0, !- Minimum Venting Open Factor {dimensionless}", + " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", + " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", + " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", + " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", "AirflowNetwork:MultiZone:Zone,", " NORTH_ZONE, !- Zone Name", " NoVent, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", //" Temperature, !- Ventilation Control Mode", //" WindowVentSched, !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 1.0, !- Minimum Venting Open Factor {dimensionless}", - " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", - " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", - " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", - " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", + " 1.0, !- Minimum Venting Open Factor {dimensionless}", + " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", + " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", + " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", + " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", "AirflowNetwork:MultiZone:Surface,", " Surface_1, !- Surface Name", " CR-1, !- Leakage Component Name", " SFacade, !- External Node Name", " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", "AirflowNetwork:MultiZone:Surface,", " Surface_4, !- Surface Name", " CR-1, !- Leakage Component Name", - " , !- External Node Name", + " , !- External Node Name", " 1.0; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", "AirflowNetwork:MultiZone:Surface,", " Surface_11, !- Surface Name", " CR-1, !- Leakage Component Name", - " , !- External Node Name", + " , !- External Node Name", " 1.0; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", "AirflowNetwork:MultiZone:Surface,", " Surface_15, !- Surface Name", " CR-1, !- Leakage Component Name", " NFacade, !- External Node Name", @@ -5387,78 +5387,78 @@ TEST_F(EnergyPlusFixture, TestExternalNodesWithTables) " 300, -0.56, !- X,Y Pair #11", " 330, -0.42, !- X,Y Pair #12", " 360, -0.37; !- X,Y Pair #13", "SurfaceConvectionAlgorithm:Inside,TARP;", "SurfaceConvectionAlgorithm:Outside,DOE-2;", "HeatBalanceAlgorithm,ConductionTransferFunction;", "ZoneAirHeatBalanceAlgorithm,", " AnalyticalSolution; !- Algorithm"}); - ASSERT_TRUE( process_idf( idf_objects ) ); + ASSERT_TRUE(process_idf(idf_objects)); - bool errors = false; + bool errors = false; - HeatBalanceManager::GetMaterialData( errors ); // read material data - EXPECT_FALSE( errors ); // expect no errors + HeatBalanceManager::GetMaterialData(errors); // read material data + EXPECT_FALSE(errors); // expect no errors - HeatBalanceManager::GetConstructData(errors); // read construction data - EXPECT_FALSE( errors ); // expect no errors + HeatBalanceManager::GetConstructData(errors); // read construction data + EXPECT_FALSE(errors); // expect no errors - HeatBalanceManager::GetZoneData(errors); // read zone data - EXPECT_FALSE( errors ); // expect no errors + HeatBalanceManager::GetZoneData(errors); // read zone data + EXPECT_FALSE(errors); // expect no errors - // Magic to get surfaces read in correctly - DataHeatBalance::HeatTransferAlgosUsed.allocate( 1 ); - DataHeatBalance::HeatTransferAlgosUsed( 1 ) = OverallHeatTransferSolutionAlgo; - SurfaceGeometry::CosBldgRotAppGonly = 1.0; - SurfaceGeometry::SinBldgRotAppGonly = 0.0; + // Magic to get surfaces read in correctly + DataHeatBalance::HeatTransferAlgosUsed.allocate(1); + DataHeatBalance::HeatTransferAlgosUsed(1) = OverallHeatTransferSolutionAlgo; + SurfaceGeometry::CosBldgRotAppGonly = 1.0; + SurfaceGeometry::SinBldgRotAppGonly = 0.0; - SurfaceGeometry::GetSurfaceData( errors ); // setup zone geometry and get zone data - EXPECT_FALSE( errors ); // expect no errors + SurfaceGeometry::GetSurfaceData(errors); // setup zone geometry and get zone data + EXPECT_FALSE(errors); // expect no errors - CurveManager::GetCurveInput(); + CurveManager::GetCurveInput(); EXPECT_EQ(CurveManager::NumCurves, 2); - AirflowNetworkBalanceManager::GetAirflowNetworkInput(); + AirflowNetworkBalanceManager::GetAirflowNetworkInput(); - // Check the airflow elements - EXPECT_EQ( 2u, DataAirflowNetwork::MultizoneExternalNodeData.size() ); - EXPECT_EQ( 3u, DataAirflowNetwork::MultizoneZoneData.size() ); - EXPECT_EQ( 4u, DataAirflowNetwork::MultizoneSurfaceData.size() ); - EXPECT_EQ( 1u, DataAirflowNetwork::MultizoneSurfaceCrackData.size() ); - EXPECT_EQ( 2u, DataAirflowNetwork::MultizoneSurfaceStdConditionsCrackData.size() ); + // Check the airflow elements + EXPECT_EQ(2u, DataAirflowNetwork::MultizoneExternalNodeData.size()); + EXPECT_EQ(3u, DataAirflowNetwork::MultizoneZoneData.size()); + EXPECT_EQ(4u, DataAirflowNetwork::MultizoneSurfaceData.size()); + EXPECT_EQ(1u, DataAirflowNetwork::MultizoneSurfaceCrackData.size()); + EXPECT_EQ(2u, DataAirflowNetwork::MultizoneSurfaceStdConditionsCrackData.size()); EXPECT_EQ(0.0, DataAirflowNetwork::MultizoneExternalNodeData(1).azimuth); - EXPECT_FALSE( DataAirflowNetwork::MultizoneExternalNodeData( 1 ).symmetricCurve ); - EXPECT_FALSE( DataAirflowNetwork::MultizoneExternalNodeData( 1 ).useRelativeAngle ); + EXPECT_FALSE(DataAirflowNetwork::MultizoneExternalNodeData(1).symmetricCurve); + EXPECT_FALSE(DataAirflowNetwork::MultizoneExternalNodeData(1).useRelativeAngle); EXPECT_EQ(1, DataAirflowNetwork::MultizoneExternalNodeData(1).curve); EXPECT_EQ(180.0, DataAirflowNetwork::MultizoneExternalNodeData(2).azimuth); - EXPECT_FALSE( DataAirflowNetwork::MultizoneExternalNodeData( 2 ).symmetricCurve ); - EXPECT_FALSE( DataAirflowNetwork::MultizoneExternalNodeData( 2 ).useRelativeAngle ); - EXPECT_EQ( 2, DataAirflowNetwork::MultizoneExternalNodeData( 2 ).curve ); - - // Set up some environmental parameters - DataEnvironment::OutBaroPress = 101325.0; - DataEnvironment::OutDryBulbTemp = 25.0; - DataEnvironment::WindDir = 105.0; - DataEnvironment::OutHumRat = 0.0; // Dry air only - DataEnvironment::SiteTempGradient = 0.0; // Disconnect z from testing - DataEnvironment::SiteWindExp = 0.0; // Disconnect variation by height - DataEnvironment::WindSpeed = 10.0; - - // Make sure we can compute the right wind pressure + EXPECT_FALSE(DataAirflowNetwork::MultizoneExternalNodeData(2).symmetricCurve); + EXPECT_FALSE(DataAirflowNetwork::MultizoneExternalNodeData(2).useRelativeAngle); + EXPECT_EQ(2, DataAirflowNetwork::MultizoneExternalNodeData(2).curve); + + // Set up some environmental parameters + DataEnvironment::OutBaroPress = 101325.0; + DataEnvironment::OutDryBulbTemp = 25.0; + DataEnvironment::WindDir = 105.0; + DataEnvironment::OutHumRat = 0.0; // Dry air only + DataEnvironment::SiteTempGradient = 0.0; // Disconnect z from testing + DataEnvironment::SiteWindExp = 0.0; // Disconnect variation by height + DataEnvironment::WindSpeed = 10.0; + + // Make sure we can compute the right wind pressure Real64 rho = Psychrometrics::PsyRhoAirFnPbTdbW(DataEnvironment::OutBaroPress, DataEnvironment::OutDryBulbTemp, DataEnvironment::OutHumRat); - EXPECT_DOUBLE_EQ( 1.1841123742118911, rho ); + EXPECT_DOUBLE_EQ(1.1841123742118911, rho); Real64 p = AirflowNetworkBalanceManager::CalcWindPressure(DataAirflowNetwork::MultizoneExternalNodeData(1).curve, false, false, 0.0, 1.0, DataEnvironment::WindDir, DataEnvironment::OutDryBulbTempAt(10.0), DataEnvironment::OutHumRat); EXPECT_DOUBLE_EQ(-0.56 * 0.5 * 1.1841123742118911, p); - // Make sure the reference velocity comes out right - EXPECT_DOUBLE_EQ( 10.0, DataEnvironment::WindSpeedAt( MultizoneExternalNodeData( 1 ).height ) ); + // Make sure the reference velocity comes out right + EXPECT_DOUBLE_EQ(10.0, DataEnvironment::WindSpeedAt(MultizoneExternalNodeData(1).height)); - EXPECT_EQ( 5u, DataAirflowNetwork::AirflowNetworkNodeSimu.size() ); + EXPECT_EQ(5u, DataAirflowNetwork::AirflowNetworkNodeSimu.size()); - // Run the balance routine, for now only to get the pressure set at the external nodes - AirflowNetworkBalanceManager::CalcAirflowNetworkAirBalance(); + // Run the balance routine, for now only to get the pressure set at the external nodes + AirflowNetworkBalanceManager::CalcAirflowNetworkAirBalance(); EXPECT_DOUBLE_EQ(-0.56 * 0.5 * 118.41123742118911, DataAirflowNetwork::AirflowNetworkNodeSimu(4).PZ); EXPECT_DOUBLE_EQ(-0.26 * 0.5 * 118.41123742118911, DataAirflowNetwork::AirflowNetworkNodeSimu(5).PZ); - } +} TEST_F(EnergyPlusFixture, TestExternalNodesWithNoInput) { @@ -5477,563 +5477,563 @@ TEST_F(EnergyPlusFixture, TestExternalNodesWithNoInput) " 1, !- Maximum Curve Output", " Dimensionless, !- Input Unit Type for X", " Dimensionless; !- Output Unit Type", - "Material,", - " A1 - 1 IN STUCCO, !- Name", - " Smooth, !- Roughness", - " 2.5389841E-02, !- Thickness {m}", - " 0.6918309, !- Conductivity {W/m-K}", - " 1858.142, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.9200000, !- Solar Absorptance", - " 0.9200000; !- Visible Absorptance", - "Material,", - " C4 - 4 IN COMMON BRICK, !- Name", - " Rough, !- Roughness", - " 0.1014984, !- Thickness {m}", - " 0.7264224, !- Conductivity {W/m-K}", - " 1922.216, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7600000, !- Solar Absorptance", - " 0.7600000; !- Visible Absorptance", - "Material,", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Name", - " Smooth, !- Roughness", - " 1.905E-02, !- Thickness {m}", - " 0.7264224, !- Conductivity {W/m-K}", - " 1601.846, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.9200000, !- Solar Absorptance", - " 0.9200000; !- Visible Absorptance", - "Material,", - " C6 - 8 IN CLAY TILE, !- Name", - " Smooth, !- Roughness", - " 0.2033016, !- Thickness {m}", - " 0.5707605, !- Conductivity {W/m-K}", - " 1121.292, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.8200000, !- Solar Absorptance", - " 0.8200000; !- Visible Absorptance", - "Material,", - " C10 - 8 IN HW CONCRETE, !- Name", - " MediumRough, !- Roughness", - " 0.2033016, !- Thickness {m}", - " 1.729577, !- Conductivity {W/m-K}", - " 2242.585, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - "Material,", - " E2 - 1 / 2 IN SLAG OR STONE, !- Name", - " Rough, !- Roughness", - " 1.2710161E-02, !- Thickness {m}", - " 1.435549, !- Conductivity {W/m-K}", - " 881.0155, !- Density {kg/m3}", - " 1673.600, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.5500000, !- Solar Absorptance", - " 0.5500000; !- Visible Absorptance", - "Material,", - " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Name", - " Rough, !- Roughness", - " 9.5402403E-03, !- Thickness {m}", - " 0.1902535, !- Conductivity {W/m-K}", - " 1121.292, !- Density {kg/m3}", - " 1673.600, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - "Material,", - " B5 - 1 IN DENSE INSULATION, !- Name", - " VeryRough, !- Roughness", - " 2.5389841E-02, !- Thickness {m}", - " 4.3239430E-02, !- Conductivity {W/m-K}", - " 91.30524, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.5000000, !- Solar Absorptance", - " 0.5000000; !- Visible Absorptance", - "Material,", - " C12 - 2 IN HW CONCRETE, !- Name", - " MediumRough, !- Roughness", - " 5.0901599E-02, !- Thickness {m}", - " 1.729577, !- Conductivity {W/m-K}", - " 2242.585, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - "Material,", - " 1.375in-Solid-Core, !- Name", - " Smooth, !- Roughness", - " 3.4925E-02, !- Thickness {m}", - " 0.1525000, !- Conductivity {W/m-K}", - " 614.5000, !- Density {kg/m3}", - " 1630.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.9200000, !- Solar Absorptance", - " 0.9200000; !- Visible Absorptance", - "WindowMaterial:Glazing,", - " WIN-LAY-GLASS-LIGHT, !- Name", - " SpectralAverage, !- Optical Data Type", - " , !- Window Glass Spectral Data Set Name", - " 0.0025, !- Thickness {m}", - " 0.850, !- Solar Transmittance at Normal Incidence", - " 0.075, !- Front Side Solar Reflectance at Normal Incidence", - " 0.075, !- Back Side Solar Reflectance at Normal Incidence", - " 0.901, !- Visible Transmittance at Normal Incidence", - " 0.081, !- Front Side Visible Reflectance at Normal Incidence", - " 0.081, !- Back Side Visible Reflectance at Normal Incidence", - " 0.0, !- Infrared Transmittance at Normal Incidence", - " 0.84, !- Front Side Infrared Hemispherical Emissivity", - " 0.84, !- Back Side Infrared Hemispherical Emissivity", - " 0.9; !- Conductivity {W/m-K}", - "Construction,", - " DOOR-CON, !- Name", - " 1.375in-Solid-Core; !- Outside Layer", - "Construction,", - " EXTWALL80, !- Name", - " A1 - 1 IN STUCCO, !- Outside Layer", - " C4 - 4 IN COMMON BRICK, !- Layer 2", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", - "Construction,", - " PARTITION06, !- Name", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer", - " C6 - 8 IN CLAY TILE, !- Layer 2", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", - " Construction,", - " FLOOR SLAB 8 IN, !- Name", - " C10 - 8 IN HW CONCRETE; !- Outside Layer", - "Construction,", - " ROOF34, !- Name", - " E2 - 1 / 2 IN SLAG OR STONE, !- Outside Layer", - " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Layer 2", - " B5 - 1 IN DENSE INSULATION, !- Layer 3", - " C12 - 2 IN HW CONCRETE; !- Layer 4", - "Construction,", - " WIN-CON-LIGHT, !- Name", - " WIN-LAY-GLASS-LIGHT; !- Outside Layer", - "Zone,", - " WEST_ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate; !- Ceiling Height {m}", - "Zone,", - " EAST_ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate; !- Ceiling Height {m}", - "Zone,", - " NORTH_ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate; !- Ceiling Height {m}", - "GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " CounterClockWise, !- Vertex Entry Direction", - " World; !- Coordinate System", - "BuildingSurface:Detailed,", - " Surface_1, !- Name", - " WALL, !- Surface Type", - " EXTWALL80, !- Construction Name", - " WEST_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_2, !- Name", - " WALL, !- Surface Type", - " EXTWALL80, !- Construction Name", - " WEST_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_3, !- Name", - " WALL, !- Surface Type", - " PARTITION06, !- Construction Name", - " WEST_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_17, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_4, !- Name", - " WALL, !- Surface Type", - " PARTITION06, !- Construction Name", - " WEST_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_10, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_5, !- Name", - " FLOOR, !- Surface Type", - " FLOOR SLAB 8 IN, !- Construction Name", - " WEST_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_5, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,0, !- X,Y,Z ==> Vertex 1 {m}", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,0,0; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_6, !- Name", - " ROOF, !- Surface Type", - " ROOF34, !- Construction Name", - " WEST_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_8, !- Name", - " WALL, !- Surface Type", - " EXTWALL80, !- Construction Name", - " EAST_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_9, !- Name", - " WALL, !- Surface Type", - " EXTWALL80, !- Construction Name", - " EAST_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 12.19200,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_10, !- Name", - " WALL, !- Surface Type", - " PARTITION06, !- Construction Name", - " EAST_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_4, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096001,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_11, !- Name", - " WALL, !- Surface Type", - " PARTITION06, !- Construction Name", - " EAST_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_18, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_12, !- Name", - " FLOOR, !- Surface Type", - " FLOOR SLAB 8 IN, !- Construction Name", - " EAST_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_12, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,0,0; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_13, !- Name", - " ROOF, !- Surface Type", - " ROOF34, !- Construction Name", - " EAST_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_14, !- Name", - " WALL, !- Surface Type", - " EXTWALL80, !- Construction Name", - " NORTH_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_15, !- Name", - " WALL, !- Surface Type", - " EXTWALL80, !- Construction Name", - " NORTH_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 12.19200,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 12.19200,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_16, !- Name", - " WALL, !- Surface Type", - " EXTWALL80, !- Construction Name", - " NORTH_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_17, !- Name", - " WALL, !- Surface Type", - " PARTITION06, !- Construction Name", - " NORTH_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_3, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.000,6.096,3.048, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000,6.096,0.000, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096,6.096,0.000, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096,6.096,3.048; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_18, !- Name", - " WALL, !- Surface Type", - " PARTITION06, !- Construction Name", - " NORTH_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_11, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_19, !- Name", - " FLOOR, !- Surface Type", - " FLOOR SLAB 8 IN, !- Construction Name", - " NORTH_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_19, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 1 {m}", - " 0,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,6.096000,0; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_20, !- Name", - " ROOF, !- Surface Type", - " ROOF34, !- Construction Name", - " NORTH_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "AirflowNetwork:SimulationControl,", - " NaturalVentilation, !- Name", - " MultizoneWithoutDistribution, !- AirflowNetwork Control", + "Material,", + " A1 - 1 IN STUCCO, !- Name", + " Smooth, !- Roughness", + " 2.5389841E-02, !- Thickness {m}", + " 0.6918309, !- Conductivity {W/m-K}", + " 1858.142, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.9200000, !- Solar Absorptance", + " 0.9200000; !- Visible Absorptance", + "Material,", + " C4 - 4 IN COMMON BRICK, !- Name", + " Rough, !- Roughness", + " 0.1014984, !- Thickness {m}", + " 0.7264224, !- Conductivity {W/m-K}", + " 1922.216, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7600000, !- Solar Absorptance", + " 0.7600000; !- Visible Absorptance", + "Material,", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Name", + " Smooth, !- Roughness", + " 1.905E-02, !- Thickness {m}", + " 0.7264224, !- Conductivity {W/m-K}", + " 1601.846, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.9200000, !- Solar Absorptance", + " 0.9200000; !- Visible Absorptance", + "Material,", + " C6 - 8 IN CLAY TILE, !- Name", + " Smooth, !- Roughness", + " 0.2033016, !- Thickness {m}", + " 0.5707605, !- Conductivity {W/m-K}", + " 1121.292, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.8200000, !- Solar Absorptance", + " 0.8200000; !- Visible Absorptance", + "Material,", + " C10 - 8 IN HW CONCRETE, !- Name", + " MediumRough, !- Roughness", + " 0.2033016, !- Thickness {m}", + " 1.729577, !- Conductivity {W/m-K}", + " 2242.585, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + "Material,", + " E2 - 1 / 2 IN SLAG OR STONE, !- Name", + " Rough, !- Roughness", + " 1.2710161E-02, !- Thickness {m}", + " 1.435549, !- Conductivity {W/m-K}", + " 881.0155, !- Density {kg/m3}", + " 1673.600, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.5500000, !- Solar Absorptance", + " 0.5500000; !- Visible Absorptance", + "Material,", + " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Name", + " Rough, !- Roughness", + " 9.5402403E-03, !- Thickness {m}", + " 0.1902535, !- Conductivity {W/m-K}", + " 1121.292, !- Density {kg/m3}", + " 1673.600, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + "Material,", + " B5 - 1 IN DENSE INSULATION, !- Name", + " VeryRough, !- Roughness", + " 2.5389841E-02, !- Thickness {m}", + " 4.3239430E-02, !- Conductivity {W/m-K}", + " 91.30524, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.5000000, !- Solar Absorptance", + " 0.5000000; !- Visible Absorptance", + "Material,", + " C12 - 2 IN HW CONCRETE, !- Name", + " MediumRough, !- Roughness", + " 5.0901599E-02, !- Thickness {m}", + " 1.729577, !- Conductivity {W/m-K}", + " 2242.585, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + "Material,", + " 1.375in-Solid-Core, !- Name", + " Smooth, !- Roughness", + " 3.4925E-02, !- Thickness {m}", + " 0.1525000, !- Conductivity {W/m-K}", + " 614.5000, !- Density {kg/m3}", + " 1630.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.9200000, !- Solar Absorptance", + " 0.9200000; !- Visible Absorptance", + "WindowMaterial:Glazing,", + " WIN-LAY-GLASS-LIGHT, !- Name", + " SpectralAverage, !- Optical Data Type", + " , !- Window Glass Spectral Data Set Name", + " 0.0025, !- Thickness {m}", + " 0.850, !- Solar Transmittance at Normal Incidence", + " 0.075, !- Front Side Solar Reflectance at Normal Incidence", + " 0.075, !- Back Side Solar Reflectance at Normal Incidence", + " 0.901, !- Visible Transmittance at Normal Incidence", + " 0.081, !- Front Side Visible Reflectance at Normal Incidence", + " 0.081, !- Back Side Visible Reflectance at Normal Incidence", + " 0.0, !- Infrared Transmittance at Normal Incidence", + " 0.84, !- Front Side Infrared Hemispherical Emissivity", + " 0.84, !- Back Side Infrared Hemispherical Emissivity", + " 0.9; !- Conductivity {W/m-K}", + "Construction,", + " DOOR-CON, !- Name", + " 1.375in-Solid-Core; !- Outside Layer", + "Construction,", + " EXTWALL80, !- Name", + " A1 - 1 IN STUCCO, !- Outside Layer", + " C4 - 4 IN COMMON BRICK, !- Layer 2", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", + "Construction,", + " PARTITION06, !- Name", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer", + " C6 - 8 IN CLAY TILE, !- Layer 2", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", + " Construction,", + " FLOOR SLAB 8 IN, !- Name", + " C10 - 8 IN HW CONCRETE; !- Outside Layer", + "Construction,", + " ROOF34, !- Name", + " E2 - 1 / 2 IN SLAG OR STONE, !- Outside Layer", + " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Layer 2", + " B5 - 1 IN DENSE INSULATION, !- Layer 3", + " C12 - 2 IN HW CONCRETE; !- Layer 4", + "Construction,", + " WIN-CON-LIGHT, !- Name", + " WIN-LAY-GLASS-LIGHT; !- Outside Layer", + "Zone,", + " WEST_ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate; !- Ceiling Height {m}", + "Zone,", + " EAST_ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate; !- Ceiling Height {m}", + "Zone,", + " NORTH_ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate; !- Ceiling Height {m}", + "GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " CounterClockWise, !- Vertex Entry Direction", + " World; !- Coordinate System", + "BuildingSurface:Detailed,", + " Surface_1, !- Name", + " WALL, !- Surface Type", + " EXTWALL80, !- Construction Name", + " WEST_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_2, !- Name", + " WALL, !- Surface Type", + " EXTWALL80, !- Construction Name", + " WEST_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_3, !- Name", + " WALL, !- Surface Type", + " PARTITION06, !- Construction Name", + " WEST_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_17, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_4, !- Name", + " WALL, !- Surface Type", + " PARTITION06, !- Construction Name", + " WEST_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_10, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_5, !- Name", + " FLOOR, !- Surface Type", + " FLOOR SLAB 8 IN, !- Construction Name", + " WEST_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_5, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,0, !- X,Y,Z ==> Vertex 1 {m}", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,0,0; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_6, !- Name", + " ROOF, !- Surface Type", + " ROOF34, !- Construction Name", + " WEST_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_8, !- Name", + " WALL, !- Surface Type", + " EXTWALL80, !- Construction Name", + " EAST_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_9, !- Name", + " WALL, !- Surface Type", + " EXTWALL80, !- Construction Name", + " EAST_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 12.19200,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_10, !- Name", + " WALL, !- Surface Type", + " PARTITION06, !- Construction Name", + " EAST_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_4, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096001,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_11, !- Name", + " WALL, !- Surface Type", + " PARTITION06, !- Construction Name", + " EAST_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_18, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_12, !- Name", + " FLOOR, !- Surface Type", + " FLOOR SLAB 8 IN, !- Construction Name", + " EAST_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_12, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,0,0; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_13, !- Name", + " ROOF, !- Surface Type", + " ROOF34, !- Construction Name", + " EAST_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_14, !- Name", + " WALL, !- Surface Type", + " EXTWALL80, !- Construction Name", + " NORTH_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_15, !- Name", + " WALL, !- Surface Type", + " EXTWALL80, !- Construction Name", + " NORTH_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 12.19200,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 12.19200,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_16, !- Name", + " WALL, !- Surface Type", + " EXTWALL80, !- Construction Name", + " NORTH_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_17, !- Name", + " WALL, !- Surface Type", + " PARTITION06, !- Construction Name", + " NORTH_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_3, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.000,6.096,3.048, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000,6.096,0.000, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096,6.096,0.000, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096,6.096,3.048; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_18, !- Name", + " WALL, !- Surface Type", + " PARTITION06, !- Construction Name", + " NORTH_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_11, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_19, !- Name", + " FLOOR, !- Surface Type", + " FLOOR SLAB 8 IN, !- Construction Name", + " NORTH_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_19, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 1 {m}", + " 0,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,6.096000,0; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_20, !- Name", + " ROOF, !- Surface Type", + " ROOF34, !- Construction Name", + " NORTH_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "AirflowNetwork:SimulationControl,", + " NaturalVentilation, !- Name", + " MultizoneWithoutDistribution, !- AirflowNetwork Control", " SurfaceAverageCalculation, !- Wind Pressure Coefficient Type", - " ExternalNode, !- Height Selection for Local Wind Pressure Calculation", - " LOWRISE, !- Building Type", - " 500, !- Maximum Number of Iterations {dimensionless}", - " ZeroNodePressures, !- Initialization Type", - " 1.0E-05, !- Relative Airflow Convergence Tolerance {dimensionless}", - " 1.0E-06, !- Absolute Airflow Convergence Tolerance {kg/s}", - " -0.5, !- Convergence Acceleration Limit {dimensionless}", - " 0.0, !- Azimuth Angle of Long Axis of Building {deg}", - " 1.0; !- Ratio of Building Width Along Short Axis to Width Along Long Axis", - "AirflowNetwork:MultiZone:Zone,", - " WEST_ZONE, !- Zone Name", - " NoVent, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 0.3, !- Minimum Venting Open Factor {dimensionless}", - " 5.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", - " 10.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", - " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", - " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", - "AirflowNetwork:MultiZone:Zone,", - " EAST_ZONE, !- Zone Name", - " NoVent, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 1.0, !- Minimum Venting Open Factor {dimensionless}", - " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", - " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", - " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", - " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", - "AirflowNetwork:MultiZone:Zone,", - " NORTH_ZONE, !- Zone Name", - " NoVent, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 1.0, !- Minimum Venting Open Factor {dimensionless}", - " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", - " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", - " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", - " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", - "AirflowNetwork:MultiZone:Surface,", - " Surface_1, !- Surface Name", - " CR-1, !- Leakage Component Name", + " ExternalNode, !- Height Selection for Local Wind Pressure Calculation", + " LOWRISE, !- Building Type", + " 500, !- Maximum Number of Iterations {dimensionless}", + " ZeroNodePressures, !- Initialization Type", + " 1.0E-05, !- Relative Airflow Convergence Tolerance {dimensionless}", + " 1.0E-06, !- Absolute Airflow Convergence Tolerance {kg/s}", + " -0.5, !- Convergence Acceleration Limit {dimensionless}", + " 0.0, !- Azimuth Angle of Long Axis of Building {deg}", + " 1.0; !- Ratio of Building Width Along Short Axis to Width Along Long Axis", + "AirflowNetwork:MultiZone:Zone,", + " WEST_ZONE, !- Zone Name", + " NoVent, !- Ventilation Control Mode", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " 0.3, !- Minimum Venting Open Factor {dimensionless}", + " 5.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", + " 10.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", + " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", + " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", + "AirflowNetwork:MultiZone:Zone,", + " EAST_ZONE, !- Zone Name", + " NoVent, !- Ventilation Control Mode", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " 1.0, !- Minimum Venting Open Factor {dimensionless}", + " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", + " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", + " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", + " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", + "AirflowNetwork:MultiZone:Zone,", + " NORTH_ZONE, !- Zone Name", + " NoVent, !- Ventilation Control Mode", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " 1.0, !- Minimum Venting Open Factor {dimensionless}", + " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", + " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", + " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", + " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", + "AirflowNetwork:MultiZone:Surface,", + " Surface_1, !- Surface Name", + " CR-1, !- Leakage Component Name", + " , !- External Node Name", + " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + "AirflowNetwork:MultiZone:Surface,", + " Surface_4, !- Surface Name", + " CR-1, !- Leakage Component Name", " , !- External Node Name", - " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - "AirflowNetwork:MultiZone:Surface,", - " Surface_4, !- Surface Name", - " CR-1, !- Leakage Component Name", - " , !- External Node Name", - " 1.0; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - "AirflowNetwork:MultiZone:Surface,", - " Surface_11, !- Surface Name", - " CR-1, !- Leakage Component Name", - " , !- External Node Name", - " 1.0; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - "AirflowNetwork:MultiZone:Surface,", - " Surface_15, !- Surface Name", - " CR-1, !- Leakage Component Name", + " 1.0; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + "AirflowNetwork:MultiZone:Surface,", + " Surface_11, !- Surface Name", + " CR-1, !- Leakage Component Name", " , !- External Node Name", - " 1.0; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - "AirflowNetwork:MultiZone:ReferenceCrackConditions,", - " ReferenceCrackConditions,!- Name", - " 20.0, !- Reference Temperature{ C }", - " 101320, !- Reference Barometric Pressure{ Pa }", - " 0.005; !- Reference Humidity Ratio{ kgWater / kgDryAir }", - "AirflowNetwork:MultiZone:Surface:Crack,", - " CR-1, !- Name", - " 0.01, !- Air Mass Flow Coefficient at Reference Conditions{ kg / s }", - " 0.667, !- Air Mass Flow Exponent{ dimensionless }", - " ReferenceCrackConditions;!- Reference Crack Conditions", - "SurfaceConvectionAlgorithm:Inside,TARP;", - "SurfaceConvectionAlgorithm:Outside,DOE-2;", - "HeatBalanceAlgorithm,ConductionTransferFunction;", - "ZoneAirHeatBalanceAlgorithm,", - " AnalyticalSolution; !- Algorithm" }); - ASSERT_TRUE(process_idf(idf_objects)); - - bool errors = false; - - HeatBalanceManager::GetMaterialData(errors); // read material data - EXPECT_FALSE(errors); // expect no errors - - HeatBalanceManager::GetConstructData(errors); // read construction data - EXPECT_FALSE(errors); // expect no errors - - HeatBalanceManager::GetZoneData(errors); // read zone data - EXPECT_FALSE(errors); // expect no errors - - // Magic to get surfaces read in correctly - DataHeatBalance::HeatTransferAlgosUsed.allocate(1); - DataHeatBalance::HeatTransferAlgosUsed(1) = OverallHeatTransferSolutionAlgo; - SurfaceGeometry::CosBldgRotAppGonly = 1.0; - SurfaceGeometry::SinBldgRotAppGonly = 0.0; - - SurfaceGeometry::GetSurfaceData(errors); // setup zone geometry and get zone data - EXPECT_FALSE(errors); // expect no errors - - CurveManager::GetCurveInput(); - EXPECT_EQ( CurveManager::NumCurves, 1 ); - - AirflowNetworkBalanceManager::GetAirflowNetworkInput(); + " 1.0; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + "AirflowNetwork:MultiZone:Surface,", + " Surface_15, !- Surface Name", + " CR-1, !- Leakage Component Name", + " , !- External Node Name", + " 1.0; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + "AirflowNetwork:MultiZone:ReferenceCrackConditions,", + " ReferenceCrackConditions,!- Name", + " 20.0, !- Reference Temperature{ C }", + " 101320, !- Reference Barometric Pressure{ Pa }", + " 0.005; !- Reference Humidity Ratio{ kgWater / kgDryAir }", + "AirflowNetwork:MultiZone:Surface:Crack,", + " CR-1, !- Name", + " 0.01, !- Air Mass Flow Coefficient at Reference Conditions{ kg / s }", + " 0.667, !- Air Mass Flow Exponent{ dimensionless }", + " ReferenceCrackConditions;!- Reference Crack Conditions", + "SurfaceConvectionAlgorithm:Inside,TARP;", + "SurfaceConvectionAlgorithm:Outside,DOE-2;", + "HeatBalanceAlgorithm,ConductionTransferFunction;", + "ZoneAirHeatBalanceAlgorithm,", + " AnalyticalSolution; !- Algorithm"}); + ASSERT_TRUE(process_idf(idf_objects)); + + bool errors = false; + + HeatBalanceManager::GetMaterialData(errors); // read material data + EXPECT_FALSE(errors); // expect no errors + + HeatBalanceManager::GetConstructData(errors); // read construction data + EXPECT_FALSE(errors); // expect no errors + + HeatBalanceManager::GetZoneData(errors); // read zone data + EXPECT_FALSE(errors); // expect no errors + + // Magic to get surfaces read in correctly + DataHeatBalance::HeatTransferAlgosUsed.allocate(1); + DataHeatBalance::HeatTransferAlgosUsed(1) = OverallHeatTransferSolutionAlgo; + SurfaceGeometry::CosBldgRotAppGonly = 1.0; + SurfaceGeometry::SinBldgRotAppGonly = 0.0; + + SurfaceGeometry::GetSurfaceData(errors); // setup zone geometry and get zone data + EXPECT_FALSE(errors); // expect no errors + + CurveManager::GetCurveInput(); + EXPECT_EQ(CurveManager::NumCurves, 1); + + AirflowNetworkBalanceManager::GetAirflowNetworkInput(); EXPECT_EQ(CurveManager::NumCurves, 6); @@ -6387,1757 +6387,1757 @@ TEST_F(EnergyPlusFixture, TestExternalNodesWithSymmetricTable) AirflowNetworkBalanceManager::GetAirflowNetworkInput(); - // Check the airflow elements - EXPECT_EQ( 2u, DataAirflowNetwork::MultizoneExternalNodeData.size() ); - EXPECT_EQ( 3u, DataAirflowNetwork::MultizoneZoneData.size() ); - EXPECT_EQ( 4u, DataAirflowNetwork::MultizoneSurfaceData.size() ); - EXPECT_EQ( 1u, DataAirflowNetwork::MultizoneSurfaceCrackData.size() ); - EXPECT_EQ( 2u, DataAirflowNetwork::MultizoneSurfaceStdConditionsCrackData.size() ); - - EXPECT_EQ( 0.0, DataAirflowNetwork::MultizoneExternalNodeData( 1 ).azimuth ); - EXPECT_TRUE( DataAirflowNetwork::MultizoneExternalNodeData( 1 ).symmetricCurve ); - EXPECT_FALSE( DataAirflowNetwork::MultizoneExternalNodeData( 1 ).useRelativeAngle ); - EXPECT_EQ( 1, DataAirflowNetwork::MultizoneExternalNodeData( 1 ).curve ); - - EXPECT_EQ( 180.0, DataAirflowNetwork::MultizoneExternalNodeData( 2 ).azimuth ); - EXPECT_TRUE( DataAirflowNetwork::MultizoneExternalNodeData( 2 ).symmetricCurve ); - EXPECT_TRUE( DataAirflowNetwork::MultizoneExternalNodeData( 2 ).useRelativeAngle ); - EXPECT_EQ( 1, DataAirflowNetwork::MultizoneExternalNodeData( 2 ).curve ); - - // Set up some environmental parameters - DataEnvironment::OutBaroPress = 101325.0; - DataEnvironment::OutDryBulbTemp = 25.0; - DataEnvironment::WindDir = 105.0; - DataEnvironment::OutHumRat = 0.0; // Dry air only - DataEnvironment::SiteTempGradient = 0.0; // Disconnect z from testing - DataEnvironment::SiteWindExp = 0.0; // Disconnect variation by height - DataEnvironment::WindSpeed = 10.0; - - // Make sure we can compute the right wind pressure + // Check the airflow elements + EXPECT_EQ(2u, DataAirflowNetwork::MultizoneExternalNodeData.size()); + EXPECT_EQ(3u, DataAirflowNetwork::MultizoneZoneData.size()); + EXPECT_EQ(4u, DataAirflowNetwork::MultizoneSurfaceData.size()); + EXPECT_EQ(1u, DataAirflowNetwork::MultizoneSurfaceCrackData.size()); + EXPECT_EQ(2u, DataAirflowNetwork::MultizoneSurfaceStdConditionsCrackData.size()); + + EXPECT_EQ(0.0, DataAirflowNetwork::MultizoneExternalNodeData(1).azimuth); + EXPECT_TRUE(DataAirflowNetwork::MultizoneExternalNodeData(1).symmetricCurve); + EXPECT_FALSE(DataAirflowNetwork::MultizoneExternalNodeData(1).useRelativeAngle); + EXPECT_EQ(1, DataAirflowNetwork::MultizoneExternalNodeData(1).curve); + + EXPECT_EQ(180.0, DataAirflowNetwork::MultizoneExternalNodeData(2).azimuth); + EXPECT_TRUE(DataAirflowNetwork::MultizoneExternalNodeData(2).symmetricCurve); + EXPECT_TRUE(DataAirflowNetwork::MultizoneExternalNodeData(2).useRelativeAngle); + EXPECT_EQ(1, DataAirflowNetwork::MultizoneExternalNodeData(2).curve); + + // Set up some environmental parameters + DataEnvironment::OutBaroPress = 101325.0; + DataEnvironment::OutDryBulbTemp = 25.0; + DataEnvironment::WindDir = 105.0; + DataEnvironment::OutHumRat = 0.0; // Dry air only + DataEnvironment::SiteTempGradient = 0.0; // Disconnect z from testing + DataEnvironment::SiteWindExp = 0.0; // Disconnect variation by height + DataEnvironment::WindSpeed = 10.0; + + // Make sure we can compute the right wind pressure Real64 rho = Psychrometrics::PsyRhoAirFnPbTdbW(DataEnvironment::OutBaroPress, DataEnvironment::OutDryBulbTemp, DataEnvironment::OutHumRat); - EXPECT_DOUBLE_EQ(1.1841123742118911, rho); + EXPECT_DOUBLE_EQ(1.1841123742118911, rho); Real64 p = AirflowNetworkBalanceManager::CalcWindPressure(DataAirflowNetwork::MultizoneExternalNodeData(1).curve, false, false, 0.0, 1.0, DataEnvironment::WindDir, DataEnvironment::OutDryBulbTempAt(10.0), DataEnvironment::OutHumRat); - EXPECT_DOUBLE_EQ(-0.56*0.5*1.1841123742118911, p); + EXPECT_DOUBLE_EQ(-0.56 * 0.5 * 1.1841123742118911, p); - // Make sure the reference velocity comes out right - EXPECT_DOUBLE_EQ( 10.0, DataEnvironment::WindSpeedAt(MultizoneExternalNodeData( 1 ).height) ); + // Make sure the reference velocity comes out right + EXPECT_DOUBLE_EQ(10.0, DataEnvironment::WindSpeedAt(MultizoneExternalNodeData(1).height)); - EXPECT_EQ( 5u, DataAirflowNetwork::AirflowNetworkNodeSimu.size() ); + EXPECT_EQ(5u, DataAirflowNetwork::AirflowNetworkNodeSimu.size()); - // Run the balance routine, for now only to get the pressure set at the external nodes - AirflowNetworkBalanceManager::CalcAirflowNetworkAirBalance(); + // Run the balance routine, for now only to get the pressure set at the external nodes + AirflowNetworkBalanceManager::CalcAirflowNetworkAirBalance(); - EXPECT_DOUBLE_EQ( -0.56*0.5*118.41123742118911, DataAirflowNetwork::AirflowNetworkNodeSimu( 4 ).PZ ); - EXPECT_DOUBLE_EQ( -0.26*0.5*118.41123742118911, DataAirflowNetwork::AirflowNetworkNodeSimu( 5 ).PZ ); - } + EXPECT_DOUBLE_EQ(-0.56 * 0.5 * 118.41123742118911, DataAirflowNetwork::AirflowNetworkNodeSimu(4).PZ); + EXPECT_DOUBLE_EQ(-0.26 * 0.5 * 118.41123742118911, DataAirflowNetwork::AirflowNetworkNodeSimu(5).PZ); +} TEST_F(EnergyPlusFixture, TestExternalNodesWithSymmetricCurve) { std::string const idf_objects = delimited_string( {"Version,8.6;", - "Curve:Quartic,", - " WindPressureFit, !- Name", - " 0.592, !- Coefficient1 Constant", - " 0.0148, !- Coefficient2 x", - " -.000757, !- Coefficient3 x**2", - " 0.00000662, !- Coefficient4 x**3", - " -.0000000169, !- Coefficient5 x**4", - " 0, !- Minimum Value of x", - " 180, !- Maximum Value of x", - " -1, !- Minimum Curve Output", - " 1, !- Maximum Curve Output", - " Dimensionless, !- Input Unit Type for X", - " Dimensionless; !- Output Unit Type", - "Material,", - " A1 - 1 IN STUCCO, !- Name", - " Smooth, !- Roughness", - " 2.5389841E-02, !- Thickness {m}", - " 0.6918309, !- Conductivity {W/m-K}", - " 1858.142, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.9200000, !- Solar Absorptance", - " 0.9200000; !- Visible Absorptance", - "Material,", - " C4 - 4 IN COMMON BRICK, !- Name", - " Rough, !- Roughness", - " 0.1014984, !- Thickness {m}", - " 0.7264224, !- Conductivity {W/m-K}", - " 1922.216, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7600000, !- Solar Absorptance", - " 0.7600000; !- Visible Absorptance", - "Material,", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Name", - " Smooth, !- Roughness", - " 1.905E-02, !- Thickness {m}", - " 0.7264224, !- Conductivity {W/m-K}", - " 1601.846, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.9200000, !- Solar Absorptance", - " 0.9200000; !- Visible Absorptance", - "Material,", - " C6 - 8 IN CLAY TILE, !- Name", - " Smooth, !- Roughness", - " 0.2033016, !- Thickness {m}", - " 0.5707605, !- Conductivity {W/m-K}", - " 1121.292, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.8200000, !- Solar Absorptance", - " 0.8200000; !- Visible Absorptance", - "Material,", - " C10 - 8 IN HW CONCRETE, !- Name", - " MediumRough, !- Roughness", - " 0.2033016, !- Thickness {m}", - " 1.729577, !- Conductivity {W/m-K}", - " 2242.585, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - "Material,", - " E2 - 1 / 2 IN SLAG OR STONE, !- Name", - " Rough, !- Roughness", - " 1.2710161E-02, !- Thickness {m}", - " 1.435549, !- Conductivity {W/m-K}", - " 881.0155, !- Density {kg/m3}", - " 1673.600, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.5500000, !- Solar Absorptance", - " 0.5500000; !- Visible Absorptance", - "Material,", - " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Name", - " Rough, !- Roughness", - " 9.5402403E-03, !- Thickness {m}", - " 0.1902535, !- Conductivity {W/m-K}", - " 1121.292, !- Density {kg/m3}", - " 1673.600, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - "Material,", - " B5 - 1 IN DENSE INSULATION, !- Name", - " VeryRough, !- Roughness", - " 2.5389841E-02, !- Thickness {m}", - " 4.3239430E-02, !- Conductivity {W/m-K}", - " 91.30524, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.5000000, !- Solar Absorptance", - " 0.5000000; !- Visible Absorptance", - "Material,", - " C12 - 2 IN HW CONCRETE, !- Name", - " MediumRough, !- Roughness", - " 5.0901599E-02, !- Thickness {m}", - " 1.729577, !- Conductivity {W/m-K}", - " 2242.585, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - "Material,", - " 1.375in-Solid-Core, !- Name", - " Smooth, !- Roughness", - " 3.4925E-02, !- Thickness {m}", - " 0.1525000, !- Conductivity {W/m-K}", - " 614.5000, !- Density {kg/m3}", - " 1630.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.9200000, !- Solar Absorptance", - " 0.9200000; !- Visible Absorptance", - "WindowMaterial:Glazing,", - " WIN-LAY-GLASS-LIGHT, !- Name", - " SpectralAverage, !- Optical Data Type", - " , !- Window Glass Spectral Data Set Name", - " 0.0025, !- Thickness {m}", - " 0.850, !- Solar Transmittance at Normal Incidence", - " 0.075, !- Front Side Solar Reflectance at Normal Incidence", - " 0.075, !- Back Side Solar Reflectance at Normal Incidence", - " 0.901, !- Visible Transmittance at Normal Incidence", - " 0.081, !- Front Side Visible Reflectance at Normal Incidence", - " 0.081, !- Back Side Visible Reflectance at Normal Incidence", - " 0.0, !- Infrared Transmittance at Normal Incidence", - " 0.84, !- Front Side Infrared Hemispherical Emissivity", - " 0.84, !- Back Side Infrared Hemispherical Emissivity", - " 0.9; !- Conductivity {W/m-K}", - "Construction,", - " DOOR-CON, !- Name", - " 1.375in-Solid-Core; !- Outside Layer", - "Construction,", - " EXTWALL80, !- Name", - " A1 - 1 IN STUCCO, !- Outside Layer", - " C4 - 4 IN COMMON BRICK, !- Layer 2", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", - "Construction,", - " PARTITION06, !- Name", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer", - " C6 - 8 IN CLAY TILE, !- Layer 2", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", - " Construction,", - " FLOOR SLAB 8 IN, !- Name", - " C10 - 8 IN HW CONCRETE; !- Outside Layer", - "Construction,", - " ROOF34, !- Name", - " E2 - 1 / 2 IN SLAG OR STONE, !- Outside Layer", - " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Layer 2", - " B5 - 1 IN DENSE INSULATION, !- Layer 3", - " C12 - 2 IN HW CONCRETE; !- Layer 4", - "Construction,", - " WIN-CON-LIGHT, !- Name", - " WIN-LAY-GLASS-LIGHT; !- Outside Layer", - "Zone,", - " WEST_ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate; !- Ceiling Height {m}", - "Zone,", - " EAST_ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate; !- Ceiling Height {m}", - "Zone,", - " NORTH_ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate; !- Ceiling Height {m}", - "GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " CounterClockWise, !- Vertex Entry Direction", - " World; !- Coordinate System", - "BuildingSurface:Detailed,", - " Surface_1, !- Name", - " WALL, !- Surface Type", - " EXTWALL80, !- Construction Name", - " WEST_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_2, !- Name", - " WALL, !- Surface Type", - " EXTWALL80, !- Construction Name", - " WEST_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_3, !- Name", - " WALL, !- Surface Type", - " PARTITION06, !- Construction Name", - " WEST_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_17, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_4, !- Name", - " WALL, !- Surface Type", - " PARTITION06, !- Construction Name", - " WEST_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_10, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_5, !- Name", - " FLOOR, !- Surface Type", - " FLOOR SLAB 8 IN, !- Construction Name", - " WEST_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_5, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,0, !- X,Y,Z ==> Vertex 1 {m}", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,0,0; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_6, !- Name", - " ROOF, !- Surface Type", - " ROOF34, !- Construction Name", - " WEST_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_8, !- Name", - " WALL, !- Surface Type", - " EXTWALL80, !- Construction Name", - " EAST_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_9, !- Name", - " WALL, !- Surface Type", - " EXTWALL80, !- Construction Name", - " EAST_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 12.19200,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_10, !- Name", - " WALL, !- Surface Type", - " PARTITION06, !- Construction Name", - " EAST_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_4, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096001,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_11, !- Name", - " WALL, !- Surface Type", - " PARTITION06, !- Construction Name", - " EAST_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_18, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_12, !- Name", - " FLOOR, !- Surface Type", - " FLOOR SLAB 8 IN, !- Construction Name", - " EAST_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_12, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,0,0; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_13, !- Name", - " ROOF, !- Surface Type", - " ROOF34, !- Construction Name", - " EAST_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_14, !- Name", - " WALL, !- Surface Type", - " EXTWALL80, !- Construction Name", - " NORTH_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_15, !- Name", - " WALL, !- Surface Type", - " EXTWALL80, !- Construction Name", - " NORTH_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 12.19200,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 12.19200,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_16, !- Name", - " WALL, !- Surface Type", - " EXTWALL80, !- Construction Name", - " NORTH_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_17, !- Name", - " WALL, !- Surface Type", - " PARTITION06, !- Construction Name", - " NORTH_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_3, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.000,6.096,3.048, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000,6.096,0.000, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096,6.096,0.000, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096,6.096,3.048; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_18, !- Name", - " WALL, !- Surface Type", - " PARTITION06, !- Construction Name", - " NORTH_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_11, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_19, !- Name", - " FLOOR, !- Surface Type", - " FLOOR SLAB 8 IN, !- Construction Name", - " NORTH_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_19, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 1 {m}", - " 0,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,6.096000,0; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_20, !- Name", - " ROOF, !- Surface Type", - " ROOF34, !- Construction Name", - " NORTH_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "AirflowNetwork:SimulationControl,", - " NaturalVentilation, !- Name", - " MultizoneWithoutDistribution, !- AirflowNetwork Control", - " INPUT, !- Wind Pressure Coefficient Type", - " ExternalNode, !- Height Selection for Local Wind Pressure Calculation", - " LOWRISE, !- Building Type", - " 500, !- Maximum Number of Iterations {dimensionless}", - " ZeroNodePressures, !- Initialization Type", - " 1.0E-05, !- Relative Airflow Convergence Tolerance {dimensionless}", - " 1.0E-06, !- Absolute Airflow Convergence Tolerance {kg/s}", - " -0.5, !- Convergence Acceleration Limit {dimensionless}", - " 0.0, !- Azimuth Angle of Long Axis of Building {deg}", - " 1.0; !- Ratio of Building Width Along Short Axis to Width Along Long Axis", - "AirflowNetwork:MultiZone:Zone,", - " WEST_ZONE, !- Zone Name", - " NoVent, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 0.3, !- Minimum Venting Open Factor {dimensionless}", - " 5.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", - " 10.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", - " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", - " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", - "AirflowNetwork:MultiZone:Zone,", - " EAST_ZONE, !- Zone Name", - " NoVent, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 1.0, !- Minimum Venting Open Factor {dimensionless}", - " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", - " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", - " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", - " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", - "AirflowNetwork:MultiZone:Zone,", - " NORTH_ZONE, !- Zone Name", - " NoVent, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 1.0, !- Minimum Venting Open Factor {dimensionless}", - " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", - " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", - " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", - " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", - "AirflowNetwork:MultiZone:Surface,", - " Surface_1, !- Surface Name", - " CR-1, !- Leakage Component Name", - " SFacade, !- External Node Name", - " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - "AirflowNetwork:MultiZone:Surface,", - " Surface_4, !- Surface Name", - " CR-1, !- Leakage Component Name", - " , !- External Node Name", - " 1.0; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - "AirflowNetwork:MultiZone:Surface,", - " Surface_11, !- Surface Name", - " CR-1, !- Leakage Component Name", - " , !- External Node Name", - " 1.0; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - "AirflowNetwork:MultiZone:Surface,", - " Surface_15, !- Surface Name", - " CR-1, !- Leakage Component Name", - " NFacade, !- External Node Name", - " 1.0; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - "AirflowNetwork:MultiZone:ExternalNode,", - " NFacade, !- Name", - " 1.524, !- External Node Height{ m }", - " WindPressureFit, !- Wind Pressure Coefficient Values Object Name", - " Yes; !- Symmetric Wind Pressure Coefficient Curve", - "AirflowNetwork:MultiZone:ExternalNode,", - " SFacade, !- Name", - " 1.524, !- External Node Height{ m }", - " WindPressureFit, !- Wind Pressure Coefficient Values Object Name", - " Yes, !- Symmetric Wind Pressure Coefficient Curve", - " Relative; !- Wind Angle Type", - "AirflowNetwork:MultiZone:ReferenceCrackConditions,", - " ReferenceCrackConditions,!- Name", - " 20.0, !- Reference Temperature{ C }", - " 101320, !- Reference Barometric Pressure{ Pa }", - " 0.005; !- Reference Humidity Ratio{ kgWater / kgDryAir }", - "AirflowNetwork:MultiZone:Surface:Crack,", - " CR-1, !- Name", - " 0.01, !- Air Mass Flow Coefficient at Reference Conditions{ kg / s }", - " 0.667, !- Air Mass Flow Exponent{ dimensionless }", - " ReferenceCrackConditions;!- Reference Crack Conditions", - "SurfaceConvectionAlgorithm:Inside,TARP;", - "SurfaceConvectionAlgorithm:Outside,DOE-2;", - "HeatBalanceAlgorithm,ConductionTransferFunction;", - "ZoneAirHeatBalanceAlgorithm,", - " AnalyticalSolution; !- Algorithm" }); - ASSERT_TRUE(process_idf(idf_objects)); - - bool errors = false; - - HeatBalanceManager::GetMaterialData( errors ); // read material data - EXPECT_FALSE( errors ); // expect no errors - - HeatBalanceManager::GetConstructData( errors ); // read construction data - EXPECT_FALSE( errors ); // expect no errors - - HeatBalanceManager::GetZoneData( errors ); // read zone data - EXPECT_FALSE( errors ); // expect no errors - - // Magic to get surfaces read in correctly - DataHeatBalance::HeatTransferAlgosUsed.allocate( 1 ); - DataHeatBalance::HeatTransferAlgosUsed( 1 ) = OverallHeatTransferSolutionAlgo; - SurfaceGeometry::CosBldgRotAppGonly = 1.0; - SurfaceGeometry::SinBldgRotAppGonly = 0.0; - - SurfaceGeometry::GetSurfaceData(errors); // setup zone geometry and get zone data - EXPECT_FALSE(errors); // expect no errors - - CurveManager::GetCurveInput(); - EXPECT_EQ( CurveManager::NumCurves, 1 ); - - AirflowNetworkBalanceManager::GetAirflowNetworkInput(); - - // Check the airflow elements - EXPECT_EQ( 2u, DataAirflowNetwork::MultizoneExternalNodeData.size() ); - EXPECT_EQ( 3u, DataAirflowNetwork::MultizoneZoneData.size() ); - EXPECT_EQ( 4u, DataAirflowNetwork::MultizoneSurfaceData.size() ); - EXPECT_EQ( 1u, DataAirflowNetwork::MultizoneSurfaceCrackData.size() ); - EXPECT_EQ( 2u, DataAirflowNetwork::MultizoneSurfaceStdConditionsCrackData.size() ); - - EXPECT_EQ( 0.0, DataAirflowNetwork::MultizoneExternalNodeData( 1 ).azimuth ); - EXPECT_TRUE( DataAirflowNetwork::MultizoneExternalNodeData( 1 ).symmetricCurve ); - EXPECT_FALSE( DataAirflowNetwork::MultizoneExternalNodeData( 1 ).useRelativeAngle ); - EXPECT_EQ( 1, DataAirflowNetwork::MultizoneExternalNodeData( 1 ).curve ); - - EXPECT_EQ( 180.0, DataAirflowNetwork::MultizoneExternalNodeData( 2 ).azimuth ); - EXPECT_TRUE( DataAirflowNetwork::MultizoneExternalNodeData( 2 ).symmetricCurve ); - EXPECT_TRUE( DataAirflowNetwork::MultizoneExternalNodeData( 2 ).useRelativeAngle ); - EXPECT_EQ( 1, DataAirflowNetwork::MultizoneExternalNodeData( 2 ).curve ); - - // Check the curves - Real64 cp105N = -0.590653062499999; - Real64 cp105S = -0.298039062499999; - EXPECT_DOUBLE_EQ( 0.592, CurveManager::CurveValue( 1, 0 ) ); // In-range value - EXPECT_NEAR( cp105N, CurveManager::CurveValue( 1, 105 ), 1e-14 ); // In-range value - EXPECT_NEAR( cp105S, CurveManager::CurveValue( 1, 75 ), 1e-14 ); // In-range value - EXPECT_DOUBLE_EQ( 0.592, CurveManager::CurveValue( 1, -10.0 ) ); // Minimum x - EXPECT_NEAR( -0.403903999999994, CurveManager::CurveValue( 1, 5000 ), 1e-14 ); // Maximum x - - // Set up some environmental parameters - DataEnvironment::OutBaroPress = 101325.0; - DataEnvironment::OutDryBulbTemp = 25.0; - DataEnvironment::WindDir = 105.0; - DataEnvironment::OutHumRat = 0.0; // Dry air only - DataEnvironment::SiteTempGradient = 0.0; // Disconnect z from testing - DataEnvironment::SiteWindExp = 0.0; // Disconnect variation by height - DataEnvironment::WindSpeed = 10.0; - - // Make sure we can compute the right wind pressure - Real64 rho = Psychrometrics::PsyRhoAirFnPbTdbW(DataEnvironment::OutBaroPress, DataEnvironment::OutDryBulbTemp, DataEnvironment::OutHumRat); - EXPECT_DOUBLE_EQ(1.1841123742118911, rho); - Real64 p = - AirflowNetworkBalanceManager::CalcWindPressure(DataAirflowNetwork::MultizoneExternalNodeData(1).curve, false, false, 0.0, 1.0, + "Curve:Quartic,", + " WindPressureFit, !- Name", + " 0.592, !- Coefficient1 Constant", + " 0.0148, !- Coefficient2 x", + " -.000757, !- Coefficient3 x**2", + " 0.00000662, !- Coefficient4 x**3", + " -.0000000169, !- Coefficient5 x**4", + " 0, !- Minimum Value of x", + " 180, !- Maximum Value of x", + " -1, !- Minimum Curve Output", + " 1, !- Maximum Curve Output", + " Dimensionless, !- Input Unit Type for X", + " Dimensionless; !- Output Unit Type", + "Material,", + " A1 - 1 IN STUCCO, !- Name", + " Smooth, !- Roughness", + " 2.5389841E-02, !- Thickness {m}", + " 0.6918309, !- Conductivity {W/m-K}", + " 1858.142, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.9200000, !- Solar Absorptance", + " 0.9200000; !- Visible Absorptance", + "Material,", + " C4 - 4 IN COMMON BRICK, !- Name", + " Rough, !- Roughness", + " 0.1014984, !- Thickness {m}", + " 0.7264224, !- Conductivity {W/m-K}", + " 1922.216, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7600000, !- Solar Absorptance", + " 0.7600000; !- Visible Absorptance", + "Material,", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Name", + " Smooth, !- Roughness", + " 1.905E-02, !- Thickness {m}", + " 0.7264224, !- Conductivity {W/m-K}", + " 1601.846, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.9200000, !- Solar Absorptance", + " 0.9200000; !- Visible Absorptance", + "Material,", + " C6 - 8 IN CLAY TILE, !- Name", + " Smooth, !- Roughness", + " 0.2033016, !- Thickness {m}", + " 0.5707605, !- Conductivity {W/m-K}", + " 1121.292, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.8200000, !- Solar Absorptance", + " 0.8200000; !- Visible Absorptance", + "Material,", + " C10 - 8 IN HW CONCRETE, !- Name", + " MediumRough, !- Roughness", + " 0.2033016, !- Thickness {m}", + " 1.729577, !- Conductivity {W/m-K}", + " 2242.585, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + "Material,", + " E2 - 1 / 2 IN SLAG OR STONE, !- Name", + " Rough, !- Roughness", + " 1.2710161E-02, !- Thickness {m}", + " 1.435549, !- Conductivity {W/m-K}", + " 881.0155, !- Density {kg/m3}", + " 1673.600, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.5500000, !- Solar Absorptance", + " 0.5500000; !- Visible Absorptance", + "Material,", + " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Name", + " Rough, !- Roughness", + " 9.5402403E-03, !- Thickness {m}", + " 0.1902535, !- Conductivity {W/m-K}", + " 1121.292, !- Density {kg/m3}", + " 1673.600, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + "Material,", + " B5 - 1 IN DENSE INSULATION, !- Name", + " VeryRough, !- Roughness", + " 2.5389841E-02, !- Thickness {m}", + " 4.3239430E-02, !- Conductivity {W/m-K}", + " 91.30524, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.5000000, !- Solar Absorptance", + " 0.5000000; !- Visible Absorptance", + "Material,", + " C12 - 2 IN HW CONCRETE, !- Name", + " MediumRough, !- Roughness", + " 5.0901599E-02, !- Thickness {m}", + " 1.729577, !- Conductivity {W/m-K}", + " 2242.585, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + "Material,", + " 1.375in-Solid-Core, !- Name", + " Smooth, !- Roughness", + " 3.4925E-02, !- Thickness {m}", + " 0.1525000, !- Conductivity {W/m-K}", + " 614.5000, !- Density {kg/m3}", + " 1630.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.9200000, !- Solar Absorptance", + " 0.9200000; !- Visible Absorptance", + "WindowMaterial:Glazing,", + " WIN-LAY-GLASS-LIGHT, !- Name", + " SpectralAverage, !- Optical Data Type", + " , !- Window Glass Spectral Data Set Name", + " 0.0025, !- Thickness {m}", + " 0.850, !- Solar Transmittance at Normal Incidence", + " 0.075, !- Front Side Solar Reflectance at Normal Incidence", + " 0.075, !- Back Side Solar Reflectance at Normal Incidence", + " 0.901, !- Visible Transmittance at Normal Incidence", + " 0.081, !- Front Side Visible Reflectance at Normal Incidence", + " 0.081, !- Back Side Visible Reflectance at Normal Incidence", + " 0.0, !- Infrared Transmittance at Normal Incidence", + " 0.84, !- Front Side Infrared Hemispherical Emissivity", + " 0.84, !- Back Side Infrared Hemispherical Emissivity", + " 0.9; !- Conductivity {W/m-K}", + "Construction,", + " DOOR-CON, !- Name", + " 1.375in-Solid-Core; !- Outside Layer", + "Construction,", + " EXTWALL80, !- Name", + " A1 - 1 IN STUCCO, !- Outside Layer", + " C4 - 4 IN COMMON BRICK, !- Layer 2", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", + "Construction,", + " PARTITION06, !- Name", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer", + " C6 - 8 IN CLAY TILE, !- Layer 2", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", + " Construction,", + " FLOOR SLAB 8 IN, !- Name", + " C10 - 8 IN HW CONCRETE; !- Outside Layer", + "Construction,", + " ROOF34, !- Name", + " E2 - 1 / 2 IN SLAG OR STONE, !- Outside Layer", + " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Layer 2", + " B5 - 1 IN DENSE INSULATION, !- Layer 3", + " C12 - 2 IN HW CONCRETE; !- Layer 4", + "Construction,", + " WIN-CON-LIGHT, !- Name", + " WIN-LAY-GLASS-LIGHT; !- Outside Layer", + "Zone,", + " WEST_ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate; !- Ceiling Height {m}", + "Zone,", + " EAST_ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate; !- Ceiling Height {m}", + "Zone,", + " NORTH_ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate; !- Ceiling Height {m}", + "GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " CounterClockWise, !- Vertex Entry Direction", + " World; !- Coordinate System", + "BuildingSurface:Detailed,", + " Surface_1, !- Name", + " WALL, !- Surface Type", + " EXTWALL80, !- Construction Name", + " WEST_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_2, !- Name", + " WALL, !- Surface Type", + " EXTWALL80, !- Construction Name", + " WEST_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_3, !- Name", + " WALL, !- Surface Type", + " PARTITION06, !- Construction Name", + " WEST_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_17, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_4, !- Name", + " WALL, !- Surface Type", + " PARTITION06, !- Construction Name", + " WEST_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_10, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_5, !- Name", + " FLOOR, !- Surface Type", + " FLOOR SLAB 8 IN, !- Construction Name", + " WEST_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_5, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,0, !- X,Y,Z ==> Vertex 1 {m}", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,0,0; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_6, !- Name", + " ROOF, !- Surface Type", + " ROOF34, !- Construction Name", + " WEST_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_8, !- Name", + " WALL, !- Surface Type", + " EXTWALL80, !- Construction Name", + " EAST_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_9, !- Name", + " WALL, !- Surface Type", + " EXTWALL80, !- Construction Name", + " EAST_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 12.19200,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_10, !- Name", + " WALL, !- Surface Type", + " PARTITION06, !- Construction Name", + " EAST_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_4, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096001,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_11, !- Name", + " WALL, !- Surface Type", + " PARTITION06, !- Construction Name", + " EAST_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_18, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_12, !- Name", + " FLOOR, !- Surface Type", + " FLOOR SLAB 8 IN, !- Construction Name", + " EAST_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_12, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,0,0; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_13, !- Name", + " ROOF, !- Surface Type", + " ROOF34, !- Construction Name", + " EAST_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_14, !- Name", + " WALL, !- Surface Type", + " EXTWALL80, !- Construction Name", + " NORTH_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_15, !- Name", + " WALL, !- Surface Type", + " EXTWALL80, !- Construction Name", + " NORTH_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 12.19200,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 12.19200,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_16, !- Name", + " WALL, !- Surface Type", + " EXTWALL80, !- Construction Name", + " NORTH_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_17, !- Name", + " WALL, !- Surface Type", + " PARTITION06, !- Construction Name", + " NORTH_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_3, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.000,6.096,3.048, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000,6.096,0.000, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096,6.096,0.000, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096,6.096,3.048; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_18, !- Name", + " WALL, !- Surface Type", + " PARTITION06, !- Construction Name", + " NORTH_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_11, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_19, !- Name", + " FLOOR, !- Surface Type", + " FLOOR SLAB 8 IN, !- Construction Name", + " NORTH_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_19, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 1 {m}", + " 0,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,6.096000,0; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_20, !- Name", + " ROOF, !- Surface Type", + " ROOF34, !- Construction Name", + " NORTH_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "AirflowNetwork:SimulationControl,", + " NaturalVentilation, !- Name", + " MultizoneWithoutDistribution, !- AirflowNetwork Control", + " INPUT, !- Wind Pressure Coefficient Type", + " ExternalNode, !- Height Selection for Local Wind Pressure Calculation", + " LOWRISE, !- Building Type", + " 500, !- Maximum Number of Iterations {dimensionless}", + " ZeroNodePressures, !- Initialization Type", + " 1.0E-05, !- Relative Airflow Convergence Tolerance {dimensionless}", + " 1.0E-06, !- Absolute Airflow Convergence Tolerance {kg/s}", + " -0.5, !- Convergence Acceleration Limit {dimensionless}", + " 0.0, !- Azimuth Angle of Long Axis of Building {deg}", + " 1.0; !- Ratio of Building Width Along Short Axis to Width Along Long Axis", + "AirflowNetwork:MultiZone:Zone,", + " WEST_ZONE, !- Zone Name", + " NoVent, !- Ventilation Control Mode", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " 0.3, !- Minimum Venting Open Factor {dimensionless}", + " 5.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", + " 10.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", + " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", + " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", + "AirflowNetwork:MultiZone:Zone,", + " EAST_ZONE, !- Zone Name", + " NoVent, !- Ventilation Control Mode", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " 1.0, !- Minimum Venting Open Factor {dimensionless}", + " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", + " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", + " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", + " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", + "AirflowNetwork:MultiZone:Zone,", + " NORTH_ZONE, !- Zone Name", + " NoVent, !- Ventilation Control Mode", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " 1.0, !- Minimum Venting Open Factor {dimensionless}", + " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", + " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", + " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", + " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", + "AirflowNetwork:MultiZone:Surface,", + " Surface_1, !- Surface Name", + " CR-1, !- Leakage Component Name", + " SFacade, !- External Node Name", + " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + "AirflowNetwork:MultiZone:Surface,", + " Surface_4, !- Surface Name", + " CR-1, !- Leakage Component Name", + " , !- External Node Name", + " 1.0; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + "AirflowNetwork:MultiZone:Surface,", + " Surface_11, !- Surface Name", + " CR-1, !- Leakage Component Name", + " , !- External Node Name", + " 1.0; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + "AirflowNetwork:MultiZone:Surface,", + " Surface_15, !- Surface Name", + " CR-1, !- Leakage Component Name", + " NFacade, !- External Node Name", + " 1.0; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + "AirflowNetwork:MultiZone:ExternalNode,", + " NFacade, !- Name", + " 1.524, !- External Node Height{ m }", + " WindPressureFit, !- Wind Pressure Coefficient Values Object Name", + " Yes; !- Symmetric Wind Pressure Coefficient Curve", + "AirflowNetwork:MultiZone:ExternalNode,", + " SFacade, !- Name", + " 1.524, !- External Node Height{ m }", + " WindPressureFit, !- Wind Pressure Coefficient Values Object Name", + " Yes, !- Symmetric Wind Pressure Coefficient Curve", + " Relative; !- Wind Angle Type", + "AirflowNetwork:MultiZone:ReferenceCrackConditions,", + " ReferenceCrackConditions,!- Name", + " 20.0, !- Reference Temperature{ C }", + " 101320, !- Reference Barometric Pressure{ Pa }", + " 0.005; !- Reference Humidity Ratio{ kgWater / kgDryAir }", + "AirflowNetwork:MultiZone:Surface:Crack,", + " CR-1, !- Name", + " 0.01, !- Air Mass Flow Coefficient at Reference Conditions{ kg / s }", + " 0.667, !- Air Mass Flow Exponent{ dimensionless }", + " ReferenceCrackConditions;!- Reference Crack Conditions", + "SurfaceConvectionAlgorithm:Inside,TARP;", + "SurfaceConvectionAlgorithm:Outside,DOE-2;", + "HeatBalanceAlgorithm,ConductionTransferFunction;", + "ZoneAirHeatBalanceAlgorithm,", + " AnalyticalSolution; !- Algorithm"}); + ASSERT_TRUE(process_idf(idf_objects)); + + bool errors = false; + + HeatBalanceManager::GetMaterialData(errors); // read material data + EXPECT_FALSE(errors); // expect no errors + + HeatBalanceManager::GetConstructData(errors); // read construction data + EXPECT_FALSE(errors); // expect no errors + + HeatBalanceManager::GetZoneData(errors); // read zone data + EXPECT_FALSE(errors); // expect no errors + + // Magic to get surfaces read in correctly + DataHeatBalance::HeatTransferAlgosUsed.allocate(1); + DataHeatBalance::HeatTransferAlgosUsed(1) = OverallHeatTransferSolutionAlgo; + SurfaceGeometry::CosBldgRotAppGonly = 1.0; + SurfaceGeometry::SinBldgRotAppGonly = 0.0; + + SurfaceGeometry::GetSurfaceData(errors); // setup zone geometry and get zone data + EXPECT_FALSE(errors); // expect no errors + + CurveManager::GetCurveInput(); + EXPECT_EQ(CurveManager::NumCurves, 1); + + AirflowNetworkBalanceManager::GetAirflowNetworkInput(); + + // Check the airflow elements + EXPECT_EQ(2u, DataAirflowNetwork::MultizoneExternalNodeData.size()); + EXPECT_EQ(3u, DataAirflowNetwork::MultizoneZoneData.size()); + EXPECT_EQ(4u, DataAirflowNetwork::MultizoneSurfaceData.size()); + EXPECT_EQ(1u, DataAirflowNetwork::MultizoneSurfaceCrackData.size()); + EXPECT_EQ(2u, DataAirflowNetwork::MultizoneSurfaceStdConditionsCrackData.size()); + + EXPECT_EQ(0.0, DataAirflowNetwork::MultizoneExternalNodeData(1).azimuth); + EXPECT_TRUE(DataAirflowNetwork::MultizoneExternalNodeData(1).symmetricCurve); + EXPECT_FALSE(DataAirflowNetwork::MultizoneExternalNodeData(1).useRelativeAngle); + EXPECT_EQ(1, DataAirflowNetwork::MultizoneExternalNodeData(1).curve); + + EXPECT_EQ(180.0, DataAirflowNetwork::MultizoneExternalNodeData(2).azimuth); + EXPECT_TRUE(DataAirflowNetwork::MultizoneExternalNodeData(2).symmetricCurve); + EXPECT_TRUE(DataAirflowNetwork::MultizoneExternalNodeData(2).useRelativeAngle); + EXPECT_EQ(1, DataAirflowNetwork::MultizoneExternalNodeData(2).curve); + + // Check the curves + Real64 cp105N = -0.590653062499999; + Real64 cp105S = -0.298039062499999; + EXPECT_DOUBLE_EQ(0.592, CurveManager::CurveValue(1, 0)); // In-range value + EXPECT_NEAR(cp105N, CurveManager::CurveValue(1, 105), 1e-14); // In-range value + EXPECT_NEAR(cp105S, CurveManager::CurveValue(1, 75), 1e-14); // In-range value + EXPECT_DOUBLE_EQ(0.592, CurveManager::CurveValue(1, -10.0)); // Minimum x + EXPECT_NEAR(-0.403903999999994, CurveManager::CurveValue(1, 5000), 1e-14); // Maximum x + + // Set up some environmental parameters + DataEnvironment::OutBaroPress = 101325.0; + DataEnvironment::OutDryBulbTemp = 25.0; + DataEnvironment::WindDir = 105.0; + DataEnvironment::OutHumRat = 0.0; // Dry air only + DataEnvironment::SiteTempGradient = 0.0; // Disconnect z from testing + DataEnvironment::SiteWindExp = 0.0; // Disconnect variation by height + DataEnvironment::WindSpeed = 10.0; + + // Make sure we can compute the right wind pressure + Real64 rho = Psychrometrics::PsyRhoAirFnPbTdbW(DataEnvironment::OutBaroPress, DataEnvironment::OutDryBulbTemp, DataEnvironment::OutHumRat); + EXPECT_DOUBLE_EQ(1.1841123742118911, rho); + Real64 p = + AirflowNetworkBalanceManager::CalcWindPressure(DataAirflowNetwork::MultizoneExternalNodeData(1).curve, false, false, 0.0, 1.0, DataEnvironment::WindDir, DataEnvironment::OutDryBulbTempAt(10.0), DataEnvironment::OutHumRat); - EXPECT_DOUBLE_EQ( cp105N*0.5*1.1841123742118911, p); + EXPECT_DOUBLE_EQ(cp105N * 0.5 * 1.1841123742118911, p); - // Make sure the reference velocity comes out right - EXPECT_DOUBLE_EQ( 10.0, DataEnvironment::WindSpeedAt(MultizoneExternalNodeData( 1 ).height) ); + // Make sure the reference velocity comes out right + EXPECT_DOUBLE_EQ(10.0, DataEnvironment::WindSpeedAt(MultizoneExternalNodeData(1).height)); - EXPECT_EQ( 5u, DataAirflowNetwork::AirflowNetworkNodeSimu.size() ); + EXPECT_EQ(5u, DataAirflowNetwork::AirflowNetworkNodeSimu.size()); - // Run the balance routine, for now only to get the pressure set at the external nodes - AirflowNetworkBalanceManager::CalcAirflowNetworkAirBalance(); + // Run the balance routine, for now only to get the pressure set at the external nodes + AirflowNetworkBalanceManager::CalcAirflowNetworkAirBalance(); - EXPECT_NEAR( cp105N*0.5*118.41123742118911, DataAirflowNetwork::AirflowNetworkNodeSimu( 4 ).PZ, 1e-13 ); - EXPECT_NEAR( cp105S*0.5*118.41123742118911, DataAirflowNetwork::AirflowNetworkNodeSimu( 5 ).PZ, 1e-13 ); - } + EXPECT_NEAR(cp105N * 0.5 * 118.41123742118911, DataAirflowNetwork::AirflowNetworkNodeSimu(4).PZ, 1e-13); + EXPECT_NEAR(cp105S * 0.5 * 118.41123742118911, DataAirflowNetwork::AirflowNetworkNodeSimu(5).PZ, 1e-13); +} TEST_F(EnergyPlusFixture, TestExternalNodesWithLocalAirNode) { std::string const idf_objects = delimited_string( {"Version,8.9;", - "Material,", - " A1 - 1 IN STUCCO, !- Name", - " Smooth, !- Roughness", - " 2.5389841E-02, !- Thickness {m}", - " 0.6918309, !- Conductivity {W/m-K}", - " 1858.142, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.9200000, !- Solar Absorptance", - " 0.9200000; !- Visible Absorptance", - "Material,", - " C4 - 4 IN COMMON BRICK, !- Name", - " Rough, !- Roughness", - " 0.1014984, !- Thickness {m}", - " 0.7264224, !- Conductivity {W/m-K}", - " 1922.216, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7600000, !- Solar Absorptance", - " 0.7600000; !- Visible Absorptance", - "Material,", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Name", - " Smooth, !- Roughness", - " 1.905E-02, !- Thickness {m}", - " 0.7264224, !- Conductivity {W/m-K}", - " 1601.846, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.9200000, !- Solar Absorptance", - " 0.9200000; !- Visible Absorptance", - "Material,", - " C6 - 8 IN CLAY TILE, !- Name", - " Smooth, !- Roughness", - " 0.2033016, !- Thickness {m}", - " 0.5707605, !- Conductivity {W/m-K}", - " 1121.292, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.8200000, !- Solar Absorptance", - " 0.8200000; !- Visible Absorptance", - "Material,", - " C10 - 8 IN HW CONCRETE, !- Name", - " MediumRough, !- Roughness", - " 0.2033016, !- Thickness {m}", - " 1.729577, !- Conductivity {W/m-K}", - " 2242.585, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - "Material,", - " E2 - 1 / 2 IN SLAG OR STONE, !- Name", - " Rough, !- Roughness", - " 1.2710161E-02, !- Thickness {m}", - " 1.435549, !- Conductivity {W/m-K}", - " 881.0155, !- Density {kg/m3}", - " 1673.600, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.5500000, !- Solar Absorptance", - " 0.5500000; !- Visible Absorptance", - "Material,", - " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Name", - " Rough, !- Roughness", - " 9.5402403E-03, !- Thickness {m}", - " 0.1902535, !- Conductivity {W/m-K}", - " 1121.292, !- Density {kg/m3}", - " 1673.600, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - "Material,", - " B5 - 1 IN DENSE INSULATION, !- Name", - " VeryRough, !- Roughness", - " 2.5389841E-02, !- Thickness {m}", - " 4.3239430E-02, !- Conductivity {W/m-K}", - " 91.30524, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.5000000, !- Solar Absorptance", - " 0.5000000; !- Visible Absorptance", - "Material,", - " C12 - 2 IN HW CONCRETE, !- Name", - " MediumRough, !- Roughness", - " 5.0901599E-02, !- Thickness {m}", - " 1.729577, !- Conductivity {W/m-K}", - " 2242.585, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - "Material,", - " 1.375in-Solid-Core, !- Name", - " Smooth, !- Roughness", - " 3.4925E-02, !- Thickness {m}", - " 0.1525000, !- Conductivity {W/m-K}", - " 614.5000, !- Density {kg/m3}", - " 1630.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.9200000, !- Solar Absorptance", - " 0.9200000; !- Visible Absorptance", - "WindowMaterial:Glazing,", - " WIN-LAY-GLASS-LIGHT, !- Name", - " SpectralAverage, !- Optical Data Type", - " , !- Window Glass Spectral Data Set Name", - " 0.0025, !- Thickness {m}", - " 0.850, !- Solar Transmittance at Normal Incidence", - " 0.075, !- Front Side Solar Reflectance at Normal Incidence", - " 0.075, !- Back Side Solar Reflectance at Normal Incidence", - " 0.901, !- Visible Transmittance at Normal Incidence", - " 0.081, !- Front Side Visible Reflectance at Normal Incidence", - " 0.081, !- Back Side Visible Reflectance at Normal Incidence", - " 0.0, !- Infrared Transmittance at Normal Incidence", - " 0.84, !- Front Side Infrared Hemispherical Emissivity", - " 0.84, !- Back Side Infrared Hemispherical Emissivity", - " 0.9; !- Conductivity {W/m-K}", - "Construction,", - " DOOR-CON, !- Name", - " 1.375in-Solid-Core; !- Outside Layer", - "Construction,", - " EXTWALL80, !- Name", - " A1 - 1 IN STUCCO, !- Outside Layer", - " C4 - 4 IN COMMON BRICK, !- Layer 2", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", - "Construction,", - " PARTITION06, !- Name", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer", - " C6 - 8 IN CLAY TILE, !- Layer 2", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", - " Construction,", - " FLOOR SLAB 8 IN, !- Name", - " C10 - 8 IN HW CONCRETE; !- Outside Layer", - "Construction,", - " ROOF34, !- Name", - " E2 - 1 / 2 IN SLAG OR STONE, !- Outside Layer", - " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Layer 2", - " B5 - 1 IN DENSE INSULATION, !- Layer 3", - " C12 - 2 IN HW CONCRETE; !- Layer 4", - "Construction,", - " WIN-CON-LIGHT, !- Name", - " WIN-LAY-GLASS-LIGHT; !- Outside Layer", - "Zone,", - " WEST_ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate; !- Ceiling Height {m}", - "Zone,", - " EAST_ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate; !- Ceiling Height {m}", - "Zone,", - " NORTH_ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate; !- Ceiling Height {m}", - "GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " CounterClockWise, !- Vertex Entry Direction", - " World; !- Coordinate System", - "BuildingSurface:Detailed,", - " Surface_1, !- Name", - " WALL, !- Surface Type", - " EXTWALL80, !- Construction Name", - " WEST_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_2, !- Name", - " WALL, !- Surface Type", - " EXTWALL80, !- Construction Name", - " WEST_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_3, !- Name", - " WALL, !- Surface Type", - " PARTITION06, !- Construction Name", - " WEST_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_17, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_4, !- Name", - " WALL, !- Surface Type", - " PARTITION06, !- Construction Name", - " WEST_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_10, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_5, !- Name", - " FLOOR, !- Surface Type", - " FLOOR SLAB 8 IN, !- Construction Name", - " WEST_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_5, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,0, !- X,Y,Z ==> Vertex 1 {m}", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,0,0; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_6, !- Name", - " ROOF, !- Surface Type", - " ROOF34, !- Construction Name", - " WEST_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_8, !- Name", - " WALL, !- Surface Type", - " EXTWALL80, !- Construction Name", - " EAST_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_9, !- Name", - " WALL, !- Surface Type", - " EXTWALL80, !- Construction Name", - " EAST_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 12.19200,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_10, !- Name", - " WALL, !- Surface Type", - " PARTITION06, !- Construction Name", - " EAST_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_4, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096001,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_11, !- Name", - " WALL, !- Surface Type", - " PARTITION06, !- Construction Name", - " EAST_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_18, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_12, !- Name", - " FLOOR, !- Surface Type", - " FLOOR SLAB 8 IN, !- Construction Name", - " EAST_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_12, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,0,0; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_13, !- Name", - " ROOF, !- Surface Type", - " ROOF34, !- Construction Name", - " EAST_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_14, !- Name", - " WALL, !- Surface Type", - " EXTWALL80, !- Construction Name", - " NORTH_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_15, !- Name", - " WALL, !- Surface Type", - " EXTWALL80, !- Construction Name", - " NORTH_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 12.19200,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 12.19200,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_16, !- Name", - " WALL, !- Surface Type", - " EXTWALL80, !- Construction Name", - " NORTH_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_17, !- Name", - " WALL, !- Surface Type", - " PARTITION06, !- Construction Name", - " NORTH_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_3, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.000,6.096,3.048, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000,6.096,0.000, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096,6.096,0.000, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096,6.096,3.048; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_18, !- Name", - " WALL, !- Surface Type", - " PARTITION06, !- Construction Name", - " NORTH_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_11, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_19, !- Name", - " FLOOR, !- Surface Type", - " FLOOR SLAB 8 IN, !- Construction Name", - " NORTH_ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Surface_19, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 1 {m}", - " 0,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,6.096000,0; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " Surface_20, !- Name", - " ROOF, !- Surface Type", - " ROOF34, !- Construction Name", - " NORTH_ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - "AirflowNetwork:SimulationControl,", - " NaturalVentilation, !- Name", - " MultizoneWithoutDistribution, !- AirflowNetwork Control", - " INPUT, !- Wind Pressure Coefficient Type", - " ExternalNode, !- Height Selection for Local Wind Pressure Calculation", - " LOWRISE, !- Building Type", - " 500, !- Maximum Number of Iterations {dimensionless}", - " ZeroNodePressures, !- Initialization Type", - " 1.0E-05, !- Relative Airflow Convergence Tolerance {dimensionless}", - " 1.0E-06, !- Absolute Airflow Convergence Tolerance {kg/s}", - " -0.5, !- Convergence Acceleration Limit {dimensionless}", - " 0.0, !- Azimuth Angle of Long Axis of Building {deg}", - " 1.0; !- Ratio of Building Width Along Short Axis to Width Along Long Axis", - "AirflowNetwork:MultiZone:Zone,", - " WEST_ZONE, !- Zone Name", - " NoVent, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 0.3, !- Minimum Venting Open Factor {dimensionless}", - " 5.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", - " 10.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", - " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", - " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", - "AirflowNetwork:MultiZone:Zone,", - " EAST_ZONE, !- Zone Name", - " NoVent, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 1.0, !- Minimum Venting Open Factor {dimensionless}", - " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", - " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", - " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", - " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", - "AirflowNetwork:MultiZone:Zone,", - " NORTH_ZONE, !- Zone Name", - " NoVent, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " 1.0, !- Minimum Venting Open Factor {dimensionless}", - " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", - " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", - " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", - " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", - "AirflowNetwork:MultiZone:Surface,", - " Surface_1, !- Surface Name", - " CR-1, !- Leakage Component Name", - " SFacade, !- External Node Name", - " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - "AirflowNetwork:MultiZone:Surface,", - " Surface_4, !- Surface Name", - " CR-1, !- Leakage Component Name", - " , !- External Node Name", - " 1.0; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - "AirflowNetwork:MultiZone:Surface,", - " Surface_11, !- Surface Name", - " CR-1, !- Leakage Component Name", - " , !- External Node Name", - " 1.0; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - "AirflowNetwork:MultiZone:Surface,", - " Surface_15, !- Surface Name", - " CR-1, !- Leakage Component Name", - " NFacade, !- External Node Name", - " 1.0; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", - "AirflowNetwork:MultiZone:ExternalNode,", - " NFacade, !- Name", - " 1.524, !- External Node Height{ m }", - " NFacade_WPCCurve; !- Wind Pressure Coefficient Values Object Name", - "OutdoorAir:Node,", - " SFacade, !- Name", - " , !- Height Above Ground", - " , !- Drybulb Temperature Schedule Name", - " , !- Wetbulb Temperature Schedule Name", - " , !- Wind Speed Schedule Name", - " , !- Wind Direction Schedule Name", - " SFacade_WPCCurve, !- Wind Pressure Coefficient Values Object Name", - " No, !- Symmetric Wind Pressure Coefficient Curve", - " Absolute; !- Wind Angle Type", - "AirflowNetwork:MultiZone:ReferenceCrackConditions,", - " ReferenceCrackConditions,!- Name", - " 20.0, !- Reference Temperature{ C }", - " 101320, !- Reference Barometric Pressure{ Pa }", - " 0.005; !- Reference Humidity Ratio{ kgWater / kgDryAir }", - "AirflowNetwork:MultiZone:Surface:Crack,", - " CR-1, !- Name", - " 0.01, !- Air Mass Flow Coefficient at Reference Conditions{ kg / s }", - " 0.667, !- Air Mass Flow Exponent{ dimensionless }", - " ReferenceCrackConditions;!- Reference Crack Conditions", - "Table:OneIndependentVariable,", - " NFacade_WPCCurve, !- Name", - " Linear, !- Curve Type", - " LinearInterpolationOfTable, !- Interpolation Method", - " 0, !- Minimum Value of X", - " 360, !- Maximum Value of X", - " -1, !- Minimum Table Output", - " 1, !- Maximum Table Output", - " Dimensionless, !- Input Unit Type for X", - " Dimensionless, !- Output Unit Type", - " 1, !- Normalization Reference", - " 0, 0.60, !- X,Y Pair #1", - " 30, 0.48, !- X,Y Pair #2", - " 60, 0.04, !- X,Y Pair #3", - " 90, -0.56, !- X,Y Pair #4", - " 120, -0.56, !- X,Y Pair #5", - " 150, -0.42, !- X,Y Pair #6", - " 180, -0.37, !- X,Y Pair #7", - " 210, -0.42, !- X,Y Pair #8", - " 240, -0.56, !- X,Y Pair #9", - " 270, -0.56, !- X,Y Pair #10", - " 300, 0.04, !- X,Y Pair #11", - " 330, 0.48, !- X,Y Pair #12", - " 360, 0.60; !- X,Y Pair #13", - "Table:OneIndependentVariable,", - " SFacade_WPCCurve, !- Name", - " Linear, !- Curve Type", - " LinearInterpolationOfTable, !- Interpolation Method", - " 0, !- Minimum Value of X", - " 360, !- Maximum Value of X", - " -1, !- Minimum Table Output", - " 1, !- Maximum Table Output", - " Dimensionless, !- Input Unit Type for X", - " Dimensionless, !- Output Unit Type", - " 1, !- Normalization Reference", - " 0, -0.37, !- X,Y Pair #1", - " 30, -0.42, !- X,Y Pair #2", - " 60, -0.56, !- X,Y Pair #3", - " 90, -0.56, !- X,Y Pair #4", - " 120, 0.04, !- X,Y Pair #5", - " 150, 0.48, !- X,Y Pair #6", - " 180, 0.60, !- X,Y Pair #7", - " 210, 0.48, !- X,Y Pair #8", - " 240, 0.04, !- X,Y Pair #9", - " 270, -0.56, !- X,Y Pair #10", - " 300, -0.56, !- X,Y Pair #11", - " 330, -0.42, !- X,Y Pair #12", - " 360, -0.37; !- X,Y Pair #13", - "SurfaceConvectionAlgorithm:Inside,TARP;", - "SurfaceConvectionAlgorithm:Outside,DOE-2;", - "HeatBalanceAlgorithm,ConductionTransferFunction;", - "ZoneAirHeatBalanceAlgorithm,", - " AnalyticalSolution; !- Algorithm" }); - ASSERT_TRUE( process_idf( idf_objects ) ); - - bool errors = false; - - // Set up some environmental parameters - DataEnvironment::OutBaroPress = 101325.0; - DataEnvironment::OutDryBulbTemp = 25.0; - DataEnvironment::WindDir = 105.0; - DataEnvironment::OutHumRat = 0.0; // Dry air only - DataEnvironment::SiteTempGradient = 0.0; // Disconnect z from testing - DataEnvironment::SiteWindExp = 0.0; // Disconnect variation by height - DataEnvironment::WindSpeed = 10.0; - - bool ErrorsFound = false; - // Read objects - SimulationManager::GetProjectData(); - HeatBalanceManager::GetProjectControlData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetZoneData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetWindowGlassSpectralData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetMaterialData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetConstructData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetHeatBalanceInput(); - HeatBalanceManager::AllocateHeatBalArrays(); - DataHVACGlobals::TimeStepSys = DataGlobals::TimeStepZone; - SurfaceGeometry::GetGeometryParameters( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - - // Magic to get surfaces read in correctly - DataHeatBalance::HeatTransferAlgosUsed.allocate( 1 ); - DataHeatBalance::HeatTransferAlgosUsed( 1 ) = OverallHeatTransferSolutionAlgo; - SurfaceGeometry::CosBldgRotAppGonly = 1.0; - SurfaceGeometry::SinBldgRotAppGonly = 0.0; - SurfaceGeometry::GetSurfaceData( errors ); // setup zone geometry and get zone data - EXPECT_FALSE( errors ); // expect no errors - - CurveManager::GetCurveInput(); - EXPECT_EQ( CurveManager::NumCurves, 2 ); - - DataGlobals::AnyLocalEnvironmentsInModel = true; - OutAirNodeManager::SetOutAirNodes(); - GetAirflowNetworkInput(); - InitAirflowNetwork(); - - // Check the airflow elements - EXPECT_EQ( 2u, DataAirflowNetwork::MultizoneExternalNodeData.size() ); - EXPECT_EQ( 3u, DataAirflowNetwork::MultizoneZoneData.size() ); - EXPECT_EQ( 4u, DataAirflowNetwork::MultizoneSurfaceData.size() ); - EXPECT_EQ( 1u, DataAirflowNetwork::MultizoneSurfaceCrackData.size() ); - EXPECT_EQ( 2u, DataAirflowNetwork::MultizoneSurfaceStdConditionsCrackData.size() ); - - EXPECT_EQ( 0.0, DataAirflowNetwork::MultizoneExternalNodeData( 1 ).azimuth ); - EXPECT_FALSE( DataAirflowNetwork::MultizoneExternalNodeData( 1 ).symmetricCurve ); - EXPECT_FALSE( DataAirflowNetwork::MultizoneExternalNodeData( 1 ).useRelativeAngle ); - EXPECT_EQ( 1, DataAirflowNetwork::MultizoneExternalNodeData( 1 ).curve ); - - EXPECT_EQ( 180.0, DataAirflowNetwork::MultizoneExternalNodeData( 2 ).azimuth ); - EXPECT_FALSE( DataAirflowNetwork::MultizoneExternalNodeData( 2 ).symmetricCurve ); - EXPECT_FALSE( DataAirflowNetwork::MultizoneExternalNodeData( 2 ).useRelativeAngle ); - EXPECT_EQ( 2, DataAirflowNetwork::MultizoneExternalNodeData( 2 ).curve ); - - // Make sure we can compute the right wind pressure - Node( 1 ).OutAirWindSpeed = 1.0; - Node( 1 ).OutAirDryBulb = 15.0; + "Material,", + " A1 - 1 IN STUCCO, !- Name", + " Smooth, !- Roughness", + " 2.5389841E-02, !- Thickness {m}", + " 0.6918309, !- Conductivity {W/m-K}", + " 1858.142, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.9200000, !- Solar Absorptance", + " 0.9200000; !- Visible Absorptance", + "Material,", + " C4 - 4 IN COMMON BRICK, !- Name", + " Rough, !- Roughness", + " 0.1014984, !- Thickness {m}", + " 0.7264224, !- Conductivity {W/m-K}", + " 1922.216, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7600000, !- Solar Absorptance", + " 0.7600000; !- Visible Absorptance", + "Material,", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Name", + " Smooth, !- Roughness", + " 1.905E-02, !- Thickness {m}", + " 0.7264224, !- Conductivity {W/m-K}", + " 1601.846, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.9200000, !- Solar Absorptance", + " 0.9200000; !- Visible Absorptance", + "Material,", + " C6 - 8 IN CLAY TILE, !- Name", + " Smooth, !- Roughness", + " 0.2033016, !- Thickness {m}", + " 0.5707605, !- Conductivity {W/m-K}", + " 1121.292, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.8200000, !- Solar Absorptance", + " 0.8200000; !- Visible Absorptance", + "Material,", + " C10 - 8 IN HW CONCRETE, !- Name", + " MediumRough, !- Roughness", + " 0.2033016, !- Thickness {m}", + " 1.729577, !- Conductivity {W/m-K}", + " 2242.585, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + "Material,", + " E2 - 1 / 2 IN SLAG OR STONE, !- Name", + " Rough, !- Roughness", + " 1.2710161E-02, !- Thickness {m}", + " 1.435549, !- Conductivity {W/m-K}", + " 881.0155, !- Density {kg/m3}", + " 1673.600, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.5500000, !- Solar Absorptance", + " 0.5500000; !- Visible Absorptance", + "Material,", + " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Name", + " Rough, !- Roughness", + " 9.5402403E-03, !- Thickness {m}", + " 0.1902535, !- Conductivity {W/m-K}", + " 1121.292, !- Density {kg/m3}", + " 1673.600, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + "Material,", + " B5 - 1 IN DENSE INSULATION, !- Name", + " VeryRough, !- Roughness", + " 2.5389841E-02, !- Thickness {m}", + " 4.3239430E-02, !- Conductivity {W/m-K}", + " 91.30524, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.5000000, !- Solar Absorptance", + " 0.5000000; !- Visible Absorptance", + "Material,", + " C12 - 2 IN HW CONCRETE, !- Name", + " MediumRough, !- Roughness", + " 5.0901599E-02, !- Thickness {m}", + " 1.729577, !- Conductivity {W/m-K}", + " 2242.585, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + "Material,", + " 1.375in-Solid-Core, !- Name", + " Smooth, !- Roughness", + " 3.4925E-02, !- Thickness {m}", + " 0.1525000, !- Conductivity {W/m-K}", + " 614.5000, !- Density {kg/m3}", + " 1630.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.9200000, !- Solar Absorptance", + " 0.9200000; !- Visible Absorptance", + "WindowMaterial:Glazing,", + " WIN-LAY-GLASS-LIGHT, !- Name", + " SpectralAverage, !- Optical Data Type", + " , !- Window Glass Spectral Data Set Name", + " 0.0025, !- Thickness {m}", + " 0.850, !- Solar Transmittance at Normal Incidence", + " 0.075, !- Front Side Solar Reflectance at Normal Incidence", + " 0.075, !- Back Side Solar Reflectance at Normal Incidence", + " 0.901, !- Visible Transmittance at Normal Incidence", + " 0.081, !- Front Side Visible Reflectance at Normal Incidence", + " 0.081, !- Back Side Visible Reflectance at Normal Incidence", + " 0.0, !- Infrared Transmittance at Normal Incidence", + " 0.84, !- Front Side Infrared Hemispherical Emissivity", + " 0.84, !- Back Side Infrared Hemispherical Emissivity", + " 0.9; !- Conductivity {W/m-K}", + "Construction,", + " DOOR-CON, !- Name", + " 1.375in-Solid-Core; !- Outside Layer", + "Construction,", + " EXTWALL80, !- Name", + " A1 - 1 IN STUCCO, !- Outside Layer", + " C4 - 4 IN COMMON BRICK, !- Layer 2", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", + "Construction,", + " PARTITION06, !- Name", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer", + " C6 - 8 IN CLAY TILE, !- Layer 2", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", + " Construction,", + " FLOOR SLAB 8 IN, !- Name", + " C10 - 8 IN HW CONCRETE; !- Outside Layer", + "Construction,", + " ROOF34, !- Name", + " E2 - 1 / 2 IN SLAG OR STONE, !- Outside Layer", + " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Layer 2", + " B5 - 1 IN DENSE INSULATION, !- Layer 3", + " C12 - 2 IN HW CONCRETE; !- Layer 4", + "Construction,", + " WIN-CON-LIGHT, !- Name", + " WIN-LAY-GLASS-LIGHT; !- Outside Layer", + "Zone,", + " WEST_ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate; !- Ceiling Height {m}", + "Zone,", + " EAST_ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate; !- Ceiling Height {m}", + "Zone,", + " NORTH_ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate; !- Ceiling Height {m}", + "GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " CounterClockWise, !- Vertex Entry Direction", + " World; !- Coordinate System", + "BuildingSurface:Detailed,", + " Surface_1, !- Name", + " WALL, !- Surface Type", + " EXTWALL80, !- Construction Name", + " WEST_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_2, !- Name", + " WALL, !- Surface Type", + " EXTWALL80, !- Construction Name", + " WEST_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_3, !- Name", + " WALL, !- Surface Type", + " PARTITION06, !- Construction Name", + " WEST_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_17, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_4, !- Name", + " WALL, !- Surface Type", + " PARTITION06, !- Construction Name", + " WEST_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_10, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_5, !- Name", + " FLOOR, !- Surface Type", + " FLOOR SLAB 8 IN, !- Construction Name", + " WEST_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_5, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,0, !- X,Y,Z ==> Vertex 1 {m}", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,0,0; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_6, !- Name", + " ROOF, !- Surface Type", + " ROOF34, !- Construction Name", + " WEST_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_8, !- Name", + " WALL, !- Surface Type", + " EXTWALL80, !- Construction Name", + " EAST_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_9, !- Name", + " WALL, !- Surface Type", + " EXTWALL80, !- Construction Name", + " EAST_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 12.19200,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_10, !- Name", + " WALL, !- Surface Type", + " PARTITION06, !- Construction Name", + " EAST_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_4, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096001,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_11, !- Name", + " WALL, !- Surface Type", + " PARTITION06, !- Construction Name", + " EAST_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_18, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_12, !- Name", + " FLOOR, !- Surface Type", + " FLOOR SLAB 8 IN, !- Construction Name", + " EAST_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_12, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,0,0; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_13, !- Name", + " ROOF, !- Surface Type", + " ROOF34, !- Construction Name", + " EAST_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_14, !- Name", + " WALL, !- Surface Type", + " EXTWALL80, !- Construction Name", + " NORTH_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_15, !- Name", + " WALL, !- Surface Type", + " EXTWALL80, !- Construction Name", + " NORTH_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 12.19200,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 12.19200,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_16, !- Name", + " WALL, !- Surface Type", + " EXTWALL80, !- Construction Name", + " NORTH_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_17, !- Name", + " WALL, !- Surface Type", + " PARTITION06, !- Construction Name", + " NORTH_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_3, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.000,6.096,3.048, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000,6.096,0.000, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096,6.096,0.000, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096,6.096,3.048; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_18, !- Name", + " WALL, !- Surface Type", + " PARTITION06, !- Construction Name", + " NORTH_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_11, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_19, !- Name", + " FLOOR, !- Surface Type", + " FLOOR SLAB 8 IN, !- Construction Name", + " NORTH_ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Surface_19, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 1 {m}", + " 0,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,6.096000,0; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " Surface_20, !- Name", + " ROOF, !- Surface Type", + " ROOF34, !- Construction Name", + " NORTH_ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + "AirflowNetwork:SimulationControl,", + " NaturalVentilation, !- Name", + " MultizoneWithoutDistribution, !- AirflowNetwork Control", + " INPUT, !- Wind Pressure Coefficient Type", + " ExternalNode, !- Height Selection for Local Wind Pressure Calculation", + " LOWRISE, !- Building Type", + " 500, !- Maximum Number of Iterations {dimensionless}", + " ZeroNodePressures, !- Initialization Type", + " 1.0E-05, !- Relative Airflow Convergence Tolerance {dimensionless}", + " 1.0E-06, !- Absolute Airflow Convergence Tolerance {kg/s}", + " -0.5, !- Convergence Acceleration Limit {dimensionless}", + " 0.0, !- Azimuth Angle of Long Axis of Building {deg}", + " 1.0; !- Ratio of Building Width Along Short Axis to Width Along Long Axis", + "AirflowNetwork:MultiZone:Zone,", + " WEST_ZONE, !- Zone Name", + " NoVent, !- Ventilation Control Mode", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " 0.3, !- Minimum Venting Open Factor {dimensionless}", + " 5.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", + " 10.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", + " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", + " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", + "AirflowNetwork:MultiZone:Zone,", + " EAST_ZONE, !- Zone Name", + " NoVent, !- Ventilation Control Mode", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " 1.0, !- Minimum Venting Open Factor {dimensionless}", + " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", + " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", + " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", + " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", + "AirflowNetwork:MultiZone:Zone,", + " NORTH_ZONE, !- Zone Name", + " NoVent, !- Ventilation Control Mode", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " 1.0, !- Minimum Venting Open Factor {dimensionless}", + " 0.0, !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", + " 100.0, !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", + " 0.0, !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", + " 300000.0; !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", + "AirflowNetwork:MultiZone:Surface,", + " Surface_1, !- Surface Name", + " CR-1, !- Leakage Component Name", + " SFacade, !- External Node Name", + " 1.0; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + "AirflowNetwork:MultiZone:Surface,", + " Surface_4, !- Surface Name", + " CR-1, !- Leakage Component Name", + " , !- External Node Name", + " 1.0; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + "AirflowNetwork:MultiZone:Surface,", + " Surface_11, !- Surface Name", + " CR-1, !- Leakage Component Name", + " , !- External Node Name", + " 1.0; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + "AirflowNetwork:MultiZone:Surface,", + " Surface_15, !- Surface Name", + " CR-1, !- Leakage Component Name", + " NFacade, !- External Node Name", + " 1.0; !- Window / Door Opening Factor, or Crack Factor{ dimensionless }", + "AirflowNetwork:MultiZone:ExternalNode,", + " NFacade, !- Name", + " 1.524, !- External Node Height{ m }", + " NFacade_WPCCurve; !- Wind Pressure Coefficient Values Object Name", + "OutdoorAir:Node,", + " SFacade, !- Name", + " , !- Height Above Ground", + " , !- Drybulb Temperature Schedule Name", + " , !- Wetbulb Temperature Schedule Name", + " , !- Wind Speed Schedule Name", + " , !- Wind Direction Schedule Name", + " SFacade_WPCCurve, !- Wind Pressure Coefficient Values Object Name", + " No, !- Symmetric Wind Pressure Coefficient Curve", + " Absolute; !- Wind Angle Type", + "AirflowNetwork:MultiZone:ReferenceCrackConditions,", + " ReferenceCrackConditions,!- Name", + " 20.0, !- Reference Temperature{ C }", + " 101320, !- Reference Barometric Pressure{ Pa }", + " 0.005; !- Reference Humidity Ratio{ kgWater / kgDryAir }", + "AirflowNetwork:MultiZone:Surface:Crack,", + " CR-1, !- Name", + " 0.01, !- Air Mass Flow Coefficient at Reference Conditions{ kg / s }", + " 0.667, !- Air Mass Flow Exponent{ dimensionless }", + " ReferenceCrackConditions;!- Reference Crack Conditions", + "Table:OneIndependentVariable,", + " NFacade_WPCCurve, !- Name", + " Linear, !- Curve Type", + " LinearInterpolationOfTable, !- Interpolation Method", + " 0, !- Minimum Value of X", + " 360, !- Maximum Value of X", + " -1, !- Minimum Table Output", + " 1, !- Maximum Table Output", + " Dimensionless, !- Input Unit Type for X", + " Dimensionless, !- Output Unit Type", + " 1, !- Normalization Reference", + " 0, 0.60, !- X,Y Pair #1", + " 30, 0.48, !- X,Y Pair #2", + " 60, 0.04, !- X,Y Pair #3", + " 90, -0.56, !- X,Y Pair #4", + " 120, -0.56, !- X,Y Pair #5", + " 150, -0.42, !- X,Y Pair #6", + " 180, -0.37, !- X,Y Pair #7", + " 210, -0.42, !- X,Y Pair #8", + " 240, -0.56, !- X,Y Pair #9", + " 270, -0.56, !- X,Y Pair #10", + " 300, 0.04, !- X,Y Pair #11", + " 330, 0.48, !- X,Y Pair #12", + " 360, 0.60; !- X,Y Pair #13", + "Table:OneIndependentVariable,", + " SFacade_WPCCurve, !- Name", + " Linear, !- Curve Type", + " LinearInterpolationOfTable, !- Interpolation Method", + " 0, !- Minimum Value of X", + " 360, !- Maximum Value of X", + " -1, !- Minimum Table Output", + " 1, !- Maximum Table Output", + " Dimensionless, !- Input Unit Type for X", + " Dimensionless, !- Output Unit Type", + " 1, !- Normalization Reference", + " 0, -0.37, !- X,Y Pair #1", + " 30, -0.42, !- X,Y Pair #2", + " 60, -0.56, !- X,Y Pair #3", + " 90, -0.56, !- X,Y Pair #4", + " 120, 0.04, !- X,Y Pair #5", + " 150, 0.48, !- X,Y Pair #6", + " 180, 0.60, !- X,Y Pair #7", + " 210, 0.48, !- X,Y Pair #8", + " 240, 0.04, !- X,Y Pair #9", + " 270, -0.56, !- X,Y Pair #10", + " 300, -0.56, !- X,Y Pair #11", + " 330, -0.42, !- X,Y Pair #12", + " 360, -0.37; !- X,Y Pair #13", + "SurfaceConvectionAlgorithm:Inside,TARP;", + "SurfaceConvectionAlgorithm:Outside,DOE-2;", + "HeatBalanceAlgorithm,ConductionTransferFunction;", + "ZoneAirHeatBalanceAlgorithm,", + " AnalyticalSolution; !- Algorithm"}); + ASSERT_TRUE(process_idf(idf_objects)); + + bool errors = false; + + // Set up some environmental parameters + DataEnvironment::OutBaroPress = 101325.0; + DataEnvironment::OutDryBulbTemp = 25.0; + DataEnvironment::WindDir = 105.0; + DataEnvironment::OutHumRat = 0.0; // Dry air only + DataEnvironment::SiteTempGradient = 0.0; // Disconnect z from testing + DataEnvironment::SiteWindExp = 0.0; // Disconnect variation by height + DataEnvironment::WindSpeed = 10.0; + + bool ErrorsFound = false; + // Read objects + SimulationManager::GetProjectData(); + HeatBalanceManager::GetProjectControlData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetZoneData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetWindowGlassSpectralData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetMaterialData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetConstructData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetHeatBalanceInput(); + HeatBalanceManager::AllocateHeatBalArrays(); + DataHVACGlobals::TimeStepSys = DataGlobals::TimeStepZone; + SurfaceGeometry::GetGeometryParameters(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + + // Magic to get surfaces read in correctly + DataHeatBalance::HeatTransferAlgosUsed.allocate(1); + DataHeatBalance::HeatTransferAlgosUsed(1) = OverallHeatTransferSolutionAlgo; + SurfaceGeometry::CosBldgRotAppGonly = 1.0; + SurfaceGeometry::SinBldgRotAppGonly = 0.0; + SurfaceGeometry::GetSurfaceData(errors); // setup zone geometry and get zone data + EXPECT_FALSE(errors); // expect no errors + + CurveManager::GetCurveInput(); + EXPECT_EQ(CurveManager::NumCurves, 2); + + DataGlobals::AnyLocalEnvironmentsInModel = true; + OutAirNodeManager::SetOutAirNodes(); + GetAirflowNetworkInput(); + InitAirflowNetwork(); + + // Check the airflow elements + EXPECT_EQ(2u, DataAirflowNetwork::MultizoneExternalNodeData.size()); + EXPECT_EQ(3u, DataAirflowNetwork::MultizoneZoneData.size()); + EXPECT_EQ(4u, DataAirflowNetwork::MultizoneSurfaceData.size()); + EXPECT_EQ(1u, DataAirflowNetwork::MultizoneSurfaceCrackData.size()); + EXPECT_EQ(2u, DataAirflowNetwork::MultizoneSurfaceStdConditionsCrackData.size()); + + EXPECT_EQ(0.0, DataAirflowNetwork::MultizoneExternalNodeData(1).azimuth); + EXPECT_FALSE(DataAirflowNetwork::MultizoneExternalNodeData(1).symmetricCurve); + EXPECT_FALSE(DataAirflowNetwork::MultizoneExternalNodeData(1).useRelativeAngle); + EXPECT_EQ(1, DataAirflowNetwork::MultizoneExternalNodeData(1).curve); + + EXPECT_EQ(180.0, DataAirflowNetwork::MultizoneExternalNodeData(2).azimuth); + EXPECT_FALSE(DataAirflowNetwork::MultizoneExternalNodeData(2).symmetricCurve); + EXPECT_FALSE(DataAirflowNetwork::MultizoneExternalNodeData(2).useRelativeAngle); + EXPECT_EQ(2, DataAirflowNetwork::MultizoneExternalNodeData(2).curve); + + // Make sure we can compute the right wind pressure + Node(1).OutAirWindSpeed = 1.0; + Node(1).OutAirDryBulb = 15.0; Real64 rho_1 = Psychrometrics::PsyRhoAirFnPbTdbW(DataEnvironment::OutBaroPress, DataLoopNode::Node(1).OutAirDryBulb, DataLoopNode::Node(1).HumRat); Real64 rho_2 = Psychrometrics::PsyRhoAirFnPbTdbW(DataEnvironment::OutBaroPress, DataEnvironment::OutDryBulbTemp, DataEnvironment::OutHumRat); - EXPECT_DOUBLE_EQ( 1.2252059842834473, rho_1 ); - EXPECT_DOUBLE_EQ( 1.1841123742118911, rho_2 ); + EXPECT_DOUBLE_EQ(1.2252059842834473, rho_1); + EXPECT_DOUBLE_EQ(1.1841123742118911, rho_2); Real64 p = AirflowNetworkBalanceManager::CalcWindPressure(DataAirflowNetwork::MultizoneExternalNodeData(1).curve, false, false, 0.0, DataLoopNode::Node(1).OutAirWindSpeed, DataLoopNode::Node(1).OutAirWindDir, DataLoopNode::Node(1).OutAirDryBulb, DataLoopNode::Node(1).HumRat); - EXPECT_DOUBLE_EQ( -0.56*0.5*1.2252059842834473, p ); + EXPECT_DOUBLE_EQ(-0.56 * 0.5 * 1.2252059842834473, p); - // Run the balance routine, for now only to get the pressure set at the external nodes + // Run the balance routine, for now only to get the pressure set at the external nodes - AirflowNetworkBalanceManager::CalcAirflowNetworkAirBalance(); - // Make sure we set the right temperature - EXPECT_DOUBLE_EQ( 25.0, DataAirflowNetwork::AirflowNetworkNodeSimu( 4 ).TZ ); - EXPECT_DOUBLE_EQ( 15.0, DataAirflowNetwork::AirflowNetworkNodeSimu( 5 ).TZ ); - EXPECT_DOUBLE_EQ( 4.7384645696854548, DataEnvironment::WindSpeedAt( 1.524 ) ); - // Global wind speed 10 m/s, temp 25 C; Local wind speed 1 m/s, temp 15 C; - EXPECT_DOUBLE_EQ( -0.56 * 0.5 * rho_2 * 4.7384645696854548 * 4.7384645696854548, DataAirflowNetwork::AirflowNetworkNodeSimu( 4 ).PZ ); - EXPECT_DOUBLE_EQ( -0.26 * 0.5 * rho_1, DataAirflowNetwork::AirflowNetworkNodeSimu( 5 ).PZ ); - } + AirflowNetworkBalanceManager::CalcAirflowNetworkAirBalance(); + // Make sure we set the right temperature + EXPECT_DOUBLE_EQ(25.0, DataAirflowNetwork::AirflowNetworkNodeSimu(4).TZ); + EXPECT_DOUBLE_EQ(15.0, DataAirflowNetwork::AirflowNetworkNodeSimu(5).TZ); + EXPECT_DOUBLE_EQ(4.7384645696854548, DataEnvironment::WindSpeedAt(1.524)); + // Global wind speed 10 m/s, temp 25 C; Local wind speed 1 m/s, temp 15 C; + EXPECT_DOUBLE_EQ(-0.56 * 0.5 * rho_2 * 4.7384645696854548 * 4.7384645696854548, DataAirflowNetwork::AirflowNetworkNodeSimu(4).PZ); + EXPECT_DOUBLE_EQ(-0.26 * 0.5 * rho_1, DataAirflowNetwork::AirflowNetworkNodeSimu(5).PZ); +} TEST_F(EnergyPlusFixture, BasicAdvancedSingleSided) { std::string const idf_objects = delimited_string( {"Version,8.9;", - "SimulationControl,", - " No, !- Do Zone Sizing Calculation", - " No, !- Do System Sizing Calculation", - " No, !- Do Plant Sizing Calculation", - " No, !- Run Simulation for Sizing Periods", - " Yes; !- Run Simulation for Weather File Run Periods", - "Building,", - " Single Sided Demo Building, !- Name", - " 0.0, !- North Axis {deg}", - " Suburbs, !- Terrain", - " 0.04, !- Loads Convergence Tolerance Value", - " 0.4, !- Temperature Convergence Tolerance Value {deltaC}", - " FullInteriorAndExterior, !- Solar Distribution", - " 25, !- Maximum Number of Warmup Days", - " ; !- Minimum Number of Warmup Days", - "Timestep,4;", - "Site:Location,", - " San Francisco Intl Ap_CA_USA Design_Conditions, !- Name", - " 37.62, !- Latitude {deg}", - " -122.40, !- Longitude {deg}", - " -8.00, !- Time Zone {hr}", - " 2.00; !- Elevation {m}", - "Site:GroundTemperature:BuildingSurface,19.905,19.922,19.910,19.932,19.949,20.038,20.327,20.062,20.443,20.088,19.986,19.948;", - "RunPeriod,", - " RunPeriod1, !- Name", - " 1, !- Begin Month", - " 1, !- Begin Day of Month", - " , !- Begin Year", - " 12, !- End Month", - " 31, !- End Day of Month", - " , !- End Year", - " Sunday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " Yes; !- Use Weather File Snow Indicators", - "Material,", - " F08 Metal surface, !- Name", - " Smooth, !- Roughness", - " 0.0008, !- Thickness {m}", - " 45.28, !- Conductivity {W/m-K}", - " 7824, !- Density {kg/m3}", - " 500; !- Specific Heat {J/kg-K}", - "Material,", - " I01 25mm insulation board, !- Name", - " MediumRough, !- Roughness", - " 0.0254, !- Thickness {m}", - " 0.03, !- Conductivity {W/m-K}", - " 43, !- Density {kg/m3}", - " 1210; !- Specific Heat {J/kg-K}", - "Material,", - " I02 50mm insulation board, !- Name", - " MediumRough, !- Roughness", - " 0.0508, !- Thickness {m}", - " 0.03, !- Conductivity {W/m-K}", - " 43, !- Density {kg/m3}", - " 1210; !- Specific Heat {J/kg-K}", - "Material,", - " G01a 19mm gypsum board, !- Name", - " MediumSmooth, !- Roughness", - " 0.019, !- Thickness {m}", - " 0.16, !- Conductivity {W/m-K}", - " 800, !- Density {kg/m3}", - " 1090; !- Specific Heat {J/kg-K}", - "Material,", - " M11 100mm lightweight concrete, !- Name", - " MediumRough, !- Roughness", - " 0.1016, !- Thickness {m}", - " 0.53, !- Conductivity {W/m-K}", - " 1280, !- Density {kg/m3}", - " 840; !- Specific Heat {J/kg-K}", - "Material,", - " F16 Acoustic tile, !- Name", - " MediumSmooth, !- Roughness", - " 0.0191, !- Thickness {m}", - " 0.06, !- Conductivity {W/m-K}", - " 368, !- Density {kg/m3}", - " 590; !- Specific Heat {J/kg-K}", - "Material,", - " M01 100mm brick, !- Name", - " MediumRough, !- Roughness", - " 0.1016, !- Thickness {m}", - " 0.89, !- Conductivity {W/m-K}", - " 1920, !- Density {kg/m3}", - " 790; !- Specific Heat {J/kg-K}", - "Material,", - " M15 200mm heavyweight concrete, !- Name", - " MediumRough, !- Roughness", - " 0.2032, !- Thickness {m}", - " 1.95, !- Conductivity {W/m-K}", - " 2240, !- Density {kg/m3}", - " 900; !- Specific Heat {J/kg-K}", - "Material,", - " M05 200mm concrete block,!- Name", - " MediumRough, !- Roughness", - " 0.2032, !- Thickness {m}", - " 1.11, !- Conductivity {W/m-K}", - " 800, !- Density {kg/m3}", - " 920; !- Specific Heat {J/kg-K}", - "Material,", - " G05 25mm wood, !- Name", - " MediumSmooth, !- Roughness", - " 0.0254, !- Thickness {m}", - " 0.15, !- Conductivity {W/m-K}", - " 608, !- Density {kg/m3}", - " 1630; !- Specific Heat {J/kg-K}", - "Material:AirGap,", - " F04 Wall air space resistance, !- Name", - " 0.15; !- Thermal Resistance {m2-K/W}", - "Material:AirGap,", - " F05 Ceiling air space resistance, !- Name", - " 0.18; !- Thermal Resistance {m2-K/W}", - "WindowMaterial:Glazing,", - " Clear 3mm, !- Name", - " SpectralAverage, !- Optical Data Type", - " , !- Window Glass Spectral Data Set Name", - " 0.003, !- Thickness {m}", - " 0.837, !- Solar Transmittance at Normal Incidence", - " 0.075, !- Front Side Solar Reflectance at Normal Incidence", - " 0.075, !- Back Side Solar Reflectance at Normal Incidence", - " 0.898, !- Visible Transmittance at Normal Incidence", - " 0.081, !- Front Side Visible Reflectance at Normal Incidence", - " 0.081, !- Back Side Visible Reflectance at Normal Incidence", - " 0, !- Infrared Transmittance at Normal Incidence", - " 0.84, !- Front Side Infrared Hemispherical Emissivity", - " 0.84, !- Back Side Infrared Hemispherical Emissivity", - " 0.9; !- Conductivity {W/m-K}", - "WindowMaterial:Gas,", - " Air 13mm, !- Name", - " Air, !- Gas Type", - " 0.0127; !- Thickness {m}", - "Construction,", - " Exterior Floor, !- Name", - " I02 50mm insulation board, !- Outside Layer", - " M15 200mm heavyweight concrete; !- Layer 2", - "Construction,", - " Exterior Wall, !- Name", - " M01 100mm brick, !- Outside Layer", - " M15 200mm heavyweight concrete, !- Layer 2", - " I02 50mm insulation board, !- Layer 3", - " F04 Wall air space resistance, !- Layer 4", - " G01a 19mm gypsum board; !- Layer 5", - "Construction,", - " Interior Wall, !- Name", - " G01a 19mm gypsum board, !- Outside Layer", - " F04 Wall air space resistance, !- Layer 2", - " G01a 19mm gypsum board; !- Layer 3", - "Construction,", - " Exterior Roof, !- Name", - " M11 100mm lightweight concrete, !- Outside Layer", - " F05 Ceiling air space resistance, !- Layer 2", - " F16 Acoustic tile; !- Layer 3", - "Construction,", - " Exterior Window, !- Name", - " Clear 3mm, !- Outside Layer", - " Air 13mm, !- Layer 2", - " Clear 3mm; !- Layer 3", - "GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " Counterclockwise, !- Vertex Entry Direction", - " World; !- Coordinate System", - "Zone,", - " West_Zone, !- Name", - " 0.0, !- Direction of Relative North {deg}", - " 0.0, !- X Origin {m}", - " 0.0, !- Y Origin {m}", - " 0.0, !- Z Origin {m}", - " , !- Type", - " 1; !- Multiplier", - "BuildingSurface:Detailed,", - " West_Zone_Floor, !- Name", - " Floor, !- Surface Type", - " Exterior Floor, !- Construction Name", - " West_Zone, !- Zone Name", - " Ground, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000000000,12.192000000000,0.000000000000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000000000,0.000000000000,0.000000000000, !- X,Y,Z ==> Vertex 2 {m}", - " 0.000000000000,0.000000000000,0.000000000000, !- X,Y,Z ==> Vertex 3 {m}", - " 0.000000000000,12.192000000000,0.000000000000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " West_Zone_West_Wall, !- Name", - " Wall, !- Surface Type", - " Exterior Wall, !- Construction Name", - " West_Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " , !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.000000000000,12.192000000000,3.048000000000, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000000000,12.192000000000,0.000000000000, !- X,Y,Z ==> Vertex 2 {m}", - " 0.000000000000,0.000000000000,0.000000000000, !- X,Y,Z ==> Vertex 3 {m}", - " 0.000000000000,0.000000000000,3.048000000000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " West_Zone_South_Wall, !- Name", - " Wall, !- Surface Type", - " Exterior Wall, !- Construction Name", - " West_Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " , !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.000000000000,0.000000000000,3.048000000000, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000000000,0.000000000000,0.000000000000, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000000000,0.000000000000,0.000000000000, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000000000,0.000000000000,3.048000000000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " West_Zone_North_Wall, !- Name", - " Wall, !- Surface Type", - " Exterior Wall, !- Construction Name", - " West_Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " , !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000000000,12.192000000000,3.048000000000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000000000,12.192000000000,0.000000000000, !- X,Y,Z ==> Vertex 2 {m}", - " 0.000000000000,12.192000000000,0.000000000000, !- X,Y,Z ==> Vertex 3 {m}", - " 0.000000000000,12.192000000000,3.048000000000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " West_Zone_Roof, !- Name", - " Roof, !- Surface Type", - " Exterior Roof, !- Construction Name", - " West_Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " , !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.000000000000,12.192000000000,3.048000000000, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000000000,0.000000000000,3.048000000000, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000000000,0.000000000000,3.048000000000, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000000000,12.192000000000,3.048000000000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " West_Zone_East_Wall_S, !- Name", - " Wall, !- Surface Type", - " Exterior Wall, !- Construction Name", - " West_Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " , !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000000000,0.000000000000,3.048000000000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000000000,0.000000000000,0.000000000000, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000000000,6.096000000000,0.000000000000, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000000000,6.096000000000,3.048000000000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed,", - " West_Zone_East_Wall_N, !- Name", - " Wall, !- Surface Type", - " Exterior Wall, !- Construction Name", - " West_Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " , !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000000000,6.096000000000,3.048000000000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000000000,6.096000000000,0.000000000000, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000000000,12.192000000000,0.000000000000, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000000000,12.192000000000,3.048000000000; !- X,Y,Z ==> Vertex 4 {m}", - "FenestrationSurface:Detailed,", - " West_Zone_West_Wall_Left_Window, !- Name", - " Window, !- Surface Type", - " Exterior Window, !- Construction Name", - " West_Zone_West_Wall, !- Building Surface Name", - " , !- Outside Boundary Condition Object", - " , !- View Factor to Ground", - " , !- Shading Control Name", - " , !- Frame and Divider Name", - " , !- Multiplier", - " 4, !- Number of Vertices", - " 0.000000000000,10.668000000000,2.286000000000, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000000000,10.668000000000,0.762000000000, !- X,Y,Z ==> Vertex 2 {m}", - " 0.000000000000,9.144000000000,0.762000000000, !- X,Y,Z ==> Vertex 3 {m}", - " 0.000000000000,9.144000000000,2.286000000000; !- X,Y,Z ==> Vertex 4 {m}", - "FenestrationSurface:Detailed,", - " West_Zone_West_Wall_Right_Window, !- Name", - " Window, !- Surface Type", - " Exterior Window, !- Construction Name", - " West_Zone_West_Wall, !- Building Surface Name", - " , !- Outside Boundary Condition Object", - " , !- View Factor to Ground", - " , !- Shading Control Name", - " , !- Frame and Divider Name", - " , !- Multiplier", - " 4, !- Number of Vertices", - " 0.000000000000,3.048000000000,2.286000000000, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000000000,3.048000000000,0.762000000000, !- X,Y,Z ==> Vertex 2 {m}", - " 0.000000000000,1.524000000000,0.762000000000, !- X,Y,Z ==> Vertex 3 {m}", - " 0.000000000000,1.524000000000,2.286000000000; !- X,Y,Z ==> Vertex 4 {m}", - "AirflowNetwork:SimulationControl,", - " AFN_SimulationControl_1, !- Name", - " MultizoneWithoutDistribution, !- AirflowNetwork Control", - " SurfaceAverageCalculation, !- Wind Pressure Coefficient Type", - " OpeningHeight, !- Height Selection for Local Wind Pressure Calculation", - " LowRise, !- Building Type", - " 500, !- Maximum Number of Iterations {dimensionless}", - " ZeroNodePressures, !- Initialization Type", - " 1.0E-05, !- Relative Airflow Convergence Tolerance {dimensionless}", - " 1.0E-06, !- Absolute Airflow Convergence Tolerance {kg/s}", - " -0.5, !- Convergence Acceleration Limit {dimensionless}", - " 90, !- Azimuth Angle of Long Axis of Building {deg}", - " 0.4; !- Ratio of Building Width Along Short Axis to Width Along Long Axis", - "AirflowNetwork:MultiZone:Zone,", - " West_Zone, !- Zone Name", - " Constant, !- Ventilation Control Mode", - " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", - " , !- Minimum Venting Open Factor {dimensionless}", - " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", - " , !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", - " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", - " , !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", - " , !- Venting Availability Schedule Name", - " Advanced, !- Single Sided Wind Pressure Coefficient Algorithm", - " 12.19; !- Facade Width {m}", - "AirflowNetwork:MultiZone:Surface,", - " West_Zone_West_Wall_Right_Window, !- Surface Name", - " SliderWindow, !- Leakage Component Name", - " , !- External Node Name", - " 1; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - "AirflowNetwork:MultiZone:Surface,", - " West_Zone_West_Wall_Left_Window, !- Surface Name", - " SliderWindow, !- Leakage Component Name", - " , !- External Node Name", - " 1; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - "", - "AirflowNetwork:MultiZone:Surface,", - " West_Zone_West_Wall, !- Surface Name", - " WallCrack, !- Leakage Component Name", - " , !- External Node Name", - " 1; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", - "AirflowNetwork:MultiZone:Component:DetailedOpening,", - " SliderWindow, !- Name", - " 0.001, !- Air Mass Flow Coefficient When Opening is Closed {kg/s-m}", - " 0.667, !- Air Mass Flow Exponent When Opening is Closed {dimensionless}", - " NonPivoted, !- Type of Rectangular Large Vertical Opening (LVO)", - " 0.0, !- Extra Crack Length or Height of Pivoting Axis {m}", - " 2, !- Number of Sets of Opening Factor Data", - " 0.0, !- Opening Factor 1 {dimensionless}", - " 0.61, !- Discharge Coefficient for Opening Factor 1 {dimensionless}", - " 0.0, !- Width Factor for Opening Factor 1 {dimensionless}", - " 1.0, !- Height Factor for Opening Factor 1 {dimensionless}", - " 0.0, !- Start Height Factor for Opening Factor 1 {dimensionless}", - " 1.0, !- Opening Factor 2 {dimensionless}", - " 0.61, !- Discharge Coefficient for Opening Factor 2 {dimensionless}", - " 0.5, !- Width Factor for Opening Factor 2 {dimensionless}", - " 1.0, !- Height Factor for Opening Factor 2 {dimensionless}", - " 0.0; !- Start Height Factor for Opening Factor 2 {dimensionless}", - "AirflowNetwork:MultiZone:Surface:Crack,", - " WallCrack, !- Name", - " 0.01, !- Air Mass Flow Coefficient at Reference Conditions {kg/s}", - " 0.667; !- Air Mass Flow Exponent {dimensionless}", - "AirflowNetwork:MultiZone:ReferenceCrackConditions,", - " ReferenceCrackConditions,!- Name", - " 20.0, !- Reference Temperature {C}", - " 101320, !- Reference Barometric Pressure {Pa}", - " 0.005; !- Reference Humidity Ratio {kgWater/kgDryAir}" }); + "SimulationControl,", + " No, !- Do Zone Sizing Calculation", + " No, !- Do System Sizing Calculation", + " No, !- Do Plant Sizing Calculation", + " No, !- Run Simulation for Sizing Periods", + " Yes; !- Run Simulation for Weather File Run Periods", + "Building,", + " Single Sided Demo Building, !- Name", + " 0.0, !- North Axis {deg}", + " Suburbs, !- Terrain", + " 0.04, !- Loads Convergence Tolerance Value", + " 0.4, !- Temperature Convergence Tolerance Value {deltaC}", + " FullInteriorAndExterior, !- Solar Distribution", + " 25, !- Maximum Number of Warmup Days", + " ; !- Minimum Number of Warmup Days", + "Timestep,4;", + "Site:Location,", + " San Francisco Intl Ap_CA_USA Design_Conditions, !- Name", + " 37.62, !- Latitude {deg}", + " -122.40, !- Longitude {deg}", + " -8.00, !- Time Zone {hr}", + " 2.00; !- Elevation {m}", + "Site:GroundTemperature:BuildingSurface,19.905,19.922,19.910,19.932,19.949,20.038,20.327,20.062,20.443,20.088,19.986,19.948;", + "RunPeriod,", + " RunPeriod1, !- Name", + " 1, !- Begin Month", + " 1, !- Begin Day of Month", + " , !- Begin Year", + " 12, !- End Month", + " 31, !- End Day of Month", + " , !- End Year", + " Sunday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " Yes; !- Use Weather File Snow Indicators", + "Material,", + " F08 Metal surface, !- Name", + " Smooth, !- Roughness", + " 0.0008, !- Thickness {m}", + " 45.28, !- Conductivity {W/m-K}", + " 7824, !- Density {kg/m3}", + " 500; !- Specific Heat {J/kg-K}", + "Material,", + " I01 25mm insulation board, !- Name", + " MediumRough, !- Roughness", + " 0.0254, !- Thickness {m}", + " 0.03, !- Conductivity {W/m-K}", + " 43, !- Density {kg/m3}", + " 1210; !- Specific Heat {J/kg-K}", + "Material,", + " I02 50mm insulation board, !- Name", + " MediumRough, !- Roughness", + " 0.0508, !- Thickness {m}", + " 0.03, !- Conductivity {W/m-K}", + " 43, !- Density {kg/m3}", + " 1210; !- Specific Heat {J/kg-K}", + "Material,", + " G01a 19mm gypsum board, !- Name", + " MediumSmooth, !- Roughness", + " 0.019, !- Thickness {m}", + " 0.16, !- Conductivity {W/m-K}", + " 800, !- Density {kg/m3}", + " 1090; !- Specific Heat {J/kg-K}", + "Material,", + " M11 100mm lightweight concrete, !- Name", + " MediumRough, !- Roughness", + " 0.1016, !- Thickness {m}", + " 0.53, !- Conductivity {W/m-K}", + " 1280, !- Density {kg/m3}", + " 840; !- Specific Heat {J/kg-K}", + "Material,", + " F16 Acoustic tile, !- Name", + " MediumSmooth, !- Roughness", + " 0.0191, !- Thickness {m}", + " 0.06, !- Conductivity {W/m-K}", + " 368, !- Density {kg/m3}", + " 590; !- Specific Heat {J/kg-K}", + "Material,", + " M01 100mm brick, !- Name", + " MediumRough, !- Roughness", + " 0.1016, !- Thickness {m}", + " 0.89, !- Conductivity {W/m-K}", + " 1920, !- Density {kg/m3}", + " 790; !- Specific Heat {J/kg-K}", + "Material,", + " M15 200mm heavyweight concrete, !- Name", + " MediumRough, !- Roughness", + " 0.2032, !- Thickness {m}", + " 1.95, !- Conductivity {W/m-K}", + " 2240, !- Density {kg/m3}", + " 900; !- Specific Heat {J/kg-K}", + "Material,", + " M05 200mm concrete block,!- Name", + " MediumRough, !- Roughness", + " 0.2032, !- Thickness {m}", + " 1.11, !- Conductivity {W/m-K}", + " 800, !- Density {kg/m3}", + " 920; !- Specific Heat {J/kg-K}", + "Material,", + " G05 25mm wood, !- Name", + " MediumSmooth, !- Roughness", + " 0.0254, !- Thickness {m}", + " 0.15, !- Conductivity {W/m-K}", + " 608, !- Density {kg/m3}", + " 1630; !- Specific Heat {J/kg-K}", + "Material:AirGap,", + " F04 Wall air space resistance, !- Name", + " 0.15; !- Thermal Resistance {m2-K/W}", + "Material:AirGap,", + " F05 Ceiling air space resistance, !- Name", + " 0.18; !- Thermal Resistance {m2-K/W}", + "WindowMaterial:Glazing,", + " Clear 3mm, !- Name", + " SpectralAverage, !- Optical Data Type", + " , !- Window Glass Spectral Data Set Name", + " 0.003, !- Thickness {m}", + " 0.837, !- Solar Transmittance at Normal Incidence", + " 0.075, !- Front Side Solar Reflectance at Normal Incidence", + " 0.075, !- Back Side Solar Reflectance at Normal Incidence", + " 0.898, !- Visible Transmittance at Normal Incidence", + " 0.081, !- Front Side Visible Reflectance at Normal Incidence", + " 0.081, !- Back Side Visible Reflectance at Normal Incidence", + " 0, !- Infrared Transmittance at Normal Incidence", + " 0.84, !- Front Side Infrared Hemispherical Emissivity", + " 0.84, !- Back Side Infrared Hemispherical Emissivity", + " 0.9; !- Conductivity {W/m-K}", + "WindowMaterial:Gas,", + " Air 13mm, !- Name", + " Air, !- Gas Type", + " 0.0127; !- Thickness {m}", + "Construction,", + " Exterior Floor, !- Name", + " I02 50mm insulation board, !- Outside Layer", + " M15 200mm heavyweight concrete; !- Layer 2", + "Construction,", + " Exterior Wall, !- Name", + " M01 100mm brick, !- Outside Layer", + " M15 200mm heavyweight concrete, !- Layer 2", + " I02 50mm insulation board, !- Layer 3", + " F04 Wall air space resistance, !- Layer 4", + " G01a 19mm gypsum board; !- Layer 5", + "Construction,", + " Interior Wall, !- Name", + " G01a 19mm gypsum board, !- Outside Layer", + " F04 Wall air space resistance, !- Layer 2", + " G01a 19mm gypsum board; !- Layer 3", + "Construction,", + " Exterior Roof, !- Name", + " M11 100mm lightweight concrete, !- Outside Layer", + " F05 Ceiling air space resistance, !- Layer 2", + " F16 Acoustic tile; !- Layer 3", + "Construction,", + " Exterior Window, !- Name", + " Clear 3mm, !- Outside Layer", + " Air 13mm, !- Layer 2", + " Clear 3mm; !- Layer 3", + "GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " Counterclockwise, !- Vertex Entry Direction", + " World; !- Coordinate System", + "Zone,", + " West_Zone, !- Name", + " 0.0, !- Direction of Relative North {deg}", + " 0.0, !- X Origin {m}", + " 0.0, !- Y Origin {m}", + " 0.0, !- Z Origin {m}", + " , !- Type", + " 1; !- Multiplier", + "BuildingSurface:Detailed,", + " West_Zone_Floor, !- Name", + " Floor, !- Surface Type", + " Exterior Floor, !- Construction Name", + " West_Zone, !- Zone Name", + " Ground, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000000000,12.192000000000,0.000000000000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000000000,0.000000000000,0.000000000000, !- X,Y,Z ==> Vertex 2 {m}", + " 0.000000000000,0.000000000000,0.000000000000, !- X,Y,Z ==> Vertex 3 {m}", + " 0.000000000000,12.192000000000,0.000000000000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " West_Zone_West_Wall, !- Name", + " Wall, !- Surface Type", + " Exterior Wall, !- Construction Name", + " West_Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " , !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.000000000000,12.192000000000,3.048000000000, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000000000,12.192000000000,0.000000000000, !- X,Y,Z ==> Vertex 2 {m}", + " 0.000000000000,0.000000000000,0.000000000000, !- X,Y,Z ==> Vertex 3 {m}", + " 0.000000000000,0.000000000000,3.048000000000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " West_Zone_South_Wall, !- Name", + " Wall, !- Surface Type", + " Exterior Wall, !- Construction Name", + " West_Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " , !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.000000000000,0.000000000000,3.048000000000, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000000000,0.000000000000,0.000000000000, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000000000,0.000000000000,0.000000000000, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000000000,0.000000000000,3.048000000000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " West_Zone_North_Wall, !- Name", + " Wall, !- Surface Type", + " Exterior Wall, !- Construction Name", + " West_Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " , !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000000000,12.192000000000,3.048000000000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000000000,12.192000000000,0.000000000000, !- X,Y,Z ==> Vertex 2 {m}", + " 0.000000000000,12.192000000000,0.000000000000, !- X,Y,Z ==> Vertex 3 {m}", + " 0.000000000000,12.192000000000,3.048000000000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " West_Zone_Roof, !- Name", + " Roof, !- Surface Type", + " Exterior Roof, !- Construction Name", + " West_Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " , !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.000000000000,12.192000000000,3.048000000000, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000000000,0.000000000000,3.048000000000, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000000000,0.000000000000,3.048000000000, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000000000,12.192000000000,3.048000000000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " West_Zone_East_Wall_S, !- Name", + " Wall, !- Surface Type", + " Exterior Wall, !- Construction Name", + " West_Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " , !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000000000,0.000000000000,3.048000000000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000000000,0.000000000000,0.000000000000, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000000000,6.096000000000,0.000000000000, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000000000,6.096000000000,3.048000000000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed,", + " West_Zone_East_Wall_N, !- Name", + " Wall, !- Surface Type", + " Exterior Wall, !- Construction Name", + " West_Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " , !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000000000,6.096000000000,3.048000000000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000000000,6.096000000000,0.000000000000, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000000000,12.192000000000,0.000000000000, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000000000,12.192000000000,3.048000000000; !- X,Y,Z ==> Vertex 4 {m}", + "FenestrationSurface:Detailed,", + " West_Zone_West_Wall_Left_Window, !- Name", + " Window, !- Surface Type", + " Exterior Window, !- Construction Name", + " West_Zone_West_Wall, !- Building Surface Name", + " , !- Outside Boundary Condition Object", + " , !- View Factor to Ground", + " , !- Shading Control Name", + " , !- Frame and Divider Name", + " , !- Multiplier", + " 4, !- Number of Vertices", + " 0.000000000000,10.668000000000,2.286000000000, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000000000,10.668000000000,0.762000000000, !- X,Y,Z ==> Vertex 2 {m}", + " 0.000000000000,9.144000000000,0.762000000000, !- X,Y,Z ==> Vertex 3 {m}", + " 0.000000000000,9.144000000000,2.286000000000; !- X,Y,Z ==> Vertex 4 {m}", + "FenestrationSurface:Detailed,", + " West_Zone_West_Wall_Right_Window, !- Name", + " Window, !- Surface Type", + " Exterior Window, !- Construction Name", + " West_Zone_West_Wall, !- Building Surface Name", + " , !- Outside Boundary Condition Object", + " , !- View Factor to Ground", + " , !- Shading Control Name", + " , !- Frame and Divider Name", + " , !- Multiplier", + " 4, !- Number of Vertices", + " 0.000000000000,3.048000000000,2.286000000000, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000000000,3.048000000000,0.762000000000, !- X,Y,Z ==> Vertex 2 {m}", + " 0.000000000000,1.524000000000,0.762000000000, !- X,Y,Z ==> Vertex 3 {m}", + " 0.000000000000,1.524000000000,2.286000000000; !- X,Y,Z ==> Vertex 4 {m}", + "AirflowNetwork:SimulationControl,", + " AFN_SimulationControl_1, !- Name", + " MultizoneWithoutDistribution, !- AirflowNetwork Control", + " SurfaceAverageCalculation, !- Wind Pressure Coefficient Type", + " OpeningHeight, !- Height Selection for Local Wind Pressure Calculation", + " LowRise, !- Building Type", + " 500, !- Maximum Number of Iterations {dimensionless}", + " ZeroNodePressures, !- Initialization Type", + " 1.0E-05, !- Relative Airflow Convergence Tolerance {dimensionless}", + " 1.0E-06, !- Absolute Airflow Convergence Tolerance {kg/s}", + " -0.5, !- Convergence Acceleration Limit {dimensionless}", + " 90, !- Azimuth Angle of Long Axis of Building {deg}", + " 0.4; !- Ratio of Building Width Along Short Axis to Width Along Long Axis", + "AirflowNetwork:MultiZone:Zone,", + " West_Zone, !- Zone Name", + " Constant, !- Ventilation Control Mode", + " , !- Ventilation Control Zone Temperature Setpoint Schedule Name", + " , !- Minimum Venting Open Factor {dimensionless}", + " , !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}", + " , !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}", + " , !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}", + " , !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}", + " , !- Venting Availability Schedule Name", + " Advanced, !- Single Sided Wind Pressure Coefficient Algorithm", + " 12.19; !- Facade Width {m}", + "AirflowNetwork:MultiZone:Surface,", + " West_Zone_West_Wall_Right_Window, !- Surface Name", + " SliderWindow, !- Leakage Component Name", + " , !- External Node Name", + " 1; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + "AirflowNetwork:MultiZone:Surface,", + " West_Zone_West_Wall_Left_Window, !- Surface Name", + " SliderWindow, !- Leakage Component Name", + " , !- External Node Name", + " 1; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + "", + "AirflowNetwork:MultiZone:Surface,", + " West_Zone_West_Wall, !- Surface Name", + " WallCrack, !- Leakage Component Name", + " , !- External Node Name", + " 1; !- Window/Door Opening Factor, or Crack Factor {dimensionless}", + "AirflowNetwork:MultiZone:Component:DetailedOpening,", + " SliderWindow, !- Name", + " 0.001, !- Air Mass Flow Coefficient When Opening is Closed {kg/s-m}", + " 0.667, !- Air Mass Flow Exponent When Opening is Closed {dimensionless}", + " NonPivoted, !- Type of Rectangular Large Vertical Opening (LVO)", + " 0.0, !- Extra Crack Length or Height of Pivoting Axis {m}", + " 2, !- Number of Sets of Opening Factor Data", + " 0.0, !- Opening Factor 1 {dimensionless}", + " 0.61, !- Discharge Coefficient for Opening Factor 1 {dimensionless}", + " 0.0, !- Width Factor for Opening Factor 1 {dimensionless}", + " 1.0, !- Height Factor for Opening Factor 1 {dimensionless}", + " 0.0, !- Start Height Factor for Opening Factor 1 {dimensionless}", + " 1.0, !- Opening Factor 2 {dimensionless}", + " 0.61, !- Discharge Coefficient for Opening Factor 2 {dimensionless}", + " 0.5, !- Width Factor for Opening Factor 2 {dimensionless}", + " 1.0, !- Height Factor for Opening Factor 2 {dimensionless}", + " 0.0; !- Start Height Factor for Opening Factor 2 {dimensionless}", + "AirflowNetwork:MultiZone:Surface:Crack,", + " WallCrack, !- Name", + " 0.01, !- Air Mass Flow Coefficient at Reference Conditions {kg/s}", + " 0.667; !- Air Mass Flow Exponent {dimensionless}", + "AirflowNetwork:MultiZone:ReferenceCrackConditions,", + " ReferenceCrackConditions,!- Name", + " 20.0, !- Reference Temperature {C}", + " 101320, !- Reference Barometric Pressure {Pa}", + " 0.005; !- Reference Humidity Ratio {kgWater/kgDryAir}"}); std::vector valsForLeftWindow = { -1.3130779955194276, -1.7404152241877022, -1.9384350312723766, -1.8112879523426120, -1.4903484929957291, -1.1589328567607411, @@ -8157,59 +8157,59 @@ TEST_F(EnergyPlusFixture, BasicAdvancedSingleSided) 1.4391966568855996, 1.1829453813575432, 0.81696925904461237, 0.37465991281286887, -0.041152159946210520, -0.28653692388308377, -0.56146269488642231}; - ASSERT_TRUE(process_idf(idf_objects)); - - bool errors = false; - - HeatBalanceManager::GetMaterialData(errors); // read material data - EXPECT_FALSE(errors); // expect no errors + ASSERT_TRUE(process_idf(idf_objects)); - HeatBalanceManager::GetConstructData(errors); // read construction data - EXPECT_FALSE(errors); // expect no errors + bool errors = false; - HeatBalanceManager::GetZoneData(errors); // read zone data - EXPECT_FALSE(errors); // expect no errors + HeatBalanceManager::GetMaterialData(errors); // read material data + EXPECT_FALSE(errors); // expect no errors - // Magic to get surfaces read in correctly - DataHeatBalance::HeatTransferAlgosUsed.allocate(1); - DataHeatBalance::HeatTransferAlgosUsed(1) = OverallHeatTransferSolutionAlgo; - SurfaceGeometry::CosBldgRotAppGonly = 1.0; - SurfaceGeometry::SinBldgRotAppGonly = 0.0; + HeatBalanceManager::GetConstructData(errors); // read construction data + EXPECT_FALSE(errors); // expect no errors - SurfaceGeometry::GetSurfaceData(errors); // setup zone geometry and get zone data - EXPECT_FALSE(errors); // expect no errors + HeatBalanceManager::GetZoneData(errors); // read zone data + EXPECT_FALSE(errors); // expect no errors - CurveManager::GetCurveInput(); - EXPECT_EQ(0, CurveManager::NumCurves); + // Magic to get surfaces read in correctly + DataHeatBalance::HeatTransferAlgosUsed.allocate(1); + DataHeatBalance::HeatTransferAlgosUsed(1) = OverallHeatTransferSolutionAlgo; + SurfaceGeometry::CosBldgRotAppGonly = 1.0; + SurfaceGeometry::SinBldgRotAppGonly = 0.0; - AirflowNetworkBalanceManager::GetAirflowNetworkInput(); + SurfaceGeometry::GetSurfaceData(errors); // setup zone geometry and get zone data + EXPECT_FALSE(errors); // expect no errors - // Check that the correct number of curves has been generated (5 facade directions + 2 windows) - EXPECT_EQ(7, CurveManager::NumCurves); + CurveManager::GetCurveInput(); + EXPECT_EQ(0, CurveManager::NumCurves); - // Check the airflow elements - ASSERT_EQ(3u, DataAirflowNetwork::MultizoneExternalNodeData.size()); - EXPECT_EQ(1u, DataAirflowNetwork::MultizoneZoneData.size()); - EXPECT_EQ(3u, DataAirflowNetwork::MultizoneSurfaceData.size()); - EXPECT_EQ(1u, DataAirflowNetwork::MultizoneSurfaceCrackData.size()); - EXPECT_EQ(1u, DataAirflowNetwork::MultizoneCompDetOpeningData.size()); - EXPECT_EQ(2u, DataAirflowNetwork::MultizoneSurfaceStdConditionsCrackData.size()); + AirflowNetworkBalanceManager::GetAirflowNetworkInput(); - EXPECT_EQ(270.0, DataAirflowNetwork::MultizoneExternalNodeData(1).azimuth); - EXPECT_EQ(270.0, DataAirflowNetwork::MultizoneExternalNodeData(2).azimuth); - EXPECT_EQ(270.0, DataAirflowNetwork::MultizoneExternalNodeData(3).azimuth); + // Check that the correct number of curves has been generated (5 facade directions + 2 windows) + EXPECT_EQ(7, CurveManager::NumCurves); - // Check the curve values for the left window, taken from v8.6.0 on Windows - unsigned i = 0; - for (auto value : CurveManager::PerfCurveTableData(7).Y) { - EXPECT_NEAR(valsForLeftWindow[i++], value, 1.0e-12) << ("Issue at index: " + std::to_string(i)); - } + // Check the airflow elements + ASSERT_EQ(3u, DataAirflowNetwork::MultizoneExternalNodeData.size()); + EXPECT_EQ(1u, DataAirflowNetwork::MultizoneZoneData.size()); + EXPECT_EQ(3u, DataAirflowNetwork::MultizoneSurfaceData.size()); + EXPECT_EQ(1u, DataAirflowNetwork::MultizoneSurfaceCrackData.size()); + EXPECT_EQ(1u, DataAirflowNetwork::MultizoneCompDetOpeningData.size()); + EXPECT_EQ(2u, DataAirflowNetwork::MultizoneSurfaceStdConditionsCrackData.size()); - // Check the curve values for the left window, taken from v8.6.0 on Windows - i = 0; - for (auto value : CurveManager::PerfCurveTableData(6).Y) { - EXPECT_NEAR(valsForRightWindow[i++], value, 1.0e-12) << ("Issue at index: " + std::to_string(i)); - } - } + EXPECT_EQ(270.0, DataAirflowNetwork::MultizoneExternalNodeData(1).azimuth); + EXPECT_EQ(270.0, DataAirflowNetwork::MultizoneExternalNodeData(2).azimuth); + EXPECT_EQ(270.0, DataAirflowNetwork::MultizoneExternalNodeData(3).azimuth); + + // Check the curve values for the left window, taken from v8.6.0 on Windows + unsigned i = 0; + for (auto value : CurveManager::PerfCurveTableData(7).Y) { + EXPECT_NEAR(valsForLeftWindow[i++], value, 1.0e-12) << ("Issue at index: " + std::to_string(i)); + } + + // Check the curve values for the left window, taken from v8.6.0 on Windows + i = 0; + for (auto value : CurveManager::PerfCurveTableData(6).Y) { + EXPECT_NEAR(valsForRightWindow[i++], value, 1.0e-12) << ("Issue at index: " + std::to_string(i)); + } +} } // namespace EnergyPlus diff --git a/tst/EnergyPlus/unit/DesiccantDehumidifiers.unit.cc b/tst/EnergyPlus/unit/DesiccantDehumidifiers.unit.cc index ad7b01ce1f6..a08f9804ccc 100644 --- a/tst/EnergyPlus/unit/DesiccantDehumidifiers.unit.cc +++ b/tst/EnergyPlus/unit/DesiccantDehumidifiers.unit.cc @@ -91,6619 +91,6619 @@ namespace EnergyPlus { TEST_F(EnergyPlusFixture, DesiccantDehum_OnOASystemTest) { - std::string CompName( "" ); - bool FirstHVACIteration( true ); - int DesicDehumNum( 1 ); - int CompIndex( 1 ); - int CoilIndex( 0 ); - int loop( 0 ); - Real64 RegCoilDesInletTemp( 0.0 ); - Real64 RegCoilDesOutletTemp( 0.0 ); - Real64 RegCoilInletAirMassFlowRate( 0.0 ); - Real64 RegCoilCapacity( 0.0 ); - - std::string const idf_objects = delimited_string( { - " Version,8.4;", - - " Building,", - " Building, !- Name", - " 30., !- North Axis {deg}", - " City, !- Terrain", - " 0.04, !- Loads Convergence Tolerance Value", - " 0.4, !- Temperature Convergence Tolerance Value {deltaC}", - " FullExterior, !- Solar Distribution", - " 40, !- Maximum Number of Warmup Days", - " 6; !- Minimum Number of Warmup Days", - - " Timestep,6;", - - " SurfaceConvectionAlgorithm:Inside,Simple;", - - " SurfaceConvectionAlgorithm:Outside,SimpleCombined;", - - " HeatBalanceAlgorithm,ConductionTransferFunction;", - - " SimulationControl,", - " Yes, !- Do Zone Sizing Calculation", - " Yes, !- Do System Sizing Calculation", - " No, !- Do Plant Sizing Calculation", - " Yes, !- Run Simulation for Sizing Periods", - " No; !- Run Simulation for Weather File Run Periods", - - " RunPeriod,", - " , !- Name", - " 1, !- Begin Month", - " 1, !- Begin Day of Month", - " , !- Begin Year", - " 1, !- End Month", - " 5, !- End Day of Month", - " , !- End Year", - " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " Yes; !- Use Weather File Snow Indicators", - - " Site:Location,", - " Miami Intl Ap FL USA WMO=722020, !- Name", - " 25.82, !- Latitude {deg}", - " -80.30, !- Longitude {deg}", - " -5.00, !- Time Zone {hr}", - " 11.00; !- Elevation {m}", - - " SizingPeriod:DesignDay,", - " Miami Intl Ap Ann Htg 99.6% Condns DB, !- Name", - " 1, !- Month", - " 21, !- Day of Month", - " WinterDesignDay, !- Day Type", - " 8.7, !- Maximum Dry-Bulb Temperature {C}", - " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " 8.7, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 101217., !- Barometric Pressure {Pa}", - " 3.8, !- Wind Speed {m/s}", - " 340, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 0.00; !- Sky Clearness", - - " SizingPeriod:DesignDay,", - " Miami Intl Ap Ann Clg .4% Condns DB=>MWB, !- Name", - " 7, !- Month", - " 21, !- Day of Month", - " SummerDesignDay, !- Day Type", - " 33.2, !- Maximum Dry-Bulb Temperature {C}", - " 6.7, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " 25.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 101217., !- Barometric Pressure {Pa}", - " 4.5, !- Wind Speed {m/s}", - " 140, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 1.00; !- Sky Clearness", - - " Site:GroundTemperature:BuildingSurface,21.0,21.5,22.0,22.2,22.2,22.2,22.2,22.2,22.2,22.0,21.5,21.0;", - - " Material,", - " WD10, !- Name", - " MediumSmooth, !- Roughness", - " 0.667, !- Thickness {m}", - " 0.115, !- Conductivity {W/m-K}", - " 513, !- Density {kg/m3}", - " 1381, !- Specific Heat {J/kg-K}", - " 0.9, !- Thermal Absorptance", - " 0.78, !- Solar Absorptance", - " 0.78; !- Visible Absorptance", - - " Material,", - " RG01, !- Name", - " Rough, !- Roughness", - " 1.2700000E-02, !- Thickness {m}", - " 1.442000, !- Conductivity {W/m-K}", - " 881.0000, !- Density {kg/m3}", - " 1674.000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - - " Material,", - " BR01, !- Name", - " VeryRough, !- Roughness", - " 9.4999997E-03, !- Thickness {m}", - " 0.1620000, !- Conductivity {W/m-K}", - " 1121.000, !- Density {kg/m3}", - " 1464.000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7000000, !- Solar Absorptance", - " 0.7000000; !- Visible Absorptance", - - " Material,", - " IN46, !- Name", - " VeryRough, !- Roughness", - " 7.6200001E-02, !- Thickness {m}", - " 2.3000000E-02, !- Conductivity {W/m-K}", - " 24.00000, !- Density {kg/m3}", - " 1590.000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.5000000, !- Solar Absorptance", - " 0.5000000; !- Visible Absorptance", - - " Material,", - " WD01, !- Name", - " MediumSmooth, !- Roughness", - " 1.9099999E-02, !- Thickness {m}", - " 0.1150000, !- Conductivity {W/m-K}", - " 513.0000, !- Density {kg/m3}", - " 1381.000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7800000, !- Solar Absorptance", - " 0.7800000; !- Visible Absorptance", - - " Material,", - " PW03, !- Name", - " MediumSmooth, !- Roughness", - " 1.2700000E-02, !- Thickness {m}", - " 0.1150000, !- Conductivity {W/m-K}", - " 545.0000, !- Density {kg/m3}", - " 1213.000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7800000, !- Solar Absorptance", - " 0.7800000; !- Visible Absorptance", - - " Material,", - " IN02, !- Name", - " Rough, !- Roughness", - " 9.0099998E-02, !- Thickness {m}", - " 4.3000001E-02, !- Conductivity {W/m-K}", - " 10.00000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " GP01, !- Name", - " MediumSmooth, !- Roughness", - " 1.2700000E-02, !- Thickness {m}", - " 0.1600000, !- Conductivity {W/m-K}", - " 801.0000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " GP02, !- Name", - " MediumSmooth, !- Roughness", - " 1.5900001E-02, !- Thickness {m}", - " 0.1600000, !- Conductivity {W/m-K}", - " 801.0000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " CC03, !- Name", - " MediumRough, !- Roughness", - " 0.1016000, !- Thickness {m}", - " 1.310000, !- Conductivity {W/m-K}", - " 2243.000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - - " Material:NoMass,", - " CP01, !- Name", - " Rough, !- Roughness", - " 0.3670000, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material:NoMass,", - " MAT-SB-U, !- Name", - " Rough, !- Roughness", - " 0.117406666, !- Thermal Resistance {m2-K/W}", - " 0.65, !- Thermal Absorptance", - " 0.65, !- Solar Absorptance", - " 0.65; !- Visible Absorptance", - - " Material:NoMass,", - " MAT-CLNG-1, !- Name", - " Rough, !- Roughness", - " 0.652259290, !- Thermal Resistance {m2-K/W}", - " 0.65, !- Thermal Absorptance", - " 0.65, !- Solar Absorptance", - " 0.65; !- Visible Absorptance", - - " Material:NoMass,", - " MAT-FLOOR-1, !- Name", - " Rough, !- Roughness", - " 3.522199631, !- Thermal Resistance {m2-K/W}", - " 0.65, !- Thermal Absorptance", - " 0.65, !- Solar Absorptance", - " 0.65; !- Visible Absorptance", - - " Material:AirGap,", - " AL21, !- Name", - " 0.1570000; !- Thermal Resistance {m2-K/W}", - - " Material:AirGap,", - " AL23, !- Name", - " 0.1530000; !- Thermal Resistance {m2-K/W}", - - " WindowMaterial:Glazing,", - " CLEAR 3MM, !- Name", - " SpectralAverage, !- Optical Data Type", - " , !- Window Glass Spectral Data Set Name", - " 0.003, !- Thickness {m}", - " 0.837, !- Solar Transmittance at Normal Incidence", - " 0.075, !- Front Side Solar Reflectance at Normal Incidence", - " 0.075, !- Back Side Solar Reflectance at Normal Incidence", - " 0.898, !- Visible Transmittance at Normal Incidence", - " 0.081, !- Front Side Visible Reflectance at Normal Incidence", - " 0.081, !- Back Side Visible Reflectance at Normal Incidence", - " 0.0, !- Infrared Transmittance at Normal Incidence", - " 0.84, !- Front Side Infrared Hemispherical Emissivity", - " 0.84, !- Back Side Infrared Hemispherical Emissivity", - " 0.9; !- Conductivity {W/m-K}", - - " WindowMaterial:Glazing,", - " GREY 3MM, !- Name", - " SpectralAverage, !- Optical Data Type", - " , !- Window Glass Spectral Data Set Name", - " 0.003, !- Thickness {m}", - " 0.626, !- Solar Transmittance at Normal Incidence", - " 0.061, !- Front Side Solar Reflectance at Normal Incidence", - " 0.061, !- Back Side Solar Reflectance at Normal Incidence", - " 0.611, !- Visible Transmittance at Normal Incidence", - " 0.061, !- Front Side Visible Reflectance at Normal Incidence", - " 0.061, !- Back Side Visible Reflectance at Normal Incidence", - " 0.0, !- Infrared Transmittance at Normal Incidence", - " 0.84, !- Front Side Infrared Hemispherical Emissivity", - " 0.84, !- Back Side Infrared Hemispherical Emissivity", - " 0.9; !- Conductivity {W/m-K}", - - " WindowMaterial:Glazing,", - " CLEAR 6MM, !- Name", - " SpectralAverage, !- Optical Data Type", - " , !- Window Glass Spectral Data Set Name", - " 0.006, !- Thickness {m}", - " 0.775, !- Solar Transmittance at Normal Incidence", - " 0.071, !- Front Side Solar Reflectance at Normal Incidence", - " 0.071, !- Back Side Solar Reflectance at Normal Incidence", - " 0.881, !- Visible Transmittance at Normal Incidence", - " 0.080, !- Front Side Visible Reflectance at Normal Incidence", - " 0.080, !- Back Side Visible Reflectance at Normal Incidence", - " 0.0, !- Infrared Transmittance at Normal Incidence", - " 0.84, !- Front Side Infrared Hemispherical Emissivity", - " 0.84, !- Back Side Infrared Hemispherical Emissivity", - " 0.9; !- Conductivity {W/m-K}", - - " WindowMaterial:Glazing,", - " LoE CLEAR 6MM, !- Name", - " SpectralAverage, !- Optical Data Type", - " , !- Window Glass Spectral Data Set Name", - " 0.006, !- Thickness {m}", - " 0.600, !- Solar Transmittance at Normal Incidence", - " 0.170, !- Front Side Solar Reflectance at Normal Incidence", - " 0.220, !- Back Side Solar Reflectance at Normal Incidence", - " 0.840, !- Visible Transmittance at Normal Incidence", - " 0.055, !- Front Side Visible Reflectance at Normal Incidence", - " 0.078, !- Back Side Visible Reflectance at Normal Incidence", - " 0.0, !- Infrared Transmittance at Normal Incidence", - " 0.84, !- Front Side Infrared Hemispherical Emissivity", - " 0.10, !- Back Side Infrared Hemispherical Emissivity", - " 0.9; !- Conductivity {W/m-K}", - - " WindowMaterial:Gas,", - " AIR 6MM, !- Name", - " Air, !- Gas Type", - " 0.0063; !- Thickness {m}", - - " WindowMaterial:Gas,", - " AIR 13MM, !- Name", - " Air, !- Gas Type", - " 0.0127; !- Thickness {m}", - - " WindowMaterial:Gas,", - " ARGON 13MM, !- Name", - " Argon, !- Gas Type", - " 0.0127; !- Thickness {m}", - - " Construction,", - " ROOF-1, !- Name", - " RG01, !- Outside Layer", - " BR01, !- Layer 2", - " IN46, !- Layer 3", - " WD01; !- Layer 4", - - " Construction,", - " WALL-1, !- Name", - " WD01, !- Outside Layer", - " PW03, !- Layer 2", - " IN02, !- Layer 3", - " GP01; !- Layer 4", - - " Construction,", - " CLNG-1, !- Name", - " MAT-CLNG-1; !- Outside Layer", - - " Construction,", - " SB-U, !- Name", - " MAT-SB-U; !- Outside Layer", - - " Construction,", - " FLOOR-1, !- Name", - " MAT-FLOOR-1; !- Outside Layer", - - " Construction,", - " FLOOR-SLAB-1, !- Name", - " CC03, !- Outside Layer", - " CP01; !- Layer 2", - - " Construction,", - " INT-WALL-1, !- Name", - " GP02, !- Outside Layer", - " AL21, !- Layer 2", - " GP02; !- Layer 3", - - " Construction,", - " Dbl Clr 3mm/13mm Air, !- Name", - " CLEAR 3MM, !- Outside Layer", - " AIR 13MM, !- Layer 2", - " CLEAR 3MM; !- Layer 3", - - " Construction,", - " Dbl Clr 3mm/13mm Arg, !- Name", - " CLEAR 3MM, !- Outside Layer", - " ARGON 13MM, !- Layer 2", - " CLEAR 3MM; !- Layer 3", - - " Construction,", - " Sgl Grey 3mm, !- Name", - " GREY 3MM; !- Outside Layer", - - " Construction,", - " Dbl Clr 6mm/6mm Air, !- Name", - " CLEAR 6MM, !- Outside Layer", - " AIR 6MM, !- Layer 2", - " CLEAR 6MM; !- Layer 3", - - " Construction,", - " Dbl LoE (e2=.1) Clr 6mm/6mm Air, !- Name", - " LoE CLEAR 6MM, !- Outside Layer", - " AIR 6MM, !- Layer 2", - " CLEAR 6MM; !- Layer 3", - - " Zone,", - " PLENUM-1, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " 0.609600067, !- Ceiling Height {m}", - " 283.2; !- Volume {m3}", - - " Zone,", - " SPACE1-1, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " 2.438400269, !- Ceiling Height {m}", - " 239.247360229; !- Volume {m3}", - - " Zone,", - " SPACE2-1, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " 2.438400269, !- Ceiling Height {m}", - " 103.311355591; !- Volume {m3}", - - " Zone,", - " SPACE3-1, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " 2.438400269, !- Ceiling Height {m}", - " 239.247360229; !- Volume {m3}", - - " Zone,", - " SPACE4-1, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " 2.438400269, !- Ceiling Height {m}", - " 103.311355591; !- Volume {m3}", - - " Zone,", - " SPACE5-1, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " 2.438400269, !- Ceiling Height {m}", - " 447.682556152; !- Volume {m3}", - - " GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " CounterClockWise, !- Vertex Entry Direction", - " relative; !- Coordinate System", - - " BuildingSurface:Detailed,", - " WALL-1PF, !- Name", - " WALL, !- Surface Type", - " WALL-1, !- Construction Name", - " PLENUM-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.0,0.0,3.0, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 30.5,0.0,3.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " WALL-1PR, !- Name", - " WALL, !- Surface Type", - " WALL-1, !- Construction Name", - " PLENUM-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 30.5,0.0,3.0, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 30.5,15.2,3.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " WALL-1PB, !- Name", - " WALL, !- Surface Type", - " WALL-1, !- Construction Name", - " PLENUM-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 30.5,15.2,3.0, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 0.0,15.2,3.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " WALL-1PL, !- Name", - " WALL, !- Surface Type", - " WALL-1, !- Construction Name", - " PLENUM-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.0,15.2,3.0, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 0.0,0.0,3.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " TOP-1, !- Name", - " ROOF, !- Surface Type", - " ROOF-1, !- Construction Name", - " PLENUM-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.00000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.0,15.2,3.0, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,0.0,3.0, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,0.0,3.0, !- X,Y,Z ==> Vertex 3 {m}", - " 30.5,15.2,3.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " C1-1P, !- Name", - " FLOOR, !- Surface Type", - " CLNG-1, !- Construction Name", - " PLENUM-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " C1-1, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " C2-1P, !- Name", - " FLOOR, !- Surface Type", - " CLNG-1, !- Construction Name", - " PLENUM-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " C2-1, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " C3-1P, !- Name", - " FLOOR, !- Surface Type", - " CLNG-1, !- Construction Name", - " PLENUM-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " C3-1, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 30.5,15.2,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " C4-1P, !- Name", - " FLOOR, !- Surface Type", - " CLNG-1, !- Construction Name", - " PLENUM-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " C4-1, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " C5-1P, !- Name", - " FLOOR, !- Surface Type", - " CLNG-1, !- Construction Name", - " PLENUM-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " C5-1, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " FRONT-1, !- Name", - " WALL, !- Surface Type", - " WALL-1, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 30.5,0.0,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " C1-1, !- Name", - " CEILING, !- Surface Type", - " CLNG-1, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " C1-1P, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " F1-1, !- Name", - " FLOOR, !- Surface Type", - " FLOOR-SLAB-1, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Ground, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,3.7,0.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB12, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB21, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB14, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB41, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 0.0,0.0,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB15, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB51, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " RIGHT-1, !- Name", - " WALL, !- Surface Type", - " WALL-1, !- Construction Name", - " SPACE2-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 30.5,15.2,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " C2-1, !- Name", - " CEILING, !- Surface Type", - " CLNG-1, !- Construction Name", - " SPACE2-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " C2-1P, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " F2-1, !- Name", - " FLOOR, !- Surface Type", - " FLOOR-SLAB-1, !- Construction Name", - " SPACE2-1, !- Zone Name", - " Ground, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,3.7,0.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB21, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE2-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB12, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 30.5,0.0,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB23, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE2-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB32, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB25, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE2-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB52, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " BACK-1, !- Name", - " WALL, !- Surface Type", - " WALL-1, !- Construction Name", - " SPACE3-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 0.0,15.2,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " C3-1, !- Name", - " CEILING, !- Surface Type", - " CLNG-1, !- Construction Name", - " SPACE3-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " C3-1P, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " F3-1, !- Name", - " FLOOR, !- Surface Type", - " FLOOR-SLAB-1, !- Construction Name", - " SPACE3-1, !- Zone Name", - " Ground, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 1 {m}", - " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 30.5,15.2,0.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB32, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE3-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB23, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 30.5,15.2,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB34, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE3-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB43, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB35, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE3-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB53, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " LEFT-1, !- Name", - " WALL, !- Surface Type", - " WALL-1, !- Construction Name", - " SPACE4-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 0.0,0.0,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " C4-1, !- Name", - " CEILING, !- Surface Type", - " CLNG-1, !- Construction Name", - " SPACE4-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " C4-1P, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " F4-1, !- Name", - " FLOOR, !- Surface Type", - " FLOOR-SLAB-1, !- Construction Name", - " SPACE4-1, !- Zone Name", - " Ground, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,11.6,0.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB41, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE4-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB14, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB43, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE4-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB34, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 0.0,15.2,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB45, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE4-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB54, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " C5-1, !- Name", - " CEILING, !- Surface Type", - " CLNG-1, !- Construction Name", - " SPACE5-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " C5-1P, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " F5-1, !- Name", - " FLOOR, !- Surface Type", - " FLOOR-SLAB-1, !- Construction Name", - " SPACE5-1, !- Zone Name", - " Ground, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 1 {m}", - " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,11.6,0.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB51, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE5-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB15, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB52, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE5-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB25, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB53, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE5-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB35, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB54, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE5-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB45, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " FenestrationSurface:Detailed,", - " WF-1, !- Name", - " WINDOW, !- Surface Type", - " Dbl Clr 3mm/13mm Air, !- Construction Name", - " FRONT-1, !- Building Surface Name", - " , !- Outside Boundary Condition Object", - " 0.50000, !- View Factor to Ground", - " , !- Shading Control Name", - " , !- Frame and Divider Name", - " 1, !- Multiplier", - " 4, !- Number of Vertices", - " 3.0,0.0,2.1, !- X,Y,Z ==> Vertex 1 {m}", - " 3.0,0.0,0.9, !- X,Y,Z ==> Vertex 2 {m}", - " 16.8,0.0,0.9, !- X,Y,Z ==> Vertex 3 {m}", - " 16.8,0.0,2.1; !- X,Y,Z ==> Vertex 4 {m}", - - " FenestrationSurface:Detailed,", - " DF-1, !- Name", - " GLASSDOOR, !- Surface Type", - " Sgl Grey 3mm, !- Construction Name", - " FRONT-1, !- Building Surface Name", - " , !- Outside Boundary Condition Object", - " 0.50000, !- View Factor to Ground", - " , !- Shading Control Name", - " , !- Frame and Divider Name", - " 1, !- Multiplier", - " 4, !- Number of Vertices", - " 21.3,0.0,2.1, !- X,Y,Z ==> Vertex 1 {m}", - " 21.3,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 23.8,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 23.8,0.0,2.1; !- X,Y,Z ==> Vertex 4 {m}", - - " FenestrationSurface:Detailed,", - " WR-1, !- Name", - " WINDOW, !- Surface Type", - " Dbl Clr 3mm/13mm Air, !- Construction Name", - " RIGHT-1, !- Building Surface Name", - " , !- Outside Boundary Condition Object", - " 0.50000, !- View Factor to Ground", - " , !- Shading Control Name", - " , !- Frame and Divider Name", - " 1, !- Multiplier", - " 4, !- Number of Vertices", - " 30.5,3.8,2.1, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,3.8,0.9, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,11.4,0.9, !- X,Y,Z ==> Vertex 3 {m}", - " 30.5,11.4,2.1; !- X,Y,Z ==> Vertex 4 {m}", - - " FenestrationSurface:Detailed,", - " WB-1, !- Name", - " WINDOW, !- Surface Type", - " Dbl Clr 3mm/13mm Air, !- Construction Name", - " BACK-1, !- Building Surface Name", - " , !- Outside Boundary Condition Object", - " 0.50000, !- View Factor to Ground", - " , !- Shading Control Name", - " , !- Frame and Divider Name", - " 1, !- Multiplier", - " 4, !- Number of Vertices", - " 27.4,15.2,2.1, !- X,Y,Z ==> Vertex 1 {m}", - " 27.4,15.2,0.9, !- X,Y,Z ==> Vertex 2 {m}", - " 13.7,15.2,0.9, !- X,Y,Z ==> Vertex 3 {m}", - " 13.7,15.2,2.1; !- X,Y,Z ==> Vertex 4 {m}", - - " FenestrationSurface:Detailed,", - " DB-1, !- Name", - " GLASSDOOR, !- Surface Type", - " Sgl Grey 3mm, !- Construction Name", - " BACK-1, !- Building Surface Name", - " , !- Outside Boundary Condition Object", - " 0.50000, !- View Factor to Ground", - " , !- Shading Control Name", - " , !- Frame and Divider Name", - " 1, !- Multiplier", - " 4, !- Number of Vertices", - " 9.1,15.2,2.1, !- X,Y,Z ==> Vertex 1 {m}", - " 9.1,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 7.0,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 7.0,15.2,2.1; !- X,Y,Z ==> Vertex 4 {m}", - - " FenestrationSurface:Detailed,", - " WL-1, !- Name", - " WINDOW, !- Surface Type", - " Dbl Clr 3mm/13mm Air, !- Construction Name", - " LEFT-1, !- Building Surface Name", - " , !- Outside Boundary Condition Object", - " 0.50000, !- View Factor to Ground", - " , !- Shading Control Name", - " , !- Frame and Divider Name", - " 1, !- Multiplier", - " 4, !- Number of Vertices", - " 0.0,11.4,2.1, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,11.4,0.9, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,3.8,0.9, !- X,Y,Z ==> Vertex 3 {m}", - " 0.0,3.8,2.1; !- X,Y,Z ==> Vertex 4 {m}", - - " Shading:Zone:Detailed,", - " Main South Overhang, !- Name", - " FRONT-1, !- Base Surface Name", - " ShadeTransSch, !- Transmittance Schedule Name", - " 4, !- Number of Vertices", - " 0.0,-1.3,2.2, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,0.0,2.2, !- X,Y,Z ==> Vertex 2 {m}", - " 19.8,0.0,2.2, !- X,Y,Z ==> Vertex 3 {m}", - " 19.8,-1.3,2.2; !- X,Y,Z ==> Vertex 4 {m}", - - " Shading:Zone:Detailed,", - " South Door Overhang, !- Name", - " FRONT-1, !- Base Surface Name", - " ShadeTransSch, !- Transmittance Schedule Name", - " 4, !- Number of Vertices", - " 21.0,-2.0,2.6, !- X,Y,Z ==> Vertex 1 {m}", - " 21.0,0.0,2.6, !- X,Y,Z ==> Vertex 2 {m}", - " 24.1,0.0,2.6, !- X,Y,Z ==> Vertex 3 {m}", - " 24.1,-2.0,2.6; !- X,Y,Z ==> Vertex 4 {m}", - - " ScheduleTypeLimits,", - " Any Number; !- Name", - - " ScheduleTypeLimits,", - " Fraction, !- Name", - " 0.0, !- Lower Limit Value", - " 1.0, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - " ScheduleTypeLimits,", - " Temperature, !- Name", - " -60, !- Lower Limit Value", - " 200, !- Upper Limit Value", - " CONTINUOUS, !- Numeric Type", - " Temperature; !- Unit Type", - - " ScheduleTypeLimits,", - " Control Type, !- Name", - " 0, !- Lower Limit Value", - " 4, !- Upper Limit Value", - " DISCRETE; !- Numeric Type", - - " ScheduleTypeLimits,", - " On/Off, !- Name", - " 0, !- Lower Limit Value", - " 1, !- Upper Limit Value", - " DISCRETE; !- Numeric Type", - - " ScheduleTypeLimits,", - " FlowRate, !- Name", - " 0.0, !- Lower Limit Value", - " 10, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - " ScheduleTypeLimits,", - " Humidity, !- Name", - " 0, !- Lower Limit Value", - " 100, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - " Schedule:Compact,", - " OCCUPY-1, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", - " Until: 8:00,0.0, !- Field 3", - " Until: 11:00,1.00, !- Field 5", - " Until: 12:00,0.80, !- Field 7", - " Until: 13:00,0.40, !- Field 9", - " Until: 14:00,0.80, !- Field 11", - " Until: 18:00,1.00, !- Field 13", - " Until: 19:00,0.50, !- Field 15", - " Until: 21:00,0.10, !- Field 17", - " Until: 24:00,0.0, !- Field 19", - " For: Weekends WinterDesignDay Holiday, !- Field 21", - " Until: 24:00,0.0; !- Field 22", - - " Schedule:Compact,", - " LIGHTS-1, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", - " Until: 8:00,0.05, !- Field 3", - " Until: 9:00,0.9, !- Field 5", - " Until: 10:00,0.95, !- Field 7", - " Until: 11:00,1.00, !- Field 9", - " Until: 12:00,0.95, !- Field 11", - " Until: 13:00,0.8, !- Field 13", - " Until: 14:00,0.9, !- Field 15", - " Until: 18:00,1.00, !- Field 17", - " Until: 19:00,0.60, !- Field 19", - " Until: 21:00,0.20, !- Field 21", - " Until: 24:00,0.05, !- Field 23", - " For: Weekends WinterDesignDay Holiday, !- Field 25", - " Until: 24:00,0.05; !- Field 26", - - " Schedule:Compact,", - " EQUIP-1, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", - " Until: 8:00,0.02, !- Field 3", - " Until: 9:00,0.4, !- Field 5", - " Until: 14:00,0.9, !- Field 7", - " Until: 15:00,0.8, !- Field 9", - " Until: 16:00,0.7, !- Field 11", - " Until: 18:00,0.5, !- Field 13", - " Until: 20:00,0.3, !- Field 15", - " Until: 24:00,0.02, !- Field 17", - " For: Weekends WinterDesignDay Holiday, !- Field 19", - " Until: 24:00,0.2; !- Field 20", - - " Schedule:Compact,", - " INFIL-SCH, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 3/31, !- Field 1", - " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", - " Until: 24:00,1.0, !- Field 3", - " For: AllOtherDays, !- Field 5", - " Until: 24:00,1.0, !- Field 6", - " Through: 9/30, !- Field 8", - " For: AllDays, !- Field 9", - " Until: 24:00,0.7, !- Field 10", - " Through: 12/31, !- Field 12", - " For: AllDays, !- Field 13", - " Until: 24:00,1.0, !- Field 14", - " For: AllOtherDays, !- Field 16", - " Until: 24:00,0.2; !- Field 17", - - " Schedule:Compact,", - " ActSchd, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,117.239997864; !- Field 3", - - " Schedule:Compact,", - " ShadeTransSch, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,0.0; !- Field 3", - - " Schedule:Compact,", - " Htg-SetP-Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: SummerDesignDay, !- Field 2", - " Until: 24:00,12.8, !- Field 3", - " For: WinterDesignDay, !- Field 5", - " Until: 24:00,21.1, !- Field 6", - " For: WeekEnds Holiday, !- Field 8", - " Until: 7:00,12.8, !- Field 9", - " Until: 13:00,21.1, !- Field 11", - " Until: 24:00,12.8, !- Field 13", - " For: AllOtherDays, !- Field 15", - " Until: 7:00,12.8, !- Field 16", - " Until: 18:00,21.1, !- Field 18", - " Until: 24:00,12.8; !- Field 20", - - " Schedule:Compact,", - " PlenumHtg-SetP-Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,12.8; !- Field 3", - - " Schedule:Compact,", - " Clg-SetP-Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: SummerDesignDay, !- Field 2", - " Until: 24:00,23.9, !- Field 3", - " For: WinterDesignDay, !- Field 5", - " Until: 24:00,40.0, !- Field 6", - " For: WeekEnds Holiday, !- Field 8", - " Until: 7:00,40.0, !- Field 9", - " Until: 13:00,23.9, !- Field 11", - " Until: 24:00,32.2, !- Field 13", - " For: AllOtherDays, !- Field 15", - " Until: 7:00,40.0, !- Field 16", - " Until: 18:00,23.9, !- Field 18", - " Until: 24:00,40.0; !- Field 20", - - " Schedule:Compact,", - " PlenumClg-SetP-Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,40.0; !- Field 3", - - " Schedule:Compact,", - " Zone Control Type Sched, !- Name", - " Control Type, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: SummerDesignDay, !- Field 2", - " Until: 24:00,2, !- Field 3", - " For: WinterDesignDay, !- Field 5", - " Until: 24:00,1, !- Field 6", - " For: AllOtherDays, !- Field 8", - " Until: 24:00,4; !- Field 9", - - " Schedule:Compact,", - " Desiccant Control Type Sched, !- Name", - " Control Type, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,4; !- Field 3", - - " Schedule:Compact,", - " Min OA Sched, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Weekdays, !- Field 2", - " Until: 7:00,0.02, !- Field 3", - " Until: 17:00,1.0, !- Field 5", - " Until: 24:00,0.0, !- Field 7", - " For: AllOtherDays, !- Field 9", - " Until: 24:00,0.02; !- Field 10", - - " Schedule:Compact,", - " FanAvailSched, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 3/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0, !- Field 3", - " Through: 9/30, !- Field 5", - " For: WeekDays, !- Field 6", - " Until: 7:00,0.0, !- Field 7", - " Until: 17:00,1.0, !- Field 9", - " Until: 24:00,0.0, !- Field 11", - " For: SummerDesignDay WinterDesignDay, !- Field 13", - " Until: 24:00,1.0, !- Field 14", - " For: AllOtherDays, !- Field 16", - " Until: 24:00,0.0, !- Field 17", - " Through: 12/31, !- Field 19", - " For: AllDays, !- Field 20", - " Until: 24:00,1.0; !- Field 21", - - " Schedule:Compact,", - " Seasonal Reset Supply Air Temp Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 3/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,17.0, !- Field 3", - " Through: 9/30, !- Field 5", - " For: AllDays, !- Field 6", - " Until: 24:00,15.0, !- Field 7", - " Through: 12/31, !- Field 9", - " For: AllDays, !- Field 10", - " Until: 24:00,17.0; !- Field 11", - - " Schedule:Compact,", - " Constant, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0; !- Field 3", - - " People,", - " SPACE1-1 People 1, !- Name", - " SPACE1-1, !- Zone or ZoneList Name", - " OCCUPY-1, !- Number of People Schedule Name", - " people, !- Number of People Calculation Method", - " 11, !- Number of People", - " , !- People per Zone Floor Area {person/m2}", - " , !- Zone Floor Area per Person {m2/person}", - " 0.3, !- Fraction Radiant", - " AutoCalculate, !- Sensible Heat Fraction", - " ActSchd; !- Activity Level Schedule Name", - - " People,", - " SPACE2-1 People 1, !- Name", - " SPACE2-1, !- Zone or ZoneList Name", - " OCCUPY-1, !- Number of People Schedule Name", - " people, !- Number of People Calculation Method", - " 5, !- Number of People", - " , !- People per Zone Floor Area {person/m2}", - " , !- Zone Floor Area per Person {m2/person}", - " 0.3, !- Fraction Radiant", - " AutoCalculate, !- Sensible Heat Fraction", - " ActSchd; !- Activity Level Schedule Name", - - " People,", - " SPACE3-1 People 1, !- Name", - " SPACE3-1, !- Zone or ZoneList Name", - " OCCUPY-1, !- Number of People Schedule Name", - " people, !- Number of People Calculation Method", - " 11, !- Number of People", - " , !- People per Zone Floor Area {person/m2}", - " , !- Zone Floor Area per Person {m2/person}", - " 0.3, !- Fraction Radiant", - " AutoCalculate, !- Sensible Heat Fraction", - " ActSchd; !- Activity Level Schedule Name", - - " People,", - " SPACE4-1 People 1, !- Name", - " SPACE4-1, !- Zone or ZoneList Name", - " OCCUPY-1, !- Number of People Schedule Name", - " people, !- Number of People Calculation Method", - " 5, !- Number of People", - " , !- People per Zone Floor Area {person/m2}", - " , !- Zone Floor Area per Person {m2/person}", - " 0.3, !- Fraction Radiant", - " AutoCalculate, !- Sensible Heat Fraction", - " ActSchd; !- Activity Level Schedule Name", - - " Lights,", - " SPACE1-1 Lights 1, !- Name", - " SPACE1-1, !- Zone or ZoneList Name", - " LIGHTS-1, !- Schedule Name", - " LightingLevel, !- Design Level Calculation Method", - " 1584, !- Lighting Level {W}", - " , !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.2, !- Return Air Fraction", - " 0.59, !- Fraction Radiant", - " 0.2, !- Fraction Visible", - " 0, !- Fraction Replaceable", - " GeneralLights; !- End-Use Subcategory", - - " Lights,", - " SPACE2-1 Lights 1, !- Name", - " SPACE2-1, !- Zone or ZoneList Name", - " LIGHTS-1, !- Schedule Name", - " LightingLevel, !- Design Level Calculation Method", - " 684, !- Lighting Level {W}", - " , !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.2, !- Return Air Fraction", - " 0.59, !- Fraction Radiant", - " 0.2, !- Fraction Visible", - " 0, !- Fraction Replaceable", - " GeneralLights; !- End-Use Subcategory", - - " Lights,", - " SPACE3-1 Lights 1, !- Name", - " SPACE3-1, !- Zone or ZoneList Name", - " LIGHTS-1, !- Schedule Name", - " LightingLevel, !- Design Level Calculation Method", - " 1584, !- Lighting Level {W}", - " , !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.2, !- Return Air Fraction", - " 0.59, !- Fraction Radiant", - " 0.2, !- Fraction Visible", - " 0, !- Fraction Replaceable", - " GeneralLights; !- End-Use Subcategory", - - " Lights,", - " SPACE4-1 Lights 1, !- Name", - " SPACE4-1, !- Zone or ZoneList Name", - " LIGHTS-1, !- Schedule Name", - " LightingLevel, !- Design Level Calculation Method", - " 684, !- Lighting Level {W}", - " , !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.2, !- Return Air Fraction", - " 0.59, !- Fraction Radiant", - " 0.2, !- Fraction Visible", - " 0, !- Fraction Replaceable", - " GeneralLights; !- End-Use Subcategory", - - " ElectricEquipment,", - " SPACE1-1 ElecEq 1, !- Name", - " SPACE1-1, !- Zone or ZoneList Name", - " EQUIP-1, !- Schedule Name", - " EquipmentLevel, !- Design Level Calculation Method", - " 10560, !- Design Level {W}", - " , !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.5, !- Fraction Latent", - " 0.3, !- Fraction Radiant", - " 0; !- Fraction Lost", - - " ElectricEquipment,", - " SPACE2-1 ElecEq 1, !- Name", - " SPACE2-1, !- Zone or ZoneList Name", - " EQUIP-1, !- Schedule Name", - " EquipmentLevel, !- Design Level Calculation Method", - " 4560, !- Design Level {W}", - " , !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.5, !- Fraction Latent", - " 0.3, !- Fraction Radiant", - " 0; !- Fraction Lost", - - " ElectricEquipment,", - " SPACE3-1 ElecEq 1, !- Name", - " SPACE3-1, !- Zone or ZoneList Name", - " EQUIP-1, !- Schedule Name", - " EquipmentLevel, !- Design Level Calculation Method", - " 10560, !- Design Level {W}", - " , !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.5, !- Fraction Latent", - " 0.3, !- Fraction Radiant", - " 0; !- Fraction Lost", - - " ElectricEquipment,", - " SPACE4-1 ElecEq 1, !- Name", - " SPACE4-1, !- Zone or ZoneList Name", - " EQUIP-1, !- Schedule Name", - " EquipmentLevel, !- Design Level Calculation Method", - " 4560, !- Design Level {W}", - " , !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.5, !- Fraction Latent", - " 0.3, !- Fraction Radiant", - " 0; !- Fraction Lost", - - " ZoneInfiltration:DesignFlowRate,", - " SPACE1-1 Infil 1, !- Name", - " SPACE1-1, !- Zone or ZoneList Name", - " INFIL-SCH, !- Schedule Name", - " flow/zone, !- Design Flow Rate Calculation Method", - " 0.0167, !- Design Flow Rate {m3/s}", - " , !- Flow per Zone Floor Area {m3/s-m2}", - " , !- Flow per Exterior Surface Area {m3/s-m2}", - " , !- Air Changes per Hour {1/hr}", - " 0, !- Constant Term Coefficient", - " 0, !- Temperature Term Coefficient", - " 0.2237, !- Velocity Term Coefficient", - " 0; !- Velocity Squared Term Coefficient", - - " ZoneInfiltration:DesignFlowRate,", - " SPACE2-1 Infil 1, !- Name", - " SPACE2-1, !- Zone or ZoneList Name", - " INFIL-SCH, !- Schedule Name", - " flow/zone, !- Design Flow Rate Calculation Method", - " 0.00717, !- Design Flow Rate {m3/s}", - " , !- Flow per Zone Floor Area {m3/s-m2}", - " , !- Flow per Exterior Surface Area {m3/s-m2}", - " , !- Air Changes per Hour {1/hr}", - " 0, !- Constant Term Coefficient", - " 0, !- Temperature Term Coefficient", - " 0.2237, !- Velocity Term Coefficient", - " 0; !- Velocity Squared Term Coefficient", - - " ZoneInfiltration:DesignFlowRate,", - " SPACE3-1 Infil 1, !- Name", - " SPACE3-1, !- Zone or ZoneList Name", - " INFIL-SCH, !- Schedule Name", - " flow/zone, !- Design Flow Rate Calculation Method", - " 0.0167, !- Design Flow Rate {m3/s}", - " , !- Flow per Zone Floor Area {m3/s-m2}", - " , !- Flow per Exterior Surface Area {m3/s-m2}", - " , !- Air Changes per Hour {1/hr}", - " 0, !- Constant Term Coefficient", - " 0, !- Temperature Term Coefficient", - " 0.2237, !- Velocity Term Coefficient", - " 0; !- Velocity Squared Term Coefficient", - - " ZoneInfiltration:DesignFlowRate,", - " SPACE4-1 Infil 1, !- Name", - " SPACE4-1, !- Zone or ZoneList Name", - " INFIL-SCH, !- Schedule Name", - " flow/zone, !- Design Flow Rate Calculation Method", - " 0.00717, !- Design Flow Rate {m3/s}", - " , !- Flow per Zone Floor Area {m3/s-m2}", - " , !- Flow per Exterior Surface Area {m3/s-m2}", - " , !- Air Changes per Hour {1/hr}", - " 0, !- Constant Term Coefficient", - " 0, !- Temperature Term Coefficient", - " 0.2237, !- Velocity Term Coefficient", - " 0; !- Velocity Squared Term Coefficient", - - " Sizing:Zone,", - " SPACE1-1, !- Zone or ZoneList Name", - " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", - " 14., !- Zone Cooling Design Supply Air Temperature {C}", - " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", - " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", - " 50., !- Zone Heating Design Supply Air Temperature {C}", - " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", - " 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " SZ DSOA SPACE1-1, !- Design Specification Outdoor Air Object Name", - " 0.0, !- Zone Heating Sizing Factor", - " 0.0, !- Zone Cooling Sizing Factor", - " DesignDayWithLimit, !- Cooling Design Air Flow Method", - " , !- Cooling Design Air Flow Rate {m3/s}", - " , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", - " , !- Cooling Minimum Air Flow {m3/s}", - " , !- Cooling Minimum Air Flow Fraction", - " DesignDay, !- Heating Design Air Flow Method", - " , !- Heating Design Air Flow Rate {m3/s}", - " , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", - " , !- Heating Maximum Air Flow {m3/s}", - " ; !- Heating Maximum Air Flow Fraction", - - " DesignSpecification:OutdoorAir,", - " SZ DSOA SPACE1-1, !- Name", - " sum, !- Outdoor Air Method", - " 0.00236, !- Outdoor Air Flow per Person {m3/s-person}", - " 0.000305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}", - " 0.0; !- Outdoor Air Flow per Zone {m3/s}", - - " Sizing:Zone,", - " SPACE2-1, !- Zone or ZoneList Name", - " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", - " 14., !- Zone Cooling Design Supply Air Temperature {C}", - " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", - " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", - " 50., !- Zone Heating Design Supply Air Temperature {C}", - " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", - " 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " SZ DSOA SPACE2-1, !- Design Specification Outdoor Air Object Name", - " 0.0, !- Zone Heating Sizing Factor", - " 0.0, !- Zone Cooling Sizing Factor", - " DesignDayWithLimit, !- Cooling Design Air Flow Method", - " , !- Cooling Design Air Flow Rate {m3/s}", - " , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", - " , !- Cooling Minimum Air Flow {m3/s}", - " , !- Cooling Minimum Air Flow Fraction", - " DesignDay, !- Heating Design Air Flow Method", - " , !- Heating Design Air Flow Rate {m3/s}", - " , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", - " , !- Heating Maximum Air Flow {m3/s}", - " ; !- Heating Maximum Air Flow Fraction", - - " DesignSpecification:OutdoorAir,", - " SZ DSOA SPACE2-1, !- Name", - " sum, !- Outdoor Air Method", - " 0.00236, !- Outdoor Air Flow per Person {m3/s-person}", - " 0.000305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}", - " 0.0; !- Outdoor Air Flow per Zone {m3/s}", - - " Sizing:Zone,", - " SPACE3-1, !- Zone or ZoneList Name", - " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", - " 14., !- Zone Cooling Design Supply Air Temperature {C}", - " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", - " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", - " 50., !- Zone Heating Design Supply Air Temperature {C}", - " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", - " 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " SZ DSOA SPACE3-1, !- Design Specification Outdoor Air Object Name", - " 0.0, !- Zone Heating Sizing Factor", - " 0.0, !- Zone Cooling Sizing Factor", - " DesignDayWithLimit, !- Cooling Design Air Flow Method", - " , !- Cooling Design Air Flow Rate {m3/s}", - " , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", - " , !- Cooling Minimum Air Flow {m3/s}", - " , !- Cooling Minimum Air Flow Fraction", - " DesignDay, !- Heating Design Air Flow Method", - " , !- Heating Design Air Flow Rate {m3/s}", - " , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", - " , !- Heating Maximum Air Flow {m3/s}", - " ; !- Heating Maximum Air Flow Fraction", - - " DesignSpecification:OutdoorAir,", - " SZ DSOA SPACE3-1, !- Name", - " sum, !- Outdoor Air Method", - " 0.00236, !- Outdoor Air Flow per Person {m3/s-person}", - " 0.000305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}", - " 0.0; !- Outdoor Air Flow per Zone {m3/s}", - - " Sizing:Zone,", - " SPACE4-1, !- Zone or ZoneList Name", - " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", - " 14., !- Zone Cooling Design Supply Air Temperature {C}", - " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", - " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", - " 50., !- Zone Heating Design Supply Air Temperature {C}", - " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", - " 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " SZ DSOA SPACE4-1, !- Design Specification Outdoor Air Object Name", - " 0.0, !- Zone Heating Sizing Factor", - " 0.0, !- Zone Cooling Sizing Factor", - " DesignDayWithLimit, !- Cooling Design Air Flow Method", - " , !- Cooling Design Air Flow Rate {m3/s}", - " , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", - " , !- Cooling Minimum Air Flow {m3/s}", - " , !- Cooling Minimum Air Flow Fraction", - " DesignDay, !- Heating Design Air Flow Method", - " , !- Heating Design Air Flow Rate {m3/s}", - " , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", - " , !- Heating Maximum Air Flow {m3/s}", - " ; !- Heating Maximum Air Flow Fraction", - - " DesignSpecification:OutdoorAir,", - " SZ DSOA SPACE4-1, !- Name", - " sum, !- Outdoor Air Method", - " 0.00236, !- Outdoor Air Flow per Person {m3/s-person}", - " 0.000305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}", - " 0.0; !- Outdoor Air Flow per Zone {m3/s}", - - " Sizing:System,", - " VAV Sys 1, !- AirLoop Name", - " sensible, !- Type of Load to Size On", - " autosize, !- Design Outdoor Air Flow Rate {m3/s}", - " 0.3, !- Central Heating Maximum System Air Flow Ratio", - " 4.5, !- Preheat Design Temperature {C}", - " 0.008, !- Preheat Design Humidity Ratio {kgWater/kgDryAir}", - " 11.0, !- Precool Design Temperature {C}", - " 0.008, !- Precool Design Humidity Ratio {kgWater/kgDryAir}", - " 12.8, !- Central Cooling Design Supply Air Temperature {C}", - " 16.7, !- Central Heating Design Supply Air Temperature {C}", - " noncoincident, !- Type of Zone Sum to Use", - " no, !- 100% Outdoor Air in Cooling", - " no, !- 100% Outdoor Air in Heating", - " 0.008, !- Central Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " 0.008, !- Central Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " DesignDay, !- Cooling Design Air Flow Method", - " 0, !- Cooling Design Air Flow Rate {m3/s}", - " , !- Supply Air Flow Rate Per Floor Area During Cooling Operation {m3/s-m2}", - " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", - " , !- Design Supply Air Flow Rate Per Unit Cooling Capacity {m3/s-W}", - " DesignDay, !- Heating Design Air Flow Method", - " 0, !- Heating Design Air Flow Rate {m3/s}", - " , !- Supply Air Flow Rate Per Floor Area During Heating Operation {m3/s-m2}", - " , !- Fraction of Autosized Design Heating Supply Air Flow Rate", - " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", - " , !- Design Supply Air Flow Rate Per Unit Heating Capacity {m3/s-W}", - " , !- System Outdoor Air Method", - " 1.0, !- Zone Maximum Outdoor Air Fraction {dimensionless}", - " CoolingDesignCapacity, !- Cooling Design Capacity Method", - " autosize, !- Cooling Design Capacity {W}", - " , !- Cooling Design Capacity Per Floor Area {W/m2}", - " , !- Fraction of Autosized Cooling Design Capacity", - " HeatingDesignCapacity, !- Heating Design Capacity Method", - " autosize, !- Heating Design Capacity {W}", - " , !- Heating Design Capacity Per Floor Area {W/m2}", - " , !- Fraction of Autosized Heating Design Capacity", - " VAV; !- Central Cooling Capacity Control Method", - - " Curve:Biquadratic,", - " VarSpeedCoolCapFT, !- Name", - " 0.476428E+00, !- Coefficient1 Constant", - " 0.401147E-01, !- Coefficient2 x", - " 0.226411E-03, !- Coefficient3 x**2", - " -0.827136E-03, !- Coefficient4 y", - " -0.732240E-05, !- Coefficient5 y**2", - " -0.446278E-03, !- Coefficient6 x*y", - " 12.77778, !- Minimum Value of x", - " 23.88889, !- Maximum Value of x", - " 23.88889, !- Minimum Value of y", - " 46.11111, !- Maximum Value of y", - " , !- Minimum Curve Output", - " , !- Maximum Curve Output", - " Temperature, !- Input Unit Type for X", - " Temperature, !- Input Unit Type for Y", - " Dimensionless; !- Output Unit Type", - - " Curve:Biquadratic,", - " VarSpeedCoolEIRFT, !- Name", - " 0.632475E+00, !- Coefficient1 Constant", - " -0.121321E-01, !- Coefficient2 x", - " 0.507773E-03, !- Coefficient3 x**2", - " 0.155377E-01, !- Coefficient4 y", - " 0.272840E-03, !- Coefficient5 y**2", - " -0.679201E-03, !- Coefficient6 x*y", - " 12.77778, !- Minimum Value of x", - " 23.88889, !- Maximum Value of x", - " 23.88889, !- Minimum Value of y", - " 46.11111, !- Maximum Value of y", - " , !- Minimum Curve Output", - " , !- Maximum Curve Output", - " Temperature, !- Input Unit Type for X", - " Temperature, !- Input Unit Type for Y", - " Dimensionless; !- Output Unit Type", - - " Curve:Biquadratic,", - " VarSpeedCoolCapLSFT, !- Name", - " 0.476428E+00, !- Coefficient1 Constant", - " 0.401147E-01, !- Coefficient2 x", - " 0.226411E-03, !- Coefficient3 x**2", - " -0.827136E-03, !- Coefficient4 y", - " -0.732240E-05, !- Coefficient5 y**2", - " -0.446278E-03, !- Coefficient6 x*y", - " 12.77778, !- Minimum Value of x", - " 23.88889, !- Maximum Value of x", - " 23.88889, !- Minimum Value of y", - " 46.11111, !- Maximum Value of y", - " , !- Minimum Curve Output", - " , !- Maximum Curve Output", - " Temperature, !- Input Unit Type for X", - " Temperature, !- Input Unit Type for Y", - " Dimensionless; !- Output Unit Type", - - " Curve:Biquadratic,", - " VarSpeedCoolEIRLSFT, !- Name", - " 0.774645E+00, !- Coefficient1 Constant", - " -0.343731E-01, !- Coefficient2 x", - " 0.783173E-03, !- Coefficient3 x**2", - " 0.146596E-01, !- Coefficient4 y", - " 0.488851E-03, !- Coefficient5 y**2", - " -0.752036E-03, !- Coefficient6 x*y", - " 12.77778, !- Minimum Value of x", - " 23.88889, !- Maximum Value of x", - " 23.88889, !- Minimum Value of y", - " 46.11111, !- Maximum Value of y", - " , !- Minimum Curve Output", - " , !- Maximum Curve Output", - " Temperature, !- Input Unit Type for X", - " Temperature, !- Input Unit Type for Y", - " Dimensionless; !- Output Unit Type", - - " Curve:Biquadratic,", - " HPACCoolCapFT, !- Name", - " 0.942587793, !- Coefficient1 Constant", - " 0.009543347, !- Coefficient2 x", - " 0.00068377, !- Coefficient3 x**2", - " -0.011042676, !- Coefficient4 y", - " 0.000005249, !- Coefficient5 y**2", - " -0.00000972, !- Coefficient6 x*y", - " -100, !- Minimum Value of x", - " 100, !- Maximum Value of x", - " -100, !- Minimum Value of y", - " 100, !- Maximum Value of y", - " , !- Minimum Curve Output", - " , !- Maximum Curve Output", - " Temperature, !- Input Unit Type for X", - " Temperature, !- Input Unit Type for Y", - " Dimensionless; !- Output Unit Type", - - " Curve:Biquadratic,", - " HPACCOOLEIRFT, !- Name", - " 0.342414409, !- Coefficient1 Constant", - " 0.034885008, !- Coefficient2 x", - " -0.0006237, !- Coefficient3 x**2", - " 0.004977216, !- Coefficient4 y", - " 0.000437951, !- Coefficient5 y**2", - " -0.000728028, !- Coefficient6 x*y", - " -100, !- Minimum Value of x", - " 100, !- Maximum Value of x", - " -100, !- Minimum Value of y", - " 100, !- Maximum Value of y", - " , !- Minimum Curve Output", - " , !- Maximum Curve Output", - " Temperature, !- Input Unit Type for X", - " Temperature, !- Input Unit Type for Y", - " Dimensionless; !- Output Unit Type", - - " Curve:Quadratic,", - " HPACCoolCapFFF, !- Name", - " 0.8, !- Coefficient1 Constant", - " 0.2, !- Coefficient2 x", - " 0.0, !- Coefficient3 x**2", - " 0.0, !- Minimum Value of x", - " 1.0; !- Maximum Value of x", - - " Curve:Quadratic,", - " HPACCOOLEIRFFF, !- Name", - " 1.1552, !- Coefficient1 Constant", - " -0.1808, !- Coefficient2 x", - " 0.0256, !- Coefficient3 x**2", - " 0.0, !- Minimum Value of x", - " 1.0; !- Maximum Value of x", - - " Curve:Quadratic,", - " HPACCOOLPLFFPLR, !- Name", - " 0.75, !- Coefficient1 Constant", - " 0.25, !- Coefficient2 x", - " 0.0, !- Coefficient3 x**2", - " 0.0, !- Minimum Value of x", - " 1.0; !- Maximum Value of x", - - " Curve:Cubic,", - " PackagedRatedCoolCapFFlow, !- Name", - " 0.47278589, !- Coefficient1 Constant", - " 1.2433415, !- Coefficient2 x", - " -1.0387055, !- Coefficient3 x**2", - " 0.32257813, !- Coefficient4 x**3", - " 0.5, !- Minimum Value of x", - " 1.5, !- Maximum Value of x", - " , !- Minimum Curve Output", - " , !- Maximum Curve Output", - " Dimensionless, !- Input Unit Type for X", - " Dimensionless; !- Output Unit Type", - - " Curve:Cubic,", - " PackagedRatedCoolEIRFFlow, !- Name", - " 1.0079484, !- Coefficient1 Constant", - " 0.34544129, !- Coefficient2 x", - " -.6922891, !- Coefficient3 x**2", - " 0.33889943, !- Coefficient4 x**3", - " 0.5, !- Minimum Value of x", - " 1.5, !- Maximum Value of x", - " , !- Minimum Curve Output", - " , !- Maximum Curve Output", - " Dimensionless, !- Input Unit Type for X", - " Dimensionless; !- Output Unit Type", - - " Curve:Cubic,", - " EXHAUSTFANPLF, !- Name", - " 0, !- Coefficient1 Constant", - " 1, !- Coefficient2 x", - " 0.0, !- Coefficient3 x**2", - " 0.0, !- Coefficient4 x**3", - " 0.0, !- Minimum Value of x", - " 1.0; !- Maximum Value of x", - - " Curve:Quadratic,", - " VarSpeedCyclingPLFFPLR, !- Name", - " 0.85, !- Coefficient1 Constant", - " 0.15, !- Coefficient2 x", - " 0.0, !- Coefficient3 x**2", - " 0.0, !- Minimum Value of x", - " 1.0; !- Maximum Value of x", - - " NodeList,", - " OutsideAirInletNodes, !- Name", - " Outside Air Inlet Node; !- Node 1 Name", - - " NodeList,", - " SPACE1-1 In Nodes, !- Name", - " SPACE1-1 In Node; !- Node 1 Name", - - " NodeList,", - " SPACE2-1 In Nodes, !- Name", - " SPACE2-1 In Node; !- Node 1 Name", - - " NodeList,", - " SPACE3-1 In Nodes, !- Name", - " SPACE3-1 In Node; !- Node 1 Name", - - " NodeList,", - " SPACE4-1 In Nodes, !- Name", - " SPACE4-1 In Node; !- Node 1 Name", - - " NodeList,", - " Supply Air Temp Nodes 1, !- Name", - " VAV Sys 1 Outlet Node; !- Node 1 Name", - - " NodeList,", - " Supply Fan Upstream Nodes, !- Name", - " Mixed Air Node 1, !- Node 1 Name", - " Main Cooling Coil 1 Outlet Node, !- Node 2 Name", - " Main Heating Coil 1 Outlet Node; !- Node 3 Name", - - " BranchList,", - " VAV Sys 1 Branches, !- Name", - " VAV Sys 1 Main Branch; !- Branch 1 Name", - - " Branch,", - " VAV Sys 1 Main Branch, !- Name", - " , !- Pressure Drop Curve Name", - " AirLoopHVAC:OutdoorAirSystem, !- Component 1 Object Type", - " OA Sys 1, !- Component 1 Name", - " VAV Sys 1 Inlet Node, !- Component 1 Inlet Node Name", - " Mixed Air Node 1, !- Component 1 Outlet Node Name", - " CoilSystem:Cooling:DX, !- Component 2 Object Type", - " DX Cooling Coil System 1,!- Component 2 Name", - " Mixed Air Node 1, !- Component 2 Inlet Node Name", - " Main Cooling Coil 1 Outlet Node, !- Component 2 Outlet Node Name", - " Coil:Heating:Fuel, !- Component 3 Object Type", - " Main Heating Coil 1, !- Component 3 Name", - " Main Cooling Coil 1 Outlet Node, !- Component 3 Inlet Node Name", - " Main Heating Coil 1 Outlet Node, !- Component 3 Outlet Node Name", - " Fan:VariableVolume, !- Component 4 Object Type", - " Supply Fan 1, !- Component 4 Name", - " Main Heating Coil 1 Outlet Node, !- Component 4 Inlet Node Name", - " VAV Sys 1 Outlet Node; !- Component 4 Outlet Node Name", - - " AirLoopHVAC,", - " VAV Sys 1, !- Name", - " , !- Controller List Name", - " VAV Sys 1 Avail List, !- Availability Manager List Name", - " autosize, !- Design Supply Air Flow Rate {m3/s}", - " VAV Sys 1 Branches, !- Branch List Name", - " , !- Connector List Name", - " VAV Sys 1 Inlet Node, !- Supply Side Inlet Node Name", - " PLENUM-1 Out Node, !- Demand Side Outlet Node Name", - " Zone Eq In Node, !- Demand Side Inlet Node Names", - " VAV Sys 1 Outlet Node; !- Supply Side Outlet Node Names", - - " AirLoopHVAC:ControllerList,", - " OA Sys 1 Controllers, !- Name", - " Controller:OutdoorAir, !- Controller 1 Object Type", - " OA Controller 1; !- Controller 1 Name", - - " AirLoopHVAC:OutdoorAirSystem:EquipmentList,", - " OA Sys 1 Equipment, !- Name", - " Dehumidifier:Desiccant:System, !- Component 1 Object Type", - " OA Desiccant System, !- Component 1 Name", - " HeatExchanger:AirToAir:FlatPlate, !- Component 2 Object Type", - " OA Heat Recovery, !- Component 2 Name", - " OutdoorAir:Mixer, !- Component 3 Object Type", - " OA Mixing Box 1; !- Component 3 Name", - - " AirLoopHVAC:OutdoorAirSystem,", - " OA Sys 1, !- Name", - " OA Sys 1 Controllers, !- Controller List Name", - " OA Sys 1 Equipment, !- Outdoor Air Equipment List Name", - " VAV Sys 1 Avail List; !- Availability Manager List Name", - - " OutdoorAir:Node,", - " Main Cooling Coil 1 Condenser Node, !- Name", - " -1.0; !- Height Above Ground {m}", - - " OutdoorAir:NodeList,", - " OutsideAirInletNodes; !- Node or NodeList Name 1", - - " OutdoorAir:NodeList,", - " Desiccant DXSystem Outside Air Inlet Node, !- Node or NodeList Name 1", - " Desiccant Outside Air Inlet Node 2; !- Node or NodeList Name 2", - - " OutdoorAir:NodeList,", - " Regen Coil Inlet Node; !- Node or NodeList Name 1", - - " OutdoorAir:NodeList,", - " Condenser Inlet Node; !- Node or NodeList Name 1", - - " OutdoorAir:Mixer,", - " OA Mixing Box 1, !- Name", - " Mixed Air Node 1, !- Mixed Air Node Name", - " OA Heat Recovery Outlet Node, !- Outdoor Air Stream Node Name", - " Relief Air Outlet Node, !- Relief Air Stream Node Name", - " VAV Sys 1 Inlet Node; !- Return Air Stream Node Name", - - " AvailabilityManagerAssignmentList,", - " VAV Sys 1 Avail List, !- Name", - " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", - " VAV Sys 1 Avail; !- Availability Manager 1 Name", - - " AvailabilityManagerAssignmentList,", - " Desiccant Outdoor Air Avail List, !- Name", - " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", - " Desiccant Outdoor Air Avail; !- Availability Manager 1 Name", - - " AvailabilityManager:Scheduled,", - " VAV Sys 1 Avail, !- Name", - " FanAvailSched; !- Schedule Name", - - " AvailabilityManager:Scheduled,", - " Desiccant Outdoor Air Avail, !- Name", - " FanAvailSched; !- Schedule Name", - - " SetpointManager:Scheduled,", - " Supply Air Temp Manager 1, !- Name", - " Temperature, !- Control Variable", - " Seasonal Reset Supply Air Temp Sch, !- Schedule Name", - " Supply Air Temp Nodes 1; !- Setpoint Node or NodeList Name", - - " SetpointManager:MixedAir,", - " Mixed Air and Coil Exit Temp Manager 1, !- Name", - " Temperature, !- Control Variable", - " VAV Sys 1 Outlet Node, !- Reference Setpoint Node Name", - " Main Heating Coil 1 Outlet Node, !- Fan Inlet Node Name", - " VAV Sys 1 Outlet Node, !- Fan Outlet Node Name", - " Supply Fan Upstream Nodes; !- Setpoint Node or NodeList Name", - - " SetpointManager:MixedAir,", - " Adjusted Cooling Supply Air Temp Manager, !- Name", - " Temperature, !- Control Variable", - " Desiccant Supply Fan Outlet Node, !- Reference Setpoint Node Name", - " HX Process Outlet Node, !- Fan Inlet Node Name", - " Desiccant Supply Fan Outlet Node, !- Fan Outlet Node Name", - " HX Process Outlet Node; !- Setpoint Node or NodeList Name", - - " Controller:OutdoorAir,", - " OA Controller 1, !- Name", - " Relief Air Outlet Node, !- Relief Air Outlet Node Name", - " VAV Sys 1 Inlet Node, !- Return Air Node Name", - " Mixed Air Node 1, !- Mixed Air Node Name", - " Outside Air Inlet Node, !- Actuator Node Name", - " autosize, !- Minimum Outdoor Air Flow Rate {m3/s}", - " autosize, !- Maximum Outdoor Air Flow Rate {m3/s}", - " FixedDryBulb, !- Economizer Control Type", - " ModulateFlow, !- Economizer Control Action Type", - " 19., !- Economizer Maximum Limit Dry-Bulb Temperature {C}", - " , !- Economizer Maximum Limit Enthalpy {J/kg}", - " , !- Economizer Maximum Limit Dewpoint Temperature {C}", - " , !- Electronic Enthalpy Limit Curve Name", - " 4., !- Economizer Minimum Limit Dry-Bulb Temperature {C}", - " NoLockout, !- Lockout Type", - " FixedMinimum, !- Minimum Limit Type", - " Min OA Sched; !- Minimum Outdoor Air Schedule Name", - - " ZoneHVAC:EquipmentConnections,", - " SPACE1-1, !- Zone Name", - " SPACE1-1 Eq, !- Zone Conditioning Equipment List Name", - " SPACE1-1 In Nodes, !- Zone Air Inlet Node or NodeList Name", - " , !- Zone Air Exhaust Node or NodeList Name", - " SPACE1-1 Node, !- Zone Air Node Name", - " SPACE1-1 Out Node; !- Zone Return Air Node Name", - - " ZoneHVAC:EquipmentConnections,", - " SPACE2-1, !- Zone Name", - " SPACE2-1 Eq, !- Zone Conditioning Equipment List Name", - " SPACE2-1 In Nodes, !- Zone Air Inlet Node or NodeList Name", - " , !- Zone Air Exhaust Node or NodeList Name", - " SPACE2-1 Node, !- Zone Air Node Name", - " SPACE2-1 Out Node; !- Zone Return Air Node Name", - - " ZoneHVAC:EquipmentConnections,", - " SPACE3-1, !- Zone Name", - " SPACE3-1 Eq, !- Zone Conditioning Equipment List Name", - " SPACE3-1 In Nodes, !- Zone Air Inlet Node or NodeList Name", - " , !- Zone Air Exhaust Node or NodeList Name", - " SPACE3-1 Node, !- Zone Air Node Name", - " SPACE3-1 Out Node; !- Zone Return Air Node Name", - - " ZoneHVAC:EquipmentConnections,", - " SPACE4-1, !- Zone Name", - " SPACE4-1 Eq, !- Zone Conditioning Equipment List Name", - " SPACE4-1 In Nodes, !- Zone Air Inlet Node or NodeList Name", - " , !- Zone Air Exhaust Node or NodeList Name", - " SPACE4-1 Node, !- Zone Air Node Name", - " SPACE4-1 Out Node; !- Zone Return Air Node Name", - - " ZoneHVAC:EquipmentList,", - " SPACE1-1 Eq, !- Name", - " SequentialLoad, !- Load Distribution Scheme", - " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", - " SPACE1-1 ATU, !- Zone Equipment 1 Name", - " 1, !- Zone Equipment 1 Cooling Sequence", - " 1; !- Zone Equipment 1 Heating or No-Load Sequence", - - " ZoneHVAC:EquipmentList,", - " SPACE2-1 Eq, !- Name", - " SequentialLoad, !- Load Distribution Scheme", - " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", - " SPACE2-1 ATU, !- Zone Equipment 1 Name", - " 1, !- Zone Equipment 1 Cooling Sequence", - " 1; !- Zone Equipment 1 Heating or No-Load Sequence", - - " ZoneHVAC:EquipmentList,", - " SPACE3-1 Eq, !- Name", - " SequentialLoad, !- Load Distribution Scheme", - " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", - " SPACE3-1 ATU, !- Zone Equipment 1 Name", - " 1, !- Zone Equipment 1 Cooling Sequence", - " 1; !- Zone Equipment 1 Heating or No-Load Sequence", - - " ZoneHVAC:EquipmentList,", - " SPACE4-1 Eq, !- Name", - " SequentialLoad, !- Load Distribution Scheme", - " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", - " SPACE4-1 ATU, !- Zone Equipment 1 Name", - " 1, !- Zone Equipment 1 Cooling Sequence", - " 1; !- Zone Equipment 1 Heating or No-Load Sequence", - - " ZoneHVAC:AirDistributionUnit,", - " SPACE1-1 ATU, !- Name", - " SPACE1-1 In Node, !- Air Distribution Unit Outlet Node Name", - " AirTerminal:SingleDuct:VAV:Reheat, !- Air Terminal Object Type", - " SPACE1-1 VAV Reheat; !- Air Terminal Name", - - " ZoneHVAC:AirDistributionUnit,", - " SPACE2-1 ATU, !- Name", - " SPACE2-1 In Node, !- Air Distribution Unit Outlet Node Name", - " AirTerminal:SingleDuct:VAV:Reheat, !- Air Terminal Object Type", - " SPACE2-1 VAV Reheat; !- Air Terminal Name", - - " ZoneHVAC:AirDistributionUnit,", - " SPACE3-1 ATU, !- Name", - " SPACE3-1 In Node, !- Air Distribution Unit Outlet Node Name", - " AirTerminal:SingleDuct:VAV:Reheat, !- Air Terminal Object Type", - " SPACE3-1 VAV Reheat; !- Air Terminal Name", - - " ZoneHVAC:AirDistributionUnit,", - " SPACE4-1 ATU, !- Name", - " SPACE4-1 In Node, !- Air Distribution Unit Outlet Node Name", - " AirTerminal:SingleDuct:VAV:Reheat, !- Air Terminal Object Type", - " SPACE4-1 VAV Reheat; !- Air Terminal Name", - - " CoilSystem:Cooling:DX,", - " DX Cooling Coil System 1,!- Name", - " FanAvailSched, !- Availability Schedule Name", - " Mixed Air Node 1, !- DX Cooling Coil System Inlet Node Name", - " Main Cooling Coil 1 Outlet Node, !- DX Cooling Coil System Outlet Node Name", - " Main Cooling Coil 1 Outlet Node, !- DX Cooling Coil System Sensor Node Name", - " Coil:Cooling:DX:TwoSpeed,!- Cooling Coil Object Type", - " Main Cooling Coil 1; !- Cooling Coil Name", - - " AirTerminal:SingleDuct:VAV:Reheat,", - " SPACE1-1 VAV Reheat, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " SPACE1-1 Zone Coil Air In Node, !- Damper Air Outlet Node Name", - " SPACE1-1 ATU In Node, !- Air Inlet Node Name", - " autosize, !- Maximum Air Flow Rate {m3/s}", - " Constant, !- Zone Minimum Air Flow Input Method", - " 0.3, !- Constant Minimum Air Flow Fraction", - " , !- Fixed Minimum Air Flow Rate {m3/s}", - " , !- Minimum Air Flow Fraction Schedule Name", - " Coil:Heating:Fuel, !- Reheat Coil Object Type", - " SPACE1-1 Zone Coil, !- Reheat Coil Name", - " 0.0, !- Maximum Hot Water or Steam Flow Rate {m3/s}", - " 0.0, !- Minimum Hot Water or Steam Flow Rate {m3/s}", - " SPACE1-1 In Node, !- Air Outlet Node Name", - " 0.001, !- Convergence Tolerance", - " Reverse, !- Damper Heating Action", - " AUTOCALCULATE, !- Maximum Flow per Zone Floor Area During Reheat {m3/s-m2}", - " AUTOCALCULATE; !- Maximum Flow Fraction During Reheat", - - " AirTerminal:SingleDuct:VAV:Reheat,", - " SPACE2-1 VAV Reheat, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " SPACE2-1 Zone Coil Air In Node, !- Damper Air Outlet Node Name", - " SPACE2-1 ATU In Node, !- Air Inlet Node Name", - " autosize, !- Maximum Air Flow Rate {m3/s}", - " Constant, !- Zone Minimum Air Flow Input Method", - " 0.3, !- Constant Minimum Air Flow Fraction", - " , !- Fixed Minimum Air Flow Rate {m3/s}", - " , !- Minimum Air Flow Fraction Schedule Name", - " Coil:Heating:Fuel, !- Reheat Coil Object Type", - " SPACE2-1 Zone Coil, !- Reheat Coil Name", - " 0.0, !- Maximum Hot Water or Steam Flow Rate {m3/s}", - " 0.0, !- Minimum Hot Water or Steam Flow Rate {m3/s}", - " SPACE2-1 In Node, !- Air Outlet Node Name", - " 0.001, !- Convergence Tolerance", - " Reverse, !- Damper Heating Action", - " AUTOCALCULATE, !- Maximum Flow per Zone Floor Area During Reheat {m3/s-m2}", - " AUTOCALCULATE; !- Maximum Flow Fraction During Reheat", - - " AirTerminal:SingleDuct:VAV:Reheat,", - " SPACE3-1 VAV Reheat, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " SPACE3-1 Zone Coil Air In Node, !- Damper Air Outlet Node Name", - " SPACE3-1 ATU In Node, !- Air Inlet Node Name", - " autosize, !- Maximum Air Flow Rate {m3/s}", - " Constant, !- Zone Minimum Air Flow Input Method", - " 0.3, !- Constant Minimum Air Flow Fraction", - " , !- Fixed Minimum Air Flow Rate {m3/s}", - " , !- Minimum Air Flow Fraction Schedule Name", - " Coil:Heating:Fuel, !- Reheat Coil Object Type", - " SPACE3-1 Zone Coil, !- Reheat Coil Name", - " 0.0, !- Maximum Hot Water or Steam Flow Rate {m3/s}", - " 0.0, !- Minimum Hot Water or Steam Flow Rate {m3/s}", - " SPACE3-1 In Node, !- Air Outlet Node Name", - " 0.001, !- Convergence Tolerance", - " Reverse, !- Damper Heating Action", - " AUTOCALCULATE, !- Maximum Flow per Zone Floor Area During Reheat {m3/s-m2}", - " AUTOCALCULATE; !- Maximum Flow Fraction During Reheat", - - " AirTerminal:SingleDuct:VAV:Reheat,", - " SPACE4-1 VAV Reheat, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " SPACE4-1 Zone Coil Air In Node, !- Damper Air Outlet Node Name", - " SPACE4-1 ATU In Node, !- Air Inlet Node Name", - " autosize, !- Maximum Air Flow Rate {m3/s}", - " Constant, !- Zone Minimum Air Flow Input Method", - " 0.3, !- Constant Minimum Air Flow Fraction", - " , !- Fixed Minimum Air Flow Rate {m3/s}", - " , !- Minimum Air Flow Fraction Schedule Name", - " Coil:Heating:Fuel, !- Reheat Coil Object Type", - " SPACE4-1 Zone Coil, !- Reheat Coil Name", - " 0.0, !- Maximum Hot Water or Steam Flow Rate {m3/s}", - " 0.0, !- Minimum Hot Water or Steam Flow Rate {m3/s}", - " SPACE4-1 In Node, !- Air Outlet Node Name", - " 0.001, !- Convergence Tolerance", - " Reverse, !- Damper Heating Action", - " AUTOCALCULATE, !- Maximum Flow per Zone Floor Area During Reheat {m3/s-m2}", - " AUTOCALCULATE; !- Maximum Flow Fraction During Reheat", - - " ZoneControl:Thermostat,", - " SPACE1-1 Control, !- Name", - " SPACE1-1, !- Zone or ZoneList Name", - " Zone Control Type Sched, !- Control Type Schedule Name", - " ThermostatSetpoint:SingleCooling, !- Control 1 Object Type", - " CoolingSetPoint, !- Control 1 Name", - " ThermostatSetpoint:SingleHeating, !- Control 2 Object Type", - " HeatingSetpoint, !- Control 2 Name", - " ThermostatSetpoint:DualSetpoint, !- Control 3 Object Type", - " DualSetPoint; !- Control 3 Name", - - " ZoneControl:Thermostat,", - " SPACE2-1 Control, !- Name", - " SPACE2-1, !- Zone or ZoneList Name", - " Zone Control Type Sched, !- Control Type Schedule Name", - " ThermostatSetpoint:SingleCooling, !- Control 1 Object Type", - " CoolingSetPoint, !- Control 1 Name", - " ThermostatSetpoint:SingleHeating, !- Control 2 Object Type", - " HeatingSetpoint, !- Control 2 Name", - " ThermostatSetpoint:DualSetpoint, !- Control 3 Object Type", - " DualSetPoint; !- Control 3 Name", - - " ZoneControl:Thermostat,", - " SPACE3-1 Control, !- Name", - " SPACE3-1, !- Zone or ZoneList Name", - " Zone Control Type Sched, !- Control Type Schedule Name", - " ThermostatSetpoint:SingleCooling, !- Control 1 Object Type", - " CoolingSetPoint, !- Control 1 Name", - " ThermostatSetpoint:SingleHeating, !- Control 2 Object Type", - " HeatingSetpoint, !- Control 2 Name", - " ThermostatSetpoint:DualSetpoint, !- Control 3 Object Type", - " DualSetPoint; !- Control 3 Name", - - " ZoneControl:Thermostat,", - " SPACE4-1 Control, !- Name", - " SPACE4-1, !- Zone or ZoneList Name", - " Zone Control Type Sched, !- Control Type Schedule Name", - " ThermostatSetpoint:SingleCooling, !- Control 1 Object Type", - " CoolingSetPoint, !- Control 1 Name", - " ThermostatSetpoint:SingleHeating, !- Control 2 Object Type", - " HeatingSetpoint, !- Control 2 Name", - " ThermostatSetpoint:DualSetpoint, !- Control 3 Object Type", - " DualSetPoint; !- Control 3 Name", - - " Schedule:Compact,", - " Relative Humidity Sched, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,45.0; !- Field 3", - - " ThermostatSetpoint:SingleHeating,", - " HeatingSetpoint, !- Name", - " Htg-SetP-Sch; !- Setpoint Temperature Schedule Name", - - " ThermostatSetpoint:SingleHeating,", - " PlenumHeatingSetpoint, !- Name", - " PlenumHtg-SetP-Sch; !- Setpoint Temperature Schedule Name", - - " ThermostatSetpoint:SingleCooling,", - " CoolingSetpoint, !- Name", - " Clg-SetP-Sch; !- Setpoint Temperature Schedule Name", - - " ThermostatSetpoint:SingleCooling,", - " PlenumCoolingSetpoint, !- Name", - " PlenumClg-SetP-Sch; !- Setpoint Temperature Schedule Name", - - " ThermostatSetpoint:DualSetpoint,", - " DualSetPoint, !- Name", - " Htg-SetP-Sch, !- Heating Setpoint Temperature Schedule Name", - " Clg-SetP-Sch; !- Cooling Setpoint Temperature Schedule Name", - - " AirLoopHVAC:SupplyPath,", - " Zone Supply Air Path 1, !- Name", - " Zone Eq In Node, !- Supply Air Path Inlet Node Name", - " AirLoopHVAC:ZoneSplitter,!- Component 1 Object Type", - " Zone Supply Air Splitter 1; !- Component 1 Name", - - " AirLoopHVAC:ReturnPath,", - " ReturnAirPath1, !- Name", - " PLENUM-1 Out Node, !- Return Air Path Outlet Node Name", - " AirLoopHVAC:ReturnPlenum,!- Component 1 Object Type", - " Return-Plenum-1; !- Component 1 Name", - - " AirLoopHVAC:ReturnPlenum,", - " Return-Plenum-1, !- Name", - " PLENUM-1, !- Zone Name", - " PLENUM-1 Node, !- Zone Node Name", - " PLENUM-1 Out Node, !- Outlet Node Name", - " , !- Induced Air Outlet Node or NodeList Name", - " SPACE1-1 Out Node, !- Inlet 1 Node Name", - " SPACE2-1 Out Node, !- Inlet 2 Node Name", - " SPACE3-1 Out Node, !- Inlet 3 Node Name", - " SPACE4-1 Out Node; !- Inlet 4 Node Name", - - " AirLoopHVAC:ZoneSplitter,", - " Zone Supply Air Splitter 1, !- Name", - " Zone Eq In Node, !- Inlet Node Name", - " SPACE1-1 ATU In Node, !- Outlet 1 Node Name", - " SPACE2-1 ATU In Node, !- Outlet 2 Node Name", - " SPACE3-1 ATU In Node, !- Outlet 3 Node Name", - " SPACE4-1 ATU In Node; !- Outlet 4 Node Name", - - " Coil:Heating:Fuel,", - " SPACE1-1 Zone Coil, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " Gas, !- Fuel Type", - " 0.8, !- Gas Burner Efficiency", - " autosize, !- Nominal Capacity {W}", - " SPACE1-1 Zone Coil Air In Node, !- Air Inlet Node Name", - " SPACE1-1 In Node; !- Air Outlet Node Name", - - " Coil:Heating:Fuel,", - " SPACE2-1 Zone Coil, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " Gas, !- Fuel Type", - " 0.8, !- Gas Burner Efficiency", - " autosize, !- Nominal Capacity {W}", - " SPACE2-1 Zone Coil Air In Node, !- Air Inlet Node Name", - " SPACE2-1 In Node; !- Air Outlet Node Name", - - " Coil:Heating:Fuel,", - " SPACE3-1 Zone Coil, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " Gas, !- Fuel Type", - " 0.8, !- Gas Burner Efficiency", - " autosize, !- Nominal Capacity {W}", - " SPACE3-1 Zone Coil Air In Node, !- Air Inlet Node Name", - " SPACE3-1 In Node; !- Air Outlet Node Name", - - " Coil:Heating:Fuel,", - " SPACE4-1 Zone Coil, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " Gas, !- Fuel Type", - " 0.8, !- Gas Burner Efficiency", - " autosize, !- Nominal Capacity {W}", - " SPACE4-1 Zone Coil Air In Node, !- Air Inlet Node Name", - " SPACE4-1 In Node; !- Air Outlet Node Name", - - " Coil:Heating:Fuel,", - " Main heating Coil 1, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " Gas, !- Fuel Type", - " 0.8, !- Gas Burner Efficiency", - " autosize, !- Nominal Capacity {W}", - " Main Cooling Coil 1 Outlet Node, !- Air Inlet Node Name", - " Main Heating Coil 1 Outlet Node, !- Air Outlet Node Name", - " Main Heating Coil 1 Outlet Node; !- Temperature Setpoint Node Name", - - " Coil:Cooling:DX:TwoSpeed,", - " Main Cooling Coil 1, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " autosize, !- High Speed Gross Rated Total Cooling Capacity {W}", - " autosize, !- Gross Rated Sensible Heat Ratio", - " 3.0, !- High Speed Gross Rated Cooling COP {W/W}", - " autosize, !- High Speed Rated Air Flow Rate {m3/s}", - " , !- Unit Internal Static Air Pressure {Pa}", - " Mixed Air Node 1, !- Air Inlet Node Name", - " Main Cooling Coil 1 Outlet Node, !- Air Outlet Node Name", - " VarSpeedCoolCapFT, !- Total Cooling Capacity Function of Temperature Curve Name", - " PackagedRatedCoolCapFFlow, !- Total Cooling Capacity Function of Flow Fraction Curve Name", - " VarSpeedCoolEIRFT, !- Energy Input Ratio Function of Temperature Curve Name", - " PackagedRatedCoolEIRFFlow, !- Energy Input Ratio Function of Flow Fraction Curve Name", - " VarSpeedCyclingPLFFPLR, !- Part Load Fraction Correlation Curve Name", - " autosize, !- Low Speed Gross Rated Total Cooling Capacity {W}", - " autosize, !- Low Speed Gross Rated Sensible Heat Ratio", - " 4.2, !- Low Speed Gross Rated Cooling COP {W/W}", - " autosize, !- Low Speed Rated Air Flow Rate {m3/s}", - " VarSpeedCoolCapLSFT, !- Low Speed Total Cooling Capacity Function of Temperature Curve Name", - " VarSpeedCoolEIRLSFT, !- Low Speed Energy Input Ratio Function of Temperature Curve Name", - " Main Cooling Coil 1 Condenser Node; !- Condenser Air Inlet Node Name", - - " Coil:Cooling:DX:SingleSpeed,", - " Desiccant DXSystem Cooling Coil, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " autosize, !- High Speed Rated Air Flow Rate {m3/s}", - " autosize, !- Gross Rated Sensible Heat Ratio", - " 3.5, !- Gross Rated Cooling COP {W/W}", - " autosize, !- High Speed Rated Air Flow Rate {m3/s}", - " , !- Rated Evaporator Fan Power Per Volume Flow Rate {W/(m3/s)}", - " Desiccant DXSystem Mixed Air Node, !- Air Inlet Node Name", - " HX Process Inlet Node, !- Air Outlet Node Name", - " HPACCoolCapFT, !- Total Cooling Capacity Function of Temperature Curve Name", - " HPACCoolCapFFF, !- Total Cooling Capacity Function of Flow Fraction Curve Name", - " HPACCOOLEIRFT, !- Energy Input Ratio Function of Temperature Curve Name", - " HPACCOOLEIRFFF, !- Energy Input Ratio Function of Flow Fraction Curve Name", - " HPACCOOLPLFFPLR, !- Part Load Fraction Correlation Curve Name", - " , !- Minimum Outdoor Dry-Bulb Temperature for Compressor Operation {C}", - " 1000, !- Nominal Time for Condensate Removal to Begin {s}", - " 0.4, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}", - " 4, !- Maximum Cycling Rate {cycles/hr}", - " 45, !- Latent Capacity Time Constant {s}", - " Condenser Inlet Node, !- Condenser Air Inlet Node Name", - " AirCooled; !- Condenser Type", - - " Fan:VariableVolume,", - " Supply Fan 1, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " 0.7, !- Fan Total Efficiency", - " 600.0, !- Pressure Rise {Pa}", - " autosize, !- Maximum Flow Rate {m3/s}", - " FixedFlowRate, !- Fan Power Minimum Flow Rate Input Method", - " , !- Fan Power Minimum Flow Fraction", - " 0.35326, !- Fan Power Minimum Air Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1.0, !- Motor In Airstream Fraction", - " 0.0015302446, !- Fan Power Coefficient 1", - " 0.0052080574, !- Fan Power Coefficient 2", - " 1.1086242, !- Fan Power Coefficient 3", - " -0.11635563, !- Fan Power Coefficient 4", - " 0.000, !- Fan Power Coefficient 5", - " Main Heating Coil 1 Outlet Node, !- Air Inlet Node Name", - " VAV Sys 1 Outlet Node; !- Air Outlet Node Name", - - " HeatExchanger:AirToAir:FlatPlate,", - " OA Heat Recovery, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " CounterFlow, !- Flow Arrangement Type", - " Yes, !- Economizer Lockout", - " 1.0, !- Ratio of Supply to Secondary hA Values", - " autosize, !- Nominal Supply Air Flow Rate {m3/s}", - " 5.0, !- Nominal Supply Air Inlet Temperature {C}", - " 15.0, !- Nominal Supply Air Outlet Temperature {C}", - " autosize, !- Nominal Secondary Air Flow Rate {m3/s}", - " 20.0, !- Nominal Secondary Air Inlet Temperature {C}", - " 0.0, !- Nominal Electric Power {W}", - " OA Desiccant Process Outlet Node, !- Supply Air Inlet Node Name", - " OA Heat Recovery Outlet Node, !- Supply Air Outlet Node Name", - " Relief Air Outlet Node, !- Secondary Air Inlet Node Name", - " OA Heat Recovery Secondary Outlet Node; !- Secondary Air Outlet Node Name", - - " Fan:OnOff,", - " OA Desiccant Regen Fan, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " 0.7, !- Fan Total Efficiency", - " 205.5, !- Pressure Rise {Pa}", - " autosize, !- Maximum Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1.0, !- Motor In Airstream Fraction", - " OA HX Regen Outlet Node, !- Air Inlet Node Name", - " OA Regen Fan Outlet Node;!- Air Outlet Node Name", - - " Coil:Heating:Fuel,", - " OA Desiccant Regen Coil, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " Gas, !- Fuel Type", - " 0.80, !- Gas Burner Efficiency", - " autosize, !- Nominal Capacity {W}", - " OA Heat Recovery Secondary Outlet Node, !- Air Inlet Node Name", - " OA HX Regen Inlet Node; !- Air Outlet Node Name", - - " Dehumidifier:Desiccant:System,", - " OA Desiccant System, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " HeatExchanger:Desiccant:BalancedFlow, !- Desiccant Heat Exchanger Object Type", - " OA Desiccant Heat Exchanger, !- Desiccant Heat Exchanger Name", - " OA Desiccant Process Outlet Node, !- Sensor Node Name", - " Fan:OnOff, !- Regeneration Air Fan Object Type", - " OA Desiccant Regen Fan, !- Regeneration Air Fan Name", - " DrawThrough, !- Regeneration Air Fan Placement", - " Coil:Heating:Fuel, !- Regeneration Air Heater Object Type", - " OA Desiccant Regen Coil, !- Regeneration Air Heater Name", - " 46.111111; !- Regeneration Inlet Air Setpoint Temperature {C}", - - " SetpointManager:OutdoorAirPretreat,", - " DXSystem 1 Desiccant Set Point Manager, !- Name", - " MaximumHumidityRatio, !- Control Variable", - " -99, !- Minimum Setpoint Temperature {C}", - " 99, !- Maximum Setpoint Temperature {C}", - " 0.00001, !- Minimum Setpoint Humidity Ratio {kgWater/kgDryAir}", - " 1.0, !- Maximum Setpoint Humidity Ratio {kgWater/kgDryAir}", - " Mixed Air Node 1, !- Reference Setpoint Node Name", - " Mixed Air Node 1, !- Mixed Air Stream Node Name", - " OA Desiccant Process Outlet Node, !- Outdoor Air Stream Node Name", - " VAV Sys 1 Inlet Node, !- Return Air Stream Node Name", - " OA Desiccant Process Outlet Node; !- Setpoint Node or NodeList Name", - - " SetpointManager:SingleZone:Humidity:Maximum,", - " SPACE1-1 Humidistat Manager, !- Name", - " Mixed Air Node 1, !- Setpoint Node or NodeList Name", - " SPACE1-1 Node; !- Control Zone Air Node Name", - - " ZoneControl:Humidistat,", - " SPACE1-1 Humidistat, !- Name", - " SPACE1-1, !- Zone Name", - " Relative Humidity Sched; !- Humidifying Relative Humidity Setpoint Schedule Name", - - " HeatExchanger:Desiccant:BalancedFlow,", - " OA Desiccant Heat Exchanger, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " OA HX Regen Inlet Node, !- Regeneration Air Inlet Node Name", - " OA HX Regen Outlet Node, !- Regeneration Air Outlet Node Name", - " Outside Air Inlet Node, !- Process Air Inlet Node Name", - " OA Desiccant Process Outlet Node, !- Process Air Outlet Node Name", - " HeatExchanger:Desiccant:BalancedFlow:PerformanceDataType1, !- Heat Exchanger Performance Object Type", - " HXDesPerf2; !- Heat Exchanger Performance Name", - - " HeatExchanger:Desiccant:BalancedFlow:PerformanceDataType1,", - " HXDesPerf2, !- Name", - " 2.5893, !- Nominal Air Flow Rate {m3/s}", - " 4.8000, !- Nominal Air Face Velocity {m/s}", - " 50.0, !- Nominal Electric Power {W}", - " -3.0000E+00, !- Temperature Equation Coefficient 1", - " 0.00000E+01, !- Temperature Equation Coefficient 2", - " 1.00000E+00, !- Temperature Equation Coefficient 3", - " 0.00000E+00, !- Temperature Equation Coefficient 4", - " 0.00000E+00, !- Temperature Equation Coefficient 5", - " 0.00000E+00, !- Temperature Equation Coefficient 6", - " 0.00000E+00, !- Temperature Equation Coefficient 7", - " 0.00000E+00, !- Temperature Equation Coefficient 8", - " 0.000000, !- Minimum Regeneration Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", - " 1.000000, !- Maximum Regeneration Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", - " 46.111110, !- Minimum Regeneration Inlet Air Temperature for Temperature Equation {C}", - " 46.111112, !- Maximum Regeneration Inlet Air Temperature for Temperature Equation {C}", - " 0.000000, !- Minimum Process Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", - " 1.000000, !- Maximum Process Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", - " -100.000, !- Minimum Process Inlet Air Temperature for Temperature Equation {C}", - " 100.0000, !- Maximum Process Inlet Air Temperature for Temperature Equation {C}", - " 0.001, !- Minimum Regeneration Air Velocity for Temperature Equation {m/s}", - " 4.826, !- Maximum Regeneration Air Velocity for Temperature Equation {m/s}", - " 43.111110, !- Minimum Regeneration Outlet Air Temperature for Temperature Equation {C}", - " 43.111112, !- Maximum Regeneration Outlet Air Temperature for Temperature Equation {C}", - " 5.0, !- Minimum Regeneration Inlet Air Relative Humidity for Temperature Equation {percent}", - " 45.0, !- Maximum Regeneration Inlet Air Relative Humidity for Temperature Equation {percent}", - " 0.0, !- Minimum Process Inlet Air Relative Humidity for Temperature Equation {percent}", - " 100.0, !- Maximum Process Inlet Air Relative Humidity for Temperature Equation {percent}", - " 0.10000E-02, !- Humidity Ratio Equation Coefficient 1", - " 1.00000E+00, !- Humidity Ratio Equation Coefficient 2", - " 0.00000E+00, !- Humidity Ratio Equation Coefficient 3", - " 0.00000E+00, !- Humidity Ratio Equation Coefficient 4", - " 0.00000E+00, !- Humidity Ratio Equation Coefficient 5", - " 0.00000E+00, !- Humidity Ratio Equation Coefficient 6", - " 0.00000E+00, !- Humidity Ratio Equation Coefficient 7", - " 0.00000E+00, !- Humidity Ratio Equation Coefficient 8", - " 0.000000, !- Minimum Regeneration Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " 1.000000, !- Maximum Regeneration Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " 46.111110, !- Minimum Regeneration Inlet Air Temperature for Humidity Ratio Equation {C}", - " 46.111112, !- Maximum Regeneration Inlet Air Temperature for Humidity Ratio Equation {C}", - " 0.000000, !- Minimum Process Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " 1.000000, !- Maximum Process Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " -100.000, !- Minimum Process Inlet Air Temperature for Humidity Ratio Equation {C}", - " 100.0000, !- Maximum Process Inlet Air Temperature for Humidity Ratio Equation {C}", - " 0.001, !- Minimum Regeneration Air Velocity for Humidity Ratio Equation {m/s}", - " 4.826, !- Maximum Regeneration Air Velocity for Humidity Ratio Equation {m/s}", - " 0.000000, !- Minimum Regeneration Outlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " 1.000000, !- Maximum Regeneration Outlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " 5.0, !- Minimum Regeneration Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", - " 45.0, !- Maximum Regeneration Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", - " 0.0, !- Minimum Process Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", - " 100.0; !- Maximum Process Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", - - } ); - - ASSERT_TRUE( process_idf( idf_objects ) ); - - OutputProcessor::TimeValue.allocate( 2 ); - DataGlobals::DDOnlySimulation = true; - - SimulationManager::GetProjectData(); - OutputReportPredefined::SetPredefinedTables(); - createFacilityElectricPowerServiceObject(); - SetPreConstructionInputParameters(); //establish array bounds for constructions early - BranchInputManager::ManageBranchInput(); - BeginSimFlag = true; - BeginEnvrnFlag = true; - ZoneSizingCalc = true; - SysSizingCalc = true; - SizingManager::ManageSizing(); - - DataSizing::CurSysNum = 1; - DataSizing::CurOASysNum = 1; - - GetDesiccantDehumidifierInput(); - EXPECT_EQ( 1, NumDesicDehums ); - EXPECT_EQ( "OA DESICCANT SYSTEM", DesicDehum( DesicDehumNum ).Name ); - EXPECT_EQ( "OA DESICCANT REGEN COIL", DesicDehum( DesicDehumNum ).RegenCoilName ); - - CompName = DesicDehum( DesicDehumNum ).Name; - CompIndex = NumGenericDesicDehums; - SimDesiccantDehumidifier( CompName, FirstHVACIteration, CompIndex ); - - RegCoilDesInletTemp = FinalSysSizing( DataSizing::CurSysNum ).HeatRetTemp; - RegCoilDesOutletTemp = DesicDehum( DesicDehumNum ).RegenSetPointTemp; - RegCoilInletAirMassFlowRate = FinalSysSizing( DataSizing::CurSysNum ).DesOutAirVolFlow * DataEnvironment::StdRhoAir; - RegCoilCapacity = RegCoilInletAirMassFlowRate * PsyCpAirFnWTdb( 0.0, 20.0 ) * ( RegCoilDesOutletTemp - RegCoilDesInletTemp ); - - for ( loop = 1; loop <= NumHeatingCoils; ++loop ) { + std::string CompName(""); + bool FirstHVACIteration(true); + int DesicDehumNum(1); + int CompIndex(1); + int CoilIndex(0); + int loop(0); + Real64 RegCoilDesInletTemp(0.0); + Real64 RegCoilDesOutletTemp(0.0); + Real64 RegCoilInletAirMassFlowRate(0.0); + Real64 RegCoilCapacity(0.0); + + std::string const idf_objects = delimited_string({ + " Version,8.4;", + + " Building,", + " Building, !- Name", + " 30., !- North Axis {deg}", + " City, !- Terrain", + " 0.04, !- Loads Convergence Tolerance Value", + " 0.4, !- Temperature Convergence Tolerance Value {deltaC}", + " FullExterior, !- Solar Distribution", + " 40, !- Maximum Number of Warmup Days", + " 6; !- Minimum Number of Warmup Days", + + " Timestep,6;", + + " SurfaceConvectionAlgorithm:Inside,Simple;", + + " SurfaceConvectionAlgorithm:Outside,SimpleCombined;", + + " HeatBalanceAlgorithm,ConductionTransferFunction;", + + " SimulationControl,", + " Yes, !- Do Zone Sizing Calculation", + " Yes, !- Do System Sizing Calculation", + " No, !- Do Plant Sizing Calculation", + " Yes, !- Run Simulation for Sizing Periods", + " No; !- Run Simulation for Weather File Run Periods", + + " RunPeriod,", + " , !- Name", + " 1, !- Begin Month", + " 1, !- Begin Day of Month", + " , !- Begin Year", + " 1, !- End Month", + " 5, !- End Day of Month", + " , !- End Year", + " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " Yes; !- Use Weather File Snow Indicators", + + " Site:Location,", + " Miami Intl Ap FL USA WMO=722020, !- Name", + " 25.82, !- Latitude {deg}", + " -80.30, !- Longitude {deg}", + " -5.00, !- Time Zone {hr}", + " 11.00; !- Elevation {m}", + + " SizingPeriod:DesignDay,", + " Miami Intl Ap Ann Htg 99.6% Condns DB, !- Name", + " 1, !- Month", + " 21, !- Day of Month", + " WinterDesignDay, !- Day Type", + " 8.7, !- Maximum Dry-Bulb Temperature {C}", + " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " 8.7, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 101217., !- Barometric Pressure {Pa}", + " 3.8, !- Wind Speed {m/s}", + " 340, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 0.00; !- Sky Clearness", + + " SizingPeriod:DesignDay,", + " Miami Intl Ap Ann Clg .4% Condns DB=>MWB, !- Name", + " 7, !- Month", + " 21, !- Day of Month", + " SummerDesignDay, !- Day Type", + " 33.2, !- Maximum Dry-Bulb Temperature {C}", + " 6.7, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " 25.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 101217., !- Barometric Pressure {Pa}", + " 4.5, !- Wind Speed {m/s}", + " 140, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 1.00; !- Sky Clearness", + + " Site:GroundTemperature:BuildingSurface,21.0,21.5,22.0,22.2,22.2,22.2,22.2,22.2,22.2,22.0,21.5,21.0;", + + " Material,", + " WD10, !- Name", + " MediumSmooth, !- Roughness", + " 0.667, !- Thickness {m}", + " 0.115, !- Conductivity {W/m-K}", + " 513, !- Density {kg/m3}", + " 1381, !- Specific Heat {J/kg-K}", + " 0.9, !- Thermal Absorptance", + " 0.78, !- Solar Absorptance", + " 0.78; !- Visible Absorptance", + + " Material,", + " RG01, !- Name", + " Rough, !- Roughness", + " 1.2700000E-02, !- Thickness {m}", + " 1.442000, !- Conductivity {W/m-K}", + " 881.0000, !- Density {kg/m3}", + " 1674.000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + + " Material,", + " BR01, !- Name", + " VeryRough, !- Roughness", + " 9.4999997E-03, !- Thickness {m}", + " 0.1620000, !- Conductivity {W/m-K}", + " 1121.000, !- Density {kg/m3}", + " 1464.000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7000000, !- Solar Absorptance", + " 0.7000000; !- Visible Absorptance", + + " Material,", + " IN46, !- Name", + " VeryRough, !- Roughness", + " 7.6200001E-02, !- Thickness {m}", + " 2.3000000E-02, !- Conductivity {W/m-K}", + " 24.00000, !- Density {kg/m3}", + " 1590.000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.5000000, !- Solar Absorptance", + " 0.5000000; !- Visible Absorptance", + + " Material,", + " WD01, !- Name", + " MediumSmooth, !- Roughness", + " 1.9099999E-02, !- Thickness {m}", + " 0.1150000, !- Conductivity {W/m-K}", + " 513.0000, !- Density {kg/m3}", + " 1381.000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7800000, !- Solar Absorptance", + " 0.7800000; !- Visible Absorptance", + + " Material,", + " PW03, !- Name", + " MediumSmooth, !- Roughness", + " 1.2700000E-02, !- Thickness {m}", + " 0.1150000, !- Conductivity {W/m-K}", + " 545.0000, !- Density {kg/m3}", + " 1213.000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7800000, !- Solar Absorptance", + " 0.7800000; !- Visible Absorptance", + + " Material,", + " IN02, !- Name", + " Rough, !- Roughness", + " 9.0099998E-02, !- Thickness {m}", + " 4.3000001E-02, !- Conductivity {W/m-K}", + " 10.00000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " GP01, !- Name", + " MediumSmooth, !- Roughness", + " 1.2700000E-02, !- Thickness {m}", + " 0.1600000, !- Conductivity {W/m-K}", + " 801.0000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " GP02, !- Name", + " MediumSmooth, !- Roughness", + " 1.5900001E-02, !- Thickness {m}", + " 0.1600000, !- Conductivity {W/m-K}", + " 801.0000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " CC03, !- Name", + " MediumRough, !- Roughness", + " 0.1016000, !- Thickness {m}", + " 1.310000, !- Conductivity {W/m-K}", + " 2243.000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + + " Material:NoMass,", + " CP01, !- Name", + " Rough, !- Roughness", + " 0.3670000, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material:NoMass,", + " MAT-SB-U, !- Name", + " Rough, !- Roughness", + " 0.117406666, !- Thermal Resistance {m2-K/W}", + " 0.65, !- Thermal Absorptance", + " 0.65, !- Solar Absorptance", + " 0.65; !- Visible Absorptance", + + " Material:NoMass,", + " MAT-CLNG-1, !- Name", + " Rough, !- Roughness", + " 0.652259290, !- Thermal Resistance {m2-K/W}", + " 0.65, !- Thermal Absorptance", + " 0.65, !- Solar Absorptance", + " 0.65; !- Visible Absorptance", + + " Material:NoMass,", + " MAT-FLOOR-1, !- Name", + " Rough, !- Roughness", + " 3.522199631, !- Thermal Resistance {m2-K/W}", + " 0.65, !- Thermal Absorptance", + " 0.65, !- Solar Absorptance", + " 0.65; !- Visible Absorptance", + + " Material:AirGap,", + " AL21, !- Name", + " 0.1570000; !- Thermal Resistance {m2-K/W}", + + " Material:AirGap,", + " AL23, !- Name", + " 0.1530000; !- Thermal Resistance {m2-K/W}", + + " WindowMaterial:Glazing,", + " CLEAR 3MM, !- Name", + " SpectralAverage, !- Optical Data Type", + " , !- Window Glass Spectral Data Set Name", + " 0.003, !- Thickness {m}", + " 0.837, !- Solar Transmittance at Normal Incidence", + " 0.075, !- Front Side Solar Reflectance at Normal Incidence", + " 0.075, !- Back Side Solar Reflectance at Normal Incidence", + " 0.898, !- Visible Transmittance at Normal Incidence", + " 0.081, !- Front Side Visible Reflectance at Normal Incidence", + " 0.081, !- Back Side Visible Reflectance at Normal Incidence", + " 0.0, !- Infrared Transmittance at Normal Incidence", + " 0.84, !- Front Side Infrared Hemispherical Emissivity", + " 0.84, !- Back Side Infrared Hemispherical Emissivity", + " 0.9; !- Conductivity {W/m-K}", + + " WindowMaterial:Glazing,", + " GREY 3MM, !- Name", + " SpectralAverage, !- Optical Data Type", + " , !- Window Glass Spectral Data Set Name", + " 0.003, !- Thickness {m}", + " 0.626, !- Solar Transmittance at Normal Incidence", + " 0.061, !- Front Side Solar Reflectance at Normal Incidence", + " 0.061, !- Back Side Solar Reflectance at Normal Incidence", + " 0.611, !- Visible Transmittance at Normal Incidence", + " 0.061, !- Front Side Visible Reflectance at Normal Incidence", + " 0.061, !- Back Side Visible Reflectance at Normal Incidence", + " 0.0, !- Infrared Transmittance at Normal Incidence", + " 0.84, !- Front Side Infrared Hemispherical Emissivity", + " 0.84, !- Back Side Infrared Hemispherical Emissivity", + " 0.9; !- Conductivity {W/m-K}", + + " WindowMaterial:Glazing,", + " CLEAR 6MM, !- Name", + " SpectralAverage, !- Optical Data Type", + " , !- Window Glass Spectral Data Set Name", + " 0.006, !- Thickness {m}", + " 0.775, !- Solar Transmittance at Normal Incidence", + " 0.071, !- Front Side Solar Reflectance at Normal Incidence", + " 0.071, !- Back Side Solar Reflectance at Normal Incidence", + " 0.881, !- Visible Transmittance at Normal Incidence", + " 0.080, !- Front Side Visible Reflectance at Normal Incidence", + " 0.080, !- Back Side Visible Reflectance at Normal Incidence", + " 0.0, !- Infrared Transmittance at Normal Incidence", + " 0.84, !- Front Side Infrared Hemispherical Emissivity", + " 0.84, !- Back Side Infrared Hemispherical Emissivity", + " 0.9; !- Conductivity {W/m-K}", + + " WindowMaterial:Glazing,", + " LoE CLEAR 6MM, !- Name", + " SpectralAverage, !- Optical Data Type", + " , !- Window Glass Spectral Data Set Name", + " 0.006, !- Thickness {m}", + " 0.600, !- Solar Transmittance at Normal Incidence", + " 0.170, !- Front Side Solar Reflectance at Normal Incidence", + " 0.220, !- Back Side Solar Reflectance at Normal Incidence", + " 0.840, !- Visible Transmittance at Normal Incidence", + " 0.055, !- Front Side Visible Reflectance at Normal Incidence", + " 0.078, !- Back Side Visible Reflectance at Normal Incidence", + " 0.0, !- Infrared Transmittance at Normal Incidence", + " 0.84, !- Front Side Infrared Hemispherical Emissivity", + " 0.10, !- Back Side Infrared Hemispherical Emissivity", + " 0.9; !- Conductivity {W/m-K}", + + " WindowMaterial:Gas,", + " AIR 6MM, !- Name", + " Air, !- Gas Type", + " 0.0063; !- Thickness {m}", + + " WindowMaterial:Gas,", + " AIR 13MM, !- Name", + " Air, !- Gas Type", + " 0.0127; !- Thickness {m}", + + " WindowMaterial:Gas,", + " ARGON 13MM, !- Name", + " Argon, !- Gas Type", + " 0.0127; !- Thickness {m}", + + " Construction,", + " ROOF-1, !- Name", + " RG01, !- Outside Layer", + " BR01, !- Layer 2", + " IN46, !- Layer 3", + " WD01; !- Layer 4", + + " Construction,", + " WALL-1, !- Name", + " WD01, !- Outside Layer", + " PW03, !- Layer 2", + " IN02, !- Layer 3", + " GP01; !- Layer 4", + + " Construction,", + " CLNG-1, !- Name", + " MAT-CLNG-1; !- Outside Layer", + + " Construction,", + " SB-U, !- Name", + " MAT-SB-U; !- Outside Layer", + + " Construction,", + " FLOOR-1, !- Name", + " MAT-FLOOR-1; !- Outside Layer", + + " Construction,", + " FLOOR-SLAB-1, !- Name", + " CC03, !- Outside Layer", + " CP01; !- Layer 2", + + " Construction,", + " INT-WALL-1, !- Name", + " GP02, !- Outside Layer", + " AL21, !- Layer 2", + " GP02; !- Layer 3", + + " Construction,", + " Dbl Clr 3mm/13mm Air, !- Name", + " CLEAR 3MM, !- Outside Layer", + " AIR 13MM, !- Layer 2", + " CLEAR 3MM; !- Layer 3", + + " Construction,", + " Dbl Clr 3mm/13mm Arg, !- Name", + " CLEAR 3MM, !- Outside Layer", + " ARGON 13MM, !- Layer 2", + " CLEAR 3MM; !- Layer 3", + + " Construction,", + " Sgl Grey 3mm, !- Name", + " GREY 3MM; !- Outside Layer", + + " Construction,", + " Dbl Clr 6mm/6mm Air, !- Name", + " CLEAR 6MM, !- Outside Layer", + " AIR 6MM, !- Layer 2", + " CLEAR 6MM; !- Layer 3", + + " Construction,", + " Dbl LoE (e2=.1) Clr 6mm/6mm Air, !- Name", + " LoE CLEAR 6MM, !- Outside Layer", + " AIR 6MM, !- Layer 2", + " CLEAR 6MM; !- Layer 3", + + " Zone,", + " PLENUM-1, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " 0.609600067, !- Ceiling Height {m}", + " 283.2; !- Volume {m3}", + + " Zone,", + " SPACE1-1, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " 2.438400269, !- Ceiling Height {m}", + " 239.247360229; !- Volume {m3}", + + " Zone,", + " SPACE2-1, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " 2.438400269, !- Ceiling Height {m}", + " 103.311355591; !- Volume {m3}", + + " Zone,", + " SPACE3-1, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " 2.438400269, !- Ceiling Height {m}", + " 239.247360229; !- Volume {m3}", + + " Zone,", + " SPACE4-1, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " 2.438400269, !- Ceiling Height {m}", + " 103.311355591; !- Volume {m3}", + + " Zone,", + " SPACE5-1, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " 2.438400269, !- Ceiling Height {m}", + " 447.682556152; !- Volume {m3}", + + " GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " CounterClockWise, !- Vertex Entry Direction", + " relative; !- Coordinate System", + + " BuildingSurface:Detailed,", + " WALL-1PF, !- Name", + " WALL, !- Surface Type", + " WALL-1, !- Construction Name", + " PLENUM-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.0,0.0,3.0, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 30.5,0.0,3.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " WALL-1PR, !- Name", + " WALL, !- Surface Type", + " WALL-1, !- Construction Name", + " PLENUM-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 30.5,0.0,3.0, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 30.5,15.2,3.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " WALL-1PB, !- Name", + " WALL, !- Surface Type", + " WALL-1, !- Construction Name", + " PLENUM-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 30.5,15.2,3.0, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 0.0,15.2,3.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " WALL-1PL, !- Name", + " WALL, !- Surface Type", + " WALL-1, !- Construction Name", + " PLENUM-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.0,15.2,3.0, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 0.0,0.0,3.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " TOP-1, !- Name", + " ROOF, !- Surface Type", + " ROOF-1, !- Construction Name", + " PLENUM-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.00000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.0,15.2,3.0, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,0.0,3.0, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,0.0,3.0, !- X,Y,Z ==> Vertex 3 {m}", + " 30.5,15.2,3.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " C1-1P, !- Name", + " FLOOR, !- Surface Type", + " CLNG-1, !- Construction Name", + " PLENUM-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " C1-1, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " C2-1P, !- Name", + " FLOOR, !- Surface Type", + " CLNG-1, !- Construction Name", + " PLENUM-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " C2-1, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " C3-1P, !- Name", + " FLOOR, !- Surface Type", + " CLNG-1, !- Construction Name", + " PLENUM-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " C3-1, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 30.5,15.2,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " C4-1P, !- Name", + " FLOOR, !- Surface Type", + " CLNG-1, !- Construction Name", + " PLENUM-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " C4-1, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " C5-1P, !- Name", + " FLOOR, !- Surface Type", + " CLNG-1, !- Construction Name", + " PLENUM-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " C5-1, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " FRONT-1, !- Name", + " WALL, !- Surface Type", + " WALL-1, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 30.5,0.0,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " C1-1, !- Name", + " CEILING, !- Surface Type", + " CLNG-1, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " C1-1P, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " F1-1, !- Name", + " FLOOR, !- Surface Type", + " FLOOR-SLAB-1, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Ground, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,3.7,0.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB12, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB21, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB14, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB41, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 0.0,0.0,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB15, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB51, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " RIGHT-1, !- Name", + " WALL, !- Surface Type", + " WALL-1, !- Construction Name", + " SPACE2-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 30.5,15.2,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " C2-1, !- Name", + " CEILING, !- Surface Type", + " CLNG-1, !- Construction Name", + " SPACE2-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " C2-1P, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " F2-1, !- Name", + " FLOOR, !- Surface Type", + " FLOOR-SLAB-1, !- Construction Name", + " SPACE2-1, !- Zone Name", + " Ground, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,3.7,0.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB21, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE2-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB12, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 30.5,0.0,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB23, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE2-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB32, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB25, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE2-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB52, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " BACK-1, !- Name", + " WALL, !- Surface Type", + " WALL-1, !- Construction Name", + " SPACE3-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 0.0,15.2,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " C3-1, !- Name", + " CEILING, !- Surface Type", + " CLNG-1, !- Construction Name", + " SPACE3-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " C3-1P, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " F3-1, !- Name", + " FLOOR, !- Surface Type", + " FLOOR-SLAB-1, !- Construction Name", + " SPACE3-1, !- Zone Name", + " Ground, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 1 {m}", + " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 30.5,15.2,0.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB32, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE3-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB23, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 30.5,15.2,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB34, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE3-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB43, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB35, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE3-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB53, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " LEFT-1, !- Name", + " WALL, !- Surface Type", + " WALL-1, !- Construction Name", + " SPACE4-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 0.0,0.0,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " C4-1, !- Name", + " CEILING, !- Surface Type", + " CLNG-1, !- Construction Name", + " SPACE4-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " C4-1P, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " F4-1, !- Name", + " FLOOR, !- Surface Type", + " FLOOR-SLAB-1, !- Construction Name", + " SPACE4-1, !- Zone Name", + " Ground, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,11.6,0.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB41, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE4-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB14, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB43, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE4-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB34, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 0.0,15.2,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB45, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE4-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB54, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " C5-1, !- Name", + " CEILING, !- Surface Type", + " CLNG-1, !- Construction Name", + " SPACE5-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " C5-1P, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " F5-1, !- Name", + " FLOOR, !- Surface Type", + " FLOOR-SLAB-1, !- Construction Name", + " SPACE5-1, !- Zone Name", + " Ground, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 1 {m}", + " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,11.6,0.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB51, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE5-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB15, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB52, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE5-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB25, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB53, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE5-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB35, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB54, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE5-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB45, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " FenestrationSurface:Detailed,", + " WF-1, !- Name", + " WINDOW, !- Surface Type", + " Dbl Clr 3mm/13mm Air, !- Construction Name", + " FRONT-1, !- Building Surface Name", + " , !- Outside Boundary Condition Object", + " 0.50000, !- View Factor to Ground", + " , !- Shading Control Name", + " , !- Frame and Divider Name", + " 1, !- Multiplier", + " 4, !- Number of Vertices", + " 3.0,0.0,2.1, !- X,Y,Z ==> Vertex 1 {m}", + " 3.0,0.0,0.9, !- X,Y,Z ==> Vertex 2 {m}", + " 16.8,0.0,0.9, !- X,Y,Z ==> Vertex 3 {m}", + " 16.8,0.0,2.1; !- X,Y,Z ==> Vertex 4 {m}", + + " FenestrationSurface:Detailed,", + " DF-1, !- Name", + " GLASSDOOR, !- Surface Type", + " Sgl Grey 3mm, !- Construction Name", + " FRONT-1, !- Building Surface Name", + " , !- Outside Boundary Condition Object", + " 0.50000, !- View Factor to Ground", + " , !- Shading Control Name", + " , !- Frame and Divider Name", + " 1, !- Multiplier", + " 4, !- Number of Vertices", + " 21.3,0.0,2.1, !- X,Y,Z ==> Vertex 1 {m}", + " 21.3,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 23.8,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 23.8,0.0,2.1; !- X,Y,Z ==> Vertex 4 {m}", + + " FenestrationSurface:Detailed,", + " WR-1, !- Name", + " WINDOW, !- Surface Type", + " Dbl Clr 3mm/13mm Air, !- Construction Name", + " RIGHT-1, !- Building Surface Name", + " , !- Outside Boundary Condition Object", + " 0.50000, !- View Factor to Ground", + " , !- Shading Control Name", + " , !- Frame and Divider Name", + " 1, !- Multiplier", + " 4, !- Number of Vertices", + " 30.5,3.8,2.1, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,3.8,0.9, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,11.4,0.9, !- X,Y,Z ==> Vertex 3 {m}", + " 30.5,11.4,2.1; !- X,Y,Z ==> Vertex 4 {m}", + + " FenestrationSurface:Detailed,", + " WB-1, !- Name", + " WINDOW, !- Surface Type", + " Dbl Clr 3mm/13mm Air, !- Construction Name", + " BACK-1, !- Building Surface Name", + " , !- Outside Boundary Condition Object", + " 0.50000, !- View Factor to Ground", + " , !- Shading Control Name", + " , !- Frame and Divider Name", + " 1, !- Multiplier", + " 4, !- Number of Vertices", + " 27.4,15.2,2.1, !- X,Y,Z ==> Vertex 1 {m}", + " 27.4,15.2,0.9, !- X,Y,Z ==> Vertex 2 {m}", + " 13.7,15.2,0.9, !- X,Y,Z ==> Vertex 3 {m}", + " 13.7,15.2,2.1; !- X,Y,Z ==> Vertex 4 {m}", + + " FenestrationSurface:Detailed,", + " DB-1, !- Name", + " GLASSDOOR, !- Surface Type", + " Sgl Grey 3mm, !- Construction Name", + " BACK-1, !- Building Surface Name", + " , !- Outside Boundary Condition Object", + " 0.50000, !- View Factor to Ground", + " , !- Shading Control Name", + " , !- Frame and Divider Name", + " 1, !- Multiplier", + " 4, !- Number of Vertices", + " 9.1,15.2,2.1, !- X,Y,Z ==> Vertex 1 {m}", + " 9.1,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 7.0,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 7.0,15.2,2.1; !- X,Y,Z ==> Vertex 4 {m}", + + " FenestrationSurface:Detailed,", + " WL-1, !- Name", + " WINDOW, !- Surface Type", + " Dbl Clr 3mm/13mm Air, !- Construction Name", + " LEFT-1, !- Building Surface Name", + " , !- Outside Boundary Condition Object", + " 0.50000, !- View Factor to Ground", + " , !- Shading Control Name", + " , !- Frame and Divider Name", + " 1, !- Multiplier", + " 4, !- Number of Vertices", + " 0.0,11.4,2.1, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,11.4,0.9, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,3.8,0.9, !- X,Y,Z ==> Vertex 3 {m}", + " 0.0,3.8,2.1; !- X,Y,Z ==> Vertex 4 {m}", + + " Shading:Zone:Detailed,", + " Main South Overhang, !- Name", + " FRONT-1, !- Base Surface Name", + " ShadeTransSch, !- Transmittance Schedule Name", + " 4, !- Number of Vertices", + " 0.0,-1.3,2.2, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,0.0,2.2, !- X,Y,Z ==> Vertex 2 {m}", + " 19.8,0.0,2.2, !- X,Y,Z ==> Vertex 3 {m}", + " 19.8,-1.3,2.2; !- X,Y,Z ==> Vertex 4 {m}", + + " Shading:Zone:Detailed,", + " South Door Overhang, !- Name", + " FRONT-1, !- Base Surface Name", + " ShadeTransSch, !- Transmittance Schedule Name", + " 4, !- Number of Vertices", + " 21.0,-2.0,2.6, !- X,Y,Z ==> Vertex 1 {m}", + " 21.0,0.0,2.6, !- X,Y,Z ==> Vertex 2 {m}", + " 24.1,0.0,2.6, !- X,Y,Z ==> Vertex 3 {m}", + " 24.1,-2.0,2.6; !- X,Y,Z ==> Vertex 4 {m}", + + " ScheduleTypeLimits,", + " Any Number; !- Name", + + " ScheduleTypeLimits,", + " Fraction, !- Name", + " 0.0, !- Lower Limit Value", + " 1.0, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + " ScheduleTypeLimits,", + " Temperature, !- Name", + " -60, !- Lower Limit Value", + " 200, !- Upper Limit Value", + " CONTINUOUS, !- Numeric Type", + " Temperature; !- Unit Type", + + " ScheduleTypeLimits,", + " Control Type, !- Name", + " 0, !- Lower Limit Value", + " 4, !- Upper Limit Value", + " DISCRETE; !- Numeric Type", + + " ScheduleTypeLimits,", + " On/Off, !- Name", + " 0, !- Lower Limit Value", + " 1, !- Upper Limit Value", + " DISCRETE; !- Numeric Type", + + " ScheduleTypeLimits,", + " FlowRate, !- Name", + " 0.0, !- Lower Limit Value", + " 10, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + " ScheduleTypeLimits,", + " Humidity, !- Name", + " 0, !- Lower Limit Value", + " 100, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + " Schedule:Compact,", + " OCCUPY-1, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", + " Until: 8:00,0.0, !- Field 3", + " Until: 11:00,1.00, !- Field 5", + " Until: 12:00,0.80, !- Field 7", + " Until: 13:00,0.40, !- Field 9", + " Until: 14:00,0.80, !- Field 11", + " Until: 18:00,1.00, !- Field 13", + " Until: 19:00,0.50, !- Field 15", + " Until: 21:00,0.10, !- Field 17", + " Until: 24:00,0.0, !- Field 19", + " For: Weekends WinterDesignDay Holiday, !- Field 21", + " Until: 24:00,0.0; !- Field 22", + + " Schedule:Compact,", + " LIGHTS-1, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", + " Until: 8:00,0.05, !- Field 3", + " Until: 9:00,0.9, !- Field 5", + " Until: 10:00,0.95, !- Field 7", + " Until: 11:00,1.00, !- Field 9", + " Until: 12:00,0.95, !- Field 11", + " Until: 13:00,0.8, !- Field 13", + " Until: 14:00,0.9, !- Field 15", + " Until: 18:00,1.00, !- Field 17", + " Until: 19:00,0.60, !- Field 19", + " Until: 21:00,0.20, !- Field 21", + " Until: 24:00,0.05, !- Field 23", + " For: Weekends WinterDesignDay Holiday, !- Field 25", + " Until: 24:00,0.05; !- Field 26", + + " Schedule:Compact,", + " EQUIP-1, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", + " Until: 8:00,0.02, !- Field 3", + " Until: 9:00,0.4, !- Field 5", + " Until: 14:00,0.9, !- Field 7", + " Until: 15:00,0.8, !- Field 9", + " Until: 16:00,0.7, !- Field 11", + " Until: 18:00,0.5, !- Field 13", + " Until: 20:00,0.3, !- Field 15", + " Until: 24:00,0.02, !- Field 17", + " For: Weekends WinterDesignDay Holiday, !- Field 19", + " Until: 24:00,0.2; !- Field 20", + + " Schedule:Compact,", + " INFIL-SCH, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 3/31, !- Field 1", + " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", + " Until: 24:00,1.0, !- Field 3", + " For: AllOtherDays, !- Field 5", + " Until: 24:00,1.0, !- Field 6", + " Through: 9/30, !- Field 8", + " For: AllDays, !- Field 9", + " Until: 24:00,0.7, !- Field 10", + " Through: 12/31, !- Field 12", + " For: AllDays, !- Field 13", + " Until: 24:00,1.0, !- Field 14", + " For: AllOtherDays, !- Field 16", + " Until: 24:00,0.2; !- Field 17", + + " Schedule:Compact,", + " ActSchd, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,117.239997864; !- Field 3", + + " Schedule:Compact,", + " ShadeTransSch, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,0.0; !- Field 3", + + " Schedule:Compact,", + " Htg-SetP-Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: SummerDesignDay, !- Field 2", + " Until: 24:00,12.8, !- Field 3", + " For: WinterDesignDay, !- Field 5", + " Until: 24:00,21.1, !- Field 6", + " For: WeekEnds Holiday, !- Field 8", + " Until: 7:00,12.8, !- Field 9", + " Until: 13:00,21.1, !- Field 11", + " Until: 24:00,12.8, !- Field 13", + " For: AllOtherDays, !- Field 15", + " Until: 7:00,12.8, !- Field 16", + " Until: 18:00,21.1, !- Field 18", + " Until: 24:00,12.8; !- Field 20", + + " Schedule:Compact,", + " PlenumHtg-SetP-Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,12.8; !- Field 3", + + " Schedule:Compact,", + " Clg-SetP-Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: SummerDesignDay, !- Field 2", + " Until: 24:00,23.9, !- Field 3", + " For: WinterDesignDay, !- Field 5", + " Until: 24:00,40.0, !- Field 6", + " For: WeekEnds Holiday, !- Field 8", + " Until: 7:00,40.0, !- Field 9", + " Until: 13:00,23.9, !- Field 11", + " Until: 24:00,32.2, !- Field 13", + " For: AllOtherDays, !- Field 15", + " Until: 7:00,40.0, !- Field 16", + " Until: 18:00,23.9, !- Field 18", + " Until: 24:00,40.0; !- Field 20", + + " Schedule:Compact,", + " PlenumClg-SetP-Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,40.0; !- Field 3", + + " Schedule:Compact,", + " Zone Control Type Sched, !- Name", + " Control Type, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: SummerDesignDay, !- Field 2", + " Until: 24:00,2, !- Field 3", + " For: WinterDesignDay, !- Field 5", + " Until: 24:00,1, !- Field 6", + " For: AllOtherDays, !- Field 8", + " Until: 24:00,4; !- Field 9", + + " Schedule:Compact,", + " Desiccant Control Type Sched, !- Name", + " Control Type, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,4; !- Field 3", + + " Schedule:Compact,", + " Min OA Sched, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Weekdays, !- Field 2", + " Until: 7:00,0.02, !- Field 3", + " Until: 17:00,1.0, !- Field 5", + " Until: 24:00,0.0, !- Field 7", + " For: AllOtherDays, !- Field 9", + " Until: 24:00,0.02; !- Field 10", + + " Schedule:Compact,", + " FanAvailSched, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 3/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0, !- Field 3", + " Through: 9/30, !- Field 5", + " For: WeekDays, !- Field 6", + " Until: 7:00,0.0, !- Field 7", + " Until: 17:00,1.0, !- Field 9", + " Until: 24:00,0.0, !- Field 11", + " For: SummerDesignDay WinterDesignDay, !- Field 13", + " Until: 24:00,1.0, !- Field 14", + " For: AllOtherDays, !- Field 16", + " Until: 24:00,0.0, !- Field 17", + " Through: 12/31, !- Field 19", + " For: AllDays, !- Field 20", + " Until: 24:00,1.0; !- Field 21", + + " Schedule:Compact,", + " Seasonal Reset Supply Air Temp Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 3/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,17.0, !- Field 3", + " Through: 9/30, !- Field 5", + " For: AllDays, !- Field 6", + " Until: 24:00,15.0, !- Field 7", + " Through: 12/31, !- Field 9", + " For: AllDays, !- Field 10", + " Until: 24:00,17.0; !- Field 11", + + " Schedule:Compact,", + " Constant, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0; !- Field 3", + + " People,", + " SPACE1-1 People 1, !- Name", + " SPACE1-1, !- Zone or ZoneList Name", + " OCCUPY-1, !- Number of People Schedule Name", + " people, !- Number of People Calculation Method", + " 11, !- Number of People", + " , !- People per Zone Floor Area {person/m2}", + " , !- Zone Floor Area per Person {m2/person}", + " 0.3, !- Fraction Radiant", + " AutoCalculate, !- Sensible Heat Fraction", + " ActSchd; !- Activity Level Schedule Name", + + " People,", + " SPACE2-1 People 1, !- Name", + " SPACE2-1, !- Zone or ZoneList Name", + " OCCUPY-1, !- Number of People Schedule Name", + " people, !- Number of People Calculation Method", + " 5, !- Number of People", + " , !- People per Zone Floor Area {person/m2}", + " , !- Zone Floor Area per Person {m2/person}", + " 0.3, !- Fraction Radiant", + " AutoCalculate, !- Sensible Heat Fraction", + " ActSchd; !- Activity Level Schedule Name", + + " People,", + " SPACE3-1 People 1, !- Name", + " SPACE3-1, !- Zone or ZoneList Name", + " OCCUPY-1, !- Number of People Schedule Name", + " people, !- Number of People Calculation Method", + " 11, !- Number of People", + " , !- People per Zone Floor Area {person/m2}", + " , !- Zone Floor Area per Person {m2/person}", + " 0.3, !- Fraction Radiant", + " AutoCalculate, !- Sensible Heat Fraction", + " ActSchd; !- Activity Level Schedule Name", + + " People,", + " SPACE4-1 People 1, !- Name", + " SPACE4-1, !- Zone or ZoneList Name", + " OCCUPY-1, !- Number of People Schedule Name", + " people, !- Number of People Calculation Method", + " 5, !- Number of People", + " , !- People per Zone Floor Area {person/m2}", + " , !- Zone Floor Area per Person {m2/person}", + " 0.3, !- Fraction Radiant", + " AutoCalculate, !- Sensible Heat Fraction", + " ActSchd; !- Activity Level Schedule Name", + + " Lights,", + " SPACE1-1 Lights 1, !- Name", + " SPACE1-1, !- Zone or ZoneList Name", + " LIGHTS-1, !- Schedule Name", + " LightingLevel, !- Design Level Calculation Method", + " 1584, !- Lighting Level {W}", + " , !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.2, !- Return Air Fraction", + " 0.59, !- Fraction Radiant", + " 0.2, !- Fraction Visible", + " 0, !- Fraction Replaceable", + " GeneralLights; !- End-Use Subcategory", + + " Lights,", + " SPACE2-1 Lights 1, !- Name", + " SPACE2-1, !- Zone or ZoneList Name", + " LIGHTS-1, !- Schedule Name", + " LightingLevel, !- Design Level Calculation Method", + " 684, !- Lighting Level {W}", + " , !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.2, !- Return Air Fraction", + " 0.59, !- Fraction Radiant", + " 0.2, !- Fraction Visible", + " 0, !- Fraction Replaceable", + " GeneralLights; !- End-Use Subcategory", + + " Lights,", + " SPACE3-1 Lights 1, !- Name", + " SPACE3-1, !- Zone or ZoneList Name", + " LIGHTS-1, !- Schedule Name", + " LightingLevel, !- Design Level Calculation Method", + " 1584, !- Lighting Level {W}", + " , !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.2, !- Return Air Fraction", + " 0.59, !- Fraction Radiant", + " 0.2, !- Fraction Visible", + " 0, !- Fraction Replaceable", + " GeneralLights; !- End-Use Subcategory", + + " Lights,", + " SPACE4-1 Lights 1, !- Name", + " SPACE4-1, !- Zone or ZoneList Name", + " LIGHTS-1, !- Schedule Name", + " LightingLevel, !- Design Level Calculation Method", + " 684, !- Lighting Level {W}", + " , !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.2, !- Return Air Fraction", + " 0.59, !- Fraction Radiant", + " 0.2, !- Fraction Visible", + " 0, !- Fraction Replaceable", + " GeneralLights; !- End-Use Subcategory", + + " ElectricEquipment,", + " SPACE1-1 ElecEq 1, !- Name", + " SPACE1-1, !- Zone or ZoneList Name", + " EQUIP-1, !- Schedule Name", + " EquipmentLevel, !- Design Level Calculation Method", + " 10560, !- Design Level {W}", + " , !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.5, !- Fraction Latent", + " 0.3, !- Fraction Radiant", + " 0; !- Fraction Lost", + + " ElectricEquipment,", + " SPACE2-1 ElecEq 1, !- Name", + " SPACE2-1, !- Zone or ZoneList Name", + " EQUIP-1, !- Schedule Name", + " EquipmentLevel, !- Design Level Calculation Method", + " 4560, !- Design Level {W}", + " , !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.5, !- Fraction Latent", + " 0.3, !- Fraction Radiant", + " 0; !- Fraction Lost", + + " ElectricEquipment,", + " SPACE3-1 ElecEq 1, !- Name", + " SPACE3-1, !- Zone or ZoneList Name", + " EQUIP-1, !- Schedule Name", + " EquipmentLevel, !- Design Level Calculation Method", + " 10560, !- Design Level {W}", + " , !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.5, !- Fraction Latent", + " 0.3, !- Fraction Radiant", + " 0; !- Fraction Lost", + + " ElectricEquipment,", + " SPACE4-1 ElecEq 1, !- Name", + " SPACE4-1, !- Zone or ZoneList Name", + " EQUIP-1, !- Schedule Name", + " EquipmentLevel, !- Design Level Calculation Method", + " 4560, !- Design Level {W}", + " , !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.5, !- Fraction Latent", + " 0.3, !- Fraction Radiant", + " 0; !- Fraction Lost", + + " ZoneInfiltration:DesignFlowRate,", + " SPACE1-1 Infil 1, !- Name", + " SPACE1-1, !- Zone or ZoneList Name", + " INFIL-SCH, !- Schedule Name", + " flow/zone, !- Design Flow Rate Calculation Method", + " 0.0167, !- Design Flow Rate {m3/s}", + " , !- Flow per Zone Floor Area {m3/s-m2}", + " , !- Flow per Exterior Surface Area {m3/s-m2}", + " , !- Air Changes per Hour {1/hr}", + " 0, !- Constant Term Coefficient", + " 0, !- Temperature Term Coefficient", + " 0.2237, !- Velocity Term Coefficient", + " 0; !- Velocity Squared Term Coefficient", + + " ZoneInfiltration:DesignFlowRate,", + " SPACE2-1 Infil 1, !- Name", + " SPACE2-1, !- Zone or ZoneList Name", + " INFIL-SCH, !- Schedule Name", + " flow/zone, !- Design Flow Rate Calculation Method", + " 0.00717, !- Design Flow Rate {m3/s}", + " , !- Flow per Zone Floor Area {m3/s-m2}", + " , !- Flow per Exterior Surface Area {m3/s-m2}", + " , !- Air Changes per Hour {1/hr}", + " 0, !- Constant Term Coefficient", + " 0, !- Temperature Term Coefficient", + " 0.2237, !- Velocity Term Coefficient", + " 0; !- Velocity Squared Term Coefficient", + + " ZoneInfiltration:DesignFlowRate,", + " SPACE3-1 Infil 1, !- Name", + " SPACE3-1, !- Zone or ZoneList Name", + " INFIL-SCH, !- Schedule Name", + " flow/zone, !- Design Flow Rate Calculation Method", + " 0.0167, !- Design Flow Rate {m3/s}", + " , !- Flow per Zone Floor Area {m3/s-m2}", + " , !- Flow per Exterior Surface Area {m3/s-m2}", + " , !- Air Changes per Hour {1/hr}", + " 0, !- Constant Term Coefficient", + " 0, !- Temperature Term Coefficient", + " 0.2237, !- Velocity Term Coefficient", + " 0; !- Velocity Squared Term Coefficient", + + " ZoneInfiltration:DesignFlowRate,", + " SPACE4-1 Infil 1, !- Name", + " SPACE4-1, !- Zone or ZoneList Name", + " INFIL-SCH, !- Schedule Name", + " flow/zone, !- Design Flow Rate Calculation Method", + " 0.00717, !- Design Flow Rate {m3/s}", + " , !- Flow per Zone Floor Area {m3/s-m2}", + " , !- Flow per Exterior Surface Area {m3/s-m2}", + " , !- Air Changes per Hour {1/hr}", + " 0, !- Constant Term Coefficient", + " 0, !- Temperature Term Coefficient", + " 0.2237, !- Velocity Term Coefficient", + " 0; !- Velocity Squared Term Coefficient", + + " Sizing:Zone,", + " SPACE1-1, !- Zone or ZoneList Name", + " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", + " 14., !- Zone Cooling Design Supply Air Temperature {C}", + " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", + " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", + " 50., !- Zone Heating Design Supply Air Temperature {C}", + " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", + " 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " SZ DSOA SPACE1-1, !- Design Specification Outdoor Air Object Name", + " 0.0, !- Zone Heating Sizing Factor", + " 0.0, !- Zone Cooling Sizing Factor", + " DesignDayWithLimit, !- Cooling Design Air Flow Method", + " , !- Cooling Design Air Flow Rate {m3/s}", + " , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", + " , !- Cooling Minimum Air Flow {m3/s}", + " , !- Cooling Minimum Air Flow Fraction", + " DesignDay, !- Heating Design Air Flow Method", + " , !- Heating Design Air Flow Rate {m3/s}", + " , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", + " , !- Heating Maximum Air Flow {m3/s}", + " ; !- Heating Maximum Air Flow Fraction", + + " DesignSpecification:OutdoorAir,", + " SZ DSOA SPACE1-1, !- Name", + " sum, !- Outdoor Air Method", + " 0.00236, !- Outdoor Air Flow per Person {m3/s-person}", + " 0.000305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}", + " 0.0; !- Outdoor Air Flow per Zone {m3/s}", + + " Sizing:Zone,", + " SPACE2-1, !- Zone or ZoneList Name", + " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", + " 14., !- Zone Cooling Design Supply Air Temperature {C}", + " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", + " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", + " 50., !- Zone Heating Design Supply Air Temperature {C}", + " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", + " 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " SZ DSOA SPACE2-1, !- Design Specification Outdoor Air Object Name", + " 0.0, !- Zone Heating Sizing Factor", + " 0.0, !- Zone Cooling Sizing Factor", + " DesignDayWithLimit, !- Cooling Design Air Flow Method", + " , !- Cooling Design Air Flow Rate {m3/s}", + " , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", + " , !- Cooling Minimum Air Flow {m3/s}", + " , !- Cooling Minimum Air Flow Fraction", + " DesignDay, !- Heating Design Air Flow Method", + " , !- Heating Design Air Flow Rate {m3/s}", + " , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", + " , !- Heating Maximum Air Flow {m3/s}", + " ; !- Heating Maximum Air Flow Fraction", + + " DesignSpecification:OutdoorAir,", + " SZ DSOA SPACE2-1, !- Name", + " sum, !- Outdoor Air Method", + " 0.00236, !- Outdoor Air Flow per Person {m3/s-person}", + " 0.000305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}", + " 0.0; !- Outdoor Air Flow per Zone {m3/s}", + + " Sizing:Zone,", + " SPACE3-1, !- Zone or ZoneList Name", + " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", + " 14., !- Zone Cooling Design Supply Air Temperature {C}", + " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", + " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", + " 50., !- Zone Heating Design Supply Air Temperature {C}", + " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", + " 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " SZ DSOA SPACE3-1, !- Design Specification Outdoor Air Object Name", + " 0.0, !- Zone Heating Sizing Factor", + " 0.0, !- Zone Cooling Sizing Factor", + " DesignDayWithLimit, !- Cooling Design Air Flow Method", + " , !- Cooling Design Air Flow Rate {m3/s}", + " , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", + " , !- Cooling Minimum Air Flow {m3/s}", + " , !- Cooling Minimum Air Flow Fraction", + " DesignDay, !- Heating Design Air Flow Method", + " , !- Heating Design Air Flow Rate {m3/s}", + " , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", + " , !- Heating Maximum Air Flow {m3/s}", + " ; !- Heating Maximum Air Flow Fraction", + + " DesignSpecification:OutdoorAir,", + " SZ DSOA SPACE3-1, !- Name", + " sum, !- Outdoor Air Method", + " 0.00236, !- Outdoor Air Flow per Person {m3/s-person}", + " 0.000305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}", + " 0.0; !- Outdoor Air Flow per Zone {m3/s}", + + " Sizing:Zone,", + " SPACE4-1, !- Zone or ZoneList Name", + " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", + " 14., !- Zone Cooling Design Supply Air Temperature {C}", + " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", + " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", + " 50., !- Zone Heating Design Supply Air Temperature {C}", + " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", + " 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " SZ DSOA SPACE4-1, !- Design Specification Outdoor Air Object Name", + " 0.0, !- Zone Heating Sizing Factor", + " 0.0, !- Zone Cooling Sizing Factor", + " DesignDayWithLimit, !- Cooling Design Air Flow Method", + " , !- Cooling Design Air Flow Rate {m3/s}", + " , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", + " , !- Cooling Minimum Air Flow {m3/s}", + " , !- Cooling Minimum Air Flow Fraction", + " DesignDay, !- Heating Design Air Flow Method", + " , !- Heating Design Air Flow Rate {m3/s}", + " , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", + " , !- Heating Maximum Air Flow {m3/s}", + " ; !- Heating Maximum Air Flow Fraction", + + " DesignSpecification:OutdoorAir,", + " SZ DSOA SPACE4-1, !- Name", + " sum, !- Outdoor Air Method", + " 0.00236, !- Outdoor Air Flow per Person {m3/s-person}", + " 0.000305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}", + " 0.0; !- Outdoor Air Flow per Zone {m3/s}", + + " Sizing:System,", + " VAV Sys 1, !- AirLoop Name", + " sensible, !- Type of Load to Size On", + " autosize, !- Design Outdoor Air Flow Rate {m3/s}", + " 0.3, !- Central Heating Maximum System Air Flow Ratio", + " 4.5, !- Preheat Design Temperature {C}", + " 0.008, !- Preheat Design Humidity Ratio {kgWater/kgDryAir}", + " 11.0, !- Precool Design Temperature {C}", + " 0.008, !- Precool Design Humidity Ratio {kgWater/kgDryAir}", + " 12.8, !- Central Cooling Design Supply Air Temperature {C}", + " 16.7, !- Central Heating Design Supply Air Temperature {C}", + " noncoincident, !- Type of Zone Sum to Use", + " no, !- 100% Outdoor Air in Cooling", + " no, !- 100% Outdoor Air in Heating", + " 0.008, !- Central Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " 0.008, !- Central Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " DesignDay, !- Cooling Design Air Flow Method", + " 0, !- Cooling Design Air Flow Rate {m3/s}", + " , !- Supply Air Flow Rate Per Floor Area During Cooling Operation {m3/s-m2}", + " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", + " , !- Design Supply Air Flow Rate Per Unit Cooling Capacity {m3/s-W}", + " DesignDay, !- Heating Design Air Flow Method", + " 0, !- Heating Design Air Flow Rate {m3/s}", + " , !- Supply Air Flow Rate Per Floor Area During Heating Operation {m3/s-m2}", + " , !- Fraction of Autosized Design Heating Supply Air Flow Rate", + " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", + " , !- Design Supply Air Flow Rate Per Unit Heating Capacity {m3/s-W}", + " , !- System Outdoor Air Method", + " 1.0, !- Zone Maximum Outdoor Air Fraction {dimensionless}", + " CoolingDesignCapacity, !- Cooling Design Capacity Method", + " autosize, !- Cooling Design Capacity {W}", + " , !- Cooling Design Capacity Per Floor Area {W/m2}", + " , !- Fraction of Autosized Cooling Design Capacity", + " HeatingDesignCapacity, !- Heating Design Capacity Method", + " autosize, !- Heating Design Capacity {W}", + " , !- Heating Design Capacity Per Floor Area {W/m2}", + " , !- Fraction of Autosized Heating Design Capacity", + " VAV; !- Central Cooling Capacity Control Method", + + " Curve:Biquadratic,", + " VarSpeedCoolCapFT, !- Name", + " 0.476428E+00, !- Coefficient1 Constant", + " 0.401147E-01, !- Coefficient2 x", + " 0.226411E-03, !- Coefficient3 x**2", + " -0.827136E-03, !- Coefficient4 y", + " -0.732240E-05, !- Coefficient5 y**2", + " -0.446278E-03, !- Coefficient6 x*y", + " 12.77778, !- Minimum Value of x", + " 23.88889, !- Maximum Value of x", + " 23.88889, !- Minimum Value of y", + " 46.11111, !- Maximum Value of y", + " , !- Minimum Curve Output", + " , !- Maximum Curve Output", + " Temperature, !- Input Unit Type for X", + " Temperature, !- Input Unit Type for Y", + " Dimensionless; !- Output Unit Type", + + " Curve:Biquadratic,", + " VarSpeedCoolEIRFT, !- Name", + " 0.632475E+00, !- Coefficient1 Constant", + " -0.121321E-01, !- Coefficient2 x", + " 0.507773E-03, !- Coefficient3 x**2", + " 0.155377E-01, !- Coefficient4 y", + " 0.272840E-03, !- Coefficient5 y**2", + " -0.679201E-03, !- Coefficient6 x*y", + " 12.77778, !- Minimum Value of x", + " 23.88889, !- Maximum Value of x", + " 23.88889, !- Minimum Value of y", + " 46.11111, !- Maximum Value of y", + " , !- Minimum Curve Output", + " , !- Maximum Curve Output", + " Temperature, !- Input Unit Type for X", + " Temperature, !- Input Unit Type for Y", + " Dimensionless; !- Output Unit Type", + + " Curve:Biquadratic,", + " VarSpeedCoolCapLSFT, !- Name", + " 0.476428E+00, !- Coefficient1 Constant", + " 0.401147E-01, !- Coefficient2 x", + " 0.226411E-03, !- Coefficient3 x**2", + " -0.827136E-03, !- Coefficient4 y", + " -0.732240E-05, !- Coefficient5 y**2", + " -0.446278E-03, !- Coefficient6 x*y", + " 12.77778, !- Minimum Value of x", + " 23.88889, !- Maximum Value of x", + " 23.88889, !- Minimum Value of y", + " 46.11111, !- Maximum Value of y", + " , !- Minimum Curve Output", + " , !- Maximum Curve Output", + " Temperature, !- Input Unit Type for X", + " Temperature, !- Input Unit Type for Y", + " Dimensionless; !- Output Unit Type", + + " Curve:Biquadratic,", + " VarSpeedCoolEIRLSFT, !- Name", + " 0.774645E+00, !- Coefficient1 Constant", + " -0.343731E-01, !- Coefficient2 x", + " 0.783173E-03, !- Coefficient3 x**2", + " 0.146596E-01, !- Coefficient4 y", + " 0.488851E-03, !- Coefficient5 y**2", + " -0.752036E-03, !- Coefficient6 x*y", + " 12.77778, !- Minimum Value of x", + " 23.88889, !- Maximum Value of x", + " 23.88889, !- Minimum Value of y", + " 46.11111, !- Maximum Value of y", + " , !- Minimum Curve Output", + " , !- Maximum Curve Output", + " Temperature, !- Input Unit Type for X", + " Temperature, !- Input Unit Type for Y", + " Dimensionless; !- Output Unit Type", + + " Curve:Biquadratic,", + " HPACCoolCapFT, !- Name", + " 0.942587793, !- Coefficient1 Constant", + " 0.009543347, !- Coefficient2 x", + " 0.00068377, !- Coefficient3 x**2", + " -0.011042676, !- Coefficient4 y", + " 0.000005249, !- Coefficient5 y**2", + " -0.00000972, !- Coefficient6 x*y", + " -100, !- Minimum Value of x", + " 100, !- Maximum Value of x", + " -100, !- Minimum Value of y", + " 100, !- Maximum Value of y", + " , !- Minimum Curve Output", + " , !- Maximum Curve Output", + " Temperature, !- Input Unit Type for X", + " Temperature, !- Input Unit Type for Y", + " Dimensionless; !- Output Unit Type", + + " Curve:Biquadratic,", + " HPACCOOLEIRFT, !- Name", + " 0.342414409, !- Coefficient1 Constant", + " 0.034885008, !- Coefficient2 x", + " -0.0006237, !- Coefficient3 x**2", + " 0.004977216, !- Coefficient4 y", + " 0.000437951, !- Coefficient5 y**2", + " -0.000728028, !- Coefficient6 x*y", + " -100, !- Minimum Value of x", + " 100, !- Maximum Value of x", + " -100, !- Minimum Value of y", + " 100, !- Maximum Value of y", + " , !- Minimum Curve Output", + " , !- Maximum Curve Output", + " Temperature, !- Input Unit Type for X", + " Temperature, !- Input Unit Type for Y", + " Dimensionless; !- Output Unit Type", + + " Curve:Quadratic,", + " HPACCoolCapFFF, !- Name", + " 0.8, !- Coefficient1 Constant", + " 0.2, !- Coefficient2 x", + " 0.0, !- Coefficient3 x**2", + " 0.0, !- Minimum Value of x", + " 1.0; !- Maximum Value of x", + + " Curve:Quadratic,", + " HPACCOOLEIRFFF, !- Name", + " 1.1552, !- Coefficient1 Constant", + " -0.1808, !- Coefficient2 x", + " 0.0256, !- Coefficient3 x**2", + " 0.0, !- Minimum Value of x", + " 1.0; !- Maximum Value of x", + + " Curve:Quadratic,", + " HPACCOOLPLFFPLR, !- Name", + " 0.75, !- Coefficient1 Constant", + " 0.25, !- Coefficient2 x", + " 0.0, !- Coefficient3 x**2", + " 0.0, !- Minimum Value of x", + " 1.0; !- Maximum Value of x", + + " Curve:Cubic,", + " PackagedRatedCoolCapFFlow, !- Name", + " 0.47278589, !- Coefficient1 Constant", + " 1.2433415, !- Coefficient2 x", + " -1.0387055, !- Coefficient3 x**2", + " 0.32257813, !- Coefficient4 x**3", + " 0.5, !- Minimum Value of x", + " 1.5, !- Maximum Value of x", + " , !- Minimum Curve Output", + " , !- Maximum Curve Output", + " Dimensionless, !- Input Unit Type for X", + " Dimensionless; !- Output Unit Type", + + " Curve:Cubic,", + " PackagedRatedCoolEIRFFlow, !- Name", + " 1.0079484, !- Coefficient1 Constant", + " 0.34544129, !- Coefficient2 x", + " -.6922891, !- Coefficient3 x**2", + " 0.33889943, !- Coefficient4 x**3", + " 0.5, !- Minimum Value of x", + " 1.5, !- Maximum Value of x", + " , !- Minimum Curve Output", + " , !- Maximum Curve Output", + " Dimensionless, !- Input Unit Type for X", + " Dimensionless; !- Output Unit Type", + + " Curve:Cubic,", + " EXHAUSTFANPLF, !- Name", + " 0, !- Coefficient1 Constant", + " 1, !- Coefficient2 x", + " 0.0, !- Coefficient3 x**2", + " 0.0, !- Coefficient4 x**3", + " 0.0, !- Minimum Value of x", + " 1.0; !- Maximum Value of x", + + " Curve:Quadratic,", + " VarSpeedCyclingPLFFPLR, !- Name", + " 0.85, !- Coefficient1 Constant", + " 0.15, !- Coefficient2 x", + " 0.0, !- Coefficient3 x**2", + " 0.0, !- Minimum Value of x", + " 1.0; !- Maximum Value of x", + + " NodeList,", + " OutsideAirInletNodes, !- Name", + " Outside Air Inlet Node; !- Node 1 Name", + + " NodeList,", + " SPACE1-1 In Nodes, !- Name", + " SPACE1-1 In Node; !- Node 1 Name", + + " NodeList,", + " SPACE2-1 In Nodes, !- Name", + " SPACE2-1 In Node; !- Node 1 Name", + + " NodeList,", + " SPACE3-1 In Nodes, !- Name", + " SPACE3-1 In Node; !- Node 1 Name", + + " NodeList,", + " SPACE4-1 In Nodes, !- Name", + " SPACE4-1 In Node; !- Node 1 Name", + + " NodeList,", + " Supply Air Temp Nodes 1, !- Name", + " VAV Sys 1 Outlet Node; !- Node 1 Name", + + " NodeList,", + " Supply Fan Upstream Nodes, !- Name", + " Mixed Air Node 1, !- Node 1 Name", + " Main Cooling Coil 1 Outlet Node, !- Node 2 Name", + " Main Heating Coil 1 Outlet Node; !- Node 3 Name", + + " BranchList,", + " VAV Sys 1 Branches, !- Name", + " VAV Sys 1 Main Branch; !- Branch 1 Name", + + " Branch,", + " VAV Sys 1 Main Branch, !- Name", + " , !- Pressure Drop Curve Name", + " AirLoopHVAC:OutdoorAirSystem, !- Component 1 Object Type", + " OA Sys 1, !- Component 1 Name", + " VAV Sys 1 Inlet Node, !- Component 1 Inlet Node Name", + " Mixed Air Node 1, !- Component 1 Outlet Node Name", + " CoilSystem:Cooling:DX, !- Component 2 Object Type", + " DX Cooling Coil System 1,!- Component 2 Name", + " Mixed Air Node 1, !- Component 2 Inlet Node Name", + " Main Cooling Coil 1 Outlet Node, !- Component 2 Outlet Node Name", + " Coil:Heating:Fuel, !- Component 3 Object Type", + " Main Heating Coil 1, !- Component 3 Name", + " Main Cooling Coil 1 Outlet Node, !- Component 3 Inlet Node Name", + " Main Heating Coil 1 Outlet Node, !- Component 3 Outlet Node Name", + " Fan:VariableVolume, !- Component 4 Object Type", + " Supply Fan 1, !- Component 4 Name", + " Main Heating Coil 1 Outlet Node, !- Component 4 Inlet Node Name", + " VAV Sys 1 Outlet Node; !- Component 4 Outlet Node Name", + + " AirLoopHVAC,", + " VAV Sys 1, !- Name", + " , !- Controller List Name", + " VAV Sys 1 Avail List, !- Availability Manager List Name", + " autosize, !- Design Supply Air Flow Rate {m3/s}", + " VAV Sys 1 Branches, !- Branch List Name", + " , !- Connector List Name", + " VAV Sys 1 Inlet Node, !- Supply Side Inlet Node Name", + " PLENUM-1 Out Node, !- Demand Side Outlet Node Name", + " Zone Eq In Node, !- Demand Side Inlet Node Names", + " VAV Sys 1 Outlet Node; !- Supply Side Outlet Node Names", + + " AirLoopHVAC:ControllerList,", + " OA Sys 1 Controllers, !- Name", + " Controller:OutdoorAir, !- Controller 1 Object Type", + " OA Controller 1; !- Controller 1 Name", + + " AirLoopHVAC:OutdoorAirSystem:EquipmentList,", + " OA Sys 1 Equipment, !- Name", + " Dehumidifier:Desiccant:System, !- Component 1 Object Type", + " OA Desiccant System, !- Component 1 Name", + " HeatExchanger:AirToAir:FlatPlate, !- Component 2 Object Type", + " OA Heat Recovery, !- Component 2 Name", + " OutdoorAir:Mixer, !- Component 3 Object Type", + " OA Mixing Box 1; !- Component 3 Name", + + " AirLoopHVAC:OutdoorAirSystem,", + " OA Sys 1, !- Name", + " OA Sys 1 Controllers, !- Controller List Name", + " OA Sys 1 Equipment, !- Outdoor Air Equipment List Name", + " VAV Sys 1 Avail List; !- Availability Manager List Name", + + " OutdoorAir:Node,", + " Main Cooling Coil 1 Condenser Node, !- Name", + " -1.0; !- Height Above Ground {m}", + + " OutdoorAir:NodeList,", + " OutsideAirInletNodes; !- Node or NodeList Name 1", + + " OutdoorAir:NodeList,", + " Desiccant DXSystem Outside Air Inlet Node, !- Node or NodeList Name 1", + " Desiccant Outside Air Inlet Node 2; !- Node or NodeList Name 2", + + " OutdoorAir:NodeList,", + " Regen Coil Inlet Node; !- Node or NodeList Name 1", + + " OutdoorAir:NodeList,", + " Condenser Inlet Node; !- Node or NodeList Name 1", + + " OutdoorAir:Mixer,", + " OA Mixing Box 1, !- Name", + " Mixed Air Node 1, !- Mixed Air Node Name", + " OA Heat Recovery Outlet Node, !- Outdoor Air Stream Node Name", + " Relief Air Outlet Node, !- Relief Air Stream Node Name", + " VAV Sys 1 Inlet Node; !- Return Air Stream Node Name", + + " AvailabilityManagerAssignmentList,", + " VAV Sys 1 Avail List, !- Name", + " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", + " VAV Sys 1 Avail; !- Availability Manager 1 Name", + + " AvailabilityManagerAssignmentList,", + " Desiccant Outdoor Air Avail List, !- Name", + " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", + " Desiccant Outdoor Air Avail; !- Availability Manager 1 Name", + + " AvailabilityManager:Scheduled,", + " VAV Sys 1 Avail, !- Name", + " FanAvailSched; !- Schedule Name", + + " AvailabilityManager:Scheduled,", + " Desiccant Outdoor Air Avail, !- Name", + " FanAvailSched; !- Schedule Name", + + " SetpointManager:Scheduled,", + " Supply Air Temp Manager 1, !- Name", + " Temperature, !- Control Variable", + " Seasonal Reset Supply Air Temp Sch, !- Schedule Name", + " Supply Air Temp Nodes 1; !- Setpoint Node or NodeList Name", + + " SetpointManager:MixedAir,", + " Mixed Air and Coil Exit Temp Manager 1, !- Name", + " Temperature, !- Control Variable", + " VAV Sys 1 Outlet Node, !- Reference Setpoint Node Name", + " Main Heating Coil 1 Outlet Node, !- Fan Inlet Node Name", + " VAV Sys 1 Outlet Node, !- Fan Outlet Node Name", + " Supply Fan Upstream Nodes; !- Setpoint Node or NodeList Name", + + " SetpointManager:MixedAir,", + " Adjusted Cooling Supply Air Temp Manager, !- Name", + " Temperature, !- Control Variable", + " Desiccant Supply Fan Outlet Node, !- Reference Setpoint Node Name", + " HX Process Outlet Node, !- Fan Inlet Node Name", + " Desiccant Supply Fan Outlet Node, !- Fan Outlet Node Name", + " HX Process Outlet Node; !- Setpoint Node or NodeList Name", + + " Controller:OutdoorAir,", + " OA Controller 1, !- Name", + " Relief Air Outlet Node, !- Relief Air Outlet Node Name", + " VAV Sys 1 Inlet Node, !- Return Air Node Name", + " Mixed Air Node 1, !- Mixed Air Node Name", + " Outside Air Inlet Node, !- Actuator Node Name", + " autosize, !- Minimum Outdoor Air Flow Rate {m3/s}", + " autosize, !- Maximum Outdoor Air Flow Rate {m3/s}", + " FixedDryBulb, !- Economizer Control Type", + " ModulateFlow, !- Economizer Control Action Type", + " 19., !- Economizer Maximum Limit Dry-Bulb Temperature {C}", + " , !- Economizer Maximum Limit Enthalpy {J/kg}", + " , !- Economizer Maximum Limit Dewpoint Temperature {C}", + " , !- Electronic Enthalpy Limit Curve Name", + " 4., !- Economizer Minimum Limit Dry-Bulb Temperature {C}", + " NoLockout, !- Lockout Type", + " FixedMinimum, !- Minimum Limit Type", + " Min OA Sched; !- Minimum Outdoor Air Schedule Name", + + " ZoneHVAC:EquipmentConnections,", + " SPACE1-1, !- Zone Name", + " SPACE1-1 Eq, !- Zone Conditioning Equipment List Name", + " SPACE1-1 In Nodes, !- Zone Air Inlet Node or NodeList Name", + " , !- Zone Air Exhaust Node or NodeList Name", + " SPACE1-1 Node, !- Zone Air Node Name", + " SPACE1-1 Out Node; !- Zone Return Air Node Name", + + " ZoneHVAC:EquipmentConnections,", + " SPACE2-1, !- Zone Name", + " SPACE2-1 Eq, !- Zone Conditioning Equipment List Name", + " SPACE2-1 In Nodes, !- Zone Air Inlet Node or NodeList Name", + " , !- Zone Air Exhaust Node or NodeList Name", + " SPACE2-1 Node, !- Zone Air Node Name", + " SPACE2-1 Out Node; !- Zone Return Air Node Name", + + " ZoneHVAC:EquipmentConnections,", + " SPACE3-1, !- Zone Name", + " SPACE3-1 Eq, !- Zone Conditioning Equipment List Name", + " SPACE3-1 In Nodes, !- Zone Air Inlet Node or NodeList Name", + " , !- Zone Air Exhaust Node or NodeList Name", + " SPACE3-1 Node, !- Zone Air Node Name", + " SPACE3-1 Out Node; !- Zone Return Air Node Name", + + " ZoneHVAC:EquipmentConnections,", + " SPACE4-1, !- Zone Name", + " SPACE4-1 Eq, !- Zone Conditioning Equipment List Name", + " SPACE4-1 In Nodes, !- Zone Air Inlet Node or NodeList Name", + " , !- Zone Air Exhaust Node or NodeList Name", + " SPACE4-1 Node, !- Zone Air Node Name", + " SPACE4-1 Out Node; !- Zone Return Air Node Name", + + " ZoneHVAC:EquipmentList,", + " SPACE1-1 Eq, !- Name", + " SequentialLoad, !- Load Distribution Scheme", + " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", + " SPACE1-1 ATU, !- Zone Equipment 1 Name", + " 1, !- Zone Equipment 1 Cooling Sequence", + " 1; !- Zone Equipment 1 Heating or No-Load Sequence", + + " ZoneHVAC:EquipmentList,", + " SPACE2-1 Eq, !- Name", + " SequentialLoad, !- Load Distribution Scheme", + " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", + " SPACE2-1 ATU, !- Zone Equipment 1 Name", + " 1, !- Zone Equipment 1 Cooling Sequence", + " 1; !- Zone Equipment 1 Heating or No-Load Sequence", + + " ZoneHVAC:EquipmentList,", + " SPACE3-1 Eq, !- Name", + " SequentialLoad, !- Load Distribution Scheme", + " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", + " SPACE3-1 ATU, !- Zone Equipment 1 Name", + " 1, !- Zone Equipment 1 Cooling Sequence", + " 1; !- Zone Equipment 1 Heating or No-Load Sequence", + + " ZoneHVAC:EquipmentList,", + " SPACE4-1 Eq, !- Name", + " SequentialLoad, !- Load Distribution Scheme", + " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", + " SPACE4-1 ATU, !- Zone Equipment 1 Name", + " 1, !- Zone Equipment 1 Cooling Sequence", + " 1; !- Zone Equipment 1 Heating or No-Load Sequence", + + " ZoneHVAC:AirDistributionUnit,", + " SPACE1-1 ATU, !- Name", + " SPACE1-1 In Node, !- Air Distribution Unit Outlet Node Name", + " AirTerminal:SingleDuct:VAV:Reheat, !- Air Terminal Object Type", + " SPACE1-1 VAV Reheat; !- Air Terminal Name", + + " ZoneHVAC:AirDistributionUnit,", + " SPACE2-1 ATU, !- Name", + " SPACE2-1 In Node, !- Air Distribution Unit Outlet Node Name", + " AirTerminal:SingleDuct:VAV:Reheat, !- Air Terminal Object Type", + " SPACE2-1 VAV Reheat; !- Air Terminal Name", + + " ZoneHVAC:AirDistributionUnit,", + " SPACE3-1 ATU, !- Name", + " SPACE3-1 In Node, !- Air Distribution Unit Outlet Node Name", + " AirTerminal:SingleDuct:VAV:Reheat, !- Air Terminal Object Type", + " SPACE3-1 VAV Reheat; !- Air Terminal Name", + + " ZoneHVAC:AirDistributionUnit,", + " SPACE4-1 ATU, !- Name", + " SPACE4-1 In Node, !- Air Distribution Unit Outlet Node Name", + " AirTerminal:SingleDuct:VAV:Reheat, !- Air Terminal Object Type", + " SPACE4-1 VAV Reheat; !- Air Terminal Name", + + " CoilSystem:Cooling:DX,", + " DX Cooling Coil System 1,!- Name", + " FanAvailSched, !- Availability Schedule Name", + " Mixed Air Node 1, !- DX Cooling Coil System Inlet Node Name", + " Main Cooling Coil 1 Outlet Node, !- DX Cooling Coil System Outlet Node Name", + " Main Cooling Coil 1 Outlet Node, !- DX Cooling Coil System Sensor Node Name", + " Coil:Cooling:DX:TwoSpeed,!- Cooling Coil Object Type", + " Main Cooling Coil 1; !- Cooling Coil Name", + + " AirTerminal:SingleDuct:VAV:Reheat,", + " SPACE1-1 VAV Reheat, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " SPACE1-1 Zone Coil Air In Node, !- Damper Air Outlet Node Name", + " SPACE1-1 ATU In Node, !- Air Inlet Node Name", + " autosize, !- Maximum Air Flow Rate {m3/s}", + " Constant, !- Zone Minimum Air Flow Input Method", + " 0.3, !- Constant Minimum Air Flow Fraction", + " , !- Fixed Minimum Air Flow Rate {m3/s}", + " , !- Minimum Air Flow Fraction Schedule Name", + " Coil:Heating:Fuel, !- Reheat Coil Object Type", + " SPACE1-1 Zone Coil, !- Reheat Coil Name", + " 0.0, !- Maximum Hot Water or Steam Flow Rate {m3/s}", + " 0.0, !- Minimum Hot Water or Steam Flow Rate {m3/s}", + " SPACE1-1 In Node, !- Air Outlet Node Name", + " 0.001, !- Convergence Tolerance", + " Reverse, !- Damper Heating Action", + " AUTOCALCULATE, !- Maximum Flow per Zone Floor Area During Reheat {m3/s-m2}", + " AUTOCALCULATE; !- Maximum Flow Fraction During Reheat", + + " AirTerminal:SingleDuct:VAV:Reheat,", + " SPACE2-1 VAV Reheat, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " SPACE2-1 Zone Coil Air In Node, !- Damper Air Outlet Node Name", + " SPACE2-1 ATU In Node, !- Air Inlet Node Name", + " autosize, !- Maximum Air Flow Rate {m3/s}", + " Constant, !- Zone Minimum Air Flow Input Method", + " 0.3, !- Constant Minimum Air Flow Fraction", + " , !- Fixed Minimum Air Flow Rate {m3/s}", + " , !- Minimum Air Flow Fraction Schedule Name", + " Coil:Heating:Fuel, !- Reheat Coil Object Type", + " SPACE2-1 Zone Coil, !- Reheat Coil Name", + " 0.0, !- Maximum Hot Water or Steam Flow Rate {m3/s}", + " 0.0, !- Minimum Hot Water or Steam Flow Rate {m3/s}", + " SPACE2-1 In Node, !- Air Outlet Node Name", + " 0.001, !- Convergence Tolerance", + " Reverse, !- Damper Heating Action", + " AUTOCALCULATE, !- Maximum Flow per Zone Floor Area During Reheat {m3/s-m2}", + " AUTOCALCULATE; !- Maximum Flow Fraction During Reheat", + + " AirTerminal:SingleDuct:VAV:Reheat,", + " SPACE3-1 VAV Reheat, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " SPACE3-1 Zone Coil Air In Node, !- Damper Air Outlet Node Name", + " SPACE3-1 ATU In Node, !- Air Inlet Node Name", + " autosize, !- Maximum Air Flow Rate {m3/s}", + " Constant, !- Zone Minimum Air Flow Input Method", + " 0.3, !- Constant Minimum Air Flow Fraction", + " , !- Fixed Minimum Air Flow Rate {m3/s}", + " , !- Minimum Air Flow Fraction Schedule Name", + " Coil:Heating:Fuel, !- Reheat Coil Object Type", + " SPACE3-1 Zone Coil, !- Reheat Coil Name", + " 0.0, !- Maximum Hot Water or Steam Flow Rate {m3/s}", + " 0.0, !- Minimum Hot Water or Steam Flow Rate {m3/s}", + " SPACE3-1 In Node, !- Air Outlet Node Name", + " 0.001, !- Convergence Tolerance", + " Reverse, !- Damper Heating Action", + " AUTOCALCULATE, !- Maximum Flow per Zone Floor Area During Reheat {m3/s-m2}", + " AUTOCALCULATE; !- Maximum Flow Fraction During Reheat", + + " AirTerminal:SingleDuct:VAV:Reheat,", + " SPACE4-1 VAV Reheat, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " SPACE4-1 Zone Coil Air In Node, !- Damper Air Outlet Node Name", + " SPACE4-1 ATU In Node, !- Air Inlet Node Name", + " autosize, !- Maximum Air Flow Rate {m3/s}", + " Constant, !- Zone Minimum Air Flow Input Method", + " 0.3, !- Constant Minimum Air Flow Fraction", + " , !- Fixed Minimum Air Flow Rate {m3/s}", + " , !- Minimum Air Flow Fraction Schedule Name", + " Coil:Heating:Fuel, !- Reheat Coil Object Type", + " SPACE4-1 Zone Coil, !- Reheat Coil Name", + " 0.0, !- Maximum Hot Water or Steam Flow Rate {m3/s}", + " 0.0, !- Minimum Hot Water or Steam Flow Rate {m3/s}", + " SPACE4-1 In Node, !- Air Outlet Node Name", + " 0.001, !- Convergence Tolerance", + " Reverse, !- Damper Heating Action", + " AUTOCALCULATE, !- Maximum Flow per Zone Floor Area During Reheat {m3/s-m2}", + " AUTOCALCULATE; !- Maximum Flow Fraction During Reheat", + + " ZoneControl:Thermostat,", + " SPACE1-1 Control, !- Name", + " SPACE1-1, !- Zone or ZoneList Name", + " Zone Control Type Sched, !- Control Type Schedule Name", + " ThermostatSetpoint:SingleCooling, !- Control 1 Object Type", + " CoolingSetPoint, !- Control 1 Name", + " ThermostatSetpoint:SingleHeating, !- Control 2 Object Type", + " HeatingSetpoint, !- Control 2 Name", + " ThermostatSetpoint:DualSetpoint, !- Control 3 Object Type", + " DualSetPoint; !- Control 3 Name", + + " ZoneControl:Thermostat,", + " SPACE2-1 Control, !- Name", + " SPACE2-1, !- Zone or ZoneList Name", + " Zone Control Type Sched, !- Control Type Schedule Name", + " ThermostatSetpoint:SingleCooling, !- Control 1 Object Type", + " CoolingSetPoint, !- Control 1 Name", + " ThermostatSetpoint:SingleHeating, !- Control 2 Object Type", + " HeatingSetpoint, !- Control 2 Name", + " ThermostatSetpoint:DualSetpoint, !- Control 3 Object Type", + " DualSetPoint; !- Control 3 Name", + + " ZoneControl:Thermostat,", + " SPACE3-1 Control, !- Name", + " SPACE3-1, !- Zone or ZoneList Name", + " Zone Control Type Sched, !- Control Type Schedule Name", + " ThermostatSetpoint:SingleCooling, !- Control 1 Object Type", + " CoolingSetPoint, !- Control 1 Name", + " ThermostatSetpoint:SingleHeating, !- Control 2 Object Type", + " HeatingSetpoint, !- Control 2 Name", + " ThermostatSetpoint:DualSetpoint, !- Control 3 Object Type", + " DualSetPoint; !- Control 3 Name", + + " ZoneControl:Thermostat,", + " SPACE4-1 Control, !- Name", + " SPACE4-1, !- Zone or ZoneList Name", + " Zone Control Type Sched, !- Control Type Schedule Name", + " ThermostatSetpoint:SingleCooling, !- Control 1 Object Type", + " CoolingSetPoint, !- Control 1 Name", + " ThermostatSetpoint:SingleHeating, !- Control 2 Object Type", + " HeatingSetpoint, !- Control 2 Name", + " ThermostatSetpoint:DualSetpoint, !- Control 3 Object Type", + " DualSetPoint; !- Control 3 Name", + + " Schedule:Compact,", + " Relative Humidity Sched, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,45.0; !- Field 3", + + " ThermostatSetpoint:SingleHeating,", + " HeatingSetpoint, !- Name", + " Htg-SetP-Sch; !- Setpoint Temperature Schedule Name", + + " ThermostatSetpoint:SingleHeating,", + " PlenumHeatingSetpoint, !- Name", + " PlenumHtg-SetP-Sch; !- Setpoint Temperature Schedule Name", + + " ThermostatSetpoint:SingleCooling,", + " CoolingSetpoint, !- Name", + " Clg-SetP-Sch; !- Setpoint Temperature Schedule Name", + + " ThermostatSetpoint:SingleCooling,", + " PlenumCoolingSetpoint, !- Name", + " PlenumClg-SetP-Sch; !- Setpoint Temperature Schedule Name", + + " ThermostatSetpoint:DualSetpoint,", + " DualSetPoint, !- Name", + " Htg-SetP-Sch, !- Heating Setpoint Temperature Schedule Name", + " Clg-SetP-Sch; !- Cooling Setpoint Temperature Schedule Name", + + " AirLoopHVAC:SupplyPath,", + " Zone Supply Air Path 1, !- Name", + " Zone Eq In Node, !- Supply Air Path Inlet Node Name", + " AirLoopHVAC:ZoneSplitter,!- Component 1 Object Type", + " Zone Supply Air Splitter 1; !- Component 1 Name", + + " AirLoopHVAC:ReturnPath,", + " ReturnAirPath1, !- Name", + " PLENUM-1 Out Node, !- Return Air Path Outlet Node Name", + " AirLoopHVAC:ReturnPlenum,!- Component 1 Object Type", + " Return-Plenum-1; !- Component 1 Name", + + " AirLoopHVAC:ReturnPlenum,", + " Return-Plenum-1, !- Name", + " PLENUM-1, !- Zone Name", + " PLENUM-1 Node, !- Zone Node Name", + " PLENUM-1 Out Node, !- Outlet Node Name", + " , !- Induced Air Outlet Node or NodeList Name", + " SPACE1-1 Out Node, !- Inlet 1 Node Name", + " SPACE2-1 Out Node, !- Inlet 2 Node Name", + " SPACE3-1 Out Node, !- Inlet 3 Node Name", + " SPACE4-1 Out Node; !- Inlet 4 Node Name", + + " AirLoopHVAC:ZoneSplitter,", + " Zone Supply Air Splitter 1, !- Name", + " Zone Eq In Node, !- Inlet Node Name", + " SPACE1-1 ATU In Node, !- Outlet 1 Node Name", + " SPACE2-1 ATU In Node, !- Outlet 2 Node Name", + " SPACE3-1 ATU In Node, !- Outlet 3 Node Name", + " SPACE4-1 ATU In Node; !- Outlet 4 Node Name", + + " Coil:Heating:Fuel,", + " SPACE1-1 Zone Coil, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " Gas, !- Fuel Type", + " 0.8, !- Gas Burner Efficiency", + " autosize, !- Nominal Capacity {W}", + " SPACE1-1 Zone Coil Air In Node, !- Air Inlet Node Name", + " SPACE1-1 In Node; !- Air Outlet Node Name", + + " Coil:Heating:Fuel,", + " SPACE2-1 Zone Coil, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " Gas, !- Fuel Type", + " 0.8, !- Gas Burner Efficiency", + " autosize, !- Nominal Capacity {W}", + " SPACE2-1 Zone Coil Air In Node, !- Air Inlet Node Name", + " SPACE2-1 In Node; !- Air Outlet Node Name", + + " Coil:Heating:Fuel,", + " SPACE3-1 Zone Coil, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " Gas, !- Fuel Type", + " 0.8, !- Gas Burner Efficiency", + " autosize, !- Nominal Capacity {W}", + " SPACE3-1 Zone Coil Air In Node, !- Air Inlet Node Name", + " SPACE3-1 In Node; !- Air Outlet Node Name", + + " Coil:Heating:Fuel,", + " SPACE4-1 Zone Coil, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " Gas, !- Fuel Type", + " 0.8, !- Gas Burner Efficiency", + " autosize, !- Nominal Capacity {W}", + " SPACE4-1 Zone Coil Air In Node, !- Air Inlet Node Name", + " SPACE4-1 In Node; !- Air Outlet Node Name", + + " Coil:Heating:Fuel,", + " Main heating Coil 1, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " Gas, !- Fuel Type", + " 0.8, !- Gas Burner Efficiency", + " autosize, !- Nominal Capacity {W}", + " Main Cooling Coil 1 Outlet Node, !- Air Inlet Node Name", + " Main Heating Coil 1 Outlet Node, !- Air Outlet Node Name", + " Main Heating Coil 1 Outlet Node; !- Temperature Setpoint Node Name", + + " Coil:Cooling:DX:TwoSpeed,", + " Main Cooling Coil 1, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " autosize, !- High Speed Gross Rated Total Cooling Capacity {W}", + " autosize, !- Gross Rated Sensible Heat Ratio", + " 3.0, !- High Speed Gross Rated Cooling COP {W/W}", + " autosize, !- High Speed Rated Air Flow Rate {m3/s}", + " , !- Unit Internal Static Air Pressure {Pa}", + " Mixed Air Node 1, !- Air Inlet Node Name", + " Main Cooling Coil 1 Outlet Node, !- Air Outlet Node Name", + " VarSpeedCoolCapFT, !- Total Cooling Capacity Function of Temperature Curve Name", + " PackagedRatedCoolCapFFlow, !- Total Cooling Capacity Function of Flow Fraction Curve Name", + " VarSpeedCoolEIRFT, !- Energy Input Ratio Function of Temperature Curve Name", + " PackagedRatedCoolEIRFFlow, !- Energy Input Ratio Function of Flow Fraction Curve Name", + " VarSpeedCyclingPLFFPLR, !- Part Load Fraction Correlation Curve Name", + " autosize, !- Low Speed Gross Rated Total Cooling Capacity {W}", + " autosize, !- Low Speed Gross Rated Sensible Heat Ratio", + " 4.2, !- Low Speed Gross Rated Cooling COP {W/W}", + " autosize, !- Low Speed Rated Air Flow Rate {m3/s}", + " VarSpeedCoolCapLSFT, !- Low Speed Total Cooling Capacity Function of Temperature Curve Name", + " VarSpeedCoolEIRLSFT, !- Low Speed Energy Input Ratio Function of Temperature Curve Name", + " Main Cooling Coil 1 Condenser Node; !- Condenser Air Inlet Node Name", + + " Coil:Cooling:DX:SingleSpeed,", + " Desiccant DXSystem Cooling Coil, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " autosize, !- High Speed Rated Air Flow Rate {m3/s}", + " autosize, !- Gross Rated Sensible Heat Ratio", + " 3.5, !- Gross Rated Cooling COP {W/W}", + " autosize, !- High Speed Rated Air Flow Rate {m3/s}", + " , !- Rated Evaporator Fan Power Per Volume Flow Rate {W/(m3/s)}", + " Desiccant DXSystem Mixed Air Node, !- Air Inlet Node Name", + " HX Process Inlet Node, !- Air Outlet Node Name", + " HPACCoolCapFT, !- Total Cooling Capacity Function of Temperature Curve Name", + " HPACCoolCapFFF, !- Total Cooling Capacity Function of Flow Fraction Curve Name", + " HPACCOOLEIRFT, !- Energy Input Ratio Function of Temperature Curve Name", + " HPACCOOLEIRFFF, !- Energy Input Ratio Function of Flow Fraction Curve Name", + " HPACCOOLPLFFPLR, !- Part Load Fraction Correlation Curve Name", + " , !- Minimum Outdoor Dry-Bulb Temperature for Compressor Operation {C}", + " 1000, !- Nominal Time for Condensate Removal to Begin {s}", + " 0.4, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}", + " 4, !- Maximum Cycling Rate {cycles/hr}", + " 45, !- Latent Capacity Time Constant {s}", + " Condenser Inlet Node, !- Condenser Air Inlet Node Name", + " AirCooled; !- Condenser Type", + + " Fan:VariableVolume,", + " Supply Fan 1, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " 0.7, !- Fan Total Efficiency", + " 600.0, !- Pressure Rise {Pa}", + " autosize, !- Maximum Flow Rate {m3/s}", + " FixedFlowRate, !- Fan Power Minimum Flow Rate Input Method", + " , !- Fan Power Minimum Flow Fraction", + " 0.35326, !- Fan Power Minimum Air Flow Rate {m3/s}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Airstream Fraction", + " 0.0015302446, !- Fan Power Coefficient 1", + " 0.0052080574, !- Fan Power Coefficient 2", + " 1.1086242, !- Fan Power Coefficient 3", + " -0.11635563, !- Fan Power Coefficient 4", + " 0.000, !- Fan Power Coefficient 5", + " Main Heating Coil 1 Outlet Node, !- Air Inlet Node Name", + " VAV Sys 1 Outlet Node; !- Air Outlet Node Name", + + " HeatExchanger:AirToAir:FlatPlate,", + " OA Heat Recovery, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " CounterFlow, !- Flow Arrangement Type", + " Yes, !- Economizer Lockout", + " 1.0, !- Ratio of Supply to Secondary hA Values", + " autosize, !- Nominal Supply Air Flow Rate {m3/s}", + " 5.0, !- Nominal Supply Air Inlet Temperature {C}", + " 15.0, !- Nominal Supply Air Outlet Temperature {C}", + " autosize, !- Nominal Secondary Air Flow Rate {m3/s}", + " 20.0, !- Nominal Secondary Air Inlet Temperature {C}", + " 0.0, !- Nominal Electric Power {W}", + " OA Desiccant Process Outlet Node, !- Supply Air Inlet Node Name", + " OA Heat Recovery Outlet Node, !- Supply Air Outlet Node Name", + " Relief Air Outlet Node, !- Secondary Air Inlet Node Name", + " OA Heat Recovery Secondary Outlet Node; !- Secondary Air Outlet Node Name", + + " Fan:OnOff,", + " OA Desiccant Regen Fan, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " 0.7, !- Fan Total Efficiency", + " 205.5, !- Pressure Rise {Pa}", + " autosize, !- Maximum Flow Rate {m3/s}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Airstream Fraction", + " OA HX Regen Outlet Node, !- Air Inlet Node Name", + " OA Regen Fan Outlet Node;!- Air Outlet Node Name", + + " Coil:Heating:Fuel,", + " OA Desiccant Regen Coil, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " Gas, !- Fuel Type", + " 0.80, !- Gas Burner Efficiency", + " autosize, !- Nominal Capacity {W}", + " OA Heat Recovery Secondary Outlet Node, !- Air Inlet Node Name", + " OA HX Regen Inlet Node; !- Air Outlet Node Name", + + " Dehumidifier:Desiccant:System,", + " OA Desiccant System, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " HeatExchanger:Desiccant:BalancedFlow, !- Desiccant Heat Exchanger Object Type", + " OA Desiccant Heat Exchanger, !- Desiccant Heat Exchanger Name", + " OA Desiccant Process Outlet Node, !- Sensor Node Name", + " Fan:OnOff, !- Regeneration Air Fan Object Type", + " OA Desiccant Regen Fan, !- Regeneration Air Fan Name", + " DrawThrough, !- Regeneration Air Fan Placement", + " Coil:Heating:Fuel, !- Regeneration Air Heater Object Type", + " OA Desiccant Regen Coil, !- Regeneration Air Heater Name", + " 46.111111; !- Regeneration Inlet Air Setpoint Temperature {C}", + + " SetpointManager:OutdoorAirPretreat,", + " DXSystem 1 Desiccant Set Point Manager, !- Name", + " MaximumHumidityRatio, !- Control Variable", + " -99, !- Minimum Setpoint Temperature {C}", + " 99, !- Maximum Setpoint Temperature {C}", + " 0.00001, !- Minimum Setpoint Humidity Ratio {kgWater/kgDryAir}", + " 1.0, !- Maximum Setpoint Humidity Ratio {kgWater/kgDryAir}", + " Mixed Air Node 1, !- Reference Setpoint Node Name", + " Mixed Air Node 1, !- Mixed Air Stream Node Name", + " OA Desiccant Process Outlet Node, !- Outdoor Air Stream Node Name", + " VAV Sys 1 Inlet Node, !- Return Air Stream Node Name", + " OA Desiccant Process Outlet Node; !- Setpoint Node or NodeList Name", + + " SetpointManager:SingleZone:Humidity:Maximum,", + " SPACE1-1 Humidistat Manager, !- Name", + " Mixed Air Node 1, !- Setpoint Node or NodeList Name", + " SPACE1-1 Node; !- Control Zone Air Node Name", + + " ZoneControl:Humidistat,", + " SPACE1-1 Humidistat, !- Name", + " SPACE1-1, !- Zone Name", + " Relative Humidity Sched; !- Humidifying Relative Humidity Setpoint Schedule Name", + + " HeatExchanger:Desiccant:BalancedFlow,", + " OA Desiccant Heat Exchanger, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " OA HX Regen Inlet Node, !- Regeneration Air Inlet Node Name", + " OA HX Regen Outlet Node, !- Regeneration Air Outlet Node Name", + " Outside Air Inlet Node, !- Process Air Inlet Node Name", + " OA Desiccant Process Outlet Node, !- Process Air Outlet Node Name", + " HeatExchanger:Desiccant:BalancedFlow:PerformanceDataType1, !- Heat Exchanger Performance Object Type", + " HXDesPerf2; !- Heat Exchanger Performance Name", + + " HeatExchanger:Desiccant:BalancedFlow:PerformanceDataType1,", + " HXDesPerf2, !- Name", + " 2.5893, !- Nominal Air Flow Rate {m3/s}", + " 4.8000, !- Nominal Air Face Velocity {m/s}", + " 50.0, !- Nominal Electric Power {W}", + " -3.0000E+00, !- Temperature Equation Coefficient 1", + " 0.00000E+01, !- Temperature Equation Coefficient 2", + " 1.00000E+00, !- Temperature Equation Coefficient 3", + " 0.00000E+00, !- Temperature Equation Coefficient 4", + " 0.00000E+00, !- Temperature Equation Coefficient 5", + " 0.00000E+00, !- Temperature Equation Coefficient 6", + " 0.00000E+00, !- Temperature Equation Coefficient 7", + " 0.00000E+00, !- Temperature Equation Coefficient 8", + " 0.000000, !- Minimum Regeneration Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", + " 1.000000, !- Maximum Regeneration Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", + " 46.111110, !- Minimum Regeneration Inlet Air Temperature for Temperature Equation {C}", + " 46.111112, !- Maximum Regeneration Inlet Air Temperature for Temperature Equation {C}", + " 0.000000, !- Minimum Process Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", + " 1.000000, !- Maximum Process Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", + " -100.000, !- Minimum Process Inlet Air Temperature for Temperature Equation {C}", + " 100.0000, !- Maximum Process Inlet Air Temperature for Temperature Equation {C}", + " 0.001, !- Minimum Regeneration Air Velocity for Temperature Equation {m/s}", + " 4.826, !- Maximum Regeneration Air Velocity for Temperature Equation {m/s}", + " 43.111110, !- Minimum Regeneration Outlet Air Temperature for Temperature Equation {C}", + " 43.111112, !- Maximum Regeneration Outlet Air Temperature for Temperature Equation {C}", + " 5.0, !- Minimum Regeneration Inlet Air Relative Humidity for Temperature Equation {percent}", + " 45.0, !- Maximum Regeneration Inlet Air Relative Humidity for Temperature Equation {percent}", + " 0.0, !- Minimum Process Inlet Air Relative Humidity for Temperature Equation {percent}", + " 100.0, !- Maximum Process Inlet Air Relative Humidity for Temperature Equation {percent}", + " 0.10000E-02, !- Humidity Ratio Equation Coefficient 1", + " 1.00000E+00, !- Humidity Ratio Equation Coefficient 2", + " 0.00000E+00, !- Humidity Ratio Equation Coefficient 3", + " 0.00000E+00, !- Humidity Ratio Equation Coefficient 4", + " 0.00000E+00, !- Humidity Ratio Equation Coefficient 5", + " 0.00000E+00, !- Humidity Ratio Equation Coefficient 6", + " 0.00000E+00, !- Humidity Ratio Equation Coefficient 7", + " 0.00000E+00, !- Humidity Ratio Equation Coefficient 8", + " 0.000000, !- Minimum Regeneration Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " 1.000000, !- Maximum Regeneration Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " 46.111110, !- Minimum Regeneration Inlet Air Temperature for Humidity Ratio Equation {C}", + " 46.111112, !- Maximum Regeneration Inlet Air Temperature for Humidity Ratio Equation {C}", + " 0.000000, !- Minimum Process Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " 1.000000, !- Maximum Process Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " -100.000, !- Minimum Process Inlet Air Temperature for Humidity Ratio Equation {C}", + " 100.0000, !- Maximum Process Inlet Air Temperature for Humidity Ratio Equation {C}", + " 0.001, !- Minimum Regeneration Air Velocity for Humidity Ratio Equation {m/s}", + " 4.826, !- Maximum Regeneration Air Velocity for Humidity Ratio Equation {m/s}", + " 0.000000, !- Minimum Regeneration Outlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " 1.000000, !- Maximum Regeneration Outlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " 5.0, !- Minimum Regeneration Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", + " 45.0, !- Maximum Regeneration Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", + " 0.0, !- Minimum Process Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", + " 100.0; !- Maximum Process Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", + + }); + + ASSERT_TRUE(process_idf(idf_objects)); + + OutputProcessor::TimeValue.allocate(2); + DataGlobals::DDOnlySimulation = true; + + SimulationManager::GetProjectData(); + OutputReportPredefined::SetPredefinedTables(); + createFacilityElectricPowerServiceObject(); + SetPreConstructionInputParameters(); // establish array bounds for constructions early + BranchInputManager::ManageBranchInput(); + BeginSimFlag = true; + BeginEnvrnFlag = true; + ZoneSizingCalc = true; + SysSizingCalc = true; + SizingManager::ManageSizing(); + + DataSizing::CurSysNum = 1; + DataSizing::CurOASysNum = 1; + + GetDesiccantDehumidifierInput(); + EXPECT_EQ(1, NumDesicDehums); + EXPECT_EQ("OA DESICCANT SYSTEM", DesicDehum(DesicDehumNum).Name); + EXPECT_EQ("OA DESICCANT REGEN COIL", DesicDehum(DesicDehumNum).RegenCoilName); + + CompName = DesicDehum(DesicDehumNum).Name; + CompIndex = NumGenericDesicDehums; + SimDesiccantDehumidifier(CompName, FirstHVACIteration, CompIndex); + + RegCoilDesInletTemp = FinalSysSizing(DataSizing::CurSysNum).HeatRetTemp; + RegCoilDesOutletTemp = DesicDehum(DesicDehumNum).RegenSetPointTemp; + RegCoilInletAirMassFlowRate = FinalSysSizing(DataSizing::CurSysNum).DesOutAirVolFlow * DataEnvironment::StdRhoAir; + RegCoilCapacity = RegCoilInletAirMassFlowRate * PsyCpAirFnWTdb(0.0, 20.0) * (RegCoilDesOutletTemp - RegCoilDesInletTemp); + + for (loop = 1; loop <= NumHeatingCoils; ++loop) { if (HeatingCoil(loop).Name == DesicDehum(DesicDehumNum).RegenCoilName) { CoilIndex = loop; } - } - EXPECT_EQ( RegCoilCapacity, HeatingCoil( CoilIndex ).NominalCapacity ); - } + } + EXPECT_EQ(RegCoilCapacity, HeatingCoil(CoilIndex).NominalCapacity); +} TEST_F(EnergyPlusFixture, DesiccantDehum_OnPrimaryAirSystemTest) { - std::string CompName( "" ); - bool FirstHVACIteration( true ); - int DesicDehumNum( 1 ); - int CompIndex( 1 ); - int CoilIndex( 0 ); - int loop( 0 ); - Real64 RegCoilDesInletTemp( 0.0 ); - Real64 RegCoilDesOutletTemp( 0.0 ); - Real64 RegCoilInletAirMassFlowRate( 0.0 ); - Real64 RegCoilCapacity( 0.0 ); - - std::string const idf_objects = delimited_string( { - - " Version,8.4;", - - " Timestep,6;", - - " Building,", - " Bldg, !- Name", - " 0.0, !- North Axis {deg}", - " Suburbs, !- Terrain", - " 0.05, !- Loads Convergence Tolerance Value", - " 0.05, !- Temperature Convergence Tolerance Value {deltaC}", - " MinimalShadowing, !- Solar Distribution", - " 30, !- Maximum Number of Warmup Days", - " 6; !- Minimum Number of Warmup Days", - - " SurfaceConvectionAlgorithm:Inside,Simple;", - - " SurfaceConvectionAlgorithm:Outside,SimpleCombined;", - - " HeatBalanceAlgorithm,ConductionTransferFunction;", - - " SimulationControl,", - " Yes, !- Do Zone Sizing Calculation", - " Yes, !- Do System Sizing Calculation", - " No, !- Do Plant Sizing Calculation", - " Yes, !- Run Simulation for Sizing Periods", - " No; !- Run Simulation for Weather File Run Periods", - - " RunPeriod,", - " , !- Name", - " 1, !- Begin Month", - " 1, !- Begin Day of Month", - " , !- Begin Year", - " 1, !- End Month", - " 5, !- End Day of Month", - " , !- End Year", - " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " Yes; !- Use Weather File Snow Indicators", - - " Site:Location,", - " Miami Intl Ap FL USA WMO=722020, !- Name", - " 25.82, !- Latitude {deg}", - " -80.30, !- Longitude {deg}", - " -5.00, !- Time Zone {hr}", - " 11.00; !- Elevation {m}", - - " SizingPeriod:DesignDay,", - " Miami Intl Ap Ann Htg 99.6% Condns DB, !- Name", - " 1, !- Month", - " 21, !- Day of Month", - " WinterDesignDay, !- Day Type", - " 8.7, !- Maximum Dry-Bulb Temperature {C}", - " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " 8.7, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 101217., !- Barometric Pressure {Pa}", - " 3.8, !- Wind Speed {m/s}", - " 340, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 0.00; !- Sky Clearness", - - " SizingPeriod:DesignDay,", - " Miami Intl Ap Ann Clg .4% Condns DB=>MWB, !- Name", - " 7, !- Month", - " 21, !- Day of Month", - " SummerDesignDay, !- Day Type", - " 33.2, !- Maximum Dry-Bulb Temperature {C}", - " 6.7, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " 25.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 101217., !- Barometric Pressure {Pa}", - " 4.5, !- Wind Speed {m/s}", - " 140, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 1.00; !- Sky Clearness", - - " Site:GroundTemperature:BuildingSurface,21.0,21.5,22.0,22.2,22.2,22.2,22.2,22.2,22.2,22.0,21.5,21.0;", - - " Material:NoMass,", - " R13LAYER, !- Name", - " Rough, !- Roughness", - " 2.290965, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material:NoMass,", - " R31LAYER, !- Name", - " Rough, !- Roughness", - " 5.456, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " C5 - 4 IN HW CONCRETE, !- Name", - " MediumRough, !- Roughness", - " 0.1014984, !- Thickness {m}", - " 1.729577, !- Conductivity {W/m-K}", - " 2242.585, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - - " Construction,", - " R13WALL, !- Name", - " R13LAYER; !- Outside Layer", - - " Construction,", - " FLOOR, !- Name", - " C5 - 4 IN HW CONCRETE; !- Outside Layer", - - " Construction,", - " ROOF31, !- Name", - " R31LAYER; !- Outside Layer", - - " Zone,", - " Main Zone, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " CounterClockWise, !- Vertex Entry Direction", - " relative; !- Coordinate System", - - " BuildingSurface:Detailed,", - " Zn001:Wall001, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " Main Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 15.24000,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,0,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall002, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " Main Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000,0,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 15.24000,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 15.24000,15.24000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall003, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " Main Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 15.24000,15.24000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,15.24000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall004, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " Main Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,15.24000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,0,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Flr001, !- Name", - " Floor, !- Surface Type", - " FLOOR, !- Construction Name", - " Main Zone, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn001:Flr001, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000,0.000000,0.0, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000,0.000000,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 0.000000,15.24000,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,15.24000,0.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Roof001, !- Name", - " Roof, !- Surface Type", - " ROOF31, !- Construction Name", - " Main Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.000000,15.24000,4.572, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000,0.000000,4.572, !- X,Y,Z ==> Vertex 2 {m}", - " 15.24000,0.000000,4.572, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,15.24000,4.572; !- X,Y,Z ==> Vertex 4 {m}", - - " ScheduleTypeLimits,", - " Any Number; !- Name", - - " ScheduleTypeLimits,", - " Fraction, !- Name", - " 0.0, !- Lower Limit Value", - " 1.0, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - " ScheduleTypeLimits,", - " Temperature, !- Name", - " -60, !- Lower Limit Value", - " 200, !- Upper Limit Value", - " CONTINUOUS, !- Numeric Type", - " Temperature; !- Unit Type", - - " ScheduleTypeLimits,", - " Control Type, !- Name", - " 0, !- Lower Limit Value", - " 4, !- Upper Limit Value", - " DISCRETE; !- Numeric Type", - - " ScheduleTypeLimits,", - " On/Off, !- Name", - " 0, !- Lower Limit Value", - " 1, !- Upper Limit Value", - " DISCRETE; !- Numeric Type", - - " ScheduleTypeLimits,", - " FlowRate, !- Name", - " 0.0, !- Lower Limit Value", - " 10, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - " ScheduleTypeLimits,", - " Humidity, !- Name", - " 0, !- Lower Limit Value", - " 100, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - " Schedule:Compact,", - " OCCUPY-1, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", - " Until: 8:00,0.0, !- Field 3", - " Until: 11:00,1.00, !- Field 5", - " Until: 12:00,0.80, !- Field 7", - " Until: 13:00,0.40, !- Field 9", - " Until: 14:00,0.80, !- Field 11", - " Until: 18:00,1.00, !- Field 13", - " Until: 19:00,0.50, !- Field 15", - " Until: 21:00,0.10, !- Field 17", - " Until: 24:00,0.0, !- Field 19", - " For: Weekends WinterDesignDay Holiday, !- Field 21", - " Until: 24:00,0.0; !- Field 22", - - " Schedule:Compact,", - " LIGHTS-1, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", - " Until: 8:00,0.05, !- Field 3", - " Until: 9:00,0.9, !- Field 5", - " Until: 10:00,0.95, !- Field 7", - " Until: 11:00,1.00, !- Field 9", - " Until: 12:00,0.95, !- Field 11", - " Until: 13:00,0.8, !- Field 13", - " Until: 14:00,0.9, !- Field 15", - " Until: 18:00,1.00, !- Field 17", - " Until: 19:00,0.60, !- Field 19", - " Until: 21:00,0.20, !- Field 21", - " Until: 24:00,0.05, !- Field 23", - " For: Weekends WinterDesignDay Holiday, !- Field 25", - " Until: 24:00,0.05; !- Field 26", - - " Schedule:Compact,", - " EQUIP-1, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", - " Until: 8:00,0.02, !- Field 3", - " Until: 9:00,0.4, !- Field 5", - " Until: 14:00,0.9, !- Field 7", - " Until: 15:00,0.8, !- Field 9", - " Until: 16:00,0.7, !- Field 11", - " Until: 18:00,0.5, !- Field 13", - " Until: 20:00,0.3, !- Field 15", - " Until: 24:00,0.02, !- Field 17", - " For: Weekends WinterDesignDay Holiday, !- Field 19", - " Until: 24:00,0.2; !- Field 20", - - " Schedule:Compact,", - " INFIL-SCH, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 3/31, !- Field 1", - " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", - " Until: 24:00,1.0, !- Field 3", - " For: AllOtherDays, !- Field 5", - " Until: 24:00,1.0, !- Field 6", - " Through: 9/30, !- Field 8", - " For: AllDays, !- Field 9", - " Until: 24:00,0.7, !- Field 10", - " Through: 12/31, !- Field 12", - " For: AllDays, !- Field 13", - " Until: 24:00,1.0, !- Field 14", - " For: AllOtherDays, !- Field 16", - " Until: 24:00,0.2; !- Field 17", - - " Schedule:Compact,", - " ActSchd, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,117.239997864; !- Field 3", - - " Schedule:Compact,", - " ShadeTransSch, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,0.0; !- Field 3", - - " Schedule:Compact,", - " Htg-SetP-Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: SummerDesignDay, !- Field 2", - " Until: 24:00,12.8, !- Field 3", - " For: WinterDesignDay, !- Field 5", - " Until: 24:00,21.1, !- Field 6", - " For: WeekEnds Holiday, !- Field 8", - " Until: 7:00,12.8, !- Field 9", - " Until: 13:00,21.1, !- Field 11", - " Until: 24:00,12.8, !- Field 13", - " For: AllOtherDays, !- Field 15", - " Until: 7:00,12.8, !- Field 16", - " Until: 18:00,21.1, !- Field 18", - " Until: 24:00,12.8; !- Field 20", - - " Schedule:Compact,", - " PlenumHtg-SetP-Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,12.8; !- Field 3", - - " Schedule:Compact,", - " Clg-SetP-Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: SummerDesignDay, !- Field 2", - " Until: 24:00,23.9, !- Field 3", - " For: WinterDesignDay, !- Field 5", - " Until: 24:00,40.0, !- Field 6", - " For: WeekEnds Holiday, !- Field 8", - " Until: 7:00,40.0, !- Field 9", - " Until: 13:00,23.9, !- Field 11", - " Until: 24:00,32.2, !- Field 13", - " For: AllOtherDays, !- Field 15", - " Until: 7:00,40.0, !- Field 16", - " Until: 18:00,23.9, !- Field 18", - " Until: 24:00,40.0; !- Field 20", - - " Schedule:Compact,", - " PlenumClg-SetP-Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,40.0; !- Field 3", - - " Schedule:Compact,", - " Zone Control Type Sched, !- Name", - " Control Type, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: SummerDesignDay, !- Field 2", - " Until: 24:00,2, !- Field 3", - " For: WinterDesignDay, !- Field 5", - " Until: 24:00,1, !- Field 6", - " For: AllOtherDays, !- Field 8", - " Until: 24:00,4; !- Field 9", - - " Schedule:Compact,", - " Desiccant Control Type Sched, !- Name", - " Control Type, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,4; !- Field 3", - - " Schedule:Compact,", - " Min OA Sched, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Weekdays, !- Field 2", - " Until: 7:00,0.02, !- Field 3", - " Until: 17:00,1.0, !- Field 5", - " Until: 24:00,0.0, !- Field 7", - " For: AllOtherDays, !- Field 9", - " Until: 24:00,0.02; !- Field 10", - - " Schedule:Compact,", - " FanAvailSched, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 3/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0, !- Field 3", - " Through: 9/30, !- Field 5", - " For: WeekDays, !- Field 6", - " Until: 7:00,0.0, !- Field 7", - " Until: 17:00,1.0, !- Field 9", - " Until: 24:00,0.0, !- Field 11", - " For: SummerDesignDay WinterDesignDay, !- Field 13", - " Until: 24:00,1.0, !- Field 14", - " For: AllOtherDays, !- Field 16", - " Until: 24:00,0.0, !- Field 17", - " Through: 12/31, !- Field 19", - " For: AllDays, !- Field 20", - " Until: 24:00,1.0; !- Field 21", - - " Schedule:Compact,", - " Seasonal Reset Supply Air Temp Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 3/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,17.0, !- Field 3", - " Through: 9/30, !- Field 5", - " For: AllDays, !- Field 6", - " Until: 24:00,15.0, !- Field 7", - " Through: 12/31, !- Field 9", - " For: AllDays, !- Field 10", - " Until: 24:00,17.0; !- Field 11", - - " Schedule:Compact,", - " Constant, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0; !- Field 3", - - " People,", - " Main Zone People 1, !- Name", - " Main Zone, !- Zone or ZoneList Name", - " OCCUPY-1, !- Number of People Schedule Name", - " people, !- Number of People Calculation Method", - " 20, !- Number of People", - " , !- People per Zone Floor Area {person/m2}", - " , !- Zone Floor Area per Person {m2/person}", - " 0.3, !- Fraction Radiant", - " AutoCalculate, !- Sensible Heat Fraction", - " ActSchd; !- Activity Level Schedule Name", - - " Lights,", - " Main Zone Lights 1, !- Name", - " Main Zone, !- Zone or ZoneList Name", - " LIGHTS-1, !- Schedule Name", - " LightingLevel, !- Design Level Calculation Method", - " 2964, !- Lighting Level {W}", - " , !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.2, !- Return Air Fraction", - " 0.59, !- Fraction Radiant", - " 0.2, !- Fraction Visible", - " 0, !- Fraction Replaceable", - " GeneralLights; !- End-Use Subcategory", - - " ElectricEquipment,", - " Main Zone ElecEq 1, !- Name", - " Main Zone, !- Zone or ZoneList Name", - " EQUIP-1, !- Schedule Name", - " EquipmentLevel, !- Design Level Calculation Method", - " 19760, !- Design Level {W}", - " , !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.5, !- Fraction Latent", - " 0.3, !- Fraction Radiant", - " 0; !- Fraction Lost", - - " ZoneInfiltration:DesignFlowRate,", - " Main Zone Infil 1, !- Name", - " Main Zone, !- Zone or ZoneList Name", - " INFIL-SCH, !- Schedule Name", - " flow/zone, !- Design Flow Rate Calculation Method", - " 0.031089, !- Design Flow Rate {m3/s}", - " , !- Flow per Zone Floor Area {m3/s-m2}", - " , !- Flow per Exterior Surface Area {m3/s-m2}", - " , !- Air Changes per Hour {1/hr}", - " 0, !- Constant Term Coefficient", - " 0, !- Temperature Term Coefficient", - " 0.2237, !- Velocity Term Coefficient", - " 0; !- Velocity Squared Term Coefficient", - - " Sizing:Zone,", - " Main Zone, !- Zone or ZoneList Name", - " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", - " 14., !- Zone Cooling Design Supply Air Temperature {C}", - " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", - " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", - " 50., !- Zone Heating Design Supply Air Temperature {C}", - " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", - " 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " SZ DSOA Main Zone, !- Design Specification Outdoor Air Object Name", - " 0.0, !- Zone Heating Sizing Factor", - " 0.0, !- Zone Cooling Sizing Factor", - " DesignDayWithLimit, !- Cooling Design Air Flow Method", - " , !- Cooling Design Air Flow Rate {m3/s}", - " , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", - " , !- Cooling Minimum Air Flow {m3/s}", - " , !- Cooling Minimum Air Flow Fraction", - " DesignDay, !- Heating Design Air Flow Method", - " , !- Heating Design Air Flow Rate {m3/s}", - " , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", - " , !- Heating Maximum Air Flow {m3/s}", - " ; !- Heating Maximum Air Flow Fraction", - - " DesignSpecification:OutdoorAir,", - " SZ DSOA Main Zone, !- Name", - " sum, !- Outdoor Air Method", - " 0.00236, !- Outdoor Air Flow per Person {m3/s-person}", - " 0.000305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}", - " 0.0; !- Outdoor Air Flow per Zone {m3/s}", - - " Sizing:System,", - " Desiccant DXSystem, !- AirLoop Name", - " sensible, !- Type of Load to Size On", - " autosize, !- Design Outdoor Air Flow Rate {m3/s}", - " 0.3, !- Central Heating Maximum System Air Flow Ratio", - " 4.5, !- Preheat Design Temperature {C}", - " 0.008, !- Preheat Design Humidity Ratio {kgWater/kgDryAir}", - " 11.0, !- Precool Design Temperature {C}", - " 0.008, !- Precool Design Humidity Ratio {kgWater/kgDryAir}", - " 12.8, !- Central Cooling Design Supply Air Temperature {C}", - " 16.7, !- Central Heating Design Supply Air Temperature {C}", - " noncoincident, !- Type of Zone Sum to Use", - " no, !- 100% Outdoor Air in Cooling", - " no, !- 100% Outdoor Air in Heating", - " 0.008, !- Central Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " 0.008, !- Central Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " DesignDay, !- Cooling Design Air Flow Method", - " 0, !- Cooling Design Air Flow Rate {m3/s}", - " , !- Supply Air Flow Rate Per Floor Area During Cooling Operation {m3/s-m2}", - " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", - " , !- Design Supply Air Flow Rate Per Unit Cooling Capacity {m3/s-W}", - " DesignDay, !- Heating Design Air Flow Method", - " 0, !- Heating Design Air Flow Rate {m3/s}", - " , !- Supply Air Flow Rate Per Floor Area During Heating Operation {m3/s-m2}", - " , !- Fraction of Autosized Design Heating Supply Air Flow Rate", - " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", - " , !- Design Supply Air Flow Rate Per Unit Heating Capacity {m3/s-W}", - " , !- System Outdoor Air Method", - " 1.0, !- Zone Maximum Outdoor Air Fraction {dimensionless}", - " CoolingDesignCapacity, !- Cooling Design Capacity Method", - " autosize, !- Cooling Design Capacity {W}", - " , !- Cooling Design Capacity Per Floor Area {W/m2}", - " , !- Fraction of Autosized Cooling Design Capacity", - " HeatingDesignCapacity, !- Heating Design Capacity Method", - " autosize, !- Heating Design Capacity {W}", - " , !- Heating Design Capacity Per Floor Area {W/m2}", - " , !- Fraction of Autosized Heating Design Capacity", - " VAV; !- Central Cooling Capacity Control Method", - - " Curve:Biquadratic,", - " HPACCoolCapFT, !- Name", - " 0.942587793, !- Coefficient1 Constant", - " 0.009543347, !- Coefficient2 x", - " 0.00068377, !- Coefficient3 x**2", - " -0.011042676, !- Coefficient4 y", - " 0.000005249, !- Coefficient5 y**2", - " -0.00000972, !- Coefficient6 x*y", - " -100, !- Minimum Value of x", - " 100, !- Maximum Value of x", - " -100, !- Minimum Value of y", - " 100, !- Maximum Value of y", - " , !- Minimum Curve Output", - " , !- Maximum Curve Output", - " Temperature, !- Input Unit Type for X", - " Temperature, !- Input Unit Type for Y", - " Dimensionless; !- Output Unit Type", - - " Curve:Biquadratic,", - " HPACCOOLEIRFT, !- Name", - " 0.342414409, !- Coefficient1 Constant", - " 0.034885008, !- Coefficient2 x", - " -0.0006237, !- Coefficient3 x**2", - " 0.004977216, !- Coefficient4 y", - " 0.000437951, !- Coefficient5 y**2", - " -0.000728028, !- Coefficient6 x*y", - " -100, !- Minimum Value of x", - " 100, !- Maximum Value of x", - " -100, !- Minimum Value of y", - " 100, !- Maximum Value of y", - " , !- Minimum Curve Output", - " , !- Maximum Curve Output", - " Temperature, !- Input Unit Type for X", - " Temperature, !- Input Unit Type for Y", - " Dimensionless; !- Output Unit Type", - - " Curve:Quadratic,", - " HPACCoolCapFFF, !- Name", - " 0.8, !- Coefficient1 Constant", - " 0.2, !- Coefficient2 x", - " 0.0, !- Coefficient3 x**2", - " 0.0, !- Minimum Value of x", - " 1.0; !- Maximum Value of x", - - " Curve:Quadratic,", - " HPACCOOLEIRFFF, !- Name", - " 1.1552, !- Coefficient1 Constant", - " -0.1808, !- Coefficient2 x", - " 0.0256, !- Coefficient3 x**2", - " 0.0, !- Minimum Value of x", - " 1.0; !- Maximum Value of x", - - " Curve:Quadratic,", - " HPACCOOLPLFFPLR, !- Name", - " 0.75, !- Coefficient1 Constant", - " 0.25, !- Coefficient2 x", - " 0.0, !- Coefficient3 x**2", - " 0.0, !- Minimum Value of x", - " 1.0; !- Maximum Value of x", - - " Curve:Cubic,", - " PackagedRatedCoolCapFFlow, !- Name", - " 0.47278589, !- Coefficient1 Constant", - " 1.2433415, !- Coefficient2 x", - " -1.0387055, !- Coefficient3 x**2", - " 0.32257813, !- Coefficient4 x**3", - " 0.5, !- Minimum Value of x", - " 1.5, !- Maximum Value of x", - " , !- Minimum Curve Output", - " , !- Maximum Curve Output", - " Dimensionless, !- Input Unit Type for X", - " Dimensionless; !- Output Unit Type", - - " Curve:Cubic,", - " PackagedRatedCoolEIRFFlow, !- Name", - " 1.0079484, !- Coefficient1 Constant", - " 0.34544129, !- Coefficient2 x", - " -.6922891, !- Coefficient3 x**2", - " 0.33889943, !- Coefficient4 x**3", - " 0.5, !- Minimum Value of x", - " 1.5, !- Maximum Value of x", - " , !- Minimum Curve Output", - " , !- Maximum Curve Output", - " Dimensionless, !- Input Unit Type for X", - " Dimensionless; !- Output Unit Type", - - " Curve:Cubic,", - " EXHAUSTFANPLF, !- Name", - " 0, !- Coefficient1 Constant", - " 1, !- Coefficient2 x", - " 0.0, !- Coefficient3 x**2", - " 0.0, !- Coefficient4 x**3", - " 0.0, !- Minimum Value of x", - " 1.0; !- Maximum Value of x", - - " NodeList,", - " Main Zone In Nodes, !- Name", - " Main Zone In Node; !- Node 1 Name", - - " NodeList,", - " Desiccant DX Air Loop Setpoint Nodes, !- Name", - " HX Process Outlet Node, !- Node 1 Name", - " Desiccant DXSystem Mixed Air Node; !- Node 2 Name", - - " NodeList,", - " Regen Setpoint Nodes, !- Name", - " HX Regen Inlet Node; !- Node 1 Name", - - " BranchList,", - " Desiccant Air Loop Branches, !- Name", - " Desiccant Air Loop Main Branch; !- Branch 1 Name", - - " Branch,", - " Desiccant Air Loop Main Branch, !- Name", - " , !- Pressure Drop Curve Name", - " AirLoopHVAC:OutdoorAirSystem, !- Component 1 Object Type", - " Desiccant DXSystem OA System, !- Component 1 Name", - " Desiccant DXSystem Air Loop Inlet Node, !- Component 1 Inlet Node Name", - " Desiccant DXSystem Mixed Air Node, !- Component 1 Outlet Node Name", - " CoilSystem:Cooling:DX, !- Component 2 Object Type", - " Desiccant DXSystem Cooling Coil Sys, !- Component 2 Name", - " Desiccant DXSystem Mixed Air Node, !- Component 2 Inlet Node Name", - " HX Process Inlet Node, !- Component 2 Outlet Node Name", - " Dehumidifier:Desiccant:System, !- Component 3 Object Type", - " Desiccant 1, !- Component 3 Name", - " HX Process Inlet Node, !- Component 3 Inlet Node Name", - " HX Process Outlet Node, !- Component 3 Outlet Node Name", - " Fan:ConstantVolume, !- Component 4 Object Type", - " Desiccant DXSystem Supply Fan, !- Component 4 Name", - " HX Process Outlet Node, !- Component 4 Inlet Node Name", - " Desiccant Supply Fan Outlet Node, !- Component 4 Outlet Node Name", - " Coil:Heating:Fuel, !- Component 5 Object Type", - " Desiccant Process Heating Coil, !- Component 5 Name", - " Desiccant Supply Fan Outlet Node, !- Component 5 Inlet Node Name", - " Desiccant DXSystem Air Loop Outlet Node; !- Component 5 Outlet Node Name", - - " AirLoopHVAC,", - " Desiccant DXSystem, !- Name", - " , !- Controller List Name", - " Desiccant Avail List, !- Availability Manager List Name", - " autosize, !- Design Supply Air Flow Rate {m3/s}", - " Desiccant Air Loop Branches, !- Branch List Name", - " , !- Connector List Name", - " Desiccant DXSystem Air Loop Inlet Node, !- Supply Side Inlet Node Name", - " Desiccant DXSystem Return Air Mixer Outlet Node, !- Demand Side Outlet Node Name", - " Desiccant DXSystem Zone Equipment Inlet Node, !- Demand Side Inlet Node Names", - " Desiccant DXSystem Air Loop Outlet Node; !- Supply Side Outlet Node Names", - - " AirLoopHVAC:ControllerList,", - " Desiccant DXSystem OA System Controllers, !- Name", - " Controller:OutdoorAir, !- Controller 1 Object Type", - " Desiccant OA Controller; !- Controller 1 Name", - - " AirLoopHVAC:OutdoorAirSystem:EquipmentList,", - " Desiccant DXSystem OA System Equipment, !- Name", - " OutdoorAir:Mixer, !- Component 1 Object Type", - " Desiccant DXSystem OA Mixing Box; !- Component 1 Name", - - " AirLoopHVAC:OutdoorAirSystem,", - " Desiccant DXSystem OA System, !- Name", - " Desiccant DXSystem OA System Controllers, !- Controller List Name", - " Desiccant DXSystem OA System Equipment, !- Outdoor Air Equipment List Name", - " Desiccant Outdoor Air Avail List; !- Availability Manager List Name", - - " OutdoorAir:NodeList,", - " OutsideAirInletNodes; !- Node or NodeList Name 1", - - " OutdoorAir:NodeList,", - " Desiccant DXSystem Outside Air Inlet Node, !- Node or NodeList Name 1", - " Desiccant Outside Air Inlet Node 2; !- Node or NodeList Name 2", - - " OutdoorAir:NodeList,", - " Regen Coil Inlet Node; !- Node or NodeList Name 1", - - " OutdoorAir:NodeList,", - " Condenser Inlet Node; !- Node or NodeList Name 1", - - " OutdoorAir:Mixer,", - " Desiccant DXSystem OA Mixing Box, !- Name", - " Desiccant DXSystem Mixed Air Node, !- Mixed Air Node Name", - " Desiccant DXSystem Outside Air Inlet Node, !- Outdoor Air Stream Node Name", - " Desiccant DXSystem Relief Air Outlet Node, !- Relief Air Stream Node Name", - " Desiccant DXSystem Air Loop Inlet Node; !- Return Air Stream Node Name", - - " AvailabilityManagerAssignmentList,", - " Desiccant Avail List, !- Name", - " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", - " Desiccant DXSystem Avail;!- Availability Manager 1 Name", - - " AvailabilityManagerAssignmentList,", - " Desiccant Outdoor Air Avail List, !- Name", - " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", - " Desiccant Outdoor Air Avail; !- Availability Manager 1 Name", - - " AvailabilityManager:Scheduled,", - " Desiccant DXSystem Avail,!- Name", - " FanAvailSched; !- Schedule Name", - - " AvailabilityManager:Scheduled,", - " Desiccant Outdoor Air Avail, !- Name", - " FanAvailSched; !- Schedule Name", - - " SetpointManager:SingleZone:Heating,", - " Heating Supply Air Temp Manager, !- Name", - " Temperature, !- Control Variable", - " -99., !- Minimum Supply Air Temperature {C}", - " 99., !- Maximum Supply Air Temperature {C}", - " Main Zone, !- Control Zone Name", - " Main Zone Node, !- Zone Node Name", - " Main Zone In Node, !- Zone Inlet Node Name", - " Desiccant DXSystem Air Loop Outlet Node; !- Setpoint Node or NodeList Name", - - " SetpointManager:SingleZone:Cooling,", - " Cooling Supply Air Temp Manager, !- Name", - " Temperature, !- Control Variable", - " -99., !- Minimum Supply Air Temperature {C}", - " 99., !- Maximum Supply Air Temperature {C}", - " Main Zone, !- Control Zone Name", - " Main Zone Node, !- Zone Node Name", - " Main Zone In Node, !- Zone Inlet Node Name", - " Desiccant Supply Fan Outlet Node; !- Setpoint Node or NodeList Name", - - " SetpointManager:SingleZone:Humidity:Maximum,", - " Zone Max Humidity Manager, !- Name", - " HX Process Outlet Node, !- Setpoint Node or NodeList Name", - " Main Zone Node; !- Control Zone Air Node Name", - - " SetpointManager:MixedAir,", - " Adjusted Cooling Supply Air Temp Manager, !- Name", - " Temperature, !- Control Variable", - " Desiccant Supply Fan Outlet Node, !- Reference Setpoint Node Name", - " HX Process Outlet Node, !- Fan Inlet Node Name", - " Desiccant Supply Fan Outlet Node, !- Fan Outlet Node Name", - " HX Process Outlet Node; !- Setpoint Node or NodeList Name", - - " Controller:OutdoorAir,", - " Desiccant OA Controller, !- Name", - " Desiccant DXSystem Relief Air Outlet Node, !- Relief Air Outlet Node Name", - " Desiccant DXSystem Air Loop Inlet Node, !- Return Air Node Name", - " Desiccant DXSystem Mixed Air Node, !- Mixed Air Node Name", - " Desiccant DXSystem Outside Air Inlet Node, !- Actuator Node Name", - " autosize, !- Minimum Outdoor Air Flow Rate {m3/s}", - " autosize, !- Maximum Outdoor Air Flow Rate {m3/s}", - " NoEconomizer, !- Economizer Control Type", - " ModulateFlow, !- Economizer Control Action Type", - " 100., !- Economizer Maximum Limit Dry-Bulb Temperature {C}", - " , !- Economizer Maximum Limit Enthalpy {J/kg}", - " , !- Economizer Maximum Limit Dewpoint Temperature {C}", - " , !- Electronic Enthalpy Limit Curve Name", - " , !- Economizer Minimum Limit Dry-Bulb Temperature {C}", - " NoLockout, !- Lockout Type", - " FixedMinimum, !- Minimum Limit Type", - " Min OA Sched, !- Minimum Outdoor Air Schedule Name", - " , !- Minimum Fraction of Outdoor Air Schedule Name", - " , !- Maximum Fraction of Outdoor Air Schedule Name", - " 0; !- Mechanical Ventilation Controller Name", - - " ZoneHVAC:EquipmentConnections,", - " Main Zone, !- Zone Name", - " Main Zone Eq, !- Zone Conditioning Equipment List Name", - " Main Zone In Nodes, !- Zone Air Inlet Node or NodeList Name", - " , !- Zone Air Exhaust Node or NodeList Name", - " Main Zone Node, !- Zone Air Node Name", - " Main Zone Out Node; !- Zone Return Air Node Name", - - " ZoneHVAC:EquipmentList,", - " Main Zone Eq, !- Name", - " SequentialLoad, !- Load Distribution Scheme", - " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", - " Main Zone Direct Air ADU, !- Zone Equipment 1 Name", - " 1, !- Zone Equipment 1 Cooling Sequence", - " 1; !- Zone Equipment 1 Heating or No-Load Sequence", - - " ZoneHVAC:AirDistributionUnit,", - " Main Zone Direct Air ADU, !- Name", - " Main Zone In Node, !- Air Distribution Unit Outlet Node Name", - " AirTerminal:SingleDuct:ConstantVolume:NoReheat, !- Air Terminal Object Type", - " Main Zone Direct Air; !- Air Terminal Name", - - " AirTerminal:SingleDuct:ConstantVolume:NoReheat,", - " Main Zone Direct Air, !- Name", - " Constant, !- Availability Schedule Name", - " Main Zone In Node 2AT, !- Air Inlet Node Name", - " Main Zone In Node, !- Air Outlet Node Name", - " autosize; !- Maximum Air Flow Rate {m3/s}", - - " CoilSystem:Cooling:DX,", - " Desiccant DXSystem Cooling Coil Sys, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " Desiccant DXSystem Mixed Air Node, !- DX Cooling Coil System Inlet Node Name", - " HX Process Inlet Node, !- DX Cooling Coil System Outlet Node Name", - " HX Process Outlet Node, !- DX Cooling Coil System Sensor Node Name", - " Coil:Cooling:DX:SingleSpeed, !- Cooling Coil Object Type", - " Desiccant DXSystem Cooling Coil; !- Cooling Coil Name", - - " ZoneControl:Thermostat,", - " Main Zone Control, !- Name", - " Main Zone, !- Zone or ZoneList Name", - " Desiccant Control Type Sched, !- Control Type Schedule Name", - " ThermostatSetpoint:DualSetpoint, !- Control 1 Object Type", - " DualSetPoint; !- Control 1 Name", - - " ZoneControl:Humidistat,", - " Main Zone Humidistat, !- Name", - " Main Zone, !- Zone Name", - " Relative Humidity Sched; !- Humidifying Relative Humidity Setpoint Schedule Name", - - " Schedule:Compact,", - " Relative Humidity Sched, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,45.0; !- Field 3", - - " ThermostatSetpoint:SingleHeating,", - " HeatingSetpoint, !- Name", - " Htg-SetP-Sch; !- Setpoint Temperature Schedule Name", - - " ThermostatSetpoint:SingleHeating,", - " PlenumHeatingSetpoint, !- Name", - " PlenumHtg-SetP-Sch; !- Setpoint Temperature Schedule Name", - - " ThermostatSetpoint:SingleCooling,", - " CoolingSetpoint, !- Name", - " Clg-SetP-Sch; !- Setpoint Temperature Schedule Name", - - " ThermostatSetpoint:SingleCooling,", - " PlenumCoolingSetpoint, !- Name", - " PlenumClg-SetP-Sch; !- Setpoint Temperature Schedule Name", - - " ThermostatSetpoint:DualSetpoint,", - " DualSetPoint, !- Name", - " Htg-SetP-Sch, !- Heating Setpoint Temperature Schedule Name", - " Clg-SetP-Sch; !- Cooling Setpoint Temperature Schedule Name", - - " AirLoopHVAC:SupplyPath,", - " Desiccant DXSystem Supply Path, !- Name", - " Desiccant DXSystem Zone Equipment Inlet Node, !- Supply Air Path Inlet Node Name", - " AirLoopHVAC:ZoneSplitter,!- Component 1 Object Type", - " Desiccant DXSystem Zone Supply Air Splitter; !- Component 1 Name", - - " AirLoopHVAC:ReturnPath,", - " Desiccant DXSystem Return Path, !- Name", - " Desiccant DXSystem Return Air Mixer Outlet Node, !- Return Air Path Outlet Node Name", - " AirLoopHVAC:ZoneMixer, !- Component 1 Object Type", - " Desiccant DXSystem Zone Return Air Mixer; !- Component 1 Name", - - " AirLoopHVAC:ZoneSplitter,", - " Desiccant DXSystem Zone Supply Air Splitter, !- Name", - " Desiccant DXSystem Zone Equipment Inlet Node, !- Inlet Node Name", - " Main Zone In Node 2AT; !- Outlet 1 Node Name", - - " AirLoopHVAC:ZoneMixer,", - " Desiccant DXSystem Zone Return Air Mixer, !- Name", - " Desiccant DXSystem Return Air Mixer Outlet Node, !- Outlet Node Name", - " Main Zone Out Node; !- Inlet 1 Node Name", - - " Coil:Heating:Fuel,", - " Desiccant Process Heating Coil, !- Name", - " Constant, !- Availability Schedule Name", - " Gas, !- Fuel Type", - " 0.8, !- Gas Burner Efficiency", - " autosize, !- Nominal Capacity {W}", - " Desiccant Supply Fan Outlet Node, !- Air Inlet Node Name", - " Desiccant DXSystem Air Loop Outlet Node, !- Air Outlet Node Name", - " Desiccant DXSystem Air Loop Outlet Node; !- Temperature Setpoint Node Name", - - " Coil:Heating:Fuel,", - " Desiccant Regen Coil, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " Gas, !- Fuel Type", - " 1, !- Gas Burner Efficiency", - " autosize, !- Nominal Capacity {W}", - " Regen Coil Inlet Node, !- Air Inlet Node Name", - " HX Regen Inlet Node; !- Air Outlet Node Name", - - " Coil:Cooling:DX:SingleSpeed,", - " Desiccant DXSystem Cooling Coil, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " autosize, !- High Speed Rated Air Flow Rate {m3/s}", - " autosize, !- Gross Rated Sensible Heat Ratio", - " 3.5, !- Gross Rated Cooling COP {W/W}", - " autosize, !- High Speed Rated Air Flow Rate {m3/s}", - " , !- Rated Evaporator Fan Power Per Volume Flow Rate {W/(m3/s)}", - " Desiccant DXSystem Mixed Air Node, !- Air Inlet Node Name", - " HX Process Inlet Node, !- Air Outlet Node Name", - " HPACCoolCapFT, !- Total Cooling Capacity Function of Temperature Curve Name", - " HPACCoolCapFFF, !- Total Cooling Capacity Function of Flow Fraction Curve Name", - " HPACCOOLEIRFT, !- Energy Input Ratio Function of Temperature Curve Name", - " HPACCOOLEIRFFF, !- Energy Input Ratio Function of Flow Fraction Curve Name", - " HPACCOOLPLFFPLR, !- Part Load Fraction Correlation Curve Name", - " , !- Minimum Outdoor Dry-Bulb Temperature for Compressor Operation {C}", - " 1000, !- Nominal Time for Condensate Removal to Begin {s}", - " 0.4, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}", - " 4, !- Maximum Cycling Rate {cycles/hr}", - " 45, !- Latent Capacity Time Constant {s}", - " Condenser Inlet Node, !- Condenser Air Inlet Node Name", - " AirCooled; !- Condenser Type", - - " Fan:ConstantVolume,", - " Desiccant DXSystem Supply Fan, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " 0.7, !- Fan Total Efficiency", - " 571.66, !- Pressure Rise {Pa}", - " autosize, !- Maximum Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1.0, !- Motor In Airstream Fraction", - " HX Process Outlet Node, !- Air Inlet Node Name", - " Desiccant Supply Fan Outlet Node; !- Air Outlet Node Name", - - " Fan:ConstantVolume,", - " Desiccant Regen Fan, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " 0.7, !- Fan Total Efficiency", - " 205.5, !- Pressure Rise {Pa}", - " autosize, !- Maximum Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1.0, !- Motor In Airstream Fraction", - " HX Regen Outlet Node, !- Air Inlet Node Name", - " Regen Fan Outlet Node; !- Air Outlet Node Name", - - " Dehumidifier:Desiccant:System,", - " Desiccant 1, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " HeatExchanger:Desiccant:BalancedFlow, !- Desiccant Heat Exchanger Object Type", - " Desiccant Heat Exchanger 1, !- Desiccant Heat Exchanger Name", - " HX Process Outlet Node, !- Sensor Node Name", - " Fan:ConstantVolume, !- Regeneration Air Fan Object Type", - " Desiccant Regen Fan, !- Regeneration Air Fan Name", - " DrawThrough, !- Regeneration Air Fan Placement", - " Coil:Heating:Fuel, !- Regeneration Air Heater Object Type", - " Desiccant Regen Coil, !- Regeneration Air Heater Name", - " 46.111111, !- Regeneration Inlet Air Setpoint Temperature {C}", - " Coil:Cooling:DX:SingleSpeed, !- Companion Cooling Coil Object Type", - " Desiccant DXSystem Cooling Coil, !- Companion Cooling Coil Name", - " Yes, !- Companion Cooling Coil Upstream of Dehumidifier Process Inlet", - " Yes, !- Companion Coil Regeneration Air Heating", - " 0.87931, !- Exhaust Fan Maximum Flow Rate {m3/s}", - " 50, !- Exhaust Fan Maximum Power {W}", - " EXHAUSTFANPLF; !- Exhaust Fan Power Curve Name", - - " HeatExchanger:Desiccant:BalancedFlow,", - " Desiccant Heat Exchanger 1, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " HX Regen Inlet Node, !- Regeneration Air Inlet Node Name", - " HX Regen Outlet Node, !- Regeneration Air Outlet Node Name", - " HX Process Inlet Node, !- Process Air Inlet Node Name", - " HX Process Outlet Node, !- Process Air Outlet Node Name", - " HeatExchanger:Desiccant:BalancedFlow:PerformanceDataType1, !- Heat Exchanger Performance Object Type", - " HXDesPerf1; !- Heat Exchanger Performance Name", - - " HeatExchanger:Desiccant:BalancedFlow:PerformanceDataType1,", - " HXDesPerf1, !- Name", - " 0.87931, !- Nominal Air Flow Rate {m3/s}", - " 3.25, !- Nominal Air Face Velocity {m/s}", - " 50.0, !- Nominal Electric Power {W}", - " -2.53636E+00, !- Temperature Equation Coefficient 1", - " 2.13247E+01, !- Temperature Equation Coefficient 2", - " 9.23308E-01, !- Temperature Equation Coefficient 3", - " 9.43276E+02, !- Temperature Equation Coefficient 4", - " -5.92367E+01, !- Temperature Equation Coefficient 5", - " -4.27465E-02, !- Temperature Equation Coefficient 6", - " 1.12204E+02, !- Temperature Equation Coefficient 7", - " 7.78252E-01, !- Temperature Equation Coefficient 8", - " 0.007143, !- Minimum Regeneration Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", - " 0.024286, !- Maximum Regeneration Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", - " 46.111110, !- Minimum Regeneration Inlet Air Temperature for Temperature Equation {C}", - " 46.111112, !- Maximum Regeneration Inlet Air Temperature for Temperature Equation {C}", - " 0.005000, !- Minimum Process Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", - " 0.015714, !- Maximum Process Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", - " 4.583333, !- Minimum Process Inlet Air Temperature for Temperature Equation {C}", - " 21.83333, !- Maximum Process Inlet Air Temperature for Temperature Equation {C}", - " 2.286, !- Minimum Regeneration Air Velocity for Temperature Equation {m/s}", - " 4.826, !- Maximum Regeneration Air Velocity for Temperature Equation {m/s}", - " 35.0, !- Minimum Regeneration Outlet Air Temperature for Temperature Equation {C}", - " 50.0, !- Maximum Regeneration Outlet Air Temperature for Temperature Equation {C}", - " 5.0, !- Minimum Regeneration Inlet Air Relative Humidity for Temperature Equation {percent}", - " 45.0, !- Maximum Regeneration Inlet Air Relative Humidity for Temperature Equation {percent}", - " 80.0, !- Minimum Process Inlet Air Relative Humidity for Temperature Equation {percent}", - " 100.0, !- Maximum Process Inlet Air Relative Humidity for Temperature Equation {percent}", - " -2.25547E+01, !- Humidity Ratio Equation Coefficient 1", - " 9.76839E-01, !- Humidity Ratio Equation Coefficient 2", - " 4.89176E-01, !- Humidity Ratio Equation Coefficient 3", - " -6.30019E-02, !- Humidity Ratio Equation Coefficient 4", - " 1.20773E-02, !- Humidity Ratio Equation Coefficient 5", - " 5.17134E-05, !- Humidity Ratio Equation Coefficient 6", - " 4.94917E-02, !- Humidity Ratio Equation Coefficient 7", - " -2.59417E-04, !- Humidity Ratio Equation Coefficient 8", - " 0.007143, !- Minimum Regeneration Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " 0.024286, !- Maximum Regeneration Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " 46.111110, !- Minimum Regeneration Inlet Air Temperature for Humidity Ratio Equation {C}", - " 46.111112, !- Maximum Regeneration Inlet Air Temperature for Humidity Ratio Equation {C}", - " 0.005000, !- Minimum Process Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " 0.015714, !- Maximum Process Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " 4.583333, !- Minimum Process Inlet Air Temperature for Humidity Ratio Equation {C}", - " 21.83333, !- Maximum Process Inlet Air Temperature for Humidity Ratio Equation {C}", - " 2.286, !- Minimum Regeneration Air Velocity for Humidity Ratio Equation {m/s}", - " 4.826, !- Maximum Regeneration Air Velocity for Humidity Ratio Equation {m/s}", - " 0.007914, !- Minimum Regeneration Outlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " 0.026279, !- Maximum Regeneration Outlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " 5.0, !- Minimum Regeneration Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", - " 45.0, !- Maximum Regeneration Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", - " 80.0, !- Minimum Process Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", - " 100.0; !- Maximum Process Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", - } ); - - ASSERT_TRUE( process_idf( idf_objects ) ); - - OutputProcessor::TimeValue.allocate( 2 ); - DataGlobals::DDOnlySimulation = true; - - SimulationManager::GetProjectData(); - OutputReportPredefined::SetPredefinedTables(); - createFacilityElectricPowerServiceObject(); - SetPreConstructionInputParameters(); //establish array bounds for constructions early - BranchInputManager::ManageBranchInput(); - BeginSimFlag = true; - BeginEnvrnFlag = true; - ZoneSizingCalc = true; - SysSizingCalc = true; - SizingManager::ManageSizing(); - - DataSizing::CurSysNum = 1; - DataSizing::CurOASysNum = 0; - - GetDesiccantDehumidifierInput(); - EXPECT_EQ( 1, NumDesicDehums ); - EXPECT_EQ( "DESICCANT 1", DesicDehum( DesicDehumNum ).Name ); - EXPECT_EQ( "DESICCANT REGEN COIL", DesicDehum( DesicDehumNum ).RegenCoilName ); - - CompName = DesicDehum( DesicDehumNum ).Name; - CompIndex = NumGenericDesicDehums; - SimDesiccantDehumidifier( CompName, FirstHVACIteration, CompIndex ); - - RegCoilDesInletTemp = FinalSysSizing( DataSizing::CurSysNum ).HeatOutTemp; - RegCoilDesOutletTemp = DesicDehum( DesicDehumNum ).RegenSetPointTemp; - RegCoilInletAirMassFlowRate = FinalSysSizing( DataSizing::CurSysNum ).DesMainVolFlow * DataEnvironment::StdRhoAir; - RegCoilCapacity = RegCoilInletAirMassFlowRate * PsyCpAirFnWTdb( 0.0, 20.0 ) * ( RegCoilDesOutletTemp - RegCoilDesInletTemp ); - - for ( loop = 1; loop <= NumHeatingCoils; ++loop ) { + std::string CompName(""); + bool FirstHVACIteration(true); + int DesicDehumNum(1); + int CompIndex(1); + int CoilIndex(0); + int loop(0); + Real64 RegCoilDesInletTemp(0.0); + Real64 RegCoilDesOutletTemp(0.0); + Real64 RegCoilInletAirMassFlowRate(0.0); + Real64 RegCoilCapacity(0.0); + + std::string const idf_objects = delimited_string({ + + " Version,8.4;", + + " Timestep,6;", + + " Building,", + " Bldg, !- Name", + " 0.0, !- North Axis {deg}", + " Suburbs, !- Terrain", + " 0.05, !- Loads Convergence Tolerance Value", + " 0.05, !- Temperature Convergence Tolerance Value {deltaC}", + " MinimalShadowing, !- Solar Distribution", + " 30, !- Maximum Number of Warmup Days", + " 6; !- Minimum Number of Warmup Days", + + " SurfaceConvectionAlgorithm:Inside,Simple;", + + " SurfaceConvectionAlgorithm:Outside,SimpleCombined;", + + " HeatBalanceAlgorithm,ConductionTransferFunction;", + + " SimulationControl,", + " Yes, !- Do Zone Sizing Calculation", + " Yes, !- Do System Sizing Calculation", + " No, !- Do Plant Sizing Calculation", + " Yes, !- Run Simulation for Sizing Periods", + " No; !- Run Simulation for Weather File Run Periods", + + " RunPeriod,", + " , !- Name", + " 1, !- Begin Month", + " 1, !- Begin Day of Month", + " , !- Begin Year", + " 1, !- End Month", + " 5, !- End Day of Month", + " , !- End Year", + " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " Yes; !- Use Weather File Snow Indicators", + + " Site:Location,", + " Miami Intl Ap FL USA WMO=722020, !- Name", + " 25.82, !- Latitude {deg}", + " -80.30, !- Longitude {deg}", + " -5.00, !- Time Zone {hr}", + " 11.00; !- Elevation {m}", + + " SizingPeriod:DesignDay,", + " Miami Intl Ap Ann Htg 99.6% Condns DB, !- Name", + " 1, !- Month", + " 21, !- Day of Month", + " WinterDesignDay, !- Day Type", + " 8.7, !- Maximum Dry-Bulb Temperature {C}", + " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " 8.7, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 101217., !- Barometric Pressure {Pa}", + " 3.8, !- Wind Speed {m/s}", + " 340, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 0.00; !- Sky Clearness", + + " SizingPeriod:DesignDay,", + " Miami Intl Ap Ann Clg .4% Condns DB=>MWB, !- Name", + " 7, !- Month", + " 21, !- Day of Month", + " SummerDesignDay, !- Day Type", + " 33.2, !- Maximum Dry-Bulb Temperature {C}", + " 6.7, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " 25.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 101217., !- Barometric Pressure {Pa}", + " 4.5, !- Wind Speed {m/s}", + " 140, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 1.00; !- Sky Clearness", + + " Site:GroundTemperature:BuildingSurface,21.0,21.5,22.0,22.2,22.2,22.2,22.2,22.2,22.2,22.0,21.5,21.0;", + + " Material:NoMass,", + " R13LAYER, !- Name", + " Rough, !- Roughness", + " 2.290965, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material:NoMass,", + " R31LAYER, !- Name", + " Rough, !- Roughness", + " 5.456, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " C5 - 4 IN HW CONCRETE, !- Name", + " MediumRough, !- Roughness", + " 0.1014984, !- Thickness {m}", + " 1.729577, !- Conductivity {W/m-K}", + " 2242.585, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + + " Construction,", + " R13WALL, !- Name", + " R13LAYER; !- Outside Layer", + + " Construction,", + " FLOOR, !- Name", + " C5 - 4 IN HW CONCRETE; !- Outside Layer", + + " Construction,", + " ROOF31, !- Name", + " R31LAYER; !- Outside Layer", + + " Zone,", + " Main Zone, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " CounterClockWise, !- Vertex Entry Direction", + " relative; !- Coordinate System", + + " BuildingSurface:Detailed,", + " Zn001:Wall001, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " Main Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 15.24000,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,0,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall002, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " Main Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000,0,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 15.24000,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 15.24000,15.24000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall003, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " Main Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 15.24000,15.24000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,15.24000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall004, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " Main Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,15.24000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,0,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Flr001, !- Name", + " Floor, !- Surface Type", + " FLOOR, !- Construction Name", + " Main Zone, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn001:Flr001, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000,0.000000,0.0, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000,0.000000,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 0.000000,15.24000,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,15.24000,0.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Roof001, !- Name", + " Roof, !- Surface Type", + " ROOF31, !- Construction Name", + " Main Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.000000,15.24000,4.572, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000,0.000000,4.572, !- X,Y,Z ==> Vertex 2 {m}", + " 15.24000,0.000000,4.572, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,15.24000,4.572; !- X,Y,Z ==> Vertex 4 {m}", + + " ScheduleTypeLimits,", + " Any Number; !- Name", + + " ScheduleTypeLimits,", + " Fraction, !- Name", + " 0.0, !- Lower Limit Value", + " 1.0, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + " ScheduleTypeLimits,", + " Temperature, !- Name", + " -60, !- Lower Limit Value", + " 200, !- Upper Limit Value", + " CONTINUOUS, !- Numeric Type", + " Temperature; !- Unit Type", + + " ScheduleTypeLimits,", + " Control Type, !- Name", + " 0, !- Lower Limit Value", + " 4, !- Upper Limit Value", + " DISCRETE; !- Numeric Type", + + " ScheduleTypeLimits,", + " On/Off, !- Name", + " 0, !- Lower Limit Value", + " 1, !- Upper Limit Value", + " DISCRETE; !- Numeric Type", + + " ScheduleTypeLimits,", + " FlowRate, !- Name", + " 0.0, !- Lower Limit Value", + " 10, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + " ScheduleTypeLimits,", + " Humidity, !- Name", + " 0, !- Lower Limit Value", + " 100, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + " Schedule:Compact,", + " OCCUPY-1, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", + " Until: 8:00,0.0, !- Field 3", + " Until: 11:00,1.00, !- Field 5", + " Until: 12:00,0.80, !- Field 7", + " Until: 13:00,0.40, !- Field 9", + " Until: 14:00,0.80, !- Field 11", + " Until: 18:00,1.00, !- Field 13", + " Until: 19:00,0.50, !- Field 15", + " Until: 21:00,0.10, !- Field 17", + " Until: 24:00,0.0, !- Field 19", + " For: Weekends WinterDesignDay Holiday, !- Field 21", + " Until: 24:00,0.0; !- Field 22", + + " Schedule:Compact,", + " LIGHTS-1, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", + " Until: 8:00,0.05, !- Field 3", + " Until: 9:00,0.9, !- Field 5", + " Until: 10:00,0.95, !- Field 7", + " Until: 11:00,1.00, !- Field 9", + " Until: 12:00,0.95, !- Field 11", + " Until: 13:00,0.8, !- Field 13", + " Until: 14:00,0.9, !- Field 15", + " Until: 18:00,1.00, !- Field 17", + " Until: 19:00,0.60, !- Field 19", + " Until: 21:00,0.20, !- Field 21", + " Until: 24:00,0.05, !- Field 23", + " For: Weekends WinterDesignDay Holiday, !- Field 25", + " Until: 24:00,0.05; !- Field 26", + + " Schedule:Compact,", + " EQUIP-1, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", + " Until: 8:00,0.02, !- Field 3", + " Until: 9:00,0.4, !- Field 5", + " Until: 14:00,0.9, !- Field 7", + " Until: 15:00,0.8, !- Field 9", + " Until: 16:00,0.7, !- Field 11", + " Until: 18:00,0.5, !- Field 13", + " Until: 20:00,0.3, !- Field 15", + " Until: 24:00,0.02, !- Field 17", + " For: Weekends WinterDesignDay Holiday, !- Field 19", + " Until: 24:00,0.2; !- Field 20", + + " Schedule:Compact,", + " INFIL-SCH, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 3/31, !- Field 1", + " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", + " Until: 24:00,1.0, !- Field 3", + " For: AllOtherDays, !- Field 5", + " Until: 24:00,1.0, !- Field 6", + " Through: 9/30, !- Field 8", + " For: AllDays, !- Field 9", + " Until: 24:00,0.7, !- Field 10", + " Through: 12/31, !- Field 12", + " For: AllDays, !- Field 13", + " Until: 24:00,1.0, !- Field 14", + " For: AllOtherDays, !- Field 16", + " Until: 24:00,0.2; !- Field 17", + + " Schedule:Compact,", + " ActSchd, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,117.239997864; !- Field 3", + + " Schedule:Compact,", + " ShadeTransSch, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,0.0; !- Field 3", + + " Schedule:Compact,", + " Htg-SetP-Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: SummerDesignDay, !- Field 2", + " Until: 24:00,12.8, !- Field 3", + " For: WinterDesignDay, !- Field 5", + " Until: 24:00,21.1, !- Field 6", + " For: WeekEnds Holiday, !- Field 8", + " Until: 7:00,12.8, !- Field 9", + " Until: 13:00,21.1, !- Field 11", + " Until: 24:00,12.8, !- Field 13", + " For: AllOtherDays, !- Field 15", + " Until: 7:00,12.8, !- Field 16", + " Until: 18:00,21.1, !- Field 18", + " Until: 24:00,12.8; !- Field 20", + + " Schedule:Compact,", + " PlenumHtg-SetP-Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,12.8; !- Field 3", + + " Schedule:Compact,", + " Clg-SetP-Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: SummerDesignDay, !- Field 2", + " Until: 24:00,23.9, !- Field 3", + " For: WinterDesignDay, !- Field 5", + " Until: 24:00,40.0, !- Field 6", + " For: WeekEnds Holiday, !- Field 8", + " Until: 7:00,40.0, !- Field 9", + " Until: 13:00,23.9, !- Field 11", + " Until: 24:00,32.2, !- Field 13", + " For: AllOtherDays, !- Field 15", + " Until: 7:00,40.0, !- Field 16", + " Until: 18:00,23.9, !- Field 18", + " Until: 24:00,40.0; !- Field 20", + + " Schedule:Compact,", + " PlenumClg-SetP-Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,40.0; !- Field 3", + + " Schedule:Compact,", + " Zone Control Type Sched, !- Name", + " Control Type, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: SummerDesignDay, !- Field 2", + " Until: 24:00,2, !- Field 3", + " For: WinterDesignDay, !- Field 5", + " Until: 24:00,1, !- Field 6", + " For: AllOtherDays, !- Field 8", + " Until: 24:00,4; !- Field 9", + + " Schedule:Compact,", + " Desiccant Control Type Sched, !- Name", + " Control Type, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,4; !- Field 3", + + " Schedule:Compact,", + " Min OA Sched, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Weekdays, !- Field 2", + " Until: 7:00,0.02, !- Field 3", + " Until: 17:00,1.0, !- Field 5", + " Until: 24:00,0.0, !- Field 7", + " For: AllOtherDays, !- Field 9", + " Until: 24:00,0.02; !- Field 10", + + " Schedule:Compact,", + " FanAvailSched, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 3/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0, !- Field 3", + " Through: 9/30, !- Field 5", + " For: WeekDays, !- Field 6", + " Until: 7:00,0.0, !- Field 7", + " Until: 17:00,1.0, !- Field 9", + " Until: 24:00,0.0, !- Field 11", + " For: SummerDesignDay WinterDesignDay, !- Field 13", + " Until: 24:00,1.0, !- Field 14", + " For: AllOtherDays, !- Field 16", + " Until: 24:00,0.0, !- Field 17", + " Through: 12/31, !- Field 19", + " For: AllDays, !- Field 20", + " Until: 24:00,1.0; !- Field 21", + + " Schedule:Compact,", + " Seasonal Reset Supply Air Temp Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 3/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,17.0, !- Field 3", + " Through: 9/30, !- Field 5", + " For: AllDays, !- Field 6", + " Until: 24:00,15.0, !- Field 7", + " Through: 12/31, !- Field 9", + " For: AllDays, !- Field 10", + " Until: 24:00,17.0; !- Field 11", + + " Schedule:Compact,", + " Constant, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0; !- Field 3", + + " People,", + " Main Zone People 1, !- Name", + " Main Zone, !- Zone or ZoneList Name", + " OCCUPY-1, !- Number of People Schedule Name", + " people, !- Number of People Calculation Method", + " 20, !- Number of People", + " , !- People per Zone Floor Area {person/m2}", + " , !- Zone Floor Area per Person {m2/person}", + " 0.3, !- Fraction Radiant", + " AutoCalculate, !- Sensible Heat Fraction", + " ActSchd; !- Activity Level Schedule Name", + + " Lights,", + " Main Zone Lights 1, !- Name", + " Main Zone, !- Zone or ZoneList Name", + " LIGHTS-1, !- Schedule Name", + " LightingLevel, !- Design Level Calculation Method", + " 2964, !- Lighting Level {W}", + " , !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.2, !- Return Air Fraction", + " 0.59, !- Fraction Radiant", + " 0.2, !- Fraction Visible", + " 0, !- Fraction Replaceable", + " GeneralLights; !- End-Use Subcategory", + + " ElectricEquipment,", + " Main Zone ElecEq 1, !- Name", + " Main Zone, !- Zone or ZoneList Name", + " EQUIP-1, !- Schedule Name", + " EquipmentLevel, !- Design Level Calculation Method", + " 19760, !- Design Level {W}", + " , !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.5, !- Fraction Latent", + " 0.3, !- Fraction Radiant", + " 0; !- Fraction Lost", + + " ZoneInfiltration:DesignFlowRate,", + " Main Zone Infil 1, !- Name", + " Main Zone, !- Zone or ZoneList Name", + " INFIL-SCH, !- Schedule Name", + " flow/zone, !- Design Flow Rate Calculation Method", + " 0.031089, !- Design Flow Rate {m3/s}", + " , !- Flow per Zone Floor Area {m3/s-m2}", + " , !- Flow per Exterior Surface Area {m3/s-m2}", + " , !- Air Changes per Hour {1/hr}", + " 0, !- Constant Term Coefficient", + " 0, !- Temperature Term Coefficient", + " 0.2237, !- Velocity Term Coefficient", + " 0; !- Velocity Squared Term Coefficient", + + " Sizing:Zone,", + " Main Zone, !- Zone or ZoneList Name", + " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", + " 14., !- Zone Cooling Design Supply Air Temperature {C}", + " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", + " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", + " 50., !- Zone Heating Design Supply Air Temperature {C}", + " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", + " 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " SZ DSOA Main Zone, !- Design Specification Outdoor Air Object Name", + " 0.0, !- Zone Heating Sizing Factor", + " 0.0, !- Zone Cooling Sizing Factor", + " DesignDayWithLimit, !- Cooling Design Air Flow Method", + " , !- Cooling Design Air Flow Rate {m3/s}", + " , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", + " , !- Cooling Minimum Air Flow {m3/s}", + " , !- Cooling Minimum Air Flow Fraction", + " DesignDay, !- Heating Design Air Flow Method", + " , !- Heating Design Air Flow Rate {m3/s}", + " , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", + " , !- Heating Maximum Air Flow {m3/s}", + " ; !- Heating Maximum Air Flow Fraction", + + " DesignSpecification:OutdoorAir,", + " SZ DSOA Main Zone, !- Name", + " sum, !- Outdoor Air Method", + " 0.00236, !- Outdoor Air Flow per Person {m3/s-person}", + " 0.000305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}", + " 0.0; !- Outdoor Air Flow per Zone {m3/s}", + + " Sizing:System,", + " Desiccant DXSystem, !- AirLoop Name", + " sensible, !- Type of Load to Size On", + " autosize, !- Design Outdoor Air Flow Rate {m3/s}", + " 0.3, !- Central Heating Maximum System Air Flow Ratio", + " 4.5, !- Preheat Design Temperature {C}", + " 0.008, !- Preheat Design Humidity Ratio {kgWater/kgDryAir}", + " 11.0, !- Precool Design Temperature {C}", + " 0.008, !- Precool Design Humidity Ratio {kgWater/kgDryAir}", + " 12.8, !- Central Cooling Design Supply Air Temperature {C}", + " 16.7, !- Central Heating Design Supply Air Temperature {C}", + " noncoincident, !- Type of Zone Sum to Use", + " no, !- 100% Outdoor Air in Cooling", + " no, !- 100% Outdoor Air in Heating", + " 0.008, !- Central Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " 0.008, !- Central Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " DesignDay, !- Cooling Design Air Flow Method", + " 0, !- Cooling Design Air Flow Rate {m3/s}", + " , !- Supply Air Flow Rate Per Floor Area During Cooling Operation {m3/s-m2}", + " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", + " , !- Design Supply Air Flow Rate Per Unit Cooling Capacity {m3/s-W}", + " DesignDay, !- Heating Design Air Flow Method", + " 0, !- Heating Design Air Flow Rate {m3/s}", + " , !- Supply Air Flow Rate Per Floor Area During Heating Operation {m3/s-m2}", + " , !- Fraction of Autosized Design Heating Supply Air Flow Rate", + " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", + " , !- Design Supply Air Flow Rate Per Unit Heating Capacity {m3/s-W}", + " , !- System Outdoor Air Method", + " 1.0, !- Zone Maximum Outdoor Air Fraction {dimensionless}", + " CoolingDesignCapacity, !- Cooling Design Capacity Method", + " autosize, !- Cooling Design Capacity {W}", + " , !- Cooling Design Capacity Per Floor Area {W/m2}", + " , !- Fraction of Autosized Cooling Design Capacity", + " HeatingDesignCapacity, !- Heating Design Capacity Method", + " autosize, !- Heating Design Capacity {W}", + " , !- Heating Design Capacity Per Floor Area {W/m2}", + " , !- Fraction of Autosized Heating Design Capacity", + " VAV; !- Central Cooling Capacity Control Method", + + " Curve:Biquadratic,", + " HPACCoolCapFT, !- Name", + " 0.942587793, !- Coefficient1 Constant", + " 0.009543347, !- Coefficient2 x", + " 0.00068377, !- Coefficient3 x**2", + " -0.011042676, !- Coefficient4 y", + " 0.000005249, !- Coefficient5 y**2", + " -0.00000972, !- Coefficient6 x*y", + " -100, !- Minimum Value of x", + " 100, !- Maximum Value of x", + " -100, !- Minimum Value of y", + " 100, !- Maximum Value of y", + " , !- Minimum Curve Output", + " , !- Maximum Curve Output", + " Temperature, !- Input Unit Type for X", + " Temperature, !- Input Unit Type for Y", + " Dimensionless; !- Output Unit Type", + + " Curve:Biquadratic,", + " HPACCOOLEIRFT, !- Name", + " 0.342414409, !- Coefficient1 Constant", + " 0.034885008, !- Coefficient2 x", + " -0.0006237, !- Coefficient3 x**2", + " 0.004977216, !- Coefficient4 y", + " 0.000437951, !- Coefficient5 y**2", + " -0.000728028, !- Coefficient6 x*y", + " -100, !- Minimum Value of x", + " 100, !- Maximum Value of x", + " -100, !- Minimum Value of y", + " 100, !- Maximum Value of y", + " , !- Minimum Curve Output", + " , !- Maximum Curve Output", + " Temperature, !- Input Unit Type for X", + " Temperature, !- Input Unit Type for Y", + " Dimensionless; !- Output Unit Type", + + " Curve:Quadratic,", + " HPACCoolCapFFF, !- Name", + " 0.8, !- Coefficient1 Constant", + " 0.2, !- Coefficient2 x", + " 0.0, !- Coefficient3 x**2", + " 0.0, !- Minimum Value of x", + " 1.0; !- Maximum Value of x", + + " Curve:Quadratic,", + " HPACCOOLEIRFFF, !- Name", + " 1.1552, !- Coefficient1 Constant", + " -0.1808, !- Coefficient2 x", + " 0.0256, !- Coefficient3 x**2", + " 0.0, !- Minimum Value of x", + " 1.0; !- Maximum Value of x", + + " Curve:Quadratic,", + " HPACCOOLPLFFPLR, !- Name", + " 0.75, !- Coefficient1 Constant", + " 0.25, !- Coefficient2 x", + " 0.0, !- Coefficient3 x**2", + " 0.0, !- Minimum Value of x", + " 1.0; !- Maximum Value of x", + + " Curve:Cubic,", + " PackagedRatedCoolCapFFlow, !- Name", + " 0.47278589, !- Coefficient1 Constant", + " 1.2433415, !- Coefficient2 x", + " -1.0387055, !- Coefficient3 x**2", + " 0.32257813, !- Coefficient4 x**3", + " 0.5, !- Minimum Value of x", + " 1.5, !- Maximum Value of x", + " , !- Minimum Curve Output", + " , !- Maximum Curve Output", + " Dimensionless, !- Input Unit Type for X", + " Dimensionless; !- Output Unit Type", + + " Curve:Cubic,", + " PackagedRatedCoolEIRFFlow, !- Name", + " 1.0079484, !- Coefficient1 Constant", + " 0.34544129, !- Coefficient2 x", + " -.6922891, !- Coefficient3 x**2", + " 0.33889943, !- Coefficient4 x**3", + " 0.5, !- Minimum Value of x", + " 1.5, !- Maximum Value of x", + " , !- Minimum Curve Output", + " , !- Maximum Curve Output", + " Dimensionless, !- Input Unit Type for X", + " Dimensionless; !- Output Unit Type", + + " Curve:Cubic,", + " EXHAUSTFANPLF, !- Name", + " 0, !- Coefficient1 Constant", + " 1, !- Coefficient2 x", + " 0.0, !- Coefficient3 x**2", + " 0.0, !- Coefficient4 x**3", + " 0.0, !- Minimum Value of x", + " 1.0; !- Maximum Value of x", + + " NodeList,", + " Main Zone In Nodes, !- Name", + " Main Zone In Node; !- Node 1 Name", + + " NodeList,", + " Desiccant DX Air Loop Setpoint Nodes, !- Name", + " HX Process Outlet Node, !- Node 1 Name", + " Desiccant DXSystem Mixed Air Node; !- Node 2 Name", + + " NodeList,", + " Regen Setpoint Nodes, !- Name", + " HX Regen Inlet Node; !- Node 1 Name", + + " BranchList,", + " Desiccant Air Loop Branches, !- Name", + " Desiccant Air Loop Main Branch; !- Branch 1 Name", + + " Branch,", + " Desiccant Air Loop Main Branch, !- Name", + " , !- Pressure Drop Curve Name", + " AirLoopHVAC:OutdoorAirSystem, !- Component 1 Object Type", + " Desiccant DXSystem OA System, !- Component 1 Name", + " Desiccant DXSystem Air Loop Inlet Node, !- Component 1 Inlet Node Name", + " Desiccant DXSystem Mixed Air Node, !- Component 1 Outlet Node Name", + " CoilSystem:Cooling:DX, !- Component 2 Object Type", + " Desiccant DXSystem Cooling Coil Sys, !- Component 2 Name", + " Desiccant DXSystem Mixed Air Node, !- Component 2 Inlet Node Name", + " HX Process Inlet Node, !- Component 2 Outlet Node Name", + " Dehumidifier:Desiccant:System, !- Component 3 Object Type", + " Desiccant 1, !- Component 3 Name", + " HX Process Inlet Node, !- Component 3 Inlet Node Name", + " HX Process Outlet Node, !- Component 3 Outlet Node Name", + " Fan:ConstantVolume, !- Component 4 Object Type", + " Desiccant DXSystem Supply Fan, !- Component 4 Name", + " HX Process Outlet Node, !- Component 4 Inlet Node Name", + " Desiccant Supply Fan Outlet Node, !- Component 4 Outlet Node Name", + " Coil:Heating:Fuel, !- Component 5 Object Type", + " Desiccant Process Heating Coil, !- Component 5 Name", + " Desiccant Supply Fan Outlet Node, !- Component 5 Inlet Node Name", + " Desiccant DXSystem Air Loop Outlet Node; !- Component 5 Outlet Node Name", + + " AirLoopHVAC,", + " Desiccant DXSystem, !- Name", + " , !- Controller List Name", + " Desiccant Avail List, !- Availability Manager List Name", + " autosize, !- Design Supply Air Flow Rate {m3/s}", + " Desiccant Air Loop Branches, !- Branch List Name", + " , !- Connector List Name", + " Desiccant DXSystem Air Loop Inlet Node, !- Supply Side Inlet Node Name", + " Desiccant DXSystem Return Air Mixer Outlet Node, !- Demand Side Outlet Node Name", + " Desiccant DXSystem Zone Equipment Inlet Node, !- Demand Side Inlet Node Names", + " Desiccant DXSystem Air Loop Outlet Node; !- Supply Side Outlet Node Names", + + " AirLoopHVAC:ControllerList,", + " Desiccant DXSystem OA System Controllers, !- Name", + " Controller:OutdoorAir, !- Controller 1 Object Type", + " Desiccant OA Controller; !- Controller 1 Name", + + " AirLoopHVAC:OutdoorAirSystem:EquipmentList,", + " Desiccant DXSystem OA System Equipment, !- Name", + " OutdoorAir:Mixer, !- Component 1 Object Type", + " Desiccant DXSystem OA Mixing Box; !- Component 1 Name", + + " AirLoopHVAC:OutdoorAirSystem,", + " Desiccant DXSystem OA System, !- Name", + " Desiccant DXSystem OA System Controllers, !- Controller List Name", + " Desiccant DXSystem OA System Equipment, !- Outdoor Air Equipment List Name", + " Desiccant Outdoor Air Avail List; !- Availability Manager List Name", + + " OutdoorAir:NodeList,", + " OutsideAirInletNodes; !- Node or NodeList Name 1", + + " OutdoorAir:NodeList,", + " Desiccant DXSystem Outside Air Inlet Node, !- Node or NodeList Name 1", + " Desiccant Outside Air Inlet Node 2; !- Node or NodeList Name 2", + + " OutdoorAir:NodeList,", + " Regen Coil Inlet Node; !- Node or NodeList Name 1", + + " OutdoorAir:NodeList,", + " Condenser Inlet Node; !- Node or NodeList Name 1", + + " OutdoorAir:Mixer,", + " Desiccant DXSystem OA Mixing Box, !- Name", + " Desiccant DXSystem Mixed Air Node, !- Mixed Air Node Name", + " Desiccant DXSystem Outside Air Inlet Node, !- Outdoor Air Stream Node Name", + " Desiccant DXSystem Relief Air Outlet Node, !- Relief Air Stream Node Name", + " Desiccant DXSystem Air Loop Inlet Node; !- Return Air Stream Node Name", + + " AvailabilityManagerAssignmentList,", + " Desiccant Avail List, !- Name", + " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", + " Desiccant DXSystem Avail;!- Availability Manager 1 Name", + + " AvailabilityManagerAssignmentList,", + " Desiccant Outdoor Air Avail List, !- Name", + " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", + " Desiccant Outdoor Air Avail; !- Availability Manager 1 Name", + + " AvailabilityManager:Scheduled,", + " Desiccant DXSystem Avail,!- Name", + " FanAvailSched; !- Schedule Name", + + " AvailabilityManager:Scheduled,", + " Desiccant Outdoor Air Avail, !- Name", + " FanAvailSched; !- Schedule Name", + + " SetpointManager:SingleZone:Heating,", + " Heating Supply Air Temp Manager, !- Name", + " Temperature, !- Control Variable", + " -99., !- Minimum Supply Air Temperature {C}", + " 99., !- Maximum Supply Air Temperature {C}", + " Main Zone, !- Control Zone Name", + " Main Zone Node, !- Zone Node Name", + " Main Zone In Node, !- Zone Inlet Node Name", + " Desiccant DXSystem Air Loop Outlet Node; !- Setpoint Node or NodeList Name", + + " SetpointManager:SingleZone:Cooling,", + " Cooling Supply Air Temp Manager, !- Name", + " Temperature, !- Control Variable", + " -99., !- Minimum Supply Air Temperature {C}", + " 99., !- Maximum Supply Air Temperature {C}", + " Main Zone, !- Control Zone Name", + " Main Zone Node, !- Zone Node Name", + " Main Zone In Node, !- Zone Inlet Node Name", + " Desiccant Supply Fan Outlet Node; !- Setpoint Node or NodeList Name", + + " SetpointManager:SingleZone:Humidity:Maximum,", + " Zone Max Humidity Manager, !- Name", + " HX Process Outlet Node, !- Setpoint Node or NodeList Name", + " Main Zone Node; !- Control Zone Air Node Name", + + " SetpointManager:MixedAir,", + " Adjusted Cooling Supply Air Temp Manager, !- Name", + " Temperature, !- Control Variable", + " Desiccant Supply Fan Outlet Node, !- Reference Setpoint Node Name", + " HX Process Outlet Node, !- Fan Inlet Node Name", + " Desiccant Supply Fan Outlet Node, !- Fan Outlet Node Name", + " HX Process Outlet Node; !- Setpoint Node or NodeList Name", + + " Controller:OutdoorAir,", + " Desiccant OA Controller, !- Name", + " Desiccant DXSystem Relief Air Outlet Node, !- Relief Air Outlet Node Name", + " Desiccant DXSystem Air Loop Inlet Node, !- Return Air Node Name", + " Desiccant DXSystem Mixed Air Node, !- Mixed Air Node Name", + " Desiccant DXSystem Outside Air Inlet Node, !- Actuator Node Name", + " autosize, !- Minimum Outdoor Air Flow Rate {m3/s}", + " autosize, !- Maximum Outdoor Air Flow Rate {m3/s}", + " NoEconomizer, !- Economizer Control Type", + " ModulateFlow, !- Economizer Control Action Type", + " 100., !- Economizer Maximum Limit Dry-Bulb Temperature {C}", + " , !- Economizer Maximum Limit Enthalpy {J/kg}", + " , !- Economizer Maximum Limit Dewpoint Temperature {C}", + " , !- Electronic Enthalpy Limit Curve Name", + " , !- Economizer Minimum Limit Dry-Bulb Temperature {C}", + " NoLockout, !- Lockout Type", + " FixedMinimum, !- Minimum Limit Type", + " Min OA Sched, !- Minimum Outdoor Air Schedule Name", + " , !- Minimum Fraction of Outdoor Air Schedule Name", + " , !- Maximum Fraction of Outdoor Air Schedule Name", + " 0; !- Mechanical Ventilation Controller Name", + + " ZoneHVAC:EquipmentConnections,", + " Main Zone, !- Zone Name", + " Main Zone Eq, !- Zone Conditioning Equipment List Name", + " Main Zone In Nodes, !- Zone Air Inlet Node or NodeList Name", + " , !- Zone Air Exhaust Node or NodeList Name", + " Main Zone Node, !- Zone Air Node Name", + " Main Zone Out Node; !- Zone Return Air Node Name", + + " ZoneHVAC:EquipmentList,", + " Main Zone Eq, !- Name", + " SequentialLoad, !- Load Distribution Scheme", + " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", + " Main Zone Direct Air ADU, !- Zone Equipment 1 Name", + " 1, !- Zone Equipment 1 Cooling Sequence", + " 1; !- Zone Equipment 1 Heating or No-Load Sequence", + + " ZoneHVAC:AirDistributionUnit,", + " Main Zone Direct Air ADU, !- Name", + " Main Zone In Node, !- Air Distribution Unit Outlet Node Name", + " AirTerminal:SingleDuct:ConstantVolume:NoReheat, !- Air Terminal Object Type", + " Main Zone Direct Air; !- Air Terminal Name", + + " AirTerminal:SingleDuct:ConstantVolume:NoReheat,", + " Main Zone Direct Air, !- Name", + " Constant, !- Availability Schedule Name", + " Main Zone In Node 2AT, !- Air Inlet Node Name", + " Main Zone In Node, !- Air Outlet Node Name", + " autosize; !- Maximum Air Flow Rate {m3/s}", + + " CoilSystem:Cooling:DX,", + " Desiccant DXSystem Cooling Coil Sys, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " Desiccant DXSystem Mixed Air Node, !- DX Cooling Coil System Inlet Node Name", + " HX Process Inlet Node, !- DX Cooling Coil System Outlet Node Name", + " HX Process Outlet Node, !- DX Cooling Coil System Sensor Node Name", + " Coil:Cooling:DX:SingleSpeed, !- Cooling Coil Object Type", + " Desiccant DXSystem Cooling Coil; !- Cooling Coil Name", + + " ZoneControl:Thermostat,", + " Main Zone Control, !- Name", + " Main Zone, !- Zone or ZoneList Name", + " Desiccant Control Type Sched, !- Control Type Schedule Name", + " ThermostatSetpoint:DualSetpoint, !- Control 1 Object Type", + " DualSetPoint; !- Control 1 Name", + + " ZoneControl:Humidistat,", + " Main Zone Humidistat, !- Name", + " Main Zone, !- Zone Name", + " Relative Humidity Sched; !- Humidifying Relative Humidity Setpoint Schedule Name", + + " Schedule:Compact,", + " Relative Humidity Sched, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,45.0; !- Field 3", + + " ThermostatSetpoint:SingleHeating,", + " HeatingSetpoint, !- Name", + " Htg-SetP-Sch; !- Setpoint Temperature Schedule Name", + + " ThermostatSetpoint:SingleHeating,", + " PlenumHeatingSetpoint, !- Name", + " PlenumHtg-SetP-Sch; !- Setpoint Temperature Schedule Name", + + " ThermostatSetpoint:SingleCooling,", + " CoolingSetpoint, !- Name", + " Clg-SetP-Sch; !- Setpoint Temperature Schedule Name", + + " ThermostatSetpoint:SingleCooling,", + " PlenumCoolingSetpoint, !- Name", + " PlenumClg-SetP-Sch; !- Setpoint Temperature Schedule Name", + + " ThermostatSetpoint:DualSetpoint,", + " DualSetPoint, !- Name", + " Htg-SetP-Sch, !- Heating Setpoint Temperature Schedule Name", + " Clg-SetP-Sch; !- Cooling Setpoint Temperature Schedule Name", + + " AirLoopHVAC:SupplyPath,", + " Desiccant DXSystem Supply Path, !- Name", + " Desiccant DXSystem Zone Equipment Inlet Node, !- Supply Air Path Inlet Node Name", + " AirLoopHVAC:ZoneSplitter,!- Component 1 Object Type", + " Desiccant DXSystem Zone Supply Air Splitter; !- Component 1 Name", + + " AirLoopHVAC:ReturnPath,", + " Desiccant DXSystem Return Path, !- Name", + " Desiccant DXSystem Return Air Mixer Outlet Node, !- Return Air Path Outlet Node Name", + " AirLoopHVAC:ZoneMixer, !- Component 1 Object Type", + " Desiccant DXSystem Zone Return Air Mixer; !- Component 1 Name", + + " AirLoopHVAC:ZoneSplitter,", + " Desiccant DXSystem Zone Supply Air Splitter, !- Name", + " Desiccant DXSystem Zone Equipment Inlet Node, !- Inlet Node Name", + " Main Zone In Node 2AT; !- Outlet 1 Node Name", + + " AirLoopHVAC:ZoneMixer,", + " Desiccant DXSystem Zone Return Air Mixer, !- Name", + " Desiccant DXSystem Return Air Mixer Outlet Node, !- Outlet Node Name", + " Main Zone Out Node; !- Inlet 1 Node Name", + + " Coil:Heating:Fuel,", + " Desiccant Process Heating Coil, !- Name", + " Constant, !- Availability Schedule Name", + " Gas, !- Fuel Type", + " 0.8, !- Gas Burner Efficiency", + " autosize, !- Nominal Capacity {W}", + " Desiccant Supply Fan Outlet Node, !- Air Inlet Node Name", + " Desiccant DXSystem Air Loop Outlet Node, !- Air Outlet Node Name", + " Desiccant DXSystem Air Loop Outlet Node; !- Temperature Setpoint Node Name", + + " Coil:Heating:Fuel,", + " Desiccant Regen Coil, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " Gas, !- Fuel Type", + " 1, !- Gas Burner Efficiency", + " autosize, !- Nominal Capacity {W}", + " Regen Coil Inlet Node, !- Air Inlet Node Name", + " HX Regen Inlet Node; !- Air Outlet Node Name", + + " Coil:Cooling:DX:SingleSpeed,", + " Desiccant DXSystem Cooling Coil, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " autosize, !- High Speed Rated Air Flow Rate {m3/s}", + " autosize, !- Gross Rated Sensible Heat Ratio", + " 3.5, !- Gross Rated Cooling COP {W/W}", + " autosize, !- High Speed Rated Air Flow Rate {m3/s}", + " , !- Rated Evaporator Fan Power Per Volume Flow Rate {W/(m3/s)}", + " Desiccant DXSystem Mixed Air Node, !- Air Inlet Node Name", + " HX Process Inlet Node, !- Air Outlet Node Name", + " HPACCoolCapFT, !- Total Cooling Capacity Function of Temperature Curve Name", + " HPACCoolCapFFF, !- Total Cooling Capacity Function of Flow Fraction Curve Name", + " HPACCOOLEIRFT, !- Energy Input Ratio Function of Temperature Curve Name", + " HPACCOOLEIRFFF, !- Energy Input Ratio Function of Flow Fraction Curve Name", + " HPACCOOLPLFFPLR, !- Part Load Fraction Correlation Curve Name", + " , !- Minimum Outdoor Dry-Bulb Temperature for Compressor Operation {C}", + " 1000, !- Nominal Time for Condensate Removal to Begin {s}", + " 0.4, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}", + " 4, !- Maximum Cycling Rate {cycles/hr}", + " 45, !- Latent Capacity Time Constant {s}", + " Condenser Inlet Node, !- Condenser Air Inlet Node Name", + " AirCooled; !- Condenser Type", + + " Fan:ConstantVolume,", + " Desiccant DXSystem Supply Fan, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " 0.7, !- Fan Total Efficiency", + " 571.66, !- Pressure Rise {Pa}", + " autosize, !- Maximum Flow Rate {m3/s}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Airstream Fraction", + " HX Process Outlet Node, !- Air Inlet Node Name", + " Desiccant Supply Fan Outlet Node; !- Air Outlet Node Name", + + " Fan:ConstantVolume,", + " Desiccant Regen Fan, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " 0.7, !- Fan Total Efficiency", + " 205.5, !- Pressure Rise {Pa}", + " autosize, !- Maximum Flow Rate {m3/s}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Airstream Fraction", + " HX Regen Outlet Node, !- Air Inlet Node Name", + " Regen Fan Outlet Node; !- Air Outlet Node Name", + + " Dehumidifier:Desiccant:System,", + " Desiccant 1, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " HeatExchanger:Desiccant:BalancedFlow, !- Desiccant Heat Exchanger Object Type", + " Desiccant Heat Exchanger 1, !- Desiccant Heat Exchanger Name", + " HX Process Outlet Node, !- Sensor Node Name", + " Fan:ConstantVolume, !- Regeneration Air Fan Object Type", + " Desiccant Regen Fan, !- Regeneration Air Fan Name", + " DrawThrough, !- Regeneration Air Fan Placement", + " Coil:Heating:Fuel, !- Regeneration Air Heater Object Type", + " Desiccant Regen Coil, !- Regeneration Air Heater Name", + " 46.111111, !- Regeneration Inlet Air Setpoint Temperature {C}", + " Coil:Cooling:DX:SingleSpeed, !- Companion Cooling Coil Object Type", + " Desiccant DXSystem Cooling Coil, !- Companion Cooling Coil Name", + " Yes, !- Companion Cooling Coil Upstream of Dehumidifier Process Inlet", + " Yes, !- Companion Coil Regeneration Air Heating", + " 0.87931, !- Exhaust Fan Maximum Flow Rate {m3/s}", + " 50, !- Exhaust Fan Maximum Power {W}", + " EXHAUSTFANPLF; !- Exhaust Fan Power Curve Name", + + " HeatExchanger:Desiccant:BalancedFlow,", + " Desiccant Heat Exchanger 1, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " HX Regen Inlet Node, !- Regeneration Air Inlet Node Name", + " HX Regen Outlet Node, !- Regeneration Air Outlet Node Name", + " HX Process Inlet Node, !- Process Air Inlet Node Name", + " HX Process Outlet Node, !- Process Air Outlet Node Name", + " HeatExchanger:Desiccant:BalancedFlow:PerformanceDataType1, !- Heat Exchanger Performance Object Type", + " HXDesPerf1; !- Heat Exchanger Performance Name", + + " HeatExchanger:Desiccant:BalancedFlow:PerformanceDataType1,", + " HXDesPerf1, !- Name", + " 0.87931, !- Nominal Air Flow Rate {m3/s}", + " 3.25, !- Nominal Air Face Velocity {m/s}", + " 50.0, !- Nominal Electric Power {W}", + " -2.53636E+00, !- Temperature Equation Coefficient 1", + " 2.13247E+01, !- Temperature Equation Coefficient 2", + " 9.23308E-01, !- Temperature Equation Coefficient 3", + " 9.43276E+02, !- Temperature Equation Coefficient 4", + " -5.92367E+01, !- Temperature Equation Coefficient 5", + " -4.27465E-02, !- Temperature Equation Coefficient 6", + " 1.12204E+02, !- Temperature Equation Coefficient 7", + " 7.78252E-01, !- Temperature Equation Coefficient 8", + " 0.007143, !- Minimum Regeneration Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", + " 0.024286, !- Maximum Regeneration Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", + " 46.111110, !- Minimum Regeneration Inlet Air Temperature for Temperature Equation {C}", + " 46.111112, !- Maximum Regeneration Inlet Air Temperature for Temperature Equation {C}", + " 0.005000, !- Minimum Process Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", + " 0.015714, !- Maximum Process Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", + " 4.583333, !- Minimum Process Inlet Air Temperature for Temperature Equation {C}", + " 21.83333, !- Maximum Process Inlet Air Temperature for Temperature Equation {C}", + " 2.286, !- Minimum Regeneration Air Velocity for Temperature Equation {m/s}", + " 4.826, !- Maximum Regeneration Air Velocity for Temperature Equation {m/s}", + " 35.0, !- Minimum Regeneration Outlet Air Temperature for Temperature Equation {C}", + " 50.0, !- Maximum Regeneration Outlet Air Temperature for Temperature Equation {C}", + " 5.0, !- Minimum Regeneration Inlet Air Relative Humidity for Temperature Equation {percent}", + " 45.0, !- Maximum Regeneration Inlet Air Relative Humidity for Temperature Equation {percent}", + " 80.0, !- Minimum Process Inlet Air Relative Humidity for Temperature Equation {percent}", + " 100.0, !- Maximum Process Inlet Air Relative Humidity for Temperature Equation {percent}", + " -2.25547E+01, !- Humidity Ratio Equation Coefficient 1", + " 9.76839E-01, !- Humidity Ratio Equation Coefficient 2", + " 4.89176E-01, !- Humidity Ratio Equation Coefficient 3", + " -6.30019E-02, !- Humidity Ratio Equation Coefficient 4", + " 1.20773E-02, !- Humidity Ratio Equation Coefficient 5", + " 5.17134E-05, !- Humidity Ratio Equation Coefficient 6", + " 4.94917E-02, !- Humidity Ratio Equation Coefficient 7", + " -2.59417E-04, !- Humidity Ratio Equation Coefficient 8", + " 0.007143, !- Minimum Regeneration Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " 0.024286, !- Maximum Regeneration Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " 46.111110, !- Minimum Regeneration Inlet Air Temperature for Humidity Ratio Equation {C}", + " 46.111112, !- Maximum Regeneration Inlet Air Temperature for Humidity Ratio Equation {C}", + " 0.005000, !- Minimum Process Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " 0.015714, !- Maximum Process Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " 4.583333, !- Minimum Process Inlet Air Temperature for Humidity Ratio Equation {C}", + " 21.83333, !- Maximum Process Inlet Air Temperature for Humidity Ratio Equation {C}", + " 2.286, !- Minimum Regeneration Air Velocity for Humidity Ratio Equation {m/s}", + " 4.826, !- Maximum Regeneration Air Velocity for Humidity Ratio Equation {m/s}", + " 0.007914, !- Minimum Regeneration Outlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " 0.026279, !- Maximum Regeneration Outlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " 5.0, !- Minimum Regeneration Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", + " 45.0, !- Maximum Regeneration Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", + " 80.0, !- Minimum Process Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", + " 100.0; !- Maximum Process Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", + }); + + ASSERT_TRUE(process_idf(idf_objects)); + + OutputProcessor::TimeValue.allocate(2); + DataGlobals::DDOnlySimulation = true; + + SimulationManager::GetProjectData(); + OutputReportPredefined::SetPredefinedTables(); + createFacilityElectricPowerServiceObject(); + SetPreConstructionInputParameters(); // establish array bounds for constructions early + BranchInputManager::ManageBranchInput(); + BeginSimFlag = true; + BeginEnvrnFlag = true; + ZoneSizingCalc = true; + SysSizingCalc = true; + SizingManager::ManageSizing(); + + DataSizing::CurSysNum = 1; + DataSizing::CurOASysNum = 0; + + GetDesiccantDehumidifierInput(); + EXPECT_EQ(1, NumDesicDehums); + EXPECT_EQ("DESICCANT 1", DesicDehum(DesicDehumNum).Name); + EXPECT_EQ("DESICCANT REGEN COIL", DesicDehum(DesicDehumNum).RegenCoilName); + + CompName = DesicDehum(DesicDehumNum).Name; + CompIndex = NumGenericDesicDehums; + SimDesiccantDehumidifier(CompName, FirstHVACIteration, CompIndex); + + RegCoilDesInletTemp = FinalSysSizing(DataSizing::CurSysNum).HeatOutTemp; + RegCoilDesOutletTemp = DesicDehum(DesicDehumNum).RegenSetPointTemp; + RegCoilInletAirMassFlowRate = FinalSysSizing(DataSizing::CurSysNum).DesMainVolFlow * DataEnvironment::StdRhoAir; + RegCoilCapacity = RegCoilInletAirMassFlowRate * PsyCpAirFnWTdb(0.0, 20.0) * (RegCoilDesOutletTemp - RegCoilDesInletTemp); + + for (loop = 1; loop <= NumHeatingCoils; ++loop) { if (HeatingCoil(loop).Name == DesicDehum(DesicDehumNum).RegenCoilName) { CoilIndex = loop; } - } - EXPECT_EQ( RegCoilCapacity, HeatingCoil( CoilIndex ).NominalCapacity ); - } + } + EXPECT_EQ(RegCoilCapacity, HeatingCoil(CoilIndex).NominalCapacity); +} TEST_F(EnergyPlusFixture, DesiccantDehum_RegenAirHeaterHWCoilSizingTest) { - std::string CompName( "" ); - bool FirstHVACIteration( true ); - int DesicDehumNum( 1 ); - int CompIndex( 1 ); - int CoilIndex( 0 ); - int loop( 0 ); - Real64 RegCoilDesInletTemp( 0.0 ); - Real64 RegCoilDesOutletTemp( 0.0 ); - Real64 RegCoilInletAirMassFlowRate( 0.0 ); - Real64 RegCoilCapacity( 0.0 ); - - std::string const idf_objects = delimited_string( { - - " Version,8.4;", - - " Timestep,6;", - - " Building,", - " Bldg, !- Name", - " 0.0, !- North Axis {deg}", - " Suburbs, !- Terrain", - " 0.05, !- Loads Convergence Tolerance Value", - " 0.05, !- Temperature Convergence Tolerance Value {deltaC}", - " MinimalShadowing, !- Solar Distribution", - " 30, !- Maximum Number of Warmup Days", - " 6; !- Minimum Number of Warmup Days", - - " SurfaceConvectionAlgorithm:Inside,Simple;", - - " SurfaceConvectionAlgorithm:Outside,SimpleCombined;", - - " HeatBalanceAlgorithm,ConductionTransferFunction;", - - " SimulationControl,", - " Yes, !- Do Zone Sizing Calculation", - " Yes, !- Do System Sizing Calculation", - " No, !- Do Plant Sizing Calculation", - " Yes, !- Run Simulation for Sizing Periods", - " No; !- Run Simulation for Weather File Run Periods", - - " RunPeriod,", - " , !- Name", - " 1, !- Begin Month", - " 1, !- Begin Day of Month", - " , !- Begin Year", - " 1, !- End Month", - " 5, !- End Day of Month", - " , !- End Year", - " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " Yes; !- Use Weather File Snow Indicators", - - " Site:Location,", - " Miami Intl Ap FL USA WMO=722020, !- Name", - " 25.82, !- Latitude {deg}", - " -80.30, !- Longitude {deg}", - " -5.00, !- Time Zone {hr}", - " 11.00; !- Elevation {m}", - - " SizingPeriod:DesignDay,", - " Miami Intl Ap Ann Htg 99.6% Condns DB, !- Name", - " 1, !- Month", - " 21, !- Day of Month", - " WinterDesignDay, !- Day Type", - " 8.7, !- Maximum Dry-Bulb Temperature {C}", - " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " 8.7, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 101217., !- Barometric Pressure {Pa}", - " 3.8, !- Wind Speed {m/s}", - " 340, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 0.00; !- Sky Clearness", - - " SizingPeriod:DesignDay,", - " Miami Intl Ap Ann Clg .4% Condns DB=>MWB, !- Name", - " 7, !- Month", - " 21, !- Day of Month", - " SummerDesignDay, !- Day Type", - " 33.2, !- Maximum Dry-Bulb Temperature {C}", - " 6.7, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " 25.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 101217., !- Barometric Pressure {Pa}", - " 4.5, !- Wind Speed {m/s}", - " 140, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 1.00; !- Sky Clearness", - - " Site:GroundTemperature:BuildingSurface,21.0,21.5,22.0,22.2,22.2,22.2,22.2,22.2,22.2,22.0,21.5,21.0;", - - " Material:NoMass,", - " R13LAYER, !- Name", - " Rough, !- Roughness", - " 2.290965, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material:NoMass,", - " R31LAYER, !- Name", - " Rough, !- Roughness", - " 5.456, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " C5 - 4 IN HW CONCRETE, !- Name", - " MediumRough, !- Roughness", - " 0.1014984, !- Thickness {m}", - " 1.729577, !- Conductivity {W/m-K}", - " 2242.585, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - - " Construction,", - " R13WALL, !- Name", - " R13LAYER; !- Outside Layer", - - " Construction,", - " FLOOR, !- Name", - " C5 - 4 IN HW CONCRETE; !- Outside Layer", - - " Construction,", - " ROOF31, !- Name", - " R31LAYER; !- Outside Layer", - - " Zone,", - " Main Zone, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " CounterClockWise, !- Vertex Entry Direction", - " relative; !- Coordinate System", - - " BuildingSurface:Detailed,", - " Zn001:Wall001, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " Main Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 15.24000,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,0,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall002, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " Main Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000,0,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 15.24000,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 15.24000,15.24000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall003, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " Main Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 15.24000,15.24000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,15.24000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall004, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " Main Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,15.24000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,0,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Flr001, !- Name", - " Floor, !- Surface Type", - " FLOOR, !- Construction Name", - " Main Zone, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn001:Flr001, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000,0.000000,0.0, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000,0.000000,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 0.000000,15.24000,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,15.24000,0.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Roof001, !- Name", - " Roof, !- Surface Type", - " ROOF31, !- Construction Name", - " Main Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.000000,15.24000,4.572, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000,0.000000,4.572, !- X,Y,Z ==> Vertex 2 {m}", - " 15.24000,0.000000,4.572, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,15.24000,4.572; !- X,Y,Z ==> Vertex 4 {m}", - - " ScheduleTypeLimits,", - " Any Number; !- Name", - - " ScheduleTypeLimits,", - " Fraction, !- Name", - " 0.0, !- Lower Limit Value", - " 1.0, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - " ScheduleTypeLimits,", - " Temperature, !- Name", - " -60, !- Lower Limit Value", - " 200, !- Upper Limit Value", - " CONTINUOUS, !- Numeric Type", - " Temperature; !- Unit Type", - - " ScheduleTypeLimits,", - " Control Type, !- Name", - " 0, !- Lower Limit Value", - " 4, !- Upper Limit Value", - " DISCRETE; !- Numeric Type", - - " ScheduleTypeLimits,", - " On/Off, !- Name", - " 0, !- Lower Limit Value", - " 1, !- Upper Limit Value", - " DISCRETE; !- Numeric Type", - - " ScheduleTypeLimits,", - " FlowRate, !- Name", - " 0.0, !- Lower Limit Value", - " 10, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - " ScheduleTypeLimits,", - " Humidity, !- Name", - " 0, !- Lower Limit Value", - " 100, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - " Schedule:Compact,", - " OCCUPY-1, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", - " Until: 8:00,0.0, !- Field 3", - " Until: 11:00,1.00, !- Field 5", - " Until: 12:00,0.80, !- Field 7", - " Until: 13:00,0.40, !- Field 9", - " Until: 14:00,0.80, !- Field 11", - " Until: 18:00,1.00, !- Field 13", - " Until: 19:00,0.50, !- Field 15", - " Until: 21:00,0.10, !- Field 17", - " Until: 24:00,0.0, !- Field 19", - " For: Weekends WinterDesignDay Holiday, !- Field 21", - " Until: 24:00,0.0; !- Field 22", - - " Schedule:Compact,", - " LIGHTS-1, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", - " Until: 8:00,0.05, !- Field 3", - " Until: 9:00,0.9, !- Field 5", - " Until: 10:00,0.95, !- Field 7", - " Until: 11:00,1.00, !- Field 9", - " Until: 12:00,0.95, !- Field 11", - " Until: 13:00,0.8, !- Field 13", - " Until: 14:00,0.9, !- Field 15", - " Until: 18:00,1.00, !- Field 17", - " Until: 19:00,0.60, !- Field 19", - " Until: 21:00,0.20, !- Field 21", - " Until: 24:00,0.05, !- Field 23", - " For: Weekends WinterDesignDay Holiday, !- Field 25", - " Until: 24:00,0.05; !- Field 26", - - " Schedule:Compact,", - " EQUIP-1, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", - " Until: 8:00,0.02, !- Field 3", - " Until: 9:00,0.4, !- Field 5", - " Until: 14:00,0.9, !- Field 7", - " Until: 15:00,0.8, !- Field 9", - " Until: 16:00,0.7, !- Field 11", - " Until: 18:00,0.5, !- Field 13", - " Until: 20:00,0.3, !- Field 15", - " Until: 24:00,0.02, !- Field 17", - " For: Weekends WinterDesignDay Holiday, !- Field 19", - " Until: 24:00,0.2; !- Field 20", - - " Schedule:Compact,", - " INFIL-SCH, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 3/31, !- Field 1", - " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", - " Until: 24:00,1.0, !- Field 3", - " For: AllOtherDays, !- Field 5", - " Until: 24:00,1.0, !- Field 6", - " Through: 9/30, !- Field 8", - " For: AllDays, !- Field 9", - " Until: 24:00,0.7, !- Field 10", - " Through: 12/31, !- Field 12", - " For: AllDays, !- Field 13", - " Until: 24:00,1.0, !- Field 14", - " For: AllOtherDays, !- Field 16", - " Until: 24:00,0.2; !- Field 17", - - " Schedule:Compact,", - " ActSchd, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,117.239997864; !- Field 3", - - " Schedule:Compact,", - " ShadeTransSch, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,0.0; !- Field 3", - - " Schedule:Compact,", - " Htg-SetP-Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: SummerDesignDay, !- Field 2", - " Until: 24:00,12.8, !- Field 3", - " For: WinterDesignDay, !- Field 5", - " Until: 24:00,21.1, !- Field 6", - " For: WeekEnds Holiday, !- Field 8", - " Until: 7:00,12.8, !- Field 9", - " Until: 13:00,21.1, !- Field 11", - " Until: 24:00,12.8, !- Field 13", - " For: AllOtherDays, !- Field 15", - " Until: 7:00,12.8, !- Field 16", - " Until: 18:00,21.1, !- Field 18", - " Until: 24:00,12.8; !- Field 20", - - " Schedule:Compact,", - " PlenumHtg-SetP-Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,12.8; !- Field 3", - - " Schedule:Compact,", - " Clg-SetP-Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: SummerDesignDay, !- Field 2", - " Until: 24:00,23.9, !- Field 3", - " For: WinterDesignDay, !- Field 5", - " Until: 24:00,40.0, !- Field 6", - " For: WeekEnds Holiday, !- Field 8", - " Until: 7:00,40.0, !- Field 9", - " Until: 13:00,23.9, !- Field 11", - " Until: 24:00,32.2, !- Field 13", - " For: AllOtherDays, !- Field 15", - " Until: 7:00,40.0, !- Field 16", - " Until: 18:00,23.9, !- Field 18", - " Until: 24:00,40.0; !- Field 20", - - " Schedule:Compact,", - " PlenumClg-SetP-Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,40.0; !- Field 3", - - " Schedule:Compact,", - " Zone Control Type Sched, !- Name", - " Control Type, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: SummerDesignDay, !- Field 2", - " Until: 24:00,2, !- Field 3", - " For: WinterDesignDay, !- Field 5", - " Until: 24:00,1, !- Field 6", - " For: AllOtherDays, !- Field 8", - " Until: 24:00,4; !- Field 9", - - " Schedule:Compact,", - " Desiccant Control Type Sched, !- Name", - " Control Type, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,4; !- Field 3", - - " Schedule:Compact,", - " Min OA Sched, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Weekdays, !- Field 2", - " Until: 7:00,0.02, !- Field 3", - " Until: 17:00,1.0, !- Field 5", - " Until: 24:00,0.0, !- Field 7", - " For: AllOtherDays, !- Field 9", - " Until: 24:00,0.02; !- Field 10", - - " Schedule:Compact,", - " FanAvailSched, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 3/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0, !- Field 3", - " Through: 9/30, !- Field 5", - " For: WeekDays, !- Field 6", - " Until: 7:00,0.0, !- Field 7", - " Until: 17:00,1.0, !- Field 9", - " Until: 24:00,0.0, !- Field 11", - " For: SummerDesignDay WinterDesignDay, !- Field 13", - " Until: 24:00,1.0, !- Field 14", - " For: AllOtherDays, !- Field 16", - " Until: 24:00,0.0, !- Field 17", - " Through: 12/31, !- Field 19", - " For: AllDays, !- Field 20", - " Until: 24:00,1.0; !- Field 21", - - " Schedule:Compact,", - " Seasonal Reset Supply Air Temp Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 3/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,17.0, !- Field 3", - " Through: 9/30, !- Field 5", - " For: AllDays, !- Field 6", - " Until: 24:00,15.0, !- Field 7", - " Through: 12/31, !- Field 9", - " For: AllDays, !- Field 10", - " Until: 24:00,17.0; !- Field 11", - - " Schedule:Compact,", - " Constant, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0; !- Field 3", - - " People,", - " Main Zone People 1, !- Name", - " Main Zone, !- Zone or ZoneList Name", - " OCCUPY-1, !- Number of People Schedule Name", - " people, !- Number of People Calculation Method", - " 20, !- Number of People", - " , !- People per Zone Floor Area {person/m2}", - " , !- Zone Floor Area per Person {m2/person}", - " 0.3, !- Fraction Radiant", - " AutoCalculate, !- Sensible Heat Fraction", - " ActSchd; !- Activity Level Schedule Name", - - " Lights,", - " Main Zone Lights 1, !- Name", - " Main Zone, !- Zone or ZoneList Name", - " LIGHTS-1, !- Schedule Name", - " LightingLevel, !- Design Level Calculation Method", - " 2964, !- Lighting Level {W}", - " , !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.2, !- Return Air Fraction", - " 0.59, !- Fraction Radiant", - " 0.2, !- Fraction Visible", - " 0, !- Fraction Replaceable", - " GeneralLights; !- End-Use Subcategory", - - " ElectricEquipment,", - " Main Zone ElecEq 1, !- Name", - " Main Zone, !- Zone or ZoneList Name", - " EQUIP-1, !- Schedule Name", - " EquipmentLevel, !- Design Level Calculation Method", - " 19760, !- Design Level {W}", - " , !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.5, !- Fraction Latent", - " 0.3, !- Fraction Radiant", - " 0; !- Fraction Lost", - - " ZoneInfiltration:DesignFlowRate,", - " Main Zone Infil 1, !- Name", - " Main Zone, !- Zone or ZoneList Name", - " INFIL-SCH, !- Schedule Name", - " flow/zone, !- Design Flow Rate Calculation Method", - " 0.031089, !- Design Flow Rate {m3/s}", - " , !- Flow per Zone Floor Area {m3/s-m2}", - " , !- Flow per Exterior Surface Area {m3/s-m2}", - " , !- Air Changes per Hour {1/hr}", - " 0, !- Constant Term Coefficient", - " 0, !- Temperature Term Coefficient", - " 0.2237, !- Velocity Term Coefficient", - " 0; !- Velocity Squared Term Coefficient", - - " Sizing:Zone,", - " Main Zone, !- Zone or ZoneList Name", - " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", - " 14., !- Zone Cooling Design Supply Air Temperature {C}", - " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", - " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", - " 50., !- Zone Heating Design Supply Air Temperature {C}", - " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", - " 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " SZ DSOA Main Zone, !- Design Specification Outdoor Air Object Name", - " 0.0, !- Zone Heating Sizing Factor", - " 0.0, !- Zone Cooling Sizing Factor", - " DesignDayWithLimit, !- Cooling Design Air Flow Method", - " , !- Cooling Design Air Flow Rate {m3/s}", - " , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", - " , !- Cooling Minimum Air Flow {m3/s}", - " , !- Cooling Minimum Air Flow Fraction", - " DesignDay, !- Heating Design Air Flow Method", - " , !- Heating Design Air Flow Rate {m3/s}", - " , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", - " , !- Heating Maximum Air Flow {m3/s}", - " ; !- Heating Maximum Air Flow Fraction", - - " DesignSpecification:OutdoorAir,", - " SZ DSOA Main Zone, !- Name", - " sum, !- Outdoor Air Method", - " 0.00236, !- Outdoor Air Flow per Person {m3/s-person}", - " 0.000305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}", - " 0.0; !- Outdoor Air Flow per Zone {m3/s}", - - " Sizing:System,", - " Desiccant DXSystem, !- AirLoop Name", - " sensible, !- Type of Load to Size On", - " autosize, !- Design Outdoor Air Flow Rate {m3/s}", - " 0.3, !- Central Heating Maximum System Air Flow Ratio", - " 4.5, !- Preheat Design Temperature {C}", - " 0.008, !- Preheat Design Humidity Ratio {kgWater/kgDryAir}", - " 11.0, !- Precool Design Temperature {C}", - " 0.008, !- Precool Design Humidity Ratio {kgWater/kgDryAir}", - " 12.8, !- Central Cooling Design Supply Air Temperature {C}", - " 16.7, !- Central Heating Design Supply Air Temperature {C}", - " noncoincident, !- Type of Zone Sum to Use", - " no, !- 100% Outdoor Air in Cooling", - " no, !- 100% Outdoor Air in Heating", - " 0.008, !- Central Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " 0.008, !- Central Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " DesignDay, !- Cooling Design Air Flow Method", - " 0, !- Cooling Design Air Flow Rate {m3/s}", - " , !- Supply Air Flow Rate Per Floor Area During Cooling Operation {m3/s-m2}", - " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", - " , !- Design Supply Air Flow Rate Per Unit Cooling Capacity {m3/s-W}", - " DesignDay, !- Heating Design Air Flow Method", - " 0, !- Heating Design Air Flow Rate {m3/s}", - " , !- Supply Air Flow Rate Per Floor Area During Heating Operation {m3/s-m2}", - " , !- Fraction of Autosized Design Heating Supply Air Flow Rate", - " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", - " , !- Design Supply Air Flow Rate Per Unit Heating Capacity {m3/s-W}", - " , !- System Outdoor Air Method", - " 1.0, !- Zone Maximum Outdoor Air Fraction {dimensionless}", - " CoolingDesignCapacity, !- Cooling Design Capacity Method", - " autosize, !- Cooling Design Capacity {W}", - " , !- Cooling Design Capacity Per Floor Area {W/m2}", - " , !- Fraction of Autosized Cooling Design Capacity", - " HeatingDesignCapacity, !- Heating Design Capacity Method", - " autosize, !- Heating Design Capacity {W}", - " , !- Heating Design Capacity Per Floor Area {W/m2}", - " , !- Fraction of Autosized Heating Design Capacity", - " VAV; !- Central Cooling Capacity Control Method", - - " Curve:Biquadratic,", - " HPACCoolCapFT, !- Name", - " 0.942587793, !- Coefficient1 Constant", - " 0.009543347, !- Coefficient2 x", - " 0.00068377, !- Coefficient3 x**2", - " -0.011042676, !- Coefficient4 y", - " 0.000005249, !- Coefficient5 y**2", - " -0.00000972, !- Coefficient6 x*y", - " -100, !- Minimum Value of x", - " 100, !- Maximum Value of x", - " -100, !- Minimum Value of y", - " 100, !- Maximum Value of y", - " , !- Minimum Curve Output", - " , !- Maximum Curve Output", - " Temperature, !- Input Unit Type for X", - " Temperature, !- Input Unit Type for Y", - " Dimensionless; !- Output Unit Type", - - " Curve:Biquadratic,", - " HPACCOOLEIRFT, !- Name", - " 0.342414409, !- Coefficient1 Constant", - " 0.034885008, !- Coefficient2 x", - " -0.0006237, !- Coefficient3 x**2", - " 0.004977216, !- Coefficient4 y", - " 0.000437951, !- Coefficient5 y**2", - " -0.000728028, !- Coefficient6 x*y", - " -100, !- Minimum Value of x", - " 100, !- Maximum Value of x", - " -100, !- Minimum Value of y", - " 100, !- Maximum Value of y", - " , !- Minimum Curve Output", - " , !- Maximum Curve Output", - " Temperature, !- Input Unit Type for X", - " Temperature, !- Input Unit Type for Y", - " Dimensionless; !- Output Unit Type", - - " Curve:Quadratic,", - " HPACCoolCapFFF, !- Name", - " 0.8, !- Coefficient1 Constant", - " 0.2, !- Coefficient2 x", - " 0.0, !- Coefficient3 x**2", - " 0.0, !- Minimum Value of x", - " 1.0; !- Maximum Value of x", - - " Curve:Quadratic,", - " HPACCOOLEIRFFF, !- Name", - " 1.1552, !- Coefficient1 Constant", - " -0.1808, !- Coefficient2 x", - " 0.0256, !- Coefficient3 x**2", - " 0.0, !- Minimum Value of x", - " 1.0; !- Maximum Value of x", - - " Curve:Quadratic,", - " HPACCOOLPLFFPLR, !- Name", - " 0.75, !- Coefficient1 Constant", - " 0.25, !- Coefficient2 x", - " 0.0, !- Coefficient3 x**2", - " 0.0, !- Minimum Value of x", - " 1.0; !- Maximum Value of x", - - " Curve:Cubic,", - " PackagedRatedCoolCapFFlow, !- Name", - " 0.47278589, !- Coefficient1 Constant", - " 1.2433415, !- Coefficient2 x", - " -1.0387055, !- Coefficient3 x**2", - " 0.32257813, !- Coefficient4 x**3", - " 0.5, !- Minimum Value of x", - " 1.5, !- Maximum Value of x", - " , !- Minimum Curve Output", - " , !- Maximum Curve Output", - " Dimensionless, !- Input Unit Type for X", - " Dimensionless; !- Output Unit Type", - - " Curve:Cubic,", - " PackagedRatedCoolEIRFFlow, !- Name", - " 1.0079484, !- Coefficient1 Constant", - " 0.34544129, !- Coefficient2 x", - " -.6922891, !- Coefficient3 x**2", - " 0.33889943, !- Coefficient4 x**3", - " 0.5, !- Minimum Value of x", - " 1.5, !- Maximum Value of x", - " , !- Minimum Curve Output", - " , !- Maximum Curve Output", - " Dimensionless, !- Input Unit Type for X", - " Dimensionless; !- Output Unit Type", - - " Curve:Cubic,", - " EXHAUSTFANPLF, !- Name", - " 0, !- Coefficient1 Constant", - " 1, !- Coefficient2 x", - " 0.0, !- Coefficient3 x**2", - " 0.0, !- Coefficient4 x**3", - " 0.0, !- Minimum Value of x", - " 1.0; !- Maximum Value of x", - - " NodeList,", - " Main Zone In Nodes, !- Name", - " Main Zone In Node; !- Node 1 Name", - - " NodeList,", - " Desiccant DX Air Loop Setpoint Nodes, !- Name", - " HX Process Outlet Node, !- Node 1 Name", - " Desiccant DXSystem Mixed Air Node; !- Node 2 Name", - - " NodeList,", - " Regen Setpoint Nodes, !- Name", - " HX Regen Inlet Node; !- Node 1 Name", - - " BranchList,", - " Desiccant Air Loop Branches, !- Name", - " Desiccant Air Loop Main Branch; !- Branch 1 Name", - - " Branch,", - " Desiccant Air Loop Main Branch, !- Name", - " , !- Pressure Drop Curve Name", - " AirLoopHVAC:OutdoorAirSystem, !- Component 1 Object Type", - " Desiccant DXSystem OA System, !- Component 1 Name", - " Desiccant DXSystem Air Loop Inlet Node, !- Component 1 Inlet Node Name", - " Desiccant DXSystem Mixed Air Node, !- Component 1 Outlet Node Name", - " CoilSystem:Cooling:DX, !- Component 2 Object Type", - " Desiccant DXSystem Cooling Coil Sys, !- Component 2 Name", - " Desiccant DXSystem Mixed Air Node, !- Component 2 Inlet Node Name", - " HX Process Inlet Node, !- Component 2 Outlet Node Name", - " Dehumidifier:Desiccant:System, !- Component 3 Object Type", - " Desiccant 1, !- Component 3 Name", - " HX Process Inlet Node, !- Component 3 Inlet Node Name", - " HX Process Outlet Node, !- Component 3 Outlet Node Name", - " Fan:ConstantVolume, !- Component 4 Object Type", - " Desiccant DXSystem Supply Fan, !- Component 4 Name", - " HX Process Outlet Node, !- Component 4 Inlet Node Name", - " Desiccant Supply Fan Outlet Node, !- Component 4 Outlet Node Name", - " Coil:Heating:Fuel, !- Component 5 Object Type", - " Desiccant Process Heating Coil, !- Component 5 Name", - " Desiccant Supply Fan Outlet Node, !- Component 5 Inlet Node Name", - " Desiccant DXSystem Air Loop Outlet Node; !- Component 5 Outlet Node Name", - - " AirLoopHVAC,", - " Desiccant DXSystem, !- Name", - " , !- Controller List Name", - " Desiccant Avail List, !- Availability Manager List Name", - " autosize, !- Design Supply Air Flow Rate {m3/s}", - " Desiccant Air Loop Branches, !- Branch List Name", - " , !- Connector List Name", - " Desiccant DXSystem Air Loop Inlet Node, !- Supply Side Inlet Node Name", - " Desiccant DXSystem Return Air Mixer Outlet Node, !- Demand Side Outlet Node Name", - " Desiccant DXSystem Zone Equipment Inlet Node, !- Demand Side Inlet Node Names", - " Desiccant DXSystem Air Loop Outlet Node; !- Supply Side Outlet Node Names", - - " AirLoopHVAC:ControllerList,", - " Desiccant DXSystem OA System Controllers, !- Name", - " Controller:OutdoorAir, !- Controller 1 Object Type", - " Desiccant OA Controller; !- Controller 1 Name", - - " AirLoopHVAC:OutdoorAirSystem:EquipmentList,", - " Desiccant DXSystem OA System Equipment, !- Name", - " OutdoorAir:Mixer, !- Component 1 Object Type", - " Desiccant DXSystem OA Mixing Box; !- Component 1 Name", - - " AirLoopHVAC:OutdoorAirSystem,", - " Desiccant DXSystem OA System, !- Name", - " Desiccant DXSystem OA System Controllers, !- Controller List Name", - " Desiccant DXSystem OA System Equipment, !- Outdoor Air Equipment List Name", - " Desiccant Outdoor Air Avail List; !- Availability Manager List Name", - - " OutdoorAir:NodeList,", - " OutsideAirInletNodes; !- Node or NodeList Name 1", - - " OutdoorAir:NodeList,", - " Desiccant DXSystem Outside Air Inlet Node, !- Node or NodeList Name 1", - " Desiccant Outside Air Inlet Node 2; !- Node or NodeList Name 2", - - " OutdoorAir:NodeList,", - " Regen Coil Inlet Node; !- Node or NodeList Name 1", - - " OutdoorAir:NodeList,", - " Condenser Inlet Node; !- Node or NodeList Name 1", - - " OutdoorAir:Mixer,", - " Desiccant DXSystem OA Mixing Box, !- Name", - " Desiccant DXSystem Mixed Air Node, !- Mixed Air Node Name", - " Desiccant DXSystem Outside Air Inlet Node, !- Outdoor Air Stream Node Name", - " Desiccant DXSystem Relief Air Outlet Node, !- Relief Air Stream Node Name", - " Desiccant DXSystem Air Loop Inlet Node; !- Return Air Stream Node Name", - - " AvailabilityManagerAssignmentList,", - " Desiccant Avail List, !- Name", - " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", - " Desiccant DXSystem Avail;!- Availability Manager 1 Name", - - " AvailabilityManagerAssignmentList,", - " Desiccant Outdoor Air Avail List, !- Name", - " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", - " Desiccant Outdoor Air Avail; !- Availability Manager 1 Name", - - " AvailabilityManager:Scheduled,", - " Desiccant DXSystem Avail,!- Name", - " FanAvailSched; !- Schedule Name", - - " AvailabilityManager:Scheduled,", - " Desiccant Outdoor Air Avail, !- Name", - " FanAvailSched; !- Schedule Name", - - " SetpointManager:SingleZone:Heating,", - " Heating Supply Air Temp Manager, !- Name", - " Temperature, !- Control Variable", - " -99., !- Minimum Supply Air Temperature {C}", - " 99., !- Maximum Supply Air Temperature {C}", - " Main Zone, !- Control Zone Name", - " Main Zone Node, !- Zone Node Name", - " Main Zone In Node, !- Zone Inlet Node Name", - " Desiccant DXSystem Air Loop Outlet Node; !- Setpoint Node or NodeList Name", - - " SetpointManager:SingleZone:Cooling,", - " Cooling Supply Air Temp Manager, !- Name", - " Temperature, !- Control Variable", - " -99., !- Minimum Supply Air Temperature {C}", - " 99., !- Maximum Supply Air Temperature {C}", - " Main Zone, !- Control Zone Name", - " Main Zone Node, !- Zone Node Name", - " Main Zone In Node, !- Zone Inlet Node Name", - " Desiccant Supply Fan Outlet Node; !- Setpoint Node or NodeList Name", - - " SetpointManager:SingleZone:Humidity:Maximum,", - " Zone Max Humidity Manager, !- Name", - " HX Process Outlet Node, !- Setpoint Node or NodeList Name", - " Main Zone Node; !- Control Zone Air Node Name", - - " SetpointManager:MixedAir,", - " Adjusted Cooling Supply Air Temp Manager, !- Name", - " Temperature, !- Control Variable", - " Desiccant Supply Fan Outlet Node, !- Reference Setpoint Node Name", - " HX Process Outlet Node, !- Fan Inlet Node Name", - " Desiccant Supply Fan Outlet Node, !- Fan Outlet Node Name", - " HX Process Outlet Node; !- Setpoint Node or NodeList Name", - - " Controller:OutdoorAir,", - " Desiccant OA Controller, !- Name", - " Desiccant DXSystem Relief Air Outlet Node, !- Relief Air Outlet Node Name", - " Desiccant DXSystem Air Loop Inlet Node, !- Return Air Node Name", - " Desiccant DXSystem Mixed Air Node, !- Mixed Air Node Name", - " Desiccant DXSystem Outside Air Inlet Node, !- Actuator Node Name", - " autosize, !- Minimum Outdoor Air Flow Rate {m3/s}", - " autosize, !- Maximum Outdoor Air Flow Rate {m3/s}", - " NoEconomizer, !- Economizer Control Type", - " ModulateFlow, !- Economizer Control Action Type", - " 100., !- Economizer Maximum Limit Dry-Bulb Temperature {C}", - " , !- Economizer Maximum Limit Enthalpy {J/kg}", - " , !- Economizer Maximum Limit Dewpoint Temperature {C}", - " , !- Electronic Enthalpy Limit Curve Name", - " , !- Economizer Minimum Limit Dry-Bulb Temperature {C}", - " NoLockout, !- Lockout Type", - " FixedMinimum, !- Minimum Limit Type", - " Min OA Sched, !- Minimum Outdoor Air Schedule Name", - " , !- Minimum Fraction of Outdoor Air Schedule Name", - " , !- Maximum Fraction of Outdoor Air Schedule Name", - " 0; !- Mechanical Ventilation Controller Name", - - " ZoneHVAC:EquipmentConnections,", - " Main Zone, !- Zone Name", - " Main Zone Eq, !- Zone Conditioning Equipment List Name", - " Main Zone In Nodes, !- Zone Air Inlet Node or NodeList Name", - " , !- Zone Air Exhaust Node or NodeList Name", - " Main Zone Node, !- Zone Air Node Name", - " Main Zone Out Node; !- Zone Return Air Node Name", - - " ZoneHVAC:EquipmentList,", - " Main Zone Eq, !- Name", - " SequentialLoad, !- Load Distribution Scheme", - " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", - " Main Zone Direct Air ADU, !- Zone Equipment 1 Name", - " 1, !- Zone Equipment 1 Cooling Sequence", - " 1; !- Zone Equipment 1 Heating or No-Load Sequence", - - " ZoneHVAC:AirDistributionUnit,", - " Main Zone Direct Air ADU, !- Name", - " Main Zone In Node, !- Air Distribution Unit Outlet Node Name", - " AirTerminal:SingleDuct:ConstantVolume:NoReheat, !- Air Terminal Object Type", - " Main Zone Direct Air; !- Air Terminal Name", - - " AirTerminal:SingleDuct:ConstantVolume:NoReheat,", - " Main Zone Direct Air, !- Name", - " Constant, !- Availability Schedule Name", - " Main Zone In Node 2AT, !- Air Inlet Node Name", - " Main Zone In Node, !- Air Outlet Node Name", - " autosize; !- Maximum Air Flow Rate {m3/s}", - - " CoilSystem:Cooling:DX,", - " Desiccant DXSystem Cooling Coil Sys, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " Desiccant DXSystem Mixed Air Node, !- DX Cooling Coil System Inlet Node Name", - " HX Process Inlet Node, !- DX Cooling Coil System Outlet Node Name", - " HX Process Outlet Node, !- DX Cooling Coil System Sensor Node Name", - " Coil:Cooling:DX:SingleSpeed, !- Cooling Coil Object Type", - " Desiccant DXSystem Cooling Coil; !- Cooling Coil Name", - - " ZoneControl:Thermostat,", - " Main Zone Control, !- Name", - " Main Zone, !- Zone or ZoneList Name", - " Desiccant Control Type Sched, !- Control Type Schedule Name", - " ThermostatSetpoint:DualSetpoint, !- Control 1 Object Type", - " DualSetPoint; !- Control 1 Name", - - " ZoneControl:Humidistat,", - " Main Zone Humidistat, !- Name", - " Main Zone, !- Zone Name", - " Relative Humidity Sched; !- Humidifying Relative Humidity Setpoint Schedule Name", - - " Schedule:Compact,", - " Relative Humidity Sched, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,45.0; !- Field 3", - - " ThermostatSetpoint:SingleHeating,", - " HeatingSetpoint, !- Name", - " Htg-SetP-Sch; !- Setpoint Temperature Schedule Name", - - " ThermostatSetpoint:SingleHeating,", - " PlenumHeatingSetpoint, !- Name", - " PlenumHtg-SetP-Sch; !- Setpoint Temperature Schedule Name", - - " ThermostatSetpoint:SingleCooling,", - " CoolingSetpoint, !- Name", - " Clg-SetP-Sch; !- Setpoint Temperature Schedule Name", - - " ThermostatSetpoint:SingleCooling,", - " PlenumCoolingSetpoint, !- Name", - " PlenumClg-SetP-Sch; !- Setpoint Temperature Schedule Name", - - " ThermostatSetpoint:DualSetpoint,", - " DualSetPoint, !- Name", - " Htg-SetP-Sch, !- Heating Setpoint Temperature Schedule Name", - " Clg-SetP-Sch; !- Cooling Setpoint Temperature Schedule Name", - - " AirLoopHVAC:SupplyPath,", - " Desiccant DXSystem Supply Path, !- Name", - " Desiccant DXSystem Zone Equipment Inlet Node, !- Supply Air Path Inlet Node Name", - " AirLoopHVAC:ZoneSplitter,!- Component 1 Object Type", - " Desiccant DXSystem Zone Supply Air Splitter; !- Component 1 Name", - - " AirLoopHVAC:ReturnPath,", - " Desiccant DXSystem Return Path, !- Name", - " Desiccant DXSystem Return Air Mixer Outlet Node, !- Return Air Path Outlet Node Name", - " AirLoopHVAC:ZoneMixer, !- Component 1 Object Type", - " Desiccant DXSystem Zone Return Air Mixer; !- Component 1 Name", - - " AirLoopHVAC:ZoneSplitter,", - " Desiccant DXSystem Zone Supply Air Splitter, !- Name", - " Desiccant DXSystem Zone Equipment Inlet Node, !- Inlet Node Name", - " Main Zone In Node 2AT; !- Outlet 1 Node Name", - - " AirLoopHVAC:ZoneMixer,", - " Desiccant DXSystem Zone Return Air Mixer, !- Name", - " Desiccant DXSystem Return Air Mixer Outlet Node, !- Outlet Node Name", - " Main Zone Out Node; !- Inlet 1 Node Name", - - " Coil:Heating:Fuel,", - " Desiccant Process Heating Coil, !- Name", - " Constant, !- Availability Schedule Name", - " Gas, !- Fuel Type", - " 0.8, !- Gas Burner Efficiency", - " autosize, !- Nominal Capacity {W}", - " Desiccant Supply Fan Outlet Node, !- Air Inlet Node Name", - " Desiccant DXSystem Air Loop Outlet Node, !- Air Outlet Node Name", - " Desiccant DXSystem Air Loop Outlet Node; !- Temperature Setpoint Node Name", - - " Coil:Cooling:DX:SingleSpeed,", - " Desiccant DXSystem Cooling Coil, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " autosize, !- High Speed Rated Air Flow Rate {m3/s}", - " autosize, !- Gross Rated Sensible Heat Ratio", - " 3.5, !- Gross Rated Cooling COP {W/W}", - " autosize, !- High Speed Rated Air Flow Rate {m3/s}", - " , !- Rated Evaporator Fan Power Per Volume Flow Rate {W/(m3/s)}", - " Desiccant DXSystem Mixed Air Node, !- Air Inlet Node Name", - " HX Process Inlet Node, !- Air Outlet Node Name", - " HPACCoolCapFT, !- Total Cooling Capacity Function of Temperature Curve Name", - " HPACCoolCapFFF, !- Total Cooling Capacity Function of Flow Fraction Curve Name", - " HPACCOOLEIRFT, !- Energy Input Ratio Function of Temperature Curve Name", - " HPACCOOLEIRFFF, !- Energy Input Ratio Function of Flow Fraction Curve Name", - " HPACCOOLPLFFPLR, !- Part Load Fraction Correlation Curve Name", - " , !- Minimum Outdoor Dry-Bulb Temperature for Compressor Operation {C}", - " 1000, !- Nominal Time for Condensate Removal to Begin {s}", - " 0.4, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}", - " 4, !- Maximum Cycling Rate {cycles/hr}", - " 45, !- Latent Capacity Time Constant {s}", - " Condenser Inlet Node, !- Condenser Air Inlet Node Name", - " AirCooled; !- Condenser Type", - - " Fan:ConstantVolume,", - " Desiccant DXSystem Supply Fan, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " 0.7, !- Fan Total Efficiency", - " 571.66, !- Pressure Rise {Pa}", - " autosize, !- Maximum Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1.0, !- Motor In Airstream Fraction", - " HX Process Outlet Node, !- Air Inlet Node Name", - " Desiccant Supply Fan Outlet Node; !- Air Outlet Node Name", - - " Fan:ConstantVolume,", - " Desiccant Regen Fan, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " 0.7, !- Fan Total Efficiency", - " 205.5, !- Pressure Rise {Pa}", - " autosize, !- Maximum Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1.0, !- Motor In Airstream Fraction", - " HX Regen Outlet Node, !- Air Inlet Node Name", - " Regen Fan Outlet Node; !- Air Outlet Node Name", - - " Dehumidifier:Desiccant:System,", - " Desiccant 1, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " HeatExchanger:Desiccant:BalancedFlow, !- Desiccant Heat Exchanger Object Type", - " Desiccant Heat Exchanger 1, !- Desiccant Heat Exchanger Name", - " HX Process Outlet Node, !- Sensor Node Name", - " Fan:ConstantVolume, !- Regeneration Air Fan Object Type", - " Desiccant Regen Fan, !- Regeneration Air Fan Name", - " DrawThrough, !- Regeneration Air Fan Placement", - " Coil:Heating:Water, !- Regeneration Air Heater Object Type", - " Desiccant Regen Coil, !- Regeneration Air Heater Name", - " 46.111111, !- Regeneration Inlet Air Setpoint Temperature {C}", - " Coil:Cooling:DX:SingleSpeed, !- Companion Cooling Coil Object Type", - " Desiccant DXSystem Cooling Coil, !- Companion Cooling Coil Name", - " Yes, !- Companion Cooling Coil Upstream of Dehumidifier Process Inlet", - " Yes, !- Companion Coil Regeneration Air Heating", - " 0.87931, !- Exhaust Fan Maximum Flow Rate {m3/s}", - " 50, !- Exhaust Fan Maximum Power {W}", - " EXHAUSTFANPLF; !- Exhaust Fan Power Curve Name", - - " HeatExchanger:Desiccant:BalancedFlow,", - " Desiccant Heat Exchanger 1, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " HX Regen Inlet Node, !- Regeneration Air Inlet Node Name", - " HX Regen Outlet Node, !- Regeneration Air Outlet Node Name", - " HX Process Inlet Node, !- Process Air Inlet Node Name", - " HX Process Outlet Node, !- Process Air Outlet Node Name", - " HeatExchanger:Desiccant:BalancedFlow:PerformanceDataType1, !- Heat Exchanger Performance Object Type", - " HXDesPerf1; !- Heat Exchanger Performance Name", - - " HeatExchanger:Desiccant:BalancedFlow:PerformanceDataType1,", - " HXDesPerf1, !- Name", - " 0.87931, !- Nominal Air Flow Rate {m3/s}", - " 3.25, !- Nominal Air Face Velocity {m/s}", - " 50.0, !- Nominal Electric Power {W}", - " -2.53636E+00, !- Temperature Equation Coefficient 1", - " 2.13247E+01, !- Temperature Equation Coefficient 2", - " 9.23308E-01, !- Temperature Equation Coefficient 3", - " 9.43276E+02, !- Temperature Equation Coefficient 4", - " -5.92367E+01, !- Temperature Equation Coefficient 5", - " -4.27465E-02, !- Temperature Equation Coefficient 6", - " 1.12204E+02, !- Temperature Equation Coefficient 7", - " 7.78252E-01, !- Temperature Equation Coefficient 8", - " 0.007143, !- Minimum Regeneration Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", - " 0.024286, !- Maximum Regeneration Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", - " 46.111110, !- Minimum Regeneration Inlet Air Temperature for Temperature Equation {C}", - " 46.111112, !- Maximum Regeneration Inlet Air Temperature for Temperature Equation {C}", - " 0.005000, !- Minimum Process Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", - " 0.015714, !- Maximum Process Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", - " 4.583333, !- Minimum Process Inlet Air Temperature for Temperature Equation {C}", - " 21.83333, !- Maximum Process Inlet Air Temperature for Temperature Equation {C}", - " 2.286, !- Minimum Regeneration Air Velocity for Temperature Equation {m/s}", - " 4.826, !- Maximum Regeneration Air Velocity for Temperature Equation {m/s}", - " 35.0, !- Minimum Regeneration Outlet Air Temperature for Temperature Equation {C}", - " 50.0, !- Maximum Regeneration Outlet Air Temperature for Temperature Equation {C}", - " 5.0, !- Minimum Regeneration Inlet Air Relative Humidity for Temperature Equation {percent}", - " 45.0, !- Maximum Regeneration Inlet Air Relative Humidity for Temperature Equation {percent}", - " 80.0, !- Minimum Process Inlet Air Relative Humidity for Temperature Equation {percent}", - " 100.0, !- Maximum Process Inlet Air Relative Humidity for Temperature Equation {percent}", - " -2.25547E+01, !- Humidity Ratio Equation Coefficient 1", - " 9.76839E-01, !- Humidity Ratio Equation Coefficient 2", - " 4.89176E-01, !- Humidity Ratio Equation Coefficient 3", - " -6.30019E-02, !- Humidity Ratio Equation Coefficient 4", - " 1.20773E-02, !- Humidity Ratio Equation Coefficient 5", - " 5.17134E-05, !- Humidity Ratio Equation Coefficient 6", - " 4.94917E-02, !- Humidity Ratio Equation Coefficient 7", - " -2.59417E-04, !- Humidity Ratio Equation Coefficient 8", - " 0.007143, !- Minimum Regeneration Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " 0.024286, !- Maximum Regeneration Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " 46.111110, !- Minimum Regeneration Inlet Air Temperature for Humidity Ratio Equation {C}", - " 46.111112, !- Maximum Regeneration Inlet Air Temperature for Humidity Ratio Equation {C}", - " 0.005000, !- Minimum Process Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " 0.015714, !- Maximum Process Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " 4.583333, !- Minimum Process Inlet Air Temperature for Humidity Ratio Equation {C}", - " 21.83333, !- Maximum Process Inlet Air Temperature for Humidity Ratio Equation {C}", - " 2.286, !- Minimum Regeneration Air Velocity for Humidity Ratio Equation {m/s}", - " 4.826, !- Maximum Regeneration Air Velocity for Humidity Ratio Equation {m/s}", - " 0.007914, !- Minimum Regeneration Outlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " 0.026279, !- Maximum Regeneration Outlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " 5.0, !- Minimum Regeneration Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", - " 45.0, !- Maximum Regeneration Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", - " 80.0, !- Minimum Process Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", - " 100.0; !- Maximum Process Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", - - " Sizing:Plant,", - " Hot Water Loop, !- Plant or Condenser Loop Name", - " Heating, !- Loop Type", - " 82.2222222222222, !- Design Loop Exit Temperature {C}", - " 22.2222222222222; !- Loop Design Temperature Difference {deltaC}", - - " PlantLoop,", - " Hot Water Loop, !- Name", - " Water, !- Fluid Type", - " , !- User Defined Fluid Type", - " Hot Loop Operation, !- Plant Equipment Operation Scheme Name", - " HW Supply Outlet Node, !- Loop Temperature Setpoint Node Name", - " 100, !- Maximum Loop Temperature {C}", - " 10, !- Minimum Loop Temperature {C}", - " Autosize, !- Maximum Loop Flow Rate {m3/s}", - " 0.0, !- Minimum Loop Flow Rate {m3/s}", - " autocalculate, !- Plant Loop Volume {m3}", - " HW Supply Inlet Node, !- Plant Side Inlet Node Name", - " HW Supply Outlet Node, !- Plant Side Outlet Node Name", - " Heating Supply Side Branches, !- Plant Side Branch List Name", - " Heating Supply Side Connectors, !- Plant Side Connector List Name", - " HW Demand Inlet Node, !- Demand Side Inlet Node Name", - " HW Demand Outlet Node, !- Demand Side Outlet Node Name", - " Heating Demand Side Branches, !- Demand Side Branch List Name", - " Heating Demand Side Connectors, !- Demand Side Connector List Name", - " Optimal, !- Load Distribution Scheme", - " , !- Availability Manager List Name", - " , !- Plant Loop Demand Calculation Scheme", - " , !- Common Pipe Simulation", - " , !- Pressure Simulation Type", - " 2.0; !- Loop Circulation Time {minutes}", - - " SetpointManager:Scheduled,", - " Hot Water Loop Setpoint Manager, !- Name", - " Temperature, !- Control Variable", - " HW Loop Temp Schedule, !- Schedule Name", - " Hot Water Loop Setpoint Node List; !- Setpoint Node or NodeList Name", - - " NodeList,", - " Hot Water Loop Setpoint Node List, !- Name", - " HW Supply Outlet Node; !- Node 1 Name", - - " Schedule:Compact,", - " HW LOOP TEMP SCHEDULE, !- Name", - " TEMPERATURE, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Alldays, !- Field 2", - " Until: 24:00,82.00; !- Field 3", - - " BranchList,", - " Heating Supply Side Branches, !- Name", - " Heating Supply Inlet Branch, !- Branch 1 Name", - " Heating Purchased Hot Water Branch, !- Branch 2 Name", - " Heating Supply Bypass Branch, !- Branch 3 Name", - " Heating Supply Outlet Branch; !- Branch 4 Name", - - " ConnectorList,", - " Heating Supply Side Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " Heating Supply Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " Heating Supply Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " Heating Supply Splitter, !- Name", - " Heating Supply Inlet Branch, !- Inlet Branch Name", - " Heating Purchased Hot Water Branch, !- Outlet Branch 1 Name", - " Heating Supply Bypass Branch; !- Outlet Branch 2 Name", - - " Connector:Mixer,", - " Heating Supply Mixer, !- Name", - " Heating Supply Outlet Branch, !- Outlet Branch Name", - " Heating Purchased Hot Water Branch, !- Inlet Branch 1 Name", - " Heating Supply Bypass Branch; !- Inlet Branch 2 Name", - - " Branch,", - " Heating Supply Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pump:VariableSpeed, !- Component 1 Object Type", - " HW Circ Pump, !- Component 1 Name", - " HW Supply Inlet Node, !- Component 1 Inlet Node Name", - " HW Pump Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " Heating Purchased Hot Water Branch, !- Name", - " , !- Pressure Drop Curve Name", - " DistrictHeating, !- Component 1 Object Type", - " Purchased Heating, !- Component 1 Name", - " Purchased Heat Inlet Node, !- Component 1 Inlet Node Name", - " Purchased Heat Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " Heating Supply Bypass Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " Heating Supply Side Bypass, !- Component 1 Name", - " Heating Supply Bypass Inlet Node, !- Component 1 Inlet Node Name", - " Heating Supply Bypass Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " Heating Supply Side Bypass, !- Name", - " Heating Supply Bypass Inlet Node, !- Inlet Node Name", - " Heating Supply Bypass Outlet Node; !- Outlet Node Name", - - " Branch,", - " Heating Supply Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " Heating Supply Outlet, !- Component 1 Name", - " Heating Supply Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", - " HW Supply Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " Heating Supply Outlet, !- Name", - " Heating Supply Exit Pipe Inlet Node, !- Inlet Node Name", - " HW Supply Outlet Node; !- Outlet Node Name", - - " Pump:VariableSpeed,", - " HW Circ Pump, !- Name", - " HW Supply Inlet Node, !- Inlet Node Name", - " HW Pump Outlet Node, !- Outlet Node Name", - " autosize, !- Rated Flow Rate {m3/s}", - " 179352, !- Rated Pump Head {Pa}", - " autosize, !- Rated Power Consumption {W}", - " 0.9, !- Motor Efficiency", - " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", - " 0, !- Coefficient 1 of the Part Load Performance Curve", - " 1, !- Coefficient 2 of the Part Load Performance Curve", - " 0, !- Coefficient 3 of the Part Load Performance Curve", - " 0, !- Coefficient 4 of the Part Load Performance Curve", - " 0, !- Minimum Flow Rate {m3/s}", - " INTERMITTENT; !- Pump Control Type", - - " BranchList,", - " Heating Demand Side Branches, !- Name", - " ZonesHWInletBranch, !- Branch 1 Name", - " RegenCoilHWBranch, !- Branch 2 Name", - " ZonesHWBypassBranch, !- Branch 5 Name", - " ZonesHWOutletBranch; !- Branch 6 Name", - - " ConnectorList,", - " Heating Demand Side Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " Zones HW Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " Zones HW Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " Zones HW Splitter, !- Name", - " ZonesHWInletBranch, !- Inlet Branch Name", - " RegenCoilHWBranch, !- Outlet Branch 1 Name", - " ZonesHWBypassBranch; !- Outlet Branch 4 Name", - - " Connector:Mixer,", - " Zones HW Mixer, !- Name", - " ZonesHWOutletBranch, !- Outlet Branch Name", - " RegenCoilHWBranch, !- Inlet Branch 1 Name", - " ZonesHWBypassBranch; !- Inlet Branch 4 Name", - - " Branch,", - " ZonesHWInletBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " ZonesHWInletPipe, !- Component 1 Name", - " HW Demand Inlet Node, !- Component 1 Inlet Node Name", - " HW Demand Entrance Pipe Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " ZonesHWInletPipe, !- Name", - " HW Demand Inlet Node, !- Inlet Node Name", - " HW Demand Entrance Pipe Outlet Node; !- Outlet Node Name", - - " Branch,", - " ZonesHWOutletBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " ZonesHWOutletPipe, !- Component 1 Name", - " HW Demand Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", - " HW Demand Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " ZonesHWOutletPipe, !- Name", - " HW Demand Exit Pipe Inlet Node, !- Inlet Node Name", - " HW Demand Outlet Node; !- Outlet Node Name", - - " Branch,", - " RegenCoilHWBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Coil:Heating:Water, !- Component 1 Object Type", - " Desiccant Regen Coil, !- Component 1 Name", - " RegenCoilHWInletNode, !- Component 1 Inlet Node Name", - " RegenCoilHWOutletNode; !- Component 1 Outlet Node Name", - - " Coil:Heating:Water,", - " Desiccant Regen Coil, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " autosize, !- U-Factor Times Area Value {W/K}", - " autosize, !- Maximum Water Flow Rate {m3/s}", - " RegenCoilHWInletNode, !- Water Inlet Node Name", - " RegenCoilHWOutletNode, !- Water Outlet Node Name", - " Regen Coil Inlet Node, !- Air Inlet Node Name", - " HX Regen Inlet Node, !- Air Outlet Node Name", - " UFactorTimesAreaAndDesignWaterFlowRate, !- Performance Input Method", - " autosize, !- Rated Capacity {W}", - " 82.2, !- Rated Inlet Water Temperature {C}", - " 16.6, !- Rated Inlet Air Temperature {C}", - " 71.1, !- Rated Outlet Water Temperature {C}", - " 32.2, !- Rated Outlet Air Temperature {C}", - " ; !- Rated Ratio for Air and Water Convection", - - " Branch,", - " ZonesHWBypassBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " ZonesHWBypassPipe, !- Component 1 Name", - " ZonesHWBypassInletNode, !- Component 1 Inlet Node Name", - " ZonesHWBypassOutletNode; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " ZonesHWBypassPipe, !- Name", - " ZonesHWBypassInletNode, !- Inlet Node Name", - " ZonesHWBypassOutletNode; !- Outlet Node Name", - - " PlantEquipmentOperationSchemes,", - " Hot Loop Operation, !- Name", - " PlantEquipmentOperation:HeatingLoad, !- Control Scheme 1 Object Type", - " Purchased Heating Only, !- Control Scheme 1 Name", - " Constant; !- Control Scheme 1 Schedule Name", - - " PlantEquipmentOperation:HeatingLoad,", - " Purchased Heating Only, !- Name", - " 0, !- Load Range 1 Lower Limit {W}", - " 1000000, !- Load Range 1 Upper Limit {W}", - " heating plant; !- Range 1 Equipment List Name", - - " PlantEquipmentList,", - " heating plant, !- Name", - " DistrictHeating, !- Equipment 1 Object Type", - " Purchased Heating; !- Equipment 1 Name", - - " DistrictHeating,", - " Purchased Heating, !- Name", - " Purchased Heat Inlet Node, !- Hot Water Inlet Node Name", - " Purchased Heat Outlet Node, !- Hot Water Outlet Node Name", - " 1000000; !- Nominal Capacity {W}", - - } ); - - ASSERT_TRUE( process_idf( idf_objects ) ); - - OutputProcessor::TimeValue.allocate( 2 ); - DataGlobals::DDOnlySimulation = true; - - SimulationManager::GetProjectData(); - OutputReportPredefined::SetPredefinedTables(); - createFacilityElectricPowerServiceObject(); - SetPreConstructionInputParameters(); //establish array bounds for constructions early - BranchInputManager::ManageBranchInput(); - BeginSimFlag = true; - BeginEnvrnFlag = true; - ZoneSizingCalc = true; - SysSizingCalc = true; - SizingManager::ManageSizing(); - - DataSizing::CurSysNum = 1; - DataSizing::CurOASysNum = 0; - - GetDesiccantDehumidifierInput(); - EXPECT_EQ( 1, NumDesicDehums ); - EXPECT_EQ( 1, NumGenericDesicDehums ); - EXPECT_EQ( "DESICCANT 1", DesicDehum( DesicDehumNum ).Name ); - EXPECT_EQ( "DESICCANT REGEN COIL", DesicDehum( DesicDehumNum ).RegenCoilName ); - EXPECT_EQ( "COIL:HEATING:WATER", DesicDehum( DesicDehumNum ).RegenCoilType ); - - CompName = DesicDehum( DesicDehumNum ).Name; - CompIndex = NumGenericDesicDehums; - // set design parameters and calculate HW coil design capacity - RegCoilDesInletTemp = 8.5; - DataSizing::FinalSysSizing( DataSizing::CurSysNum ).HeatOutTemp = RegCoilDesInletTemp; - RegCoilDesOutletTemp = DesiccantDehumidifiers::DesicDehum( DesicDehumNum ).RegenSetPointTemp; - DataSizing::FinalSysSizing( DataSizing::CurSysNum ).DesMainVolFlow = 1.07; - RegCoilInletAirMassFlowRate = DataEnvironment::StdRhoAir * DataSizing::FinalSysSizing( DataSizing::CurSysNum ).DesMainVolFlow; - RegCoilCapacity = RegCoilInletAirMassFlowRate * PsyCpAirFnWTdb( 0.0, 20.0 ) * ( RegCoilDesOutletTemp - RegCoilDesInletTemp ); - - // simulate to determine HW coil design capacity - SimDesiccantDehumidifier( CompName, FirstHVACIteration, CompIndex ); - for ( loop = 1; loop <= NumWaterCoils; ++loop ) { + std::string CompName(""); + bool FirstHVACIteration(true); + int DesicDehumNum(1); + int CompIndex(1); + int CoilIndex(0); + int loop(0); + Real64 RegCoilDesInletTemp(0.0); + Real64 RegCoilDesOutletTemp(0.0); + Real64 RegCoilInletAirMassFlowRate(0.0); + Real64 RegCoilCapacity(0.0); + + std::string const idf_objects = delimited_string({ + + " Version,8.4;", + + " Timestep,6;", + + " Building,", + " Bldg, !- Name", + " 0.0, !- North Axis {deg}", + " Suburbs, !- Terrain", + " 0.05, !- Loads Convergence Tolerance Value", + " 0.05, !- Temperature Convergence Tolerance Value {deltaC}", + " MinimalShadowing, !- Solar Distribution", + " 30, !- Maximum Number of Warmup Days", + " 6; !- Minimum Number of Warmup Days", + + " SurfaceConvectionAlgorithm:Inside,Simple;", + + " SurfaceConvectionAlgorithm:Outside,SimpleCombined;", + + " HeatBalanceAlgorithm,ConductionTransferFunction;", + + " SimulationControl,", + " Yes, !- Do Zone Sizing Calculation", + " Yes, !- Do System Sizing Calculation", + " No, !- Do Plant Sizing Calculation", + " Yes, !- Run Simulation for Sizing Periods", + " No; !- Run Simulation for Weather File Run Periods", + + " RunPeriod,", + " , !- Name", + " 1, !- Begin Month", + " 1, !- Begin Day of Month", + " , !- Begin Year", + " 1, !- End Month", + " 5, !- End Day of Month", + " , !- End Year", + " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " Yes; !- Use Weather File Snow Indicators", + + " Site:Location,", + " Miami Intl Ap FL USA WMO=722020, !- Name", + " 25.82, !- Latitude {deg}", + " -80.30, !- Longitude {deg}", + " -5.00, !- Time Zone {hr}", + " 11.00; !- Elevation {m}", + + " SizingPeriod:DesignDay,", + " Miami Intl Ap Ann Htg 99.6% Condns DB, !- Name", + " 1, !- Month", + " 21, !- Day of Month", + " WinterDesignDay, !- Day Type", + " 8.7, !- Maximum Dry-Bulb Temperature {C}", + " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " 8.7, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 101217., !- Barometric Pressure {Pa}", + " 3.8, !- Wind Speed {m/s}", + " 340, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 0.00; !- Sky Clearness", + + " SizingPeriod:DesignDay,", + " Miami Intl Ap Ann Clg .4% Condns DB=>MWB, !- Name", + " 7, !- Month", + " 21, !- Day of Month", + " SummerDesignDay, !- Day Type", + " 33.2, !- Maximum Dry-Bulb Temperature {C}", + " 6.7, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " 25.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 101217., !- Barometric Pressure {Pa}", + " 4.5, !- Wind Speed {m/s}", + " 140, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 1.00; !- Sky Clearness", + + " Site:GroundTemperature:BuildingSurface,21.0,21.5,22.0,22.2,22.2,22.2,22.2,22.2,22.2,22.0,21.5,21.0;", + + " Material:NoMass,", + " R13LAYER, !- Name", + " Rough, !- Roughness", + " 2.290965, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material:NoMass,", + " R31LAYER, !- Name", + " Rough, !- Roughness", + " 5.456, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " C5 - 4 IN HW CONCRETE, !- Name", + " MediumRough, !- Roughness", + " 0.1014984, !- Thickness {m}", + " 1.729577, !- Conductivity {W/m-K}", + " 2242.585, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + + " Construction,", + " R13WALL, !- Name", + " R13LAYER; !- Outside Layer", + + " Construction,", + " FLOOR, !- Name", + " C5 - 4 IN HW CONCRETE; !- Outside Layer", + + " Construction,", + " ROOF31, !- Name", + " R31LAYER; !- Outside Layer", + + " Zone,", + " Main Zone, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " CounterClockWise, !- Vertex Entry Direction", + " relative; !- Coordinate System", + + " BuildingSurface:Detailed,", + " Zn001:Wall001, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " Main Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 15.24000,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,0,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall002, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " Main Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000,0,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 15.24000,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 15.24000,15.24000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall003, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " Main Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 15.24000,15.24000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,15.24000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall004, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " Main Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,15.24000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,0,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Flr001, !- Name", + " Floor, !- Surface Type", + " FLOOR, !- Construction Name", + " Main Zone, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn001:Flr001, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000,0.000000,0.0, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000,0.000000,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 0.000000,15.24000,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,15.24000,0.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Roof001, !- Name", + " Roof, !- Surface Type", + " ROOF31, !- Construction Name", + " Main Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.000000,15.24000,4.572, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000,0.000000,4.572, !- X,Y,Z ==> Vertex 2 {m}", + " 15.24000,0.000000,4.572, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,15.24000,4.572; !- X,Y,Z ==> Vertex 4 {m}", + + " ScheduleTypeLimits,", + " Any Number; !- Name", + + " ScheduleTypeLimits,", + " Fraction, !- Name", + " 0.0, !- Lower Limit Value", + " 1.0, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + " ScheduleTypeLimits,", + " Temperature, !- Name", + " -60, !- Lower Limit Value", + " 200, !- Upper Limit Value", + " CONTINUOUS, !- Numeric Type", + " Temperature; !- Unit Type", + + " ScheduleTypeLimits,", + " Control Type, !- Name", + " 0, !- Lower Limit Value", + " 4, !- Upper Limit Value", + " DISCRETE; !- Numeric Type", + + " ScheduleTypeLimits,", + " On/Off, !- Name", + " 0, !- Lower Limit Value", + " 1, !- Upper Limit Value", + " DISCRETE; !- Numeric Type", + + " ScheduleTypeLimits,", + " FlowRate, !- Name", + " 0.0, !- Lower Limit Value", + " 10, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + " ScheduleTypeLimits,", + " Humidity, !- Name", + " 0, !- Lower Limit Value", + " 100, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + " Schedule:Compact,", + " OCCUPY-1, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", + " Until: 8:00,0.0, !- Field 3", + " Until: 11:00,1.00, !- Field 5", + " Until: 12:00,0.80, !- Field 7", + " Until: 13:00,0.40, !- Field 9", + " Until: 14:00,0.80, !- Field 11", + " Until: 18:00,1.00, !- Field 13", + " Until: 19:00,0.50, !- Field 15", + " Until: 21:00,0.10, !- Field 17", + " Until: 24:00,0.0, !- Field 19", + " For: Weekends WinterDesignDay Holiday, !- Field 21", + " Until: 24:00,0.0; !- Field 22", + + " Schedule:Compact,", + " LIGHTS-1, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", + " Until: 8:00,0.05, !- Field 3", + " Until: 9:00,0.9, !- Field 5", + " Until: 10:00,0.95, !- Field 7", + " Until: 11:00,1.00, !- Field 9", + " Until: 12:00,0.95, !- Field 11", + " Until: 13:00,0.8, !- Field 13", + " Until: 14:00,0.9, !- Field 15", + " Until: 18:00,1.00, !- Field 17", + " Until: 19:00,0.60, !- Field 19", + " Until: 21:00,0.20, !- Field 21", + " Until: 24:00,0.05, !- Field 23", + " For: Weekends WinterDesignDay Holiday, !- Field 25", + " Until: 24:00,0.05; !- Field 26", + + " Schedule:Compact,", + " EQUIP-1, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", + " Until: 8:00,0.02, !- Field 3", + " Until: 9:00,0.4, !- Field 5", + " Until: 14:00,0.9, !- Field 7", + " Until: 15:00,0.8, !- Field 9", + " Until: 16:00,0.7, !- Field 11", + " Until: 18:00,0.5, !- Field 13", + " Until: 20:00,0.3, !- Field 15", + " Until: 24:00,0.02, !- Field 17", + " For: Weekends WinterDesignDay Holiday, !- Field 19", + " Until: 24:00,0.2; !- Field 20", + + " Schedule:Compact,", + " INFIL-SCH, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 3/31, !- Field 1", + " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", + " Until: 24:00,1.0, !- Field 3", + " For: AllOtherDays, !- Field 5", + " Until: 24:00,1.0, !- Field 6", + " Through: 9/30, !- Field 8", + " For: AllDays, !- Field 9", + " Until: 24:00,0.7, !- Field 10", + " Through: 12/31, !- Field 12", + " For: AllDays, !- Field 13", + " Until: 24:00,1.0, !- Field 14", + " For: AllOtherDays, !- Field 16", + " Until: 24:00,0.2; !- Field 17", + + " Schedule:Compact,", + " ActSchd, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,117.239997864; !- Field 3", + + " Schedule:Compact,", + " ShadeTransSch, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,0.0; !- Field 3", + + " Schedule:Compact,", + " Htg-SetP-Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: SummerDesignDay, !- Field 2", + " Until: 24:00,12.8, !- Field 3", + " For: WinterDesignDay, !- Field 5", + " Until: 24:00,21.1, !- Field 6", + " For: WeekEnds Holiday, !- Field 8", + " Until: 7:00,12.8, !- Field 9", + " Until: 13:00,21.1, !- Field 11", + " Until: 24:00,12.8, !- Field 13", + " For: AllOtherDays, !- Field 15", + " Until: 7:00,12.8, !- Field 16", + " Until: 18:00,21.1, !- Field 18", + " Until: 24:00,12.8; !- Field 20", + + " Schedule:Compact,", + " PlenumHtg-SetP-Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,12.8; !- Field 3", + + " Schedule:Compact,", + " Clg-SetP-Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: SummerDesignDay, !- Field 2", + " Until: 24:00,23.9, !- Field 3", + " For: WinterDesignDay, !- Field 5", + " Until: 24:00,40.0, !- Field 6", + " For: WeekEnds Holiday, !- Field 8", + " Until: 7:00,40.0, !- Field 9", + " Until: 13:00,23.9, !- Field 11", + " Until: 24:00,32.2, !- Field 13", + " For: AllOtherDays, !- Field 15", + " Until: 7:00,40.0, !- Field 16", + " Until: 18:00,23.9, !- Field 18", + " Until: 24:00,40.0; !- Field 20", + + " Schedule:Compact,", + " PlenumClg-SetP-Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,40.0; !- Field 3", + + " Schedule:Compact,", + " Zone Control Type Sched, !- Name", + " Control Type, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: SummerDesignDay, !- Field 2", + " Until: 24:00,2, !- Field 3", + " For: WinterDesignDay, !- Field 5", + " Until: 24:00,1, !- Field 6", + " For: AllOtherDays, !- Field 8", + " Until: 24:00,4; !- Field 9", + + " Schedule:Compact,", + " Desiccant Control Type Sched, !- Name", + " Control Type, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,4; !- Field 3", + + " Schedule:Compact,", + " Min OA Sched, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Weekdays, !- Field 2", + " Until: 7:00,0.02, !- Field 3", + " Until: 17:00,1.0, !- Field 5", + " Until: 24:00,0.0, !- Field 7", + " For: AllOtherDays, !- Field 9", + " Until: 24:00,0.02; !- Field 10", + + " Schedule:Compact,", + " FanAvailSched, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 3/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0, !- Field 3", + " Through: 9/30, !- Field 5", + " For: WeekDays, !- Field 6", + " Until: 7:00,0.0, !- Field 7", + " Until: 17:00,1.0, !- Field 9", + " Until: 24:00,0.0, !- Field 11", + " For: SummerDesignDay WinterDesignDay, !- Field 13", + " Until: 24:00,1.0, !- Field 14", + " For: AllOtherDays, !- Field 16", + " Until: 24:00,0.0, !- Field 17", + " Through: 12/31, !- Field 19", + " For: AllDays, !- Field 20", + " Until: 24:00,1.0; !- Field 21", + + " Schedule:Compact,", + " Seasonal Reset Supply Air Temp Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 3/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,17.0, !- Field 3", + " Through: 9/30, !- Field 5", + " For: AllDays, !- Field 6", + " Until: 24:00,15.0, !- Field 7", + " Through: 12/31, !- Field 9", + " For: AllDays, !- Field 10", + " Until: 24:00,17.0; !- Field 11", + + " Schedule:Compact,", + " Constant, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0; !- Field 3", + + " People,", + " Main Zone People 1, !- Name", + " Main Zone, !- Zone or ZoneList Name", + " OCCUPY-1, !- Number of People Schedule Name", + " people, !- Number of People Calculation Method", + " 20, !- Number of People", + " , !- People per Zone Floor Area {person/m2}", + " , !- Zone Floor Area per Person {m2/person}", + " 0.3, !- Fraction Radiant", + " AutoCalculate, !- Sensible Heat Fraction", + " ActSchd; !- Activity Level Schedule Name", + + " Lights,", + " Main Zone Lights 1, !- Name", + " Main Zone, !- Zone or ZoneList Name", + " LIGHTS-1, !- Schedule Name", + " LightingLevel, !- Design Level Calculation Method", + " 2964, !- Lighting Level {W}", + " , !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.2, !- Return Air Fraction", + " 0.59, !- Fraction Radiant", + " 0.2, !- Fraction Visible", + " 0, !- Fraction Replaceable", + " GeneralLights; !- End-Use Subcategory", + + " ElectricEquipment,", + " Main Zone ElecEq 1, !- Name", + " Main Zone, !- Zone or ZoneList Name", + " EQUIP-1, !- Schedule Name", + " EquipmentLevel, !- Design Level Calculation Method", + " 19760, !- Design Level {W}", + " , !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.5, !- Fraction Latent", + " 0.3, !- Fraction Radiant", + " 0; !- Fraction Lost", + + " ZoneInfiltration:DesignFlowRate,", + " Main Zone Infil 1, !- Name", + " Main Zone, !- Zone or ZoneList Name", + " INFIL-SCH, !- Schedule Name", + " flow/zone, !- Design Flow Rate Calculation Method", + " 0.031089, !- Design Flow Rate {m3/s}", + " , !- Flow per Zone Floor Area {m3/s-m2}", + " , !- Flow per Exterior Surface Area {m3/s-m2}", + " , !- Air Changes per Hour {1/hr}", + " 0, !- Constant Term Coefficient", + " 0, !- Temperature Term Coefficient", + " 0.2237, !- Velocity Term Coefficient", + " 0; !- Velocity Squared Term Coefficient", + + " Sizing:Zone,", + " Main Zone, !- Zone or ZoneList Name", + " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", + " 14., !- Zone Cooling Design Supply Air Temperature {C}", + " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", + " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", + " 50., !- Zone Heating Design Supply Air Temperature {C}", + " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", + " 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " SZ DSOA Main Zone, !- Design Specification Outdoor Air Object Name", + " 0.0, !- Zone Heating Sizing Factor", + " 0.0, !- Zone Cooling Sizing Factor", + " DesignDayWithLimit, !- Cooling Design Air Flow Method", + " , !- Cooling Design Air Flow Rate {m3/s}", + " , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", + " , !- Cooling Minimum Air Flow {m3/s}", + " , !- Cooling Minimum Air Flow Fraction", + " DesignDay, !- Heating Design Air Flow Method", + " , !- Heating Design Air Flow Rate {m3/s}", + " , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", + " , !- Heating Maximum Air Flow {m3/s}", + " ; !- Heating Maximum Air Flow Fraction", + + " DesignSpecification:OutdoorAir,", + " SZ DSOA Main Zone, !- Name", + " sum, !- Outdoor Air Method", + " 0.00236, !- Outdoor Air Flow per Person {m3/s-person}", + " 0.000305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}", + " 0.0; !- Outdoor Air Flow per Zone {m3/s}", + + " Sizing:System,", + " Desiccant DXSystem, !- AirLoop Name", + " sensible, !- Type of Load to Size On", + " autosize, !- Design Outdoor Air Flow Rate {m3/s}", + " 0.3, !- Central Heating Maximum System Air Flow Ratio", + " 4.5, !- Preheat Design Temperature {C}", + " 0.008, !- Preheat Design Humidity Ratio {kgWater/kgDryAir}", + " 11.0, !- Precool Design Temperature {C}", + " 0.008, !- Precool Design Humidity Ratio {kgWater/kgDryAir}", + " 12.8, !- Central Cooling Design Supply Air Temperature {C}", + " 16.7, !- Central Heating Design Supply Air Temperature {C}", + " noncoincident, !- Type of Zone Sum to Use", + " no, !- 100% Outdoor Air in Cooling", + " no, !- 100% Outdoor Air in Heating", + " 0.008, !- Central Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " 0.008, !- Central Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " DesignDay, !- Cooling Design Air Flow Method", + " 0, !- Cooling Design Air Flow Rate {m3/s}", + " , !- Supply Air Flow Rate Per Floor Area During Cooling Operation {m3/s-m2}", + " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", + " , !- Design Supply Air Flow Rate Per Unit Cooling Capacity {m3/s-W}", + " DesignDay, !- Heating Design Air Flow Method", + " 0, !- Heating Design Air Flow Rate {m3/s}", + " , !- Supply Air Flow Rate Per Floor Area During Heating Operation {m3/s-m2}", + " , !- Fraction of Autosized Design Heating Supply Air Flow Rate", + " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", + " , !- Design Supply Air Flow Rate Per Unit Heating Capacity {m3/s-W}", + " , !- System Outdoor Air Method", + " 1.0, !- Zone Maximum Outdoor Air Fraction {dimensionless}", + " CoolingDesignCapacity, !- Cooling Design Capacity Method", + " autosize, !- Cooling Design Capacity {W}", + " , !- Cooling Design Capacity Per Floor Area {W/m2}", + " , !- Fraction of Autosized Cooling Design Capacity", + " HeatingDesignCapacity, !- Heating Design Capacity Method", + " autosize, !- Heating Design Capacity {W}", + " , !- Heating Design Capacity Per Floor Area {W/m2}", + " , !- Fraction of Autosized Heating Design Capacity", + " VAV; !- Central Cooling Capacity Control Method", + + " Curve:Biquadratic,", + " HPACCoolCapFT, !- Name", + " 0.942587793, !- Coefficient1 Constant", + " 0.009543347, !- Coefficient2 x", + " 0.00068377, !- Coefficient3 x**2", + " -0.011042676, !- Coefficient4 y", + " 0.000005249, !- Coefficient5 y**2", + " -0.00000972, !- Coefficient6 x*y", + " -100, !- Minimum Value of x", + " 100, !- Maximum Value of x", + " -100, !- Minimum Value of y", + " 100, !- Maximum Value of y", + " , !- Minimum Curve Output", + " , !- Maximum Curve Output", + " Temperature, !- Input Unit Type for X", + " Temperature, !- Input Unit Type for Y", + " Dimensionless; !- Output Unit Type", + + " Curve:Biquadratic,", + " HPACCOOLEIRFT, !- Name", + " 0.342414409, !- Coefficient1 Constant", + " 0.034885008, !- Coefficient2 x", + " -0.0006237, !- Coefficient3 x**2", + " 0.004977216, !- Coefficient4 y", + " 0.000437951, !- Coefficient5 y**2", + " -0.000728028, !- Coefficient6 x*y", + " -100, !- Minimum Value of x", + " 100, !- Maximum Value of x", + " -100, !- Minimum Value of y", + " 100, !- Maximum Value of y", + " , !- Minimum Curve Output", + " , !- Maximum Curve Output", + " Temperature, !- Input Unit Type for X", + " Temperature, !- Input Unit Type for Y", + " Dimensionless; !- Output Unit Type", + + " Curve:Quadratic,", + " HPACCoolCapFFF, !- Name", + " 0.8, !- Coefficient1 Constant", + " 0.2, !- Coefficient2 x", + " 0.0, !- Coefficient3 x**2", + " 0.0, !- Minimum Value of x", + " 1.0; !- Maximum Value of x", + + " Curve:Quadratic,", + " HPACCOOLEIRFFF, !- Name", + " 1.1552, !- Coefficient1 Constant", + " -0.1808, !- Coefficient2 x", + " 0.0256, !- Coefficient3 x**2", + " 0.0, !- Minimum Value of x", + " 1.0; !- Maximum Value of x", + + " Curve:Quadratic,", + " HPACCOOLPLFFPLR, !- Name", + " 0.75, !- Coefficient1 Constant", + " 0.25, !- Coefficient2 x", + " 0.0, !- Coefficient3 x**2", + " 0.0, !- Minimum Value of x", + " 1.0; !- Maximum Value of x", + + " Curve:Cubic,", + " PackagedRatedCoolCapFFlow, !- Name", + " 0.47278589, !- Coefficient1 Constant", + " 1.2433415, !- Coefficient2 x", + " -1.0387055, !- Coefficient3 x**2", + " 0.32257813, !- Coefficient4 x**3", + " 0.5, !- Minimum Value of x", + " 1.5, !- Maximum Value of x", + " , !- Minimum Curve Output", + " , !- Maximum Curve Output", + " Dimensionless, !- Input Unit Type for X", + " Dimensionless; !- Output Unit Type", + + " Curve:Cubic,", + " PackagedRatedCoolEIRFFlow, !- Name", + " 1.0079484, !- Coefficient1 Constant", + " 0.34544129, !- Coefficient2 x", + " -.6922891, !- Coefficient3 x**2", + " 0.33889943, !- Coefficient4 x**3", + " 0.5, !- Minimum Value of x", + " 1.5, !- Maximum Value of x", + " , !- Minimum Curve Output", + " , !- Maximum Curve Output", + " Dimensionless, !- Input Unit Type for X", + " Dimensionless; !- Output Unit Type", + + " Curve:Cubic,", + " EXHAUSTFANPLF, !- Name", + " 0, !- Coefficient1 Constant", + " 1, !- Coefficient2 x", + " 0.0, !- Coefficient3 x**2", + " 0.0, !- Coefficient4 x**3", + " 0.0, !- Minimum Value of x", + " 1.0; !- Maximum Value of x", + + " NodeList,", + " Main Zone In Nodes, !- Name", + " Main Zone In Node; !- Node 1 Name", + + " NodeList,", + " Desiccant DX Air Loop Setpoint Nodes, !- Name", + " HX Process Outlet Node, !- Node 1 Name", + " Desiccant DXSystem Mixed Air Node; !- Node 2 Name", + + " NodeList,", + " Regen Setpoint Nodes, !- Name", + " HX Regen Inlet Node; !- Node 1 Name", + + " BranchList,", + " Desiccant Air Loop Branches, !- Name", + " Desiccant Air Loop Main Branch; !- Branch 1 Name", + + " Branch,", + " Desiccant Air Loop Main Branch, !- Name", + " , !- Pressure Drop Curve Name", + " AirLoopHVAC:OutdoorAirSystem, !- Component 1 Object Type", + " Desiccant DXSystem OA System, !- Component 1 Name", + " Desiccant DXSystem Air Loop Inlet Node, !- Component 1 Inlet Node Name", + " Desiccant DXSystem Mixed Air Node, !- Component 1 Outlet Node Name", + " CoilSystem:Cooling:DX, !- Component 2 Object Type", + " Desiccant DXSystem Cooling Coil Sys, !- Component 2 Name", + " Desiccant DXSystem Mixed Air Node, !- Component 2 Inlet Node Name", + " HX Process Inlet Node, !- Component 2 Outlet Node Name", + " Dehumidifier:Desiccant:System, !- Component 3 Object Type", + " Desiccant 1, !- Component 3 Name", + " HX Process Inlet Node, !- Component 3 Inlet Node Name", + " HX Process Outlet Node, !- Component 3 Outlet Node Name", + " Fan:ConstantVolume, !- Component 4 Object Type", + " Desiccant DXSystem Supply Fan, !- Component 4 Name", + " HX Process Outlet Node, !- Component 4 Inlet Node Name", + " Desiccant Supply Fan Outlet Node, !- Component 4 Outlet Node Name", + " Coil:Heating:Fuel, !- Component 5 Object Type", + " Desiccant Process Heating Coil, !- Component 5 Name", + " Desiccant Supply Fan Outlet Node, !- Component 5 Inlet Node Name", + " Desiccant DXSystem Air Loop Outlet Node; !- Component 5 Outlet Node Name", + + " AirLoopHVAC,", + " Desiccant DXSystem, !- Name", + " , !- Controller List Name", + " Desiccant Avail List, !- Availability Manager List Name", + " autosize, !- Design Supply Air Flow Rate {m3/s}", + " Desiccant Air Loop Branches, !- Branch List Name", + " , !- Connector List Name", + " Desiccant DXSystem Air Loop Inlet Node, !- Supply Side Inlet Node Name", + " Desiccant DXSystem Return Air Mixer Outlet Node, !- Demand Side Outlet Node Name", + " Desiccant DXSystem Zone Equipment Inlet Node, !- Demand Side Inlet Node Names", + " Desiccant DXSystem Air Loop Outlet Node; !- Supply Side Outlet Node Names", + + " AirLoopHVAC:ControllerList,", + " Desiccant DXSystem OA System Controllers, !- Name", + " Controller:OutdoorAir, !- Controller 1 Object Type", + " Desiccant OA Controller; !- Controller 1 Name", + + " AirLoopHVAC:OutdoorAirSystem:EquipmentList,", + " Desiccant DXSystem OA System Equipment, !- Name", + " OutdoorAir:Mixer, !- Component 1 Object Type", + " Desiccant DXSystem OA Mixing Box; !- Component 1 Name", + + " AirLoopHVAC:OutdoorAirSystem,", + " Desiccant DXSystem OA System, !- Name", + " Desiccant DXSystem OA System Controllers, !- Controller List Name", + " Desiccant DXSystem OA System Equipment, !- Outdoor Air Equipment List Name", + " Desiccant Outdoor Air Avail List; !- Availability Manager List Name", + + " OutdoorAir:NodeList,", + " OutsideAirInletNodes; !- Node or NodeList Name 1", + + " OutdoorAir:NodeList,", + " Desiccant DXSystem Outside Air Inlet Node, !- Node or NodeList Name 1", + " Desiccant Outside Air Inlet Node 2; !- Node or NodeList Name 2", + + " OutdoorAir:NodeList,", + " Regen Coil Inlet Node; !- Node or NodeList Name 1", + + " OutdoorAir:NodeList,", + " Condenser Inlet Node; !- Node or NodeList Name 1", + + " OutdoorAir:Mixer,", + " Desiccant DXSystem OA Mixing Box, !- Name", + " Desiccant DXSystem Mixed Air Node, !- Mixed Air Node Name", + " Desiccant DXSystem Outside Air Inlet Node, !- Outdoor Air Stream Node Name", + " Desiccant DXSystem Relief Air Outlet Node, !- Relief Air Stream Node Name", + " Desiccant DXSystem Air Loop Inlet Node; !- Return Air Stream Node Name", + + " AvailabilityManagerAssignmentList,", + " Desiccant Avail List, !- Name", + " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", + " Desiccant DXSystem Avail;!- Availability Manager 1 Name", + + " AvailabilityManagerAssignmentList,", + " Desiccant Outdoor Air Avail List, !- Name", + " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", + " Desiccant Outdoor Air Avail; !- Availability Manager 1 Name", + + " AvailabilityManager:Scheduled,", + " Desiccant DXSystem Avail,!- Name", + " FanAvailSched; !- Schedule Name", + + " AvailabilityManager:Scheduled,", + " Desiccant Outdoor Air Avail, !- Name", + " FanAvailSched; !- Schedule Name", + + " SetpointManager:SingleZone:Heating,", + " Heating Supply Air Temp Manager, !- Name", + " Temperature, !- Control Variable", + " -99., !- Minimum Supply Air Temperature {C}", + " 99., !- Maximum Supply Air Temperature {C}", + " Main Zone, !- Control Zone Name", + " Main Zone Node, !- Zone Node Name", + " Main Zone In Node, !- Zone Inlet Node Name", + " Desiccant DXSystem Air Loop Outlet Node; !- Setpoint Node or NodeList Name", + + " SetpointManager:SingleZone:Cooling,", + " Cooling Supply Air Temp Manager, !- Name", + " Temperature, !- Control Variable", + " -99., !- Minimum Supply Air Temperature {C}", + " 99., !- Maximum Supply Air Temperature {C}", + " Main Zone, !- Control Zone Name", + " Main Zone Node, !- Zone Node Name", + " Main Zone In Node, !- Zone Inlet Node Name", + " Desiccant Supply Fan Outlet Node; !- Setpoint Node or NodeList Name", + + " SetpointManager:SingleZone:Humidity:Maximum,", + " Zone Max Humidity Manager, !- Name", + " HX Process Outlet Node, !- Setpoint Node or NodeList Name", + " Main Zone Node; !- Control Zone Air Node Name", + + " SetpointManager:MixedAir,", + " Adjusted Cooling Supply Air Temp Manager, !- Name", + " Temperature, !- Control Variable", + " Desiccant Supply Fan Outlet Node, !- Reference Setpoint Node Name", + " HX Process Outlet Node, !- Fan Inlet Node Name", + " Desiccant Supply Fan Outlet Node, !- Fan Outlet Node Name", + " HX Process Outlet Node; !- Setpoint Node or NodeList Name", + + " Controller:OutdoorAir,", + " Desiccant OA Controller, !- Name", + " Desiccant DXSystem Relief Air Outlet Node, !- Relief Air Outlet Node Name", + " Desiccant DXSystem Air Loop Inlet Node, !- Return Air Node Name", + " Desiccant DXSystem Mixed Air Node, !- Mixed Air Node Name", + " Desiccant DXSystem Outside Air Inlet Node, !- Actuator Node Name", + " autosize, !- Minimum Outdoor Air Flow Rate {m3/s}", + " autosize, !- Maximum Outdoor Air Flow Rate {m3/s}", + " NoEconomizer, !- Economizer Control Type", + " ModulateFlow, !- Economizer Control Action Type", + " 100., !- Economizer Maximum Limit Dry-Bulb Temperature {C}", + " , !- Economizer Maximum Limit Enthalpy {J/kg}", + " , !- Economizer Maximum Limit Dewpoint Temperature {C}", + " , !- Electronic Enthalpy Limit Curve Name", + " , !- Economizer Minimum Limit Dry-Bulb Temperature {C}", + " NoLockout, !- Lockout Type", + " FixedMinimum, !- Minimum Limit Type", + " Min OA Sched, !- Minimum Outdoor Air Schedule Name", + " , !- Minimum Fraction of Outdoor Air Schedule Name", + " , !- Maximum Fraction of Outdoor Air Schedule Name", + " 0; !- Mechanical Ventilation Controller Name", + + " ZoneHVAC:EquipmentConnections,", + " Main Zone, !- Zone Name", + " Main Zone Eq, !- Zone Conditioning Equipment List Name", + " Main Zone In Nodes, !- Zone Air Inlet Node or NodeList Name", + " , !- Zone Air Exhaust Node or NodeList Name", + " Main Zone Node, !- Zone Air Node Name", + " Main Zone Out Node; !- Zone Return Air Node Name", + + " ZoneHVAC:EquipmentList,", + " Main Zone Eq, !- Name", + " SequentialLoad, !- Load Distribution Scheme", + " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", + " Main Zone Direct Air ADU, !- Zone Equipment 1 Name", + " 1, !- Zone Equipment 1 Cooling Sequence", + " 1; !- Zone Equipment 1 Heating or No-Load Sequence", + + " ZoneHVAC:AirDistributionUnit,", + " Main Zone Direct Air ADU, !- Name", + " Main Zone In Node, !- Air Distribution Unit Outlet Node Name", + " AirTerminal:SingleDuct:ConstantVolume:NoReheat, !- Air Terminal Object Type", + " Main Zone Direct Air; !- Air Terminal Name", + + " AirTerminal:SingleDuct:ConstantVolume:NoReheat,", + " Main Zone Direct Air, !- Name", + " Constant, !- Availability Schedule Name", + " Main Zone In Node 2AT, !- Air Inlet Node Name", + " Main Zone In Node, !- Air Outlet Node Name", + " autosize; !- Maximum Air Flow Rate {m3/s}", + + " CoilSystem:Cooling:DX,", + " Desiccant DXSystem Cooling Coil Sys, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " Desiccant DXSystem Mixed Air Node, !- DX Cooling Coil System Inlet Node Name", + " HX Process Inlet Node, !- DX Cooling Coil System Outlet Node Name", + " HX Process Outlet Node, !- DX Cooling Coil System Sensor Node Name", + " Coil:Cooling:DX:SingleSpeed, !- Cooling Coil Object Type", + " Desiccant DXSystem Cooling Coil; !- Cooling Coil Name", + + " ZoneControl:Thermostat,", + " Main Zone Control, !- Name", + " Main Zone, !- Zone or ZoneList Name", + " Desiccant Control Type Sched, !- Control Type Schedule Name", + " ThermostatSetpoint:DualSetpoint, !- Control 1 Object Type", + " DualSetPoint; !- Control 1 Name", + + " ZoneControl:Humidistat,", + " Main Zone Humidistat, !- Name", + " Main Zone, !- Zone Name", + " Relative Humidity Sched; !- Humidifying Relative Humidity Setpoint Schedule Name", + + " Schedule:Compact,", + " Relative Humidity Sched, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,45.0; !- Field 3", + + " ThermostatSetpoint:SingleHeating,", + " HeatingSetpoint, !- Name", + " Htg-SetP-Sch; !- Setpoint Temperature Schedule Name", + + " ThermostatSetpoint:SingleHeating,", + " PlenumHeatingSetpoint, !- Name", + " PlenumHtg-SetP-Sch; !- Setpoint Temperature Schedule Name", + + " ThermostatSetpoint:SingleCooling,", + " CoolingSetpoint, !- Name", + " Clg-SetP-Sch; !- Setpoint Temperature Schedule Name", + + " ThermostatSetpoint:SingleCooling,", + " PlenumCoolingSetpoint, !- Name", + " PlenumClg-SetP-Sch; !- Setpoint Temperature Schedule Name", + + " ThermostatSetpoint:DualSetpoint,", + " DualSetPoint, !- Name", + " Htg-SetP-Sch, !- Heating Setpoint Temperature Schedule Name", + " Clg-SetP-Sch; !- Cooling Setpoint Temperature Schedule Name", + + " AirLoopHVAC:SupplyPath,", + " Desiccant DXSystem Supply Path, !- Name", + " Desiccant DXSystem Zone Equipment Inlet Node, !- Supply Air Path Inlet Node Name", + " AirLoopHVAC:ZoneSplitter,!- Component 1 Object Type", + " Desiccant DXSystem Zone Supply Air Splitter; !- Component 1 Name", + + " AirLoopHVAC:ReturnPath,", + " Desiccant DXSystem Return Path, !- Name", + " Desiccant DXSystem Return Air Mixer Outlet Node, !- Return Air Path Outlet Node Name", + " AirLoopHVAC:ZoneMixer, !- Component 1 Object Type", + " Desiccant DXSystem Zone Return Air Mixer; !- Component 1 Name", + + " AirLoopHVAC:ZoneSplitter,", + " Desiccant DXSystem Zone Supply Air Splitter, !- Name", + " Desiccant DXSystem Zone Equipment Inlet Node, !- Inlet Node Name", + " Main Zone In Node 2AT; !- Outlet 1 Node Name", + + " AirLoopHVAC:ZoneMixer,", + " Desiccant DXSystem Zone Return Air Mixer, !- Name", + " Desiccant DXSystem Return Air Mixer Outlet Node, !- Outlet Node Name", + " Main Zone Out Node; !- Inlet 1 Node Name", + + " Coil:Heating:Fuel,", + " Desiccant Process Heating Coil, !- Name", + " Constant, !- Availability Schedule Name", + " Gas, !- Fuel Type", + " 0.8, !- Gas Burner Efficiency", + " autosize, !- Nominal Capacity {W}", + " Desiccant Supply Fan Outlet Node, !- Air Inlet Node Name", + " Desiccant DXSystem Air Loop Outlet Node, !- Air Outlet Node Name", + " Desiccant DXSystem Air Loop Outlet Node; !- Temperature Setpoint Node Name", + + " Coil:Cooling:DX:SingleSpeed,", + " Desiccant DXSystem Cooling Coil, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " autosize, !- High Speed Rated Air Flow Rate {m3/s}", + " autosize, !- Gross Rated Sensible Heat Ratio", + " 3.5, !- Gross Rated Cooling COP {W/W}", + " autosize, !- High Speed Rated Air Flow Rate {m3/s}", + " , !- Rated Evaporator Fan Power Per Volume Flow Rate {W/(m3/s)}", + " Desiccant DXSystem Mixed Air Node, !- Air Inlet Node Name", + " HX Process Inlet Node, !- Air Outlet Node Name", + " HPACCoolCapFT, !- Total Cooling Capacity Function of Temperature Curve Name", + " HPACCoolCapFFF, !- Total Cooling Capacity Function of Flow Fraction Curve Name", + " HPACCOOLEIRFT, !- Energy Input Ratio Function of Temperature Curve Name", + " HPACCOOLEIRFFF, !- Energy Input Ratio Function of Flow Fraction Curve Name", + " HPACCOOLPLFFPLR, !- Part Load Fraction Correlation Curve Name", + " , !- Minimum Outdoor Dry-Bulb Temperature for Compressor Operation {C}", + " 1000, !- Nominal Time for Condensate Removal to Begin {s}", + " 0.4, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}", + " 4, !- Maximum Cycling Rate {cycles/hr}", + " 45, !- Latent Capacity Time Constant {s}", + " Condenser Inlet Node, !- Condenser Air Inlet Node Name", + " AirCooled; !- Condenser Type", + + " Fan:ConstantVolume,", + " Desiccant DXSystem Supply Fan, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " 0.7, !- Fan Total Efficiency", + " 571.66, !- Pressure Rise {Pa}", + " autosize, !- Maximum Flow Rate {m3/s}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Airstream Fraction", + " HX Process Outlet Node, !- Air Inlet Node Name", + " Desiccant Supply Fan Outlet Node; !- Air Outlet Node Name", + + " Fan:ConstantVolume,", + " Desiccant Regen Fan, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " 0.7, !- Fan Total Efficiency", + " 205.5, !- Pressure Rise {Pa}", + " autosize, !- Maximum Flow Rate {m3/s}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Airstream Fraction", + " HX Regen Outlet Node, !- Air Inlet Node Name", + " Regen Fan Outlet Node; !- Air Outlet Node Name", + + " Dehumidifier:Desiccant:System,", + " Desiccant 1, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " HeatExchanger:Desiccant:BalancedFlow, !- Desiccant Heat Exchanger Object Type", + " Desiccant Heat Exchanger 1, !- Desiccant Heat Exchanger Name", + " HX Process Outlet Node, !- Sensor Node Name", + " Fan:ConstantVolume, !- Regeneration Air Fan Object Type", + " Desiccant Regen Fan, !- Regeneration Air Fan Name", + " DrawThrough, !- Regeneration Air Fan Placement", + " Coil:Heating:Water, !- Regeneration Air Heater Object Type", + " Desiccant Regen Coil, !- Regeneration Air Heater Name", + " 46.111111, !- Regeneration Inlet Air Setpoint Temperature {C}", + " Coil:Cooling:DX:SingleSpeed, !- Companion Cooling Coil Object Type", + " Desiccant DXSystem Cooling Coil, !- Companion Cooling Coil Name", + " Yes, !- Companion Cooling Coil Upstream of Dehumidifier Process Inlet", + " Yes, !- Companion Coil Regeneration Air Heating", + " 0.87931, !- Exhaust Fan Maximum Flow Rate {m3/s}", + " 50, !- Exhaust Fan Maximum Power {W}", + " EXHAUSTFANPLF; !- Exhaust Fan Power Curve Name", + + " HeatExchanger:Desiccant:BalancedFlow,", + " Desiccant Heat Exchanger 1, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " HX Regen Inlet Node, !- Regeneration Air Inlet Node Name", + " HX Regen Outlet Node, !- Regeneration Air Outlet Node Name", + " HX Process Inlet Node, !- Process Air Inlet Node Name", + " HX Process Outlet Node, !- Process Air Outlet Node Name", + " HeatExchanger:Desiccant:BalancedFlow:PerformanceDataType1, !- Heat Exchanger Performance Object Type", + " HXDesPerf1; !- Heat Exchanger Performance Name", + + " HeatExchanger:Desiccant:BalancedFlow:PerformanceDataType1,", + " HXDesPerf1, !- Name", + " 0.87931, !- Nominal Air Flow Rate {m3/s}", + " 3.25, !- Nominal Air Face Velocity {m/s}", + " 50.0, !- Nominal Electric Power {W}", + " -2.53636E+00, !- Temperature Equation Coefficient 1", + " 2.13247E+01, !- Temperature Equation Coefficient 2", + " 9.23308E-01, !- Temperature Equation Coefficient 3", + " 9.43276E+02, !- Temperature Equation Coefficient 4", + " -5.92367E+01, !- Temperature Equation Coefficient 5", + " -4.27465E-02, !- Temperature Equation Coefficient 6", + " 1.12204E+02, !- Temperature Equation Coefficient 7", + " 7.78252E-01, !- Temperature Equation Coefficient 8", + " 0.007143, !- Minimum Regeneration Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", + " 0.024286, !- Maximum Regeneration Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", + " 46.111110, !- Minimum Regeneration Inlet Air Temperature for Temperature Equation {C}", + " 46.111112, !- Maximum Regeneration Inlet Air Temperature for Temperature Equation {C}", + " 0.005000, !- Minimum Process Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", + " 0.015714, !- Maximum Process Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", + " 4.583333, !- Minimum Process Inlet Air Temperature for Temperature Equation {C}", + " 21.83333, !- Maximum Process Inlet Air Temperature for Temperature Equation {C}", + " 2.286, !- Minimum Regeneration Air Velocity for Temperature Equation {m/s}", + " 4.826, !- Maximum Regeneration Air Velocity for Temperature Equation {m/s}", + " 35.0, !- Minimum Regeneration Outlet Air Temperature for Temperature Equation {C}", + " 50.0, !- Maximum Regeneration Outlet Air Temperature for Temperature Equation {C}", + " 5.0, !- Minimum Regeneration Inlet Air Relative Humidity for Temperature Equation {percent}", + " 45.0, !- Maximum Regeneration Inlet Air Relative Humidity for Temperature Equation {percent}", + " 80.0, !- Minimum Process Inlet Air Relative Humidity for Temperature Equation {percent}", + " 100.0, !- Maximum Process Inlet Air Relative Humidity for Temperature Equation {percent}", + " -2.25547E+01, !- Humidity Ratio Equation Coefficient 1", + " 9.76839E-01, !- Humidity Ratio Equation Coefficient 2", + " 4.89176E-01, !- Humidity Ratio Equation Coefficient 3", + " -6.30019E-02, !- Humidity Ratio Equation Coefficient 4", + " 1.20773E-02, !- Humidity Ratio Equation Coefficient 5", + " 5.17134E-05, !- Humidity Ratio Equation Coefficient 6", + " 4.94917E-02, !- Humidity Ratio Equation Coefficient 7", + " -2.59417E-04, !- Humidity Ratio Equation Coefficient 8", + " 0.007143, !- Minimum Regeneration Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " 0.024286, !- Maximum Regeneration Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " 46.111110, !- Minimum Regeneration Inlet Air Temperature for Humidity Ratio Equation {C}", + " 46.111112, !- Maximum Regeneration Inlet Air Temperature for Humidity Ratio Equation {C}", + " 0.005000, !- Minimum Process Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " 0.015714, !- Maximum Process Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " 4.583333, !- Minimum Process Inlet Air Temperature for Humidity Ratio Equation {C}", + " 21.83333, !- Maximum Process Inlet Air Temperature for Humidity Ratio Equation {C}", + " 2.286, !- Minimum Regeneration Air Velocity for Humidity Ratio Equation {m/s}", + " 4.826, !- Maximum Regeneration Air Velocity for Humidity Ratio Equation {m/s}", + " 0.007914, !- Minimum Regeneration Outlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " 0.026279, !- Maximum Regeneration Outlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " 5.0, !- Minimum Regeneration Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", + " 45.0, !- Maximum Regeneration Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", + " 80.0, !- Minimum Process Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", + " 100.0; !- Maximum Process Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", + + " Sizing:Plant,", + " Hot Water Loop, !- Plant or Condenser Loop Name", + " Heating, !- Loop Type", + " 82.2222222222222, !- Design Loop Exit Temperature {C}", + " 22.2222222222222; !- Loop Design Temperature Difference {deltaC}", + + " PlantLoop,", + " Hot Water Loop, !- Name", + " Water, !- Fluid Type", + " , !- User Defined Fluid Type", + " Hot Loop Operation, !- Plant Equipment Operation Scheme Name", + " HW Supply Outlet Node, !- Loop Temperature Setpoint Node Name", + " 100, !- Maximum Loop Temperature {C}", + " 10, !- Minimum Loop Temperature {C}", + " Autosize, !- Maximum Loop Flow Rate {m3/s}", + " 0.0, !- Minimum Loop Flow Rate {m3/s}", + " autocalculate, !- Plant Loop Volume {m3}", + " HW Supply Inlet Node, !- Plant Side Inlet Node Name", + " HW Supply Outlet Node, !- Plant Side Outlet Node Name", + " Heating Supply Side Branches, !- Plant Side Branch List Name", + " Heating Supply Side Connectors, !- Plant Side Connector List Name", + " HW Demand Inlet Node, !- Demand Side Inlet Node Name", + " HW Demand Outlet Node, !- Demand Side Outlet Node Name", + " Heating Demand Side Branches, !- Demand Side Branch List Name", + " Heating Demand Side Connectors, !- Demand Side Connector List Name", + " Optimal, !- Load Distribution Scheme", + " , !- Availability Manager List Name", + " , !- Plant Loop Demand Calculation Scheme", + " , !- Common Pipe Simulation", + " , !- Pressure Simulation Type", + " 2.0; !- Loop Circulation Time {minutes}", + + " SetpointManager:Scheduled,", + " Hot Water Loop Setpoint Manager, !- Name", + " Temperature, !- Control Variable", + " HW Loop Temp Schedule, !- Schedule Name", + " Hot Water Loop Setpoint Node List; !- Setpoint Node or NodeList Name", + + " NodeList,", + " Hot Water Loop Setpoint Node List, !- Name", + " HW Supply Outlet Node; !- Node 1 Name", + + " Schedule:Compact,", + " HW LOOP TEMP SCHEDULE, !- Name", + " TEMPERATURE, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Alldays, !- Field 2", + " Until: 24:00,82.00; !- Field 3", + + " BranchList,", + " Heating Supply Side Branches, !- Name", + " Heating Supply Inlet Branch, !- Branch 1 Name", + " Heating Purchased Hot Water Branch, !- Branch 2 Name", + " Heating Supply Bypass Branch, !- Branch 3 Name", + " Heating Supply Outlet Branch; !- Branch 4 Name", + + " ConnectorList,", + " Heating Supply Side Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " Heating Supply Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " Heating Supply Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " Heating Supply Splitter, !- Name", + " Heating Supply Inlet Branch, !- Inlet Branch Name", + " Heating Purchased Hot Water Branch, !- Outlet Branch 1 Name", + " Heating Supply Bypass Branch; !- Outlet Branch 2 Name", + + " Connector:Mixer,", + " Heating Supply Mixer, !- Name", + " Heating Supply Outlet Branch, !- Outlet Branch Name", + " Heating Purchased Hot Water Branch, !- Inlet Branch 1 Name", + " Heating Supply Bypass Branch; !- Inlet Branch 2 Name", + + " Branch,", + " Heating Supply Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pump:VariableSpeed, !- Component 1 Object Type", + " HW Circ Pump, !- Component 1 Name", + " HW Supply Inlet Node, !- Component 1 Inlet Node Name", + " HW Pump Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " Heating Purchased Hot Water Branch, !- Name", + " , !- Pressure Drop Curve Name", + " DistrictHeating, !- Component 1 Object Type", + " Purchased Heating, !- Component 1 Name", + " Purchased Heat Inlet Node, !- Component 1 Inlet Node Name", + " Purchased Heat Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " Heating Supply Bypass Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " Heating Supply Side Bypass, !- Component 1 Name", + " Heating Supply Bypass Inlet Node, !- Component 1 Inlet Node Name", + " Heating Supply Bypass Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " Heating Supply Side Bypass, !- Name", + " Heating Supply Bypass Inlet Node, !- Inlet Node Name", + " Heating Supply Bypass Outlet Node; !- Outlet Node Name", + + " Branch,", + " Heating Supply Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " Heating Supply Outlet, !- Component 1 Name", + " Heating Supply Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", + " HW Supply Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " Heating Supply Outlet, !- Name", + " Heating Supply Exit Pipe Inlet Node, !- Inlet Node Name", + " HW Supply Outlet Node; !- Outlet Node Name", + + " Pump:VariableSpeed,", + " HW Circ Pump, !- Name", + " HW Supply Inlet Node, !- Inlet Node Name", + " HW Pump Outlet Node, !- Outlet Node Name", + " autosize, !- Rated Flow Rate {m3/s}", + " 179352, !- Rated Pump Head {Pa}", + " autosize, !- Rated Power Consumption {W}", + " 0.9, !- Motor Efficiency", + " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", + " 0, !- Coefficient 1 of the Part Load Performance Curve", + " 1, !- Coefficient 2 of the Part Load Performance Curve", + " 0, !- Coefficient 3 of the Part Load Performance Curve", + " 0, !- Coefficient 4 of the Part Load Performance Curve", + " 0, !- Minimum Flow Rate {m3/s}", + " INTERMITTENT; !- Pump Control Type", + + " BranchList,", + " Heating Demand Side Branches, !- Name", + " ZonesHWInletBranch, !- Branch 1 Name", + " RegenCoilHWBranch, !- Branch 2 Name", + " ZonesHWBypassBranch, !- Branch 5 Name", + " ZonesHWOutletBranch; !- Branch 6 Name", + + " ConnectorList,", + " Heating Demand Side Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " Zones HW Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " Zones HW Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " Zones HW Splitter, !- Name", + " ZonesHWInletBranch, !- Inlet Branch Name", + " RegenCoilHWBranch, !- Outlet Branch 1 Name", + " ZonesHWBypassBranch; !- Outlet Branch 4 Name", + + " Connector:Mixer,", + " Zones HW Mixer, !- Name", + " ZonesHWOutletBranch, !- Outlet Branch Name", + " RegenCoilHWBranch, !- Inlet Branch 1 Name", + " ZonesHWBypassBranch; !- Inlet Branch 4 Name", + + " Branch,", + " ZonesHWInletBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " ZonesHWInletPipe, !- Component 1 Name", + " HW Demand Inlet Node, !- Component 1 Inlet Node Name", + " HW Demand Entrance Pipe Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " ZonesHWInletPipe, !- Name", + " HW Demand Inlet Node, !- Inlet Node Name", + " HW Demand Entrance Pipe Outlet Node; !- Outlet Node Name", + + " Branch,", + " ZonesHWOutletBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " ZonesHWOutletPipe, !- Component 1 Name", + " HW Demand Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", + " HW Demand Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " ZonesHWOutletPipe, !- Name", + " HW Demand Exit Pipe Inlet Node, !- Inlet Node Name", + " HW Demand Outlet Node; !- Outlet Node Name", + + " Branch,", + " RegenCoilHWBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Coil:Heating:Water, !- Component 1 Object Type", + " Desiccant Regen Coil, !- Component 1 Name", + " RegenCoilHWInletNode, !- Component 1 Inlet Node Name", + " RegenCoilHWOutletNode; !- Component 1 Outlet Node Name", + + " Coil:Heating:Water,", + " Desiccant Regen Coil, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " autosize, !- U-Factor Times Area Value {W/K}", + " autosize, !- Maximum Water Flow Rate {m3/s}", + " RegenCoilHWInletNode, !- Water Inlet Node Name", + " RegenCoilHWOutletNode, !- Water Outlet Node Name", + " Regen Coil Inlet Node, !- Air Inlet Node Name", + " HX Regen Inlet Node, !- Air Outlet Node Name", + " UFactorTimesAreaAndDesignWaterFlowRate, !- Performance Input Method", + " autosize, !- Rated Capacity {W}", + " 82.2, !- Rated Inlet Water Temperature {C}", + " 16.6, !- Rated Inlet Air Temperature {C}", + " 71.1, !- Rated Outlet Water Temperature {C}", + " 32.2, !- Rated Outlet Air Temperature {C}", + " ; !- Rated Ratio for Air and Water Convection", + + " Branch,", + " ZonesHWBypassBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " ZonesHWBypassPipe, !- Component 1 Name", + " ZonesHWBypassInletNode, !- Component 1 Inlet Node Name", + " ZonesHWBypassOutletNode; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " ZonesHWBypassPipe, !- Name", + " ZonesHWBypassInletNode, !- Inlet Node Name", + " ZonesHWBypassOutletNode; !- Outlet Node Name", + + " PlantEquipmentOperationSchemes,", + " Hot Loop Operation, !- Name", + " PlantEquipmentOperation:HeatingLoad, !- Control Scheme 1 Object Type", + " Purchased Heating Only, !- Control Scheme 1 Name", + " Constant; !- Control Scheme 1 Schedule Name", + + " PlantEquipmentOperation:HeatingLoad,", + " Purchased Heating Only, !- Name", + " 0, !- Load Range 1 Lower Limit {W}", + " 1000000, !- Load Range 1 Upper Limit {W}", + " heating plant; !- Range 1 Equipment List Name", + + " PlantEquipmentList,", + " heating plant, !- Name", + " DistrictHeating, !- Equipment 1 Object Type", + " Purchased Heating; !- Equipment 1 Name", + + " DistrictHeating,", + " Purchased Heating, !- Name", + " Purchased Heat Inlet Node, !- Hot Water Inlet Node Name", + " Purchased Heat Outlet Node, !- Hot Water Outlet Node Name", + " 1000000; !- Nominal Capacity {W}", + + }); + + ASSERT_TRUE(process_idf(idf_objects)); + + OutputProcessor::TimeValue.allocate(2); + DataGlobals::DDOnlySimulation = true; + + SimulationManager::GetProjectData(); + OutputReportPredefined::SetPredefinedTables(); + createFacilityElectricPowerServiceObject(); + SetPreConstructionInputParameters(); // establish array bounds for constructions early + BranchInputManager::ManageBranchInput(); + BeginSimFlag = true; + BeginEnvrnFlag = true; + ZoneSizingCalc = true; + SysSizingCalc = true; + SizingManager::ManageSizing(); + + DataSizing::CurSysNum = 1; + DataSizing::CurOASysNum = 0; + + GetDesiccantDehumidifierInput(); + EXPECT_EQ(1, NumDesicDehums); + EXPECT_EQ(1, NumGenericDesicDehums); + EXPECT_EQ("DESICCANT 1", DesicDehum(DesicDehumNum).Name); + EXPECT_EQ("DESICCANT REGEN COIL", DesicDehum(DesicDehumNum).RegenCoilName); + EXPECT_EQ("COIL:HEATING:WATER", DesicDehum(DesicDehumNum).RegenCoilType); + + CompName = DesicDehum(DesicDehumNum).Name; + CompIndex = NumGenericDesicDehums; + // set design parameters and calculate HW coil design capacity + RegCoilDesInletTemp = 8.5; + DataSizing::FinalSysSizing(DataSizing::CurSysNum).HeatOutTemp = RegCoilDesInletTemp; + RegCoilDesOutletTemp = DesiccantDehumidifiers::DesicDehum(DesicDehumNum).RegenSetPointTemp; + DataSizing::FinalSysSizing(DataSizing::CurSysNum).DesMainVolFlow = 1.07; + RegCoilInletAirMassFlowRate = DataEnvironment::StdRhoAir * DataSizing::FinalSysSizing(DataSizing::CurSysNum).DesMainVolFlow; + RegCoilCapacity = RegCoilInletAirMassFlowRate * PsyCpAirFnWTdb(0.0, 20.0) * (RegCoilDesOutletTemp - RegCoilDesInletTemp); + + // simulate to determine HW coil design capacity + SimDesiccantDehumidifier(CompName, FirstHVACIteration, CompIndex); + for (loop = 1; loop <= NumWaterCoils; ++loop) { if (WaterCoil(loop).Name == DesicDehum(DesicDehumNum).RegenCoilName) { CoilIndex = loop; } - } - // verify results - EXPECT_EQ( RegCoilCapacity, WaterCoil( CoilIndex ).DesWaterHeatingCoilRate ); - } + } + // verify results + EXPECT_EQ(RegCoilCapacity, WaterCoil(CoilIndex).DesWaterHeatingCoilRate); +} TEST_F(EnergyPlusFixture, DesiccantDehum_VSCoolingCoilOnPrimaryAirSystemTest) { - // this unit test is derived from DesiccantDehum_OnPrimaryAirSystemTest but uses a VS dx coil instead - - std::string CompName( "" ); - bool FirstHVACIteration( true ); - int DesicDehumNum( 1 ); - int CompIndex( 1 ); - int CoilIndex( 0 ); - int loop( 0 ); - Real64 RegCoilDesInletTemp( 0.0 ); - Real64 RegCoilDesOutletTemp( 0.0 ); - Real64 RegCoilInletAirMassFlowRate( 0.0 ); - Real64 RegCoilCapacity( 0.0 ); - - std::string const idf_objects = delimited_string( { - - " Version,8.9;", - - " Timestep,6;", - - " Building,", - " Bldg, !- Name", - " 0.0, !- North Axis {deg}", - " Suburbs, !- Terrain", - " 0.05, !- Loads Convergence Tolerance Value", - " 0.05, !- Temperature Convergence Tolerance Value {deltaC}", - " MinimalShadowing, !- Solar Distribution", - " 30, !- Maximum Number of Warmup Days", - " 6; !- Minimum Number of Warmup Days", - - " SurfaceConvectionAlgorithm:Inside,Simple;", - - " SurfaceConvectionAlgorithm:Outside,SimpleCombined;", - - " HeatBalanceAlgorithm,ConductionTransferFunction;", - - " SimulationControl,", - " Yes, !- Do Zone Sizing Calculation", - " Yes, !- Do System Sizing Calculation", - " No, !- Do Plant Sizing Calculation", - " Yes, !- Run Simulation for Sizing Periods", - " No; !- Run Simulation for Weather File Run Periods", - - " RunPeriod,", - " , !- Name", - " 1, !- Begin Month", - " 1, !- Begin Day of Month", - " , !- Begin Year", - " 1, !- End Month", - " 5, !- End Day of Month", - " , !- End Year", - " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " Yes; !- Use Weather File Snow Indicators", - - " Site:Location,", - " Miami Intl Ap FL USA WMO=722020, !- Name", - " 25.82, !- Latitude {deg}", - " -80.30, !- Longitude {deg}", - " -5.00, !- Time Zone {hr}", - " 11.00; !- Elevation {m}", - - " SizingPeriod:DesignDay,", - " Miami Intl Ap Ann Htg 99.6% Condns DB, !- Name", - " 1, !- Month", - " 21, !- Day of Month", - " WinterDesignDay, !- Day Type", - " 8.7, !- Maximum Dry-Bulb Temperature {C}", - " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " 8.7, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 101217., !- Barometric Pressure {Pa}", - " 3.8, !- Wind Speed {m/s}", - " 340, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 0.00; !- Sky Clearness", - - " SizingPeriod:DesignDay,", - " Miami Intl Ap Ann Clg .4% Condns DB=>MWB, !- Name", - " 7, !- Month", - " 21, !- Day of Month", - " SummerDesignDay, !- Day Type", - " 33.2, !- Maximum Dry-Bulb Temperature {C}", - " 6.7, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " 25.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 101217., !- Barometric Pressure {Pa}", - " 4.5, !- Wind Speed {m/s}", - " 140, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 1.00; !- Sky Clearness", - - " Site:GroundTemperature:BuildingSurface,21.0,21.5,22.0,22.2,22.2,22.2,22.2,22.2,22.2,22.0,21.5,21.0;", - - " Material:NoMass,", - " R13LAYER, !- Name", - " Rough, !- Roughness", - " 2.290965, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material:NoMass,", - " R31LAYER, !- Name", - " Rough, !- Roughness", - " 5.456, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " C5 - 4 IN HW CONCRETE, !- Name", - " MediumRough, !- Roughness", - " 0.1014984, !- Thickness {m}", - " 1.729577, !- Conductivity {W/m-K}", - " 2242.585, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - - " Construction,", - " R13WALL, !- Name", - " R13LAYER; !- Outside Layer", - - " Construction,", - " FLOOR, !- Name", - " C5 - 4 IN HW CONCRETE; !- Outside Layer", - - " Construction,", - " ROOF31, !- Name", - " R31LAYER; !- Outside Layer", - - " Zone,", - " Main Zone, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " CounterClockWise, !- Vertex Entry Direction", - " relative; !- Coordinate System", - - " BuildingSurface:Detailed,", - " Zn001:Wall001, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " Main Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 15.24000,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,0,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall002, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " Main Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000,0,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 15.24000,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 15.24000,15.24000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall003, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " Main Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 15.24000,15.24000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,15.24000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall004, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " Main Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,15.24000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,0,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Flr001, !- Name", - " Floor, !- Surface Type", - " FLOOR, !- Construction Name", - " Main Zone, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn001:Flr001, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000,0.000000,0.0, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000,0.000000,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 0.000000,15.24000,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,15.24000,0.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Roof001, !- Name", - " Roof, !- Surface Type", - " ROOF31, !- Construction Name", - " Main Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.000000,15.24000,4.572, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000,0.000000,4.572, !- X,Y,Z ==> Vertex 2 {m}", - " 15.24000,0.000000,4.572, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,15.24000,4.572; !- X,Y,Z ==> Vertex 4 {m}", - - " ScheduleTypeLimits,", - " Any Number; !- Name", - - " ScheduleTypeLimits,", - " Fraction, !- Name", - " 0.0, !- Lower Limit Value", - " 1.0, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - " ScheduleTypeLimits,", - " Temperature, !- Name", - " -60, !- Lower Limit Value", - " 200, !- Upper Limit Value", - " CONTINUOUS, !- Numeric Type", - " Temperature; !- Unit Type", - - " ScheduleTypeLimits,", - " Control Type, !- Name", - " 0, !- Lower Limit Value", - " 4, !- Upper Limit Value", - " DISCRETE; !- Numeric Type", - - " ScheduleTypeLimits,", - " On/Off, !- Name", - " 0, !- Lower Limit Value", - " 1, !- Upper Limit Value", - " DISCRETE; !- Numeric Type", - - " ScheduleTypeLimits,", - " FlowRate, !- Name", - " 0.0, !- Lower Limit Value", - " 10, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - " ScheduleTypeLimits,", - " Humidity, !- Name", - " 0, !- Lower Limit Value", - " 100, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - " Schedule:Compact,", - " OCCUPY-1, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", - " Until: 8:00,0.0, !- Field 3", - " Until: 11:00,1.00, !- Field 5", - " Until: 12:00,0.80, !- Field 7", - " Until: 13:00,0.40, !- Field 9", - " Until: 14:00,0.80, !- Field 11", - " Until: 18:00,1.00, !- Field 13", - " Until: 19:00,0.50, !- Field 15", - " Until: 21:00,0.10, !- Field 17", - " Until: 24:00,0.0, !- Field 19", - " For: Weekends WinterDesignDay Holiday, !- Field 21", - " Until: 24:00,0.0; !- Field 22", - - " Schedule:Compact,", - " LIGHTS-1, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", - " Until: 8:00,0.05, !- Field 3", - " Until: 9:00,0.9, !- Field 5", - " Until: 10:00,0.95, !- Field 7", - " Until: 11:00,1.00, !- Field 9", - " Until: 12:00,0.95, !- Field 11", - " Until: 13:00,0.8, !- Field 13", - " Until: 14:00,0.9, !- Field 15", - " Until: 18:00,1.00, !- Field 17", - " Until: 19:00,0.60, !- Field 19", - " Until: 21:00,0.20, !- Field 21", - " Until: 24:00,0.05, !- Field 23", - " For: Weekends WinterDesignDay Holiday, !- Field 25", - " Until: 24:00,0.05; !- Field 26", - - " Schedule:Compact,", - " EQUIP-1, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", - " Until: 8:00,0.02, !- Field 3", - " Until: 9:00,0.4, !- Field 5", - " Until: 14:00,0.9, !- Field 7", - " Until: 15:00,0.8, !- Field 9", - " Until: 16:00,0.7, !- Field 11", - " Until: 18:00,0.5, !- Field 13", - " Until: 20:00,0.3, !- Field 15", - " Until: 24:00,0.02, !- Field 17", - " For: Weekends WinterDesignDay Holiday, !- Field 19", - " Until: 24:00,0.2; !- Field 20", - - " Schedule:Compact,", - " INFIL-SCH, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 3/31, !- Field 1", - " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", - " Until: 24:00,1.0, !- Field 3", - " For: AllOtherDays, !- Field 5", - " Until: 24:00,1.0, !- Field 6", - " Through: 9/30, !- Field 8", - " For: AllDays, !- Field 9", - " Until: 24:00,0.7, !- Field 10", - " Through: 12/31, !- Field 12", - " For: AllDays, !- Field 13", - " Until: 24:00,1.0, !- Field 14", - " For: AllOtherDays, !- Field 16", - " Until: 24:00,0.2; !- Field 17", - - " Schedule:Compact,", - " ActSchd, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,117.239997864; !- Field 3", - - " Schedule:Compact,", - " ShadeTransSch, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,0.0; !- Field 3", - - " Schedule:Compact,", - " Htg-SetP-Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: SummerDesignDay, !- Field 2", - " Until: 24:00,12.8, !- Field 3", - " For: WinterDesignDay, !- Field 5", - " Until: 24:00,21.1, !- Field 6", - " For: WeekEnds Holiday, !- Field 8", - " Until: 7:00,12.8, !- Field 9", - " Until: 13:00,21.1, !- Field 11", - " Until: 24:00,12.8, !- Field 13", - " For: AllOtherDays, !- Field 15", - " Until: 7:00,12.8, !- Field 16", - " Until: 18:00,21.1, !- Field 18", - " Until: 24:00,12.8; !- Field 20", - - " Schedule:Compact,", - " PlenumHtg-SetP-Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,12.8; !- Field 3", - - " Schedule:Compact,", - " Clg-SetP-Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: SummerDesignDay, !- Field 2", - " Until: 24:00,23.9, !- Field 3", - " For: WinterDesignDay, !- Field 5", - " Until: 24:00,40.0, !- Field 6", - " For: WeekEnds Holiday, !- Field 8", - " Until: 7:00,40.0, !- Field 9", - " Until: 13:00,23.9, !- Field 11", - " Until: 24:00,32.2, !- Field 13", - " For: AllOtherDays, !- Field 15", - " Until: 7:00,40.0, !- Field 16", - " Until: 18:00,23.9, !- Field 18", - " Until: 24:00,40.0; !- Field 20", - - " Schedule:Compact,", - " PlenumClg-SetP-Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,40.0; !- Field 3", - - " Schedule:Compact,", - " Zone Control Type Sched, !- Name", - " Control Type, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: SummerDesignDay, !- Field 2", - " Until: 24:00,2, !- Field 3", - " For: WinterDesignDay, !- Field 5", - " Until: 24:00,1, !- Field 6", - " For: AllOtherDays, !- Field 8", - " Until: 24:00,4; !- Field 9", - - " Schedule:Compact,", - " Desiccant Control Type Sched, !- Name", - " Control Type, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,4; !- Field 3", - - " Schedule:Compact,", - " Min OA Sched, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Weekdays, !- Field 2", - " Until: 7:00,0.02, !- Field 3", - " Until: 17:00,1.0, !- Field 5", - " Until: 24:00,0.0, !- Field 7", - " For: AllOtherDays, !- Field 9", - " Until: 24:00,0.02; !- Field 10", - - " Schedule:Compact,", - " FanAvailSched, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 3/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0, !- Field 3", - " Through: 9/30, !- Field 5", - " For: WeekDays, !- Field 6", - " Until: 7:00,0.0, !- Field 7", - " Until: 17:00,1.0, !- Field 9", - " Until: 24:00,0.0, !- Field 11", - " For: SummerDesignDay WinterDesignDay, !- Field 13", - " Until: 24:00,1.0, !- Field 14", - " For: AllOtherDays, !- Field 16", - " Until: 24:00,0.0, !- Field 17", - " Through: 12/31, !- Field 19", - " For: AllDays, !- Field 20", - " Until: 24:00,1.0; !- Field 21", - - " Schedule:Compact,", - " Seasonal Reset Supply Air Temp Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 3/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,17.0, !- Field 3", - " Through: 9/30, !- Field 5", - " For: AllDays, !- Field 6", - " Until: 24:00,15.0, !- Field 7", - " Through: 12/31, !- Field 9", - " For: AllDays, !- Field 10", - " Until: 24:00,17.0; !- Field 11", - - " Schedule:Compact,", - " Constant, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0; !- Field 3", - - " People,", - " Main Zone People 1, !- Name", - " Main Zone, !- Zone or ZoneList Name", - " OCCUPY-1, !- Number of People Schedule Name", - " people, !- Number of People Calculation Method", - " 20, !- Number of People", - " , !- People per Zone Floor Area {person/m2}", - " , !- Zone Floor Area per Person {m2/person}", - " 0.3, !- Fraction Radiant", - " AutoCalculate, !- Sensible Heat Fraction", - " ActSchd; !- Activity Level Schedule Name", - - " Lights,", - " Main Zone Lights 1, !- Name", - " Main Zone, !- Zone or ZoneList Name", - " LIGHTS-1, !- Schedule Name", - " LightingLevel, !- Design Level Calculation Method", - " 2964, !- Lighting Level {W}", - " , !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.2, !- Return Air Fraction", - " 0.59, !- Fraction Radiant", - " 0.2, !- Fraction Visible", - " 0, !- Fraction Replaceable", - " GeneralLights; !- End-Use Subcategory", - - " ElectricEquipment,", - " Main Zone ElecEq 1, !- Name", - " Main Zone, !- Zone or ZoneList Name", - " EQUIP-1, !- Schedule Name", - " EquipmentLevel, !- Design Level Calculation Method", - " 19760, !- Design Level {W}", - " , !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.5, !- Fraction Latent", - " 0.3, !- Fraction Radiant", - " 0; !- Fraction Lost", - - " ZoneInfiltration:DesignFlowRate,", - " Main Zone Infil 1, !- Name", - " Main Zone, !- Zone or ZoneList Name", - " INFIL-SCH, !- Schedule Name", - " flow/zone, !- Design Flow Rate Calculation Method", - " 0.031089, !- Design Flow Rate {m3/s}", - " , !- Flow per Zone Floor Area {m3/s-m2}", - " , !- Flow per Exterior Surface Area {m3/s-m2}", - " , !- Air Changes per Hour {1/hr}", - " 0, !- Constant Term Coefficient", - " 0, !- Temperature Term Coefficient", - " 0.2237, !- Velocity Term Coefficient", - " 0; !- Velocity Squared Term Coefficient", - - " Sizing:Zone,", - " Main Zone, !- Zone or ZoneList Name", - " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", - " 14., !- Zone Cooling Design Supply Air Temperature {C}", - " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", - " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", - " 50., !- Zone Heating Design Supply Air Temperature {C}", - " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", - " 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " SZ DSOA Main Zone, !- Design Specification Outdoor Air Object Name", - " 0.0, !- Zone Heating Sizing Factor", - " 0.0, !- Zone Cooling Sizing Factor", - " DesignDayWithLimit, !- Cooling Design Air Flow Method", - " , !- Cooling Design Air Flow Rate {m3/s}", - " , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", - " , !- Cooling Minimum Air Flow {m3/s}", - " , !- Cooling Minimum Air Flow Fraction", - " DesignDay, !- Heating Design Air Flow Method", - " , !- Heating Design Air Flow Rate {m3/s}", - " , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", - " , !- Heating Maximum Air Flow {m3/s}", - " ; !- Heating Maximum Air Flow Fraction", - - " DesignSpecification:OutdoorAir,", - " SZ DSOA Main Zone, !- Name", - " sum, !- Outdoor Air Method", - " 0.00236, !- Outdoor Air Flow per Person {m3/s-person}", - " 0.000305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}", - " 0.0; !- Outdoor Air Flow per Zone {m3/s}", - - " Sizing:System,", - " Desiccant DXSystem, !- AirLoop Name", - " sensible, !- Type of Load to Size On", - " autosize, !- Design Outdoor Air Flow Rate {m3/s}", - " 0.3, !- Central Heating Maximum System Air Flow Ratio", - " 4.5, !- Preheat Design Temperature {C}", - " 0.008, !- Preheat Design Humidity Ratio {kgWater/kgDryAir}", - " 11.0, !- Precool Design Temperature {C}", - " 0.008, !- Precool Design Humidity Ratio {kgWater/kgDryAir}", - " 12.8, !- Central Cooling Design Supply Air Temperature {C}", - " 16.7, !- Central Heating Design Supply Air Temperature {C}", - " noncoincident, !- Type of Zone Sum to Use", - " no, !- 100% Outdoor Air in Cooling", - " no, !- 100% Outdoor Air in Heating", - " 0.008, !- Central Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " 0.008, !- Central Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " DesignDay, !- Cooling Design Air Flow Method", - " 0, !- Cooling Design Air Flow Rate {m3/s}", - " , !- Supply Air Flow Rate Per Floor Area During Cooling Operation {m3/s-m2}", - " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", - " , !- Design Supply Air Flow Rate Per Unit Cooling Capacity {m3/s-W}", - " DesignDay, !- Heating Design Air Flow Method", - " 0, !- Heating Design Air Flow Rate {m3/s}", - " , !- Supply Air Flow Rate Per Floor Area During Heating Operation {m3/s-m2}", - " , !- Fraction of Autosized Design Heating Supply Air Flow Rate", - " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", - " , !- Design Supply Air Flow Rate Per Unit Heating Capacity {m3/s-W}", - " , !- System Outdoor Air Method", - " 1.0, !- Zone Maximum Outdoor Air Fraction {dimensionless}", - " CoolingDesignCapacity, !- Cooling Design Capacity Method", - " autosize, !- Cooling Design Capacity {W}", - " , !- Cooling Design Capacity Per Floor Area {W/m2}", - " , !- Fraction of Autosized Cooling Design Capacity", - " HeatingDesignCapacity, !- Heating Design Capacity Method", - " autosize, !- Heating Design Capacity {W}", - " , !- Heating Design Capacity Per Floor Area {W/m2}", - " , !- Fraction of Autosized Heating Design Capacity", - " VAV; !- Central Cooling Capacity Control Method", - - " Curve:Biquadratic,", - " HPACCoolCapFT, !- Name", - " 0.942587793, !- Coefficient1 Constant", - " 0.009543347, !- Coefficient2 x", - " 0.00068377, !- Coefficient3 x**2", - " -0.011042676, !- Coefficient4 y", - " 0.000005249, !- Coefficient5 y**2", - " -0.00000972, !- Coefficient6 x*y", - " -100, !- Minimum Value of x", - " 100, !- Maximum Value of x", - " -100, !- Minimum Value of y", - " 100, !- Maximum Value of y", - " , !- Minimum Curve Output", - " , !- Maximum Curve Output", - " Temperature, !- Input Unit Type for X", - " Temperature, !- Input Unit Type for Y", - " Dimensionless; !- Output Unit Type", - - " Curve:Biquadratic,", - " HPACCOOLEIRFT, !- Name", - " 0.342414409, !- Coefficient1 Constant", - " 0.034885008, !- Coefficient2 x", - " -0.0006237, !- Coefficient3 x**2", - " 0.004977216, !- Coefficient4 y", - " 0.000437951, !- Coefficient5 y**2", - " -0.000728028, !- Coefficient6 x*y", - " -100, !- Minimum Value of x", - " 100, !- Maximum Value of x", - " -100, !- Minimum Value of y", - " 100, !- Maximum Value of y", - " , !- Minimum Curve Output", - " , !- Maximum Curve Output", - " Temperature, !- Input Unit Type for X", - " Temperature, !- Input Unit Type for Y", - " Dimensionless; !- Output Unit Type", - - " Curve:Quadratic,", - " HPACCoolCapFFF, !- Name", - " 0.8, !- Coefficient1 Constant", - " 0.2, !- Coefficient2 x", - " 0.0, !- Coefficient3 x**2", - " 0.0, !- Minimum Value of x", - " 1.0; !- Maximum Value of x", - - " Curve:Quadratic,", - " HPACCOOLEIRFFF, !- Name", - " 1.1552, !- Coefficient1 Constant", - " -0.1808, !- Coefficient2 x", - " 0.0256, !- Coefficient3 x**2", - " 0.0, !- Minimum Value of x", - " 1.0; !- Maximum Value of x", - - " Curve:Quadratic,", - " HPACCOOLPLFFPLR, !- Name", - " 0.75, !- Coefficient1 Constant", - " 0.25, !- Coefficient2 x", - " 0.0, !- Coefficient3 x**2", - " 0.0, !- Minimum Value of x", - " 1.0; !- Maximum Value of x", - - " Curve:Cubic,", - " PackagedRatedCoolCapFFlow, !- Name", - " 0.47278589, !- Coefficient1 Constant", - " 1.2433415, !- Coefficient2 x", - " -1.0387055, !- Coefficient3 x**2", - " 0.32257813, !- Coefficient4 x**3", - " 0.5, !- Minimum Value of x", - " 1.5, !- Maximum Value of x", - " , !- Minimum Curve Output", - " , !- Maximum Curve Output", - " Dimensionless, !- Input Unit Type for X", - " Dimensionless; !- Output Unit Type", - - " Curve:Cubic,", - " PackagedRatedCoolEIRFFlow, !- Name", - " 1.0079484, !- Coefficient1 Constant", - " 0.34544129, !- Coefficient2 x", - " -.6922891, !- Coefficient3 x**2", - " 0.33889943, !- Coefficient4 x**3", - " 0.5, !- Minimum Value of x", - " 1.5, !- Maximum Value of x", - " , !- Minimum Curve Output", - " , !- Maximum Curve Output", - " Dimensionless, !- Input Unit Type for X", - " Dimensionless; !- Output Unit Type", - - " Curve:Cubic,", - " EXHAUSTFANPLF, !- Name", - " 0, !- Coefficient1 Constant", - " 1, !- Coefficient2 x", - " 0.0, !- Coefficient3 x**2", - " 0.0, !- Coefficient4 x**3", - " 0.0, !- Minimum Value of x", - " 1.0; !- Maximum Value of x", - - " NodeList,", - " Main Zone In Nodes, !- Name", - " Main Zone In Node; !- Node 1 Name", - - " NodeList,", - " Desiccant DX Air Loop Setpoint Nodes, !- Name", - " HX Process Outlet Node, !- Node 1 Name", - " Desiccant DXSystem Mixed Air Node; !- Node 2 Name", - - " NodeList,", - " Regen Setpoint Nodes, !- Name", - " HX Regen Inlet Node; !- Node 1 Name", - - " BranchList,", - " Desiccant Air Loop Branches, !- Name", - " Desiccant Air Loop Main Branch; !- Branch 1 Name", - - " Branch,", - " Desiccant Air Loop Main Branch, !- Name", - " , !- Pressure Drop Curve Name", - " AirLoopHVAC:OutdoorAirSystem, !- Component 1 Object Type", - " Desiccant DXSystem OA System, !- Component 1 Name", - " Desiccant DXSystem Air Loop Inlet Node, !- Component 1 Inlet Node Name", - " Desiccant DXSystem Mixed Air Node, !- Component 1 Outlet Node Name", - " CoilSystem:Cooling:DX, !- Component 2 Object Type", - " Desiccant DXSystem Cooling Coil Sys, !- Component 2 Name", - " Desiccant DXSystem Mixed Air Node, !- Component 2 Inlet Node Name", - " HX Process Inlet Node, !- Component 2 Outlet Node Name", - " Dehumidifier:Desiccant:System, !- Component 3 Object Type", - " Desiccant 1, !- Component 3 Name", - " HX Process Inlet Node, !- Component 3 Inlet Node Name", - " HX Process Outlet Node, !- Component 3 Outlet Node Name", - " Fan:ConstantVolume, !- Component 4 Object Type", - " Desiccant DXSystem Supply Fan, !- Component 4 Name", - " HX Process Outlet Node, !- Component 4 Inlet Node Name", - " Desiccant Supply Fan Outlet Node, !- Component 4 Outlet Node Name", - " Coil:Heating:Fuel, !- Component 5 Object Type", - " Desiccant Process Heating Coil, !- Component 5 Name", - " Desiccant Supply Fan Outlet Node, !- Component 5 Inlet Node Name", - " Desiccant DXSystem Air Loop Outlet Node; !- Component 5 Outlet Node Name", - - " AirLoopHVAC,", - " Desiccant DXSystem, !- Name", - " , !- Controller List Name", - " Desiccant Avail List, !- Availability Manager List Name", - " autosize, !- Design Supply Air Flow Rate {m3/s}", - " Desiccant Air Loop Branches, !- Branch List Name", - " , !- Connector List Name", - " Desiccant DXSystem Air Loop Inlet Node, !- Supply Side Inlet Node Name", - " Desiccant DXSystem Return Air Mixer Outlet Node, !- Demand Side Outlet Node Name", - " Desiccant DXSystem Zone Equipment Inlet Node, !- Demand Side Inlet Node Names", - " Desiccant DXSystem Air Loop Outlet Node; !- Supply Side Outlet Node Names", - - " AirLoopHVAC:ControllerList,", - " Desiccant DXSystem OA System Controllers, !- Name", - " Controller:OutdoorAir, !- Controller 1 Object Type", - " Desiccant OA Controller; !- Controller 1 Name", - - " AirLoopHVAC:OutdoorAirSystem:EquipmentList,", - " Desiccant DXSystem OA System Equipment, !- Name", - " OutdoorAir:Mixer, !- Component 1 Object Type", - " Desiccant DXSystem OA Mixing Box; !- Component 1 Name", - - " AirLoopHVAC:OutdoorAirSystem,", - " Desiccant DXSystem OA System, !- Name", - " Desiccant DXSystem OA System Controllers, !- Controller List Name", - " Desiccant DXSystem OA System Equipment, !- Outdoor Air Equipment List Name", - " Desiccant Outdoor Air Avail List; !- Availability Manager List Name", - - " OutdoorAir:NodeList,", - " OutsideAirInletNodes; !- Node or NodeList Name 1", - - " OutdoorAir:NodeList,", - " Desiccant DXSystem Outside Air Inlet Node, !- Node or NodeList Name 1", - " Desiccant Outside Air Inlet Node 2; !- Node or NodeList Name 2", - - " OutdoorAir:NodeList,", - " Regen Coil Inlet Node; !- Node or NodeList Name 1", - - " OutdoorAir:NodeList,", - " Condenser Inlet Node; !- Node or NodeList Name 1", - - " OutdoorAir:Mixer,", - " Desiccant DXSystem OA Mixing Box, !- Name", - " Desiccant DXSystem Mixed Air Node, !- Mixed Air Node Name", - " Desiccant DXSystem Outside Air Inlet Node, !- Outdoor Air Stream Node Name", - " Desiccant DXSystem Relief Air Outlet Node, !- Relief Air Stream Node Name", - " Desiccant DXSystem Air Loop Inlet Node; !- Return Air Stream Node Name", - - " AvailabilityManagerAssignmentList,", - " Desiccant Avail List, !- Name", - " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", - " Desiccant DXSystem Avail;!- Availability Manager 1 Name", - - " AvailabilityManagerAssignmentList,", - " Desiccant Outdoor Air Avail List, !- Name", - " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", - " Desiccant Outdoor Air Avail; !- Availability Manager 1 Name", - - " AvailabilityManager:Scheduled,", - " Desiccant DXSystem Avail,!- Name", - " FanAvailSched; !- Schedule Name", - - " AvailabilityManager:Scheduled,", - " Desiccant Outdoor Air Avail, !- Name", - " FanAvailSched; !- Schedule Name", - - " SetpointManager:SingleZone:Heating,", - " Heating Supply Air Temp Manager, !- Name", - " Temperature, !- Control Variable", - " -99., !- Minimum Supply Air Temperature {C}", - " 99., !- Maximum Supply Air Temperature {C}", - " Main Zone, !- Control Zone Name", - " Main Zone Node, !- Zone Node Name", - " Main Zone In Node, !- Zone Inlet Node Name", - " Desiccant DXSystem Air Loop Outlet Node; !- Setpoint Node or NodeList Name", - - " SetpointManager:SingleZone:Cooling,", - " Cooling Supply Air Temp Manager, !- Name", - " Temperature, !- Control Variable", - " -99., !- Minimum Supply Air Temperature {C}", - " 99., !- Maximum Supply Air Temperature {C}", - " Main Zone, !- Control Zone Name", - " Main Zone Node, !- Zone Node Name", - " Main Zone In Node, !- Zone Inlet Node Name", - " Desiccant Supply Fan Outlet Node; !- Setpoint Node or NodeList Name", - - " SetpointManager:SingleZone:Humidity:Maximum,", - " Zone Max Humidity Manager, !- Name", - " HX Process Outlet Node, !- Setpoint Node or NodeList Name", - " Main Zone Node; !- Control Zone Air Node Name", - - " SetpointManager:MixedAir,", - " Adjusted Cooling Supply Air Temp Manager, !- Name", - " Temperature, !- Control Variable", - " Desiccant Supply Fan Outlet Node, !- Reference Setpoint Node Name", - " HX Process Outlet Node, !- Fan Inlet Node Name", - " Desiccant Supply Fan Outlet Node, !- Fan Outlet Node Name", - " HX Process Outlet Node; !- Setpoint Node or NodeList Name", - - " Controller:OutdoorAir,", - " Desiccant OA Controller, !- Name", - " Desiccant DXSystem Relief Air Outlet Node, !- Relief Air Outlet Node Name", - " Desiccant DXSystem Air Loop Inlet Node, !- Return Air Node Name", - " Desiccant DXSystem Mixed Air Node, !- Mixed Air Node Name", - " Desiccant DXSystem Outside Air Inlet Node, !- Actuator Node Name", - " autosize, !- Minimum Outdoor Air Flow Rate {m3/s}", - " autosize, !- Maximum Outdoor Air Flow Rate {m3/s}", - " NoEconomizer, !- Economizer Control Type", - " ModulateFlow, !- Economizer Control Action Type", - " 100., !- Economizer Maximum Limit Dry-Bulb Temperature {C}", - " , !- Economizer Maximum Limit Enthalpy {J/kg}", - " , !- Economizer Maximum Limit Dewpoint Temperature {C}", - " , !- Electronic Enthalpy Limit Curve Name", - " , !- Economizer Minimum Limit Dry-Bulb Temperature {C}", - " NoLockout, !- Lockout Type", - " FixedMinimum, !- Minimum Limit Type", - " Min OA Sched, !- Minimum Outdoor Air Schedule Name", - " , !- Minimum Fraction of Outdoor Air Schedule Name", - " , !- Maximum Fraction of Outdoor Air Schedule Name", - " 0; !- Mechanical Ventilation Controller Name", - - " ZoneHVAC:EquipmentConnections,", - " Main Zone, !- Zone Name", - " Main Zone Eq, !- Zone Conditioning Equipment List Name", - " Main Zone In Nodes, !- Zone Air Inlet Node or NodeList Name", - " , !- Zone Air Exhaust Node or NodeList Name", - " Main Zone Node, !- Zone Air Node Name", - " Main Zone Out Node; !- Zone Return Air Node Name", - - " ZoneHVAC:EquipmentList,", - " Main Zone Eq, !- Name", - " SequentialLoad, !- Load Distribution Scheme", - " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", - " Main Zone Direct Air ADU, !- Zone Equipment 1 Name", - " 1, !- Zone Equipment 1 Cooling Sequence", - " 1; !- Zone Equipment 1 Heating or No-Load Sequence", - - " ZoneHVAC:AirDistributionUnit,", - " Main Zone Direct Air ADU, !- Name", - " Main Zone In Node, !- Air Distribution Unit Outlet Node Name", - " AirTerminal:SingleDuct:ConstantVolume:NoReheat, !- Air Terminal Object Type", - " Main Zone Direct Air; !- Air Terminal Name", - - " AirTerminal:SingleDuct:ConstantVolume:NoReheat,", - " Main Zone Direct Air, !- Name", - " Constant, !- Availability Schedule Name", - " Main Zone In Node 2AT, !- Air Inlet Node Name", - " Main Zone In Node, !- Air Outlet Node Name", - " autosize; !- Maximum Air Flow Rate {m3/s}", - - " CoilSystem:Cooling:DX,", - " Desiccant DXSystem Cooling Coil Sys, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " Desiccant DXSystem Mixed Air Node, !- DX Cooling Coil System Inlet Node Name", - " HX Process Inlet Node, !- DX Cooling Coil System Outlet Node Name", - " HX Process Outlet Node, !- DX Cooling Coil System Sensor Node Name", - " Coil:Cooling:DX:VariableSpeed, !- Cooling Coil Object Type", - " Desiccant DXSystem Cooling Coil; !- Cooling Coil Name", - - " ZoneControl:Thermostat,", - " Main Zone Control, !- Name", - " Main Zone, !- Zone or ZoneList Name", - " Desiccant Control Type Sched, !- Control Type Schedule Name", - " ThermostatSetpoint:DualSetpoint, !- Control 1 Object Type", - " DualSetPoint; !- Control 1 Name", - - " ZoneControl:Humidistat,", - " Main Zone Humidistat, !- Name", - " Main Zone, !- Zone Name", - " Relative Humidity Sched; !- Humidifying Relative Humidity Setpoint Schedule Name", - - " Schedule:Compact,", - " Relative Humidity Sched, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,45.0; !- Field 3", - - " ThermostatSetpoint:SingleHeating,", - " HeatingSetpoint, !- Name", - " Htg-SetP-Sch; !- Setpoint Temperature Schedule Name", - - " ThermostatSetpoint:SingleHeating,", - " PlenumHeatingSetpoint, !- Name", - " PlenumHtg-SetP-Sch; !- Setpoint Temperature Schedule Name", - - " ThermostatSetpoint:SingleCooling,", - " CoolingSetpoint, !- Name", - " Clg-SetP-Sch; !- Setpoint Temperature Schedule Name", - - " ThermostatSetpoint:SingleCooling,", - " PlenumCoolingSetpoint, !- Name", - " PlenumClg-SetP-Sch; !- Setpoint Temperature Schedule Name", - - " ThermostatSetpoint:DualSetpoint,", - " DualSetPoint, !- Name", - " Htg-SetP-Sch, !- Heating Setpoint Temperature Schedule Name", - " Clg-SetP-Sch; !- Cooling Setpoint Temperature Schedule Name", - - " AirLoopHVAC:SupplyPath,", - " Desiccant DXSystem Supply Path, !- Name", - " Desiccant DXSystem Zone Equipment Inlet Node, !- Supply Air Path Inlet Node Name", - " AirLoopHVAC:ZoneSplitter,!- Component 1 Object Type", - " Desiccant DXSystem Zone Supply Air Splitter; !- Component 1 Name", - - " AirLoopHVAC:ReturnPath,", - " Desiccant DXSystem Return Path, !- Name", - " Desiccant DXSystem Return Air Mixer Outlet Node, !- Return Air Path Outlet Node Name", - " AirLoopHVAC:ZoneMixer, !- Component 1 Object Type", - " Desiccant DXSystem Zone Return Air Mixer; !- Component 1 Name", - - " AirLoopHVAC:ZoneSplitter,", - " Desiccant DXSystem Zone Supply Air Splitter, !- Name", - " Desiccant DXSystem Zone Equipment Inlet Node, !- Inlet Node Name", - " Main Zone In Node 2AT; !- Outlet 1 Node Name", - - " AirLoopHVAC:ZoneMixer,", - " Desiccant DXSystem Zone Return Air Mixer, !- Name", - " Desiccant DXSystem Return Air Mixer Outlet Node, !- Outlet Node Name", - " Main Zone Out Node; !- Inlet 1 Node Name", - - " Coil:Heating:Fuel,", - " Desiccant Process Heating Coil, !- Name", - " Constant, !- Availability Schedule Name", - " Gas, !- Fuel Type", - " 0.8, !- Gas Burner Efficiency", - " autosize, !- Nominal Capacity {W}", - " Desiccant Supply Fan Outlet Node, !- Air Inlet Node Name", - " Desiccant DXSystem Air Loop Outlet Node, !- Air Outlet Node Name", - " Desiccant DXSystem Air Loop Outlet Node; !- Temperature Setpoint Node Name", - - " Coil:Heating:Fuel,", - " Desiccant Regen Coil, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " Gas, !- Fuel Type", - " 1, !- Gas Burner Efficiency", - " autosize, !- Nominal Capacity {W}", - " Regen Coil Inlet Node, !- Air Inlet Node Name", - " HX Regen Inlet Node; !- Air Outlet Node Name", - - " Coil:Cooling:DX:VariableSpeed,", - " Desiccant DXSystem Cooling Coil, !- Name", - " Desiccant DXSystem Mixed Air Node, !- Indoor Air Inlet Node Name", - " HX Process Inlet Node, !- Indoor Air Outlet Node Name", - " 1.0, !- Number of Speeds {dimensionless}", - " 1.0, !- Nominal Speed Level {dimensionless}", - " 22000, !- Gross Rated Total Cooling Capacity At Selected Nominal Speed Level {w}", - " 1.05, !- Rated Air Flow Rate At Selected Nominal Speed Level {m3/s}", - " 1000, !- Nominal Time for Condensate to Begin Leaving the Coil {s}", - " 0.4, !- Initial Moisture Evaporation Rate Divided by Steady-State AC Latent Capacity {dimensionless}", - " HPACCOOLPLFFPLR, !- Energy Part Load Fraction Curve Name", - " Condenser Inlet Node, !- Condenser Air Inlet Node Name", - " AirCooled, !- Condenser Type", - " , !- Evaporative Condenser Pump Rated Power Consumption {W}", - " 0.0, !- Crankcase Heater Capacity {W}", - " 10.0, !- Maximum Outdoor Dry-Bulb Temperature for Crankcase Heater Operation {C}", - " , !- Minimum Outdoor Dry-Bulb Temperature for Compressor Operation {C}", - " , !- Supply Water Storage Tank Name", - " , !- Condensate Collection Water Storage Tank Name", - " , !- Basin Heater Capacity {W/K}", - " , !- Basin Heater Setpoint Temperature {C}", - " , !- Basin Heater Operating Schedule Name", - " 36991.44197, !- Speed 1 Reference Unit Gross Rated Total Cooling Capacity {w}", - " 0.75, !- Speed 1 Reference Unit Gross Rated Sensible Heat Ratio {dimensionless}", - " 3.5, !- Speed 1 Reference Unit Gross Rated Cooling COP {dimensionless}", - " 3.776, !- Speed 1 Reference Unit Rated Air Flow Rate {m3/s}", - " 10.62, !- Speed 1 Reference Unit Rated Condenser Air Flow Rate {m3/s}", - " , !- Speed 1 Reference Unit Rated Pad Effectiveness of Evap Precooling {dimensionless}", - " HPCoolingCAPFTemp4, !- Speed 1 Total Cooling Capacity Function of Temperature Curve Name", - " HPACFFF, !- Speed 1 Total Cooling Capacity Function of Air Flow Fraction Curve Name", - " HPCoolingEIRFTemp4, !- Speed 1 Energy Input Ratio Function of Temperature Curve Name", - " HPACFFF; !- Speed 1 Energy Input Ratio Function of Air Flow Fraction Curve Name", - - " Curve:Cubic,", - " HPACFFF, !- Name", - " 1.0, !- Coefficient1 Constant", - " 0.0, !- Coefficient2 x", - " 0.0, !- Coefficient3 x**2", - " 0.0, !- Coefficient4 x**3", - " 0.5, !- Minimum Value of x", - " 1.5; !- Maximum Value of x", - - " Curve:Biquadratic,", - " HPCoolingEIRFTemp4, !- Name", - " 0.0001514017, !- Coefficient1 Constant", - " 0.0655062896, !- Coefficient2 x", - " -0.0020370821, !- Coefficient3 x**2", - " 0.0067823041, !- Coefficient4 y", - " 0.0004087196, !- Coefficient5 y**2", - " -0.0003552302, !- Coefficient6 x*y", - " 13.89, !- Minimum Value of x", - " 22.22, !- Maximum Value of x", - " 12.78, !- Minimum Value of y", - " 51.67, !- Maximum Value of y", - " 0.5141, !- Minimum Curve Output", - " 1.7044, !- Maximum Curve Output", - " Temperature, !- Input Unit Type for X", - " Temperature, !- Input Unit Type for Y", - " Dimensionless; !- Output Unit Type", - - " Curve:Biquadratic,", - " HPCoolingCAPFTemp4, !- Name", - " 1.3544202152, !- Coefficient1 Constant", - " -0.0493402773, !- Coefficient2 x", - " 0.0022649843, !- Coefficient3 x**2", - " 0.0008517727, !- Coefficient4 y", - " -0.0000426316, !- Coefficient5 y**2", - " -0.0003364517, !- Coefficient6 x*y", - " 13.89, !- Minimum Value of x", - " 22.22, !- Maximum Value of x", - " 12.78, !- Minimum Value of y", - " 51.67, !- Maximum Value of y", - " 0.7923, !- Minimum Curve Output", - " 1.2736, !- Maximum Curve Output", - " Temperature, !- Input Unit Type for X", - " Temperature, !- Input Unit Type for Y", - " Dimensionless; !- Output Unit Type", - - " Fan:ConstantVolume,", - " Desiccant DXSystem Supply Fan, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " 0.7, !- Fan Total Efficiency", - " 571.66, !- Pressure Rise {Pa}", - " autosize, !- Maximum Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1.0, !- Motor In Airstream Fraction", - " HX Process Outlet Node, !- Air Inlet Node Name", - " Desiccant Supply Fan Outlet Node; !- Air Outlet Node Name", - - " Fan:ConstantVolume,", - " Desiccant Regen Fan, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " 0.7, !- Fan Total Efficiency", - " 205.5, !- Pressure Rise {Pa}", - " autosize, !- Maximum Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1.0, !- Motor In Airstream Fraction", - " HX Regen Outlet Node, !- Air Inlet Node Name", - " Regen Fan Outlet Node; !- Air Outlet Node Name", - - " Dehumidifier:Desiccant:System,", - " Desiccant 1, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " HeatExchanger:Desiccant:BalancedFlow, !- Desiccant Heat Exchanger Object Type", - " Desiccant Heat Exchanger 1, !- Desiccant Heat Exchanger Name", - " HX Process Outlet Node, !- Sensor Node Name", - " Fan:ConstantVolume, !- Regeneration Air Fan Object Type", - " Desiccant Regen Fan, !- Regeneration Air Fan Name", - " DrawThrough, !- Regeneration Air Fan Placement", - " Coil:Heating:Fuel, !- Regeneration Air Heater Object Type", - " Desiccant Regen Coil, !- Regeneration Air Heater Name", - " 46.111111, !- Regeneration Inlet Air Setpoint Temperature {C}", - " Coil:Cooling:DX:VariableSpeed, !- Companion Cooling Coil Object Type", - " Desiccant DXSystem Cooling Coil, !- Companion Cooling Coil Name", - " Yes, !- Companion Cooling Coil Upstream of Dehumidifier Process Inlet", - " Yes, !- Companion Coil Regeneration Air Heating", - " 0.87931, !- Exhaust Fan Maximum Flow Rate {m3/s}", - " 50, !- Exhaust Fan Maximum Power {W}", - " EXHAUSTFANPLF; !- Exhaust Fan Power Curve Name", - - " HeatExchanger:Desiccant:BalancedFlow,", - " Desiccant Heat Exchanger 1, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " HX Regen Inlet Node, !- Regeneration Air Inlet Node Name", - " HX Regen Outlet Node, !- Regeneration Air Outlet Node Name", - " HX Process Inlet Node, !- Process Air Inlet Node Name", - " HX Process Outlet Node, !- Process Air Outlet Node Name", - " HeatExchanger:Desiccant:BalancedFlow:PerformanceDataType1, !- Heat Exchanger Performance Object Type", - " HXDesPerf1; !- Heat Exchanger Performance Name", - - " HeatExchanger:Desiccant:BalancedFlow:PerformanceDataType1,", - " HXDesPerf1, !- Name", - " 0.87931, !- Nominal Air Flow Rate {m3/s}", - " 3.25, !- Nominal Air Face Velocity {m/s}", - " 50.0, !- Nominal Electric Power {W}", - " -2.53636E+00, !- Temperature Equation Coefficient 1", - " 2.13247E+01, !- Temperature Equation Coefficient 2", - " 9.23308E-01, !- Temperature Equation Coefficient 3", - " 9.43276E+02, !- Temperature Equation Coefficient 4", - " -5.92367E+01, !- Temperature Equation Coefficient 5", - " -4.27465E-02, !- Temperature Equation Coefficient 6", - " 1.12204E+02, !- Temperature Equation Coefficient 7", - " 7.78252E-01, !- Temperature Equation Coefficient 8", - " 0.007143, !- Minimum Regeneration Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", - " 0.024286, !- Maximum Regeneration Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", - " 46.111110, !- Minimum Regeneration Inlet Air Temperature for Temperature Equation {C}", - " 46.111112, !- Maximum Regeneration Inlet Air Temperature for Temperature Equation {C}", - " 0.005000, !- Minimum Process Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", - " 0.015714, !- Maximum Process Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", - " 4.583333, !- Minimum Process Inlet Air Temperature for Temperature Equation {C}", - " 21.83333, !- Maximum Process Inlet Air Temperature for Temperature Equation {C}", - " 2.286, !- Minimum Regeneration Air Velocity for Temperature Equation {m/s}", - " 4.826, !- Maximum Regeneration Air Velocity for Temperature Equation {m/s}", - " 35.0, !- Minimum Regeneration Outlet Air Temperature for Temperature Equation {C}", - " 50.0, !- Maximum Regeneration Outlet Air Temperature for Temperature Equation {C}", - " 5.0, !- Minimum Regeneration Inlet Air Relative Humidity for Temperature Equation {percent}", - " 45.0, !- Maximum Regeneration Inlet Air Relative Humidity for Temperature Equation {percent}", - " 80.0, !- Minimum Process Inlet Air Relative Humidity for Temperature Equation {percent}", - " 100.0, !- Maximum Process Inlet Air Relative Humidity for Temperature Equation {percent}", - " -2.25547E+01, !- Humidity Ratio Equation Coefficient 1", - " 9.76839E-01, !- Humidity Ratio Equation Coefficient 2", - " 4.89176E-01, !- Humidity Ratio Equation Coefficient 3", - " -6.30019E-02, !- Humidity Ratio Equation Coefficient 4", - " 1.20773E-02, !- Humidity Ratio Equation Coefficient 5", - " 5.17134E-05, !- Humidity Ratio Equation Coefficient 6", - " 4.94917E-02, !- Humidity Ratio Equation Coefficient 7", - " -2.59417E-04, !- Humidity Ratio Equation Coefficient 8", - " 0.007143, !- Minimum Regeneration Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " 0.024286, !- Maximum Regeneration Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " 46.111110, !- Minimum Regeneration Inlet Air Temperature for Humidity Ratio Equation {C}", - " 46.111112, !- Maximum Regeneration Inlet Air Temperature for Humidity Ratio Equation {C}", - " 0.005000, !- Minimum Process Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " 0.015714, !- Maximum Process Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " 4.583333, !- Minimum Process Inlet Air Temperature for Humidity Ratio Equation {C}", - " 21.83333, !- Maximum Process Inlet Air Temperature for Humidity Ratio Equation {C}", - " 2.286, !- Minimum Regeneration Air Velocity for Humidity Ratio Equation {m/s}", - " 4.826, !- Maximum Regeneration Air Velocity for Humidity Ratio Equation {m/s}", - " 0.007914, !- Minimum Regeneration Outlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " 0.026279, !- Maximum Regeneration Outlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", - " 5.0, !- Minimum Regeneration Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", - " 45.0, !- Maximum Regeneration Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", - " 80.0, !- Minimum Process Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", - " 100.0; !- Maximum Process Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", - } ); - - ASSERT_TRUE( process_idf( idf_objects ) ); - - OutputProcessor::TimeValue.allocate( 2 ); - DataGlobals::DDOnlySimulation = true; - - SimulationManager::GetProjectData(); - OutputReportPredefined::SetPredefinedTables(); - createFacilityElectricPowerServiceObject(); - SetPreConstructionInputParameters(); //establish array bounds for constructions early - BranchInputManager::ManageBranchInput(); - BeginSimFlag = true; - BeginEnvrnFlag = true; - ZoneSizingCalc = true; - SysSizingCalc = true; - SizingManager::ManageSizing(); - - DataSizing::CurSysNum = 1; - DataSizing::CurOASysNum = 0; - - GetDesiccantDehumidifierInput(); - EXPECT_EQ( 1, NumDesicDehums ); - EXPECT_EQ( "DESICCANT 1", DesicDehum( DesicDehumNum ).Name ); - EXPECT_EQ( "DESICCANT REGEN COIL", DesicDehum( DesicDehumNum ).RegenCoilName ); - - EXPECT_EQ( DesicDehum( DesicDehumNum ).coolingCoil_TypeNum, DataHVACGlobals::Coil_CoolingAirToAirVariableSpeed ); - - EXPECT_EQ( DesicDehum( DesicDehumNum ).CoilUpstreamOfProcessSide, 1); - - CompName = DesicDehum( DesicDehumNum ).Name; - CompIndex = NumGenericDesicDehums; - SimDesiccantDehumidifier( CompName, FirstHVACIteration, CompIndex ); - - RegCoilDesInletTemp = FinalSysSizing( DataSizing::CurSysNum ).HeatOutTemp; - RegCoilDesOutletTemp = DesicDehum( DesicDehumNum ).RegenSetPointTemp; - RegCoilInletAirMassFlowRate = FinalSysSizing( DataSizing::CurSysNum ).DesMainVolFlow * DataEnvironment::StdRhoAir; - RegCoilCapacity = RegCoilInletAirMassFlowRate * PsyCpAirFnWTdb( 0.0, 20.0 ) * ( RegCoilDesOutletTemp - RegCoilDesInletTemp ); - - for ( loop = 1; loop <= NumHeatingCoils; ++loop ) { + // this unit test is derived from DesiccantDehum_OnPrimaryAirSystemTest but uses a VS dx coil instead + + std::string CompName(""); + bool FirstHVACIteration(true); + int DesicDehumNum(1); + int CompIndex(1); + int CoilIndex(0); + int loop(0); + Real64 RegCoilDesInletTemp(0.0); + Real64 RegCoilDesOutletTemp(0.0); + Real64 RegCoilInletAirMassFlowRate(0.0); + Real64 RegCoilCapacity(0.0); + + std::string const idf_objects = delimited_string({ + + " Version,8.9;", + + " Timestep,6;", + + " Building,", + " Bldg, !- Name", + " 0.0, !- North Axis {deg}", + " Suburbs, !- Terrain", + " 0.05, !- Loads Convergence Tolerance Value", + " 0.05, !- Temperature Convergence Tolerance Value {deltaC}", + " MinimalShadowing, !- Solar Distribution", + " 30, !- Maximum Number of Warmup Days", + " 6; !- Minimum Number of Warmup Days", + + " SurfaceConvectionAlgorithm:Inside,Simple;", + + " SurfaceConvectionAlgorithm:Outside,SimpleCombined;", + + " HeatBalanceAlgorithm,ConductionTransferFunction;", + + " SimulationControl,", + " Yes, !- Do Zone Sizing Calculation", + " Yes, !- Do System Sizing Calculation", + " No, !- Do Plant Sizing Calculation", + " Yes, !- Run Simulation for Sizing Periods", + " No; !- Run Simulation for Weather File Run Periods", + + " RunPeriod,", + " , !- Name", + " 1, !- Begin Month", + " 1, !- Begin Day of Month", + " , !- Begin Year", + " 1, !- End Month", + " 5, !- End Day of Month", + " , !- End Year", + " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " Yes; !- Use Weather File Snow Indicators", + + " Site:Location,", + " Miami Intl Ap FL USA WMO=722020, !- Name", + " 25.82, !- Latitude {deg}", + " -80.30, !- Longitude {deg}", + " -5.00, !- Time Zone {hr}", + " 11.00; !- Elevation {m}", + + " SizingPeriod:DesignDay,", + " Miami Intl Ap Ann Htg 99.6% Condns DB, !- Name", + " 1, !- Month", + " 21, !- Day of Month", + " WinterDesignDay, !- Day Type", + " 8.7, !- Maximum Dry-Bulb Temperature {C}", + " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " 8.7, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 101217., !- Barometric Pressure {Pa}", + " 3.8, !- Wind Speed {m/s}", + " 340, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 0.00; !- Sky Clearness", + + " SizingPeriod:DesignDay,", + " Miami Intl Ap Ann Clg .4% Condns DB=>MWB, !- Name", + " 7, !- Month", + " 21, !- Day of Month", + " SummerDesignDay, !- Day Type", + " 33.2, !- Maximum Dry-Bulb Temperature {C}", + " 6.7, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " 25.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 101217., !- Barometric Pressure {Pa}", + " 4.5, !- Wind Speed {m/s}", + " 140, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 1.00; !- Sky Clearness", + + " Site:GroundTemperature:BuildingSurface,21.0,21.5,22.0,22.2,22.2,22.2,22.2,22.2,22.2,22.0,21.5,21.0;", + + " Material:NoMass,", + " R13LAYER, !- Name", + " Rough, !- Roughness", + " 2.290965, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material:NoMass,", + " R31LAYER, !- Name", + " Rough, !- Roughness", + " 5.456, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " C5 - 4 IN HW CONCRETE, !- Name", + " MediumRough, !- Roughness", + " 0.1014984, !- Thickness {m}", + " 1.729577, !- Conductivity {W/m-K}", + " 2242.585, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + + " Construction,", + " R13WALL, !- Name", + " R13LAYER; !- Outside Layer", + + " Construction,", + " FLOOR, !- Name", + " C5 - 4 IN HW CONCRETE; !- Outside Layer", + + " Construction,", + " ROOF31, !- Name", + " R31LAYER; !- Outside Layer", + + " Zone,", + " Main Zone, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " CounterClockWise, !- Vertex Entry Direction", + " relative; !- Coordinate System", + + " BuildingSurface:Detailed,", + " Zn001:Wall001, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " Main Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 15.24000,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,0,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall002, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " Main Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000,0,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 15.24000,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 15.24000,15.24000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall003, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " Main Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 15.24000,15.24000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,15.24000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall004, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " Main Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,15.24000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,0,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Flr001, !- Name", + " Floor, !- Surface Type", + " FLOOR, !- Construction Name", + " Main Zone, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn001:Flr001, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000,0.000000,0.0, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000,0.000000,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 0.000000,15.24000,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,15.24000,0.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Roof001, !- Name", + " Roof, !- Surface Type", + " ROOF31, !- Construction Name", + " Main Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.000000,15.24000,4.572, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000,0.000000,4.572, !- X,Y,Z ==> Vertex 2 {m}", + " 15.24000,0.000000,4.572, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,15.24000,4.572; !- X,Y,Z ==> Vertex 4 {m}", + + " ScheduleTypeLimits,", + " Any Number; !- Name", + + " ScheduleTypeLimits,", + " Fraction, !- Name", + " 0.0, !- Lower Limit Value", + " 1.0, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + " ScheduleTypeLimits,", + " Temperature, !- Name", + " -60, !- Lower Limit Value", + " 200, !- Upper Limit Value", + " CONTINUOUS, !- Numeric Type", + " Temperature; !- Unit Type", + + " ScheduleTypeLimits,", + " Control Type, !- Name", + " 0, !- Lower Limit Value", + " 4, !- Upper Limit Value", + " DISCRETE; !- Numeric Type", + + " ScheduleTypeLimits,", + " On/Off, !- Name", + " 0, !- Lower Limit Value", + " 1, !- Upper Limit Value", + " DISCRETE; !- Numeric Type", + + " ScheduleTypeLimits,", + " FlowRate, !- Name", + " 0.0, !- Lower Limit Value", + " 10, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + " ScheduleTypeLimits,", + " Humidity, !- Name", + " 0, !- Lower Limit Value", + " 100, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + " Schedule:Compact,", + " OCCUPY-1, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", + " Until: 8:00,0.0, !- Field 3", + " Until: 11:00,1.00, !- Field 5", + " Until: 12:00,0.80, !- Field 7", + " Until: 13:00,0.40, !- Field 9", + " Until: 14:00,0.80, !- Field 11", + " Until: 18:00,1.00, !- Field 13", + " Until: 19:00,0.50, !- Field 15", + " Until: 21:00,0.10, !- Field 17", + " Until: 24:00,0.0, !- Field 19", + " For: Weekends WinterDesignDay Holiday, !- Field 21", + " Until: 24:00,0.0; !- Field 22", + + " Schedule:Compact,", + " LIGHTS-1, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", + " Until: 8:00,0.05, !- Field 3", + " Until: 9:00,0.9, !- Field 5", + " Until: 10:00,0.95, !- Field 7", + " Until: 11:00,1.00, !- Field 9", + " Until: 12:00,0.95, !- Field 11", + " Until: 13:00,0.8, !- Field 13", + " Until: 14:00,0.9, !- Field 15", + " Until: 18:00,1.00, !- Field 17", + " Until: 19:00,0.60, !- Field 19", + " Until: 21:00,0.20, !- Field 21", + " Until: 24:00,0.05, !- Field 23", + " For: Weekends WinterDesignDay Holiday, !- Field 25", + " Until: 24:00,0.05; !- Field 26", + + " Schedule:Compact,", + " EQUIP-1, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", + " Until: 8:00,0.02, !- Field 3", + " Until: 9:00,0.4, !- Field 5", + " Until: 14:00,0.9, !- Field 7", + " Until: 15:00,0.8, !- Field 9", + " Until: 16:00,0.7, !- Field 11", + " Until: 18:00,0.5, !- Field 13", + " Until: 20:00,0.3, !- Field 15", + " Until: 24:00,0.02, !- Field 17", + " For: Weekends WinterDesignDay Holiday, !- Field 19", + " Until: 24:00,0.2; !- Field 20", + + " Schedule:Compact,", + " INFIL-SCH, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 3/31, !- Field 1", + " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", + " Until: 24:00,1.0, !- Field 3", + " For: AllOtherDays, !- Field 5", + " Until: 24:00,1.0, !- Field 6", + " Through: 9/30, !- Field 8", + " For: AllDays, !- Field 9", + " Until: 24:00,0.7, !- Field 10", + " Through: 12/31, !- Field 12", + " For: AllDays, !- Field 13", + " Until: 24:00,1.0, !- Field 14", + " For: AllOtherDays, !- Field 16", + " Until: 24:00,0.2; !- Field 17", + + " Schedule:Compact,", + " ActSchd, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,117.239997864; !- Field 3", + + " Schedule:Compact,", + " ShadeTransSch, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,0.0; !- Field 3", + + " Schedule:Compact,", + " Htg-SetP-Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: SummerDesignDay, !- Field 2", + " Until: 24:00,12.8, !- Field 3", + " For: WinterDesignDay, !- Field 5", + " Until: 24:00,21.1, !- Field 6", + " For: WeekEnds Holiday, !- Field 8", + " Until: 7:00,12.8, !- Field 9", + " Until: 13:00,21.1, !- Field 11", + " Until: 24:00,12.8, !- Field 13", + " For: AllOtherDays, !- Field 15", + " Until: 7:00,12.8, !- Field 16", + " Until: 18:00,21.1, !- Field 18", + " Until: 24:00,12.8; !- Field 20", + + " Schedule:Compact,", + " PlenumHtg-SetP-Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,12.8; !- Field 3", + + " Schedule:Compact,", + " Clg-SetP-Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: SummerDesignDay, !- Field 2", + " Until: 24:00,23.9, !- Field 3", + " For: WinterDesignDay, !- Field 5", + " Until: 24:00,40.0, !- Field 6", + " For: WeekEnds Holiday, !- Field 8", + " Until: 7:00,40.0, !- Field 9", + " Until: 13:00,23.9, !- Field 11", + " Until: 24:00,32.2, !- Field 13", + " For: AllOtherDays, !- Field 15", + " Until: 7:00,40.0, !- Field 16", + " Until: 18:00,23.9, !- Field 18", + " Until: 24:00,40.0; !- Field 20", + + " Schedule:Compact,", + " PlenumClg-SetP-Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,40.0; !- Field 3", + + " Schedule:Compact,", + " Zone Control Type Sched, !- Name", + " Control Type, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: SummerDesignDay, !- Field 2", + " Until: 24:00,2, !- Field 3", + " For: WinterDesignDay, !- Field 5", + " Until: 24:00,1, !- Field 6", + " For: AllOtherDays, !- Field 8", + " Until: 24:00,4; !- Field 9", + + " Schedule:Compact,", + " Desiccant Control Type Sched, !- Name", + " Control Type, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,4; !- Field 3", + + " Schedule:Compact,", + " Min OA Sched, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Weekdays, !- Field 2", + " Until: 7:00,0.02, !- Field 3", + " Until: 17:00,1.0, !- Field 5", + " Until: 24:00,0.0, !- Field 7", + " For: AllOtherDays, !- Field 9", + " Until: 24:00,0.02; !- Field 10", + + " Schedule:Compact,", + " FanAvailSched, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 3/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0, !- Field 3", + " Through: 9/30, !- Field 5", + " For: WeekDays, !- Field 6", + " Until: 7:00,0.0, !- Field 7", + " Until: 17:00,1.0, !- Field 9", + " Until: 24:00,0.0, !- Field 11", + " For: SummerDesignDay WinterDesignDay, !- Field 13", + " Until: 24:00,1.0, !- Field 14", + " For: AllOtherDays, !- Field 16", + " Until: 24:00,0.0, !- Field 17", + " Through: 12/31, !- Field 19", + " For: AllDays, !- Field 20", + " Until: 24:00,1.0; !- Field 21", + + " Schedule:Compact,", + " Seasonal Reset Supply Air Temp Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 3/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,17.0, !- Field 3", + " Through: 9/30, !- Field 5", + " For: AllDays, !- Field 6", + " Until: 24:00,15.0, !- Field 7", + " Through: 12/31, !- Field 9", + " For: AllDays, !- Field 10", + " Until: 24:00,17.0; !- Field 11", + + " Schedule:Compact,", + " Constant, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0; !- Field 3", + + " People,", + " Main Zone People 1, !- Name", + " Main Zone, !- Zone or ZoneList Name", + " OCCUPY-1, !- Number of People Schedule Name", + " people, !- Number of People Calculation Method", + " 20, !- Number of People", + " , !- People per Zone Floor Area {person/m2}", + " , !- Zone Floor Area per Person {m2/person}", + " 0.3, !- Fraction Radiant", + " AutoCalculate, !- Sensible Heat Fraction", + " ActSchd; !- Activity Level Schedule Name", + + " Lights,", + " Main Zone Lights 1, !- Name", + " Main Zone, !- Zone or ZoneList Name", + " LIGHTS-1, !- Schedule Name", + " LightingLevel, !- Design Level Calculation Method", + " 2964, !- Lighting Level {W}", + " , !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.2, !- Return Air Fraction", + " 0.59, !- Fraction Radiant", + " 0.2, !- Fraction Visible", + " 0, !- Fraction Replaceable", + " GeneralLights; !- End-Use Subcategory", + + " ElectricEquipment,", + " Main Zone ElecEq 1, !- Name", + " Main Zone, !- Zone or ZoneList Name", + " EQUIP-1, !- Schedule Name", + " EquipmentLevel, !- Design Level Calculation Method", + " 19760, !- Design Level {W}", + " , !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.5, !- Fraction Latent", + " 0.3, !- Fraction Radiant", + " 0; !- Fraction Lost", + + " ZoneInfiltration:DesignFlowRate,", + " Main Zone Infil 1, !- Name", + " Main Zone, !- Zone or ZoneList Name", + " INFIL-SCH, !- Schedule Name", + " flow/zone, !- Design Flow Rate Calculation Method", + " 0.031089, !- Design Flow Rate {m3/s}", + " , !- Flow per Zone Floor Area {m3/s-m2}", + " , !- Flow per Exterior Surface Area {m3/s-m2}", + " , !- Air Changes per Hour {1/hr}", + " 0, !- Constant Term Coefficient", + " 0, !- Temperature Term Coefficient", + " 0.2237, !- Velocity Term Coefficient", + " 0; !- Velocity Squared Term Coefficient", + + " Sizing:Zone,", + " Main Zone, !- Zone or ZoneList Name", + " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", + " 14., !- Zone Cooling Design Supply Air Temperature {C}", + " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", + " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", + " 50., !- Zone Heating Design Supply Air Temperature {C}", + " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", + " 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " SZ DSOA Main Zone, !- Design Specification Outdoor Air Object Name", + " 0.0, !- Zone Heating Sizing Factor", + " 0.0, !- Zone Cooling Sizing Factor", + " DesignDayWithLimit, !- Cooling Design Air Flow Method", + " , !- Cooling Design Air Flow Rate {m3/s}", + " , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", + " , !- Cooling Minimum Air Flow {m3/s}", + " , !- Cooling Minimum Air Flow Fraction", + " DesignDay, !- Heating Design Air Flow Method", + " , !- Heating Design Air Flow Rate {m3/s}", + " , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", + " , !- Heating Maximum Air Flow {m3/s}", + " ; !- Heating Maximum Air Flow Fraction", + + " DesignSpecification:OutdoorAir,", + " SZ DSOA Main Zone, !- Name", + " sum, !- Outdoor Air Method", + " 0.00236, !- Outdoor Air Flow per Person {m3/s-person}", + " 0.000305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}", + " 0.0; !- Outdoor Air Flow per Zone {m3/s}", + + " Sizing:System,", + " Desiccant DXSystem, !- AirLoop Name", + " sensible, !- Type of Load to Size On", + " autosize, !- Design Outdoor Air Flow Rate {m3/s}", + " 0.3, !- Central Heating Maximum System Air Flow Ratio", + " 4.5, !- Preheat Design Temperature {C}", + " 0.008, !- Preheat Design Humidity Ratio {kgWater/kgDryAir}", + " 11.0, !- Precool Design Temperature {C}", + " 0.008, !- Precool Design Humidity Ratio {kgWater/kgDryAir}", + " 12.8, !- Central Cooling Design Supply Air Temperature {C}", + " 16.7, !- Central Heating Design Supply Air Temperature {C}", + " noncoincident, !- Type of Zone Sum to Use", + " no, !- 100% Outdoor Air in Cooling", + " no, !- 100% Outdoor Air in Heating", + " 0.008, !- Central Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " 0.008, !- Central Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " DesignDay, !- Cooling Design Air Flow Method", + " 0, !- Cooling Design Air Flow Rate {m3/s}", + " , !- Supply Air Flow Rate Per Floor Area During Cooling Operation {m3/s-m2}", + " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", + " , !- Design Supply Air Flow Rate Per Unit Cooling Capacity {m3/s-W}", + " DesignDay, !- Heating Design Air Flow Method", + " 0, !- Heating Design Air Flow Rate {m3/s}", + " , !- Supply Air Flow Rate Per Floor Area During Heating Operation {m3/s-m2}", + " , !- Fraction of Autosized Design Heating Supply Air Flow Rate", + " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", + " , !- Design Supply Air Flow Rate Per Unit Heating Capacity {m3/s-W}", + " , !- System Outdoor Air Method", + " 1.0, !- Zone Maximum Outdoor Air Fraction {dimensionless}", + " CoolingDesignCapacity, !- Cooling Design Capacity Method", + " autosize, !- Cooling Design Capacity {W}", + " , !- Cooling Design Capacity Per Floor Area {W/m2}", + " , !- Fraction of Autosized Cooling Design Capacity", + " HeatingDesignCapacity, !- Heating Design Capacity Method", + " autosize, !- Heating Design Capacity {W}", + " , !- Heating Design Capacity Per Floor Area {W/m2}", + " , !- Fraction of Autosized Heating Design Capacity", + " VAV; !- Central Cooling Capacity Control Method", + + " Curve:Biquadratic,", + " HPACCoolCapFT, !- Name", + " 0.942587793, !- Coefficient1 Constant", + " 0.009543347, !- Coefficient2 x", + " 0.00068377, !- Coefficient3 x**2", + " -0.011042676, !- Coefficient4 y", + " 0.000005249, !- Coefficient5 y**2", + " -0.00000972, !- Coefficient6 x*y", + " -100, !- Minimum Value of x", + " 100, !- Maximum Value of x", + " -100, !- Minimum Value of y", + " 100, !- Maximum Value of y", + " , !- Minimum Curve Output", + " , !- Maximum Curve Output", + " Temperature, !- Input Unit Type for X", + " Temperature, !- Input Unit Type for Y", + " Dimensionless; !- Output Unit Type", + + " Curve:Biquadratic,", + " HPACCOOLEIRFT, !- Name", + " 0.342414409, !- Coefficient1 Constant", + " 0.034885008, !- Coefficient2 x", + " -0.0006237, !- Coefficient3 x**2", + " 0.004977216, !- Coefficient4 y", + " 0.000437951, !- Coefficient5 y**2", + " -0.000728028, !- Coefficient6 x*y", + " -100, !- Minimum Value of x", + " 100, !- Maximum Value of x", + " -100, !- Minimum Value of y", + " 100, !- Maximum Value of y", + " , !- Minimum Curve Output", + " , !- Maximum Curve Output", + " Temperature, !- Input Unit Type for X", + " Temperature, !- Input Unit Type for Y", + " Dimensionless; !- Output Unit Type", + + " Curve:Quadratic,", + " HPACCoolCapFFF, !- Name", + " 0.8, !- Coefficient1 Constant", + " 0.2, !- Coefficient2 x", + " 0.0, !- Coefficient3 x**2", + " 0.0, !- Minimum Value of x", + " 1.0; !- Maximum Value of x", + + " Curve:Quadratic,", + " HPACCOOLEIRFFF, !- Name", + " 1.1552, !- Coefficient1 Constant", + " -0.1808, !- Coefficient2 x", + " 0.0256, !- Coefficient3 x**2", + " 0.0, !- Minimum Value of x", + " 1.0; !- Maximum Value of x", + + " Curve:Quadratic,", + " HPACCOOLPLFFPLR, !- Name", + " 0.75, !- Coefficient1 Constant", + " 0.25, !- Coefficient2 x", + " 0.0, !- Coefficient3 x**2", + " 0.0, !- Minimum Value of x", + " 1.0; !- Maximum Value of x", + + " Curve:Cubic,", + " PackagedRatedCoolCapFFlow, !- Name", + " 0.47278589, !- Coefficient1 Constant", + " 1.2433415, !- Coefficient2 x", + " -1.0387055, !- Coefficient3 x**2", + " 0.32257813, !- Coefficient4 x**3", + " 0.5, !- Minimum Value of x", + " 1.5, !- Maximum Value of x", + " , !- Minimum Curve Output", + " , !- Maximum Curve Output", + " Dimensionless, !- Input Unit Type for X", + " Dimensionless; !- Output Unit Type", + + " Curve:Cubic,", + " PackagedRatedCoolEIRFFlow, !- Name", + " 1.0079484, !- Coefficient1 Constant", + " 0.34544129, !- Coefficient2 x", + " -.6922891, !- Coefficient3 x**2", + " 0.33889943, !- Coefficient4 x**3", + " 0.5, !- Minimum Value of x", + " 1.5, !- Maximum Value of x", + " , !- Minimum Curve Output", + " , !- Maximum Curve Output", + " Dimensionless, !- Input Unit Type for X", + " Dimensionless; !- Output Unit Type", + + " Curve:Cubic,", + " EXHAUSTFANPLF, !- Name", + " 0, !- Coefficient1 Constant", + " 1, !- Coefficient2 x", + " 0.0, !- Coefficient3 x**2", + " 0.0, !- Coefficient4 x**3", + " 0.0, !- Minimum Value of x", + " 1.0; !- Maximum Value of x", + + " NodeList,", + " Main Zone In Nodes, !- Name", + " Main Zone In Node; !- Node 1 Name", + + " NodeList,", + " Desiccant DX Air Loop Setpoint Nodes, !- Name", + " HX Process Outlet Node, !- Node 1 Name", + " Desiccant DXSystem Mixed Air Node; !- Node 2 Name", + + " NodeList,", + " Regen Setpoint Nodes, !- Name", + " HX Regen Inlet Node; !- Node 1 Name", + + " BranchList,", + " Desiccant Air Loop Branches, !- Name", + " Desiccant Air Loop Main Branch; !- Branch 1 Name", + + " Branch,", + " Desiccant Air Loop Main Branch, !- Name", + " , !- Pressure Drop Curve Name", + " AirLoopHVAC:OutdoorAirSystem, !- Component 1 Object Type", + " Desiccant DXSystem OA System, !- Component 1 Name", + " Desiccant DXSystem Air Loop Inlet Node, !- Component 1 Inlet Node Name", + " Desiccant DXSystem Mixed Air Node, !- Component 1 Outlet Node Name", + " CoilSystem:Cooling:DX, !- Component 2 Object Type", + " Desiccant DXSystem Cooling Coil Sys, !- Component 2 Name", + " Desiccant DXSystem Mixed Air Node, !- Component 2 Inlet Node Name", + " HX Process Inlet Node, !- Component 2 Outlet Node Name", + " Dehumidifier:Desiccant:System, !- Component 3 Object Type", + " Desiccant 1, !- Component 3 Name", + " HX Process Inlet Node, !- Component 3 Inlet Node Name", + " HX Process Outlet Node, !- Component 3 Outlet Node Name", + " Fan:ConstantVolume, !- Component 4 Object Type", + " Desiccant DXSystem Supply Fan, !- Component 4 Name", + " HX Process Outlet Node, !- Component 4 Inlet Node Name", + " Desiccant Supply Fan Outlet Node, !- Component 4 Outlet Node Name", + " Coil:Heating:Fuel, !- Component 5 Object Type", + " Desiccant Process Heating Coil, !- Component 5 Name", + " Desiccant Supply Fan Outlet Node, !- Component 5 Inlet Node Name", + " Desiccant DXSystem Air Loop Outlet Node; !- Component 5 Outlet Node Name", + + " AirLoopHVAC,", + " Desiccant DXSystem, !- Name", + " , !- Controller List Name", + " Desiccant Avail List, !- Availability Manager List Name", + " autosize, !- Design Supply Air Flow Rate {m3/s}", + " Desiccant Air Loop Branches, !- Branch List Name", + " , !- Connector List Name", + " Desiccant DXSystem Air Loop Inlet Node, !- Supply Side Inlet Node Name", + " Desiccant DXSystem Return Air Mixer Outlet Node, !- Demand Side Outlet Node Name", + " Desiccant DXSystem Zone Equipment Inlet Node, !- Demand Side Inlet Node Names", + " Desiccant DXSystem Air Loop Outlet Node; !- Supply Side Outlet Node Names", + + " AirLoopHVAC:ControllerList,", + " Desiccant DXSystem OA System Controllers, !- Name", + " Controller:OutdoorAir, !- Controller 1 Object Type", + " Desiccant OA Controller; !- Controller 1 Name", + + " AirLoopHVAC:OutdoorAirSystem:EquipmentList,", + " Desiccant DXSystem OA System Equipment, !- Name", + " OutdoorAir:Mixer, !- Component 1 Object Type", + " Desiccant DXSystem OA Mixing Box; !- Component 1 Name", + + " AirLoopHVAC:OutdoorAirSystem,", + " Desiccant DXSystem OA System, !- Name", + " Desiccant DXSystem OA System Controllers, !- Controller List Name", + " Desiccant DXSystem OA System Equipment, !- Outdoor Air Equipment List Name", + " Desiccant Outdoor Air Avail List; !- Availability Manager List Name", + + " OutdoorAir:NodeList,", + " OutsideAirInletNodes; !- Node or NodeList Name 1", + + " OutdoorAir:NodeList,", + " Desiccant DXSystem Outside Air Inlet Node, !- Node or NodeList Name 1", + " Desiccant Outside Air Inlet Node 2; !- Node or NodeList Name 2", + + " OutdoorAir:NodeList,", + " Regen Coil Inlet Node; !- Node or NodeList Name 1", + + " OutdoorAir:NodeList,", + " Condenser Inlet Node; !- Node or NodeList Name 1", + + " OutdoorAir:Mixer,", + " Desiccant DXSystem OA Mixing Box, !- Name", + " Desiccant DXSystem Mixed Air Node, !- Mixed Air Node Name", + " Desiccant DXSystem Outside Air Inlet Node, !- Outdoor Air Stream Node Name", + " Desiccant DXSystem Relief Air Outlet Node, !- Relief Air Stream Node Name", + " Desiccant DXSystem Air Loop Inlet Node; !- Return Air Stream Node Name", + + " AvailabilityManagerAssignmentList,", + " Desiccant Avail List, !- Name", + " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", + " Desiccant DXSystem Avail;!- Availability Manager 1 Name", + + " AvailabilityManagerAssignmentList,", + " Desiccant Outdoor Air Avail List, !- Name", + " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", + " Desiccant Outdoor Air Avail; !- Availability Manager 1 Name", + + " AvailabilityManager:Scheduled,", + " Desiccant DXSystem Avail,!- Name", + " FanAvailSched; !- Schedule Name", + + " AvailabilityManager:Scheduled,", + " Desiccant Outdoor Air Avail, !- Name", + " FanAvailSched; !- Schedule Name", + + " SetpointManager:SingleZone:Heating,", + " Heating Supply Air Temp Manager, !- Name", + " Temperature, !- Control Variable", + " -99., !- Minimum Supply Air Temperature {C}", + " 99., !- Maximum Supply Air Temperature {C}", + " Main Zone, !- Control Zone Name", + " Main Zone Node, !- Zone Node Name", + " Main Zone In Node, !- Zone Inlet Node Name", + " Desiccant DXSystem Air Loop Outlet Node; !- Setpoint Node or NodeList Name", + + " SetpointManager:SingleZone:Cooling,", + " Cooling Supply Air Temp Manager, !- Name", + " Temperature, !- Control Variable", + " -99., !- Minimum Supply Air Temperature {C}", + " 99., !- Maximum Supply Air Temperature {C}", + " Main Zone, !- Control Zone Name", + " Main Zone Node, !- Zone Node Name", + " Main Zone In Node, !- Zone Inlet Node Name", + " Desiccant Supply Fan Outlet Node; !- Setpoint Node or NodeList Name", + + " SetpointManager:SingleZone:Humidity:Maximum,", + " Zone Max Humidity Manager, !- Name", + " HX Process Outlet Node, !- Setpoint Node or NodeList Name", + " Main Zone Node; !- Control Zone Air Node Name", + + " SetpointManager:MixedAir,", + " Adjusted Cooling Supply Air Temp Manager, !- Name", + " Temperature, !- Control Variable", + " Desiccant Supply Fan Outlet Node, !- Reference Setpoint Node Name", + " HX Process Outlet Node, !- Fan Inlet Node Name", + " Desiccant Supply Fan Outlet Node, !- Fan Outlet Node Name", + " HX Process Outlet Node; !- Setpoint Node or NodeList Name", + + " Controller:OutdoorAir,", + " Desiccant OA Controller, !- Name", + " Desiccant DXSystem Relief Air Outlet Node, !- Relief Air Outlet Node Name", + " Desiccant DXSystem Air Loop Inlet Node, !- Return Air Node Name", + " Desiccant DXSystem Mixed Air Node, !- Mixed Air Node Name", + " Desiccant DXSystem Outside Air Inlet Node, !- Actuator Node Name", + " autosize, !- Minimum Outdoor Air Flow Rate {m3/s}", + " autosize, !- Maximum Outdoor Air Flow Rate {m3/s}", + " NoEconomizer, !- Economizer Control Type", + " ModulateFlow, !- Economizer Control Action Type", + " 100., !- Economizer Maximum Limit Dry-Bulb Temperature {C}", + " , !- Economizer Maximum Limit Enthalpy {J/kg}", + " , !- Economizer Maximum Limit Dewpoint Temperature {C}", + " , !- Electronic Enthalpy Limit Curve Name", + " , !- Economizer Minimum Limit Dry-Bulb Temperature {C}", + " NoLockout, !- Lockout Type", + " FixedMinimum, !- Minimum Limit Type", + " Min OA Sched, !- Minimum Outdoor Air Schedule Name", + " , !- Minimum Fraction of Outdoor Air Schedule Name", + " , !- Maximum Fraction of Outdoor Air Schedule Name", + " 0; !- Mechanical Ventilation Controller Name", + + " ZoneHVAC:EquipmentConnections,", + " Main Zone, !- Zone Name", + " Main Zone Eq, !- Zone Conditioning Equipment List Name", + " Main Zone In Nodes, !- Zone Air Inlet Node or NodeList Name", + " , !- Zone Air Exhaust Node or NodeList Name", + " Main Zone Node, !- Zone Air Node Name", + " Main Zone Out Node; !- Zone Return Air Node Name", + + " ZoneHVAC:EquipmentList,", + " Main Zone Eq, !- Name", + " SequentialLoad, !- Load Distribution Scheme", + " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", + " Main Zone Direct Air ADU, !- Zone Equipment 1 Name", + " 1, !- Zone Equipment 1 Cooling Sequence", + " 1; !- Zone Equipment 1 Heating or No-Load Sequence", + + " ZoneHVAC:AirDistributionUnit,", + " Main Zone Direct Air ADU, !- Name", + " Main Zone In Node, !- Air Distribution Unit Outlet Node Name", + " AirTerminal:SingleDuct:ConstantVolume:NoReheat, !- Air Terminal Object Type", + " Main Zone Direct Air; !- Air Terminal Name", + + " AirTerminal:SingleDuct:ConstantVolume:NoReheat,", + " Main Zone Direct Air, !- Name", + " Constant, !- Availability Schedule Name", + " Main Zone In Node 2AT, !- Air Inlet Node Name", + " Main Zone In Node, !- Air Outlet Node Name", + " autosize; !- Maximum Air Flow Rate {m3/s}", + + " CoilSystem:Cooling:DX,", + " Desiccant DXSystem Cooling Coil Sys, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " Desiccant DXSystem Mixed Air Node, !- DX Cooling Coil System Inlet Node Name", + " HX Process Inlet Node, !- DX Cooling Coil System Outlet Node Name", + " HX Process Outlet Node, !- DX Cooling Coil System Sensor Node Name", + " Coil:Cooling:DX:VariableSpeed, !- Cooling Coil Object Type", + " Desiccant DXSystem Cooling Coil; !- Cooling Coil Name", + + " ZoneControl:Thermostat,", + " Main Zone Control, !- Name", + " Main Zone, !- Zone or ZoneList Name", + " Desiccant Control Type Sched, !- Control Type Schedule Name", + " ThermostatSetpoint:DualSetpoint, !- Control 1 Object Type", + " DualSetPoint; !- Control 1 Name", + + " ZoneControl:Humidistat,", + " Main Zone Humidistat, !- Name", + " Main Zone, !- Zone Name", + " Relative Humidity Sched; !- Humidifying Relative Humidity Setpoint Schedule Name", + + " Schedule:Compact,", + " Relative Humidity Sched, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,45.0; !- Field 3", + + " ThermostatSetpoint:SingleHeating,", + " HeatingSetpoint, !- Name", + " Htg-SetP-Sch; !- Setpoint Temperature Schedule Name", + + " ThermostatSetpoint:SingleHeating,", + " PlenumHeatingSetpoint, !- Name", + " PlenumHtg-SetP-Sch; !- Setpoint Temperature Schedule Name", + + " ThermostatSetpoint:SingleCooling,", + " CoolingSetpoint, !- Name", + " Clg-SetP-Sch; !- Setpoint Temperature Schedule Name", + + " ThermostatSetpoint:SingleCooling,", + " PlenumCoolingSetpoint, !- Name", + " PlenumClg-SetP-Sch; !- Setpoint Temperature Schedule Name", + + " ThermostatSetpoint:DualSetpoint,", + " DualSetPoint, !- Name", + " Htg-SetP-Sch, !- Heating Setpoint Temperature Schedule Name", + " Clg-SetP-Sch; !- Cooling Setpoint Temperature Schedule Name", + + " AirLoopHVAC:SupplyPath,", + " Desiccant DXSystem Supply Path, !- Name", + " Desiccant DXSystem Zone Equipment Inlet Node, !- Supply Air Path Inlet Node Name", + " AirLoopHVAC:ZoneSplitter,!- Component 1 Object Type", + " Desiccant DXSystem Zone Supply Air Splitter; !- Component 1 Name", + + " AirLoopHVAC:ReturnPath,", + " Desiccant DXSystem Return Path, !- Name", + " Desiccant DXSystem Return Air Mixer Outlet Node, !- Return Air Path Outlet Node Name", + " AirLoopHVAC:ZoneMixer, !- Component 1 Object Type", + " Desiccant DXSystem Zone Return Air Mixer; !- Component 1 Name", + + " AirLoopHVAC:ZoneSplitter,", + " Desiccant DXSystem Zone Supply Air Splitter, !- Name", + " Desiccant DXSystem Zone Equipment Inlet Node, !- Inlet Node Name", + " Main Zone In Node 2AT; !- Outlet 1 Node Name", + + " AirLoopHVAC:ZoneMixer,", + " Desiccant DXSystem Zone Return Air Mixer, !- Name", + " Desiccant DXSystem Return Air Mixer Outlet Node, !- Outlet Node Name", + " Main Zone Out Node; !- Inlet 1 Node Name", + + " Coil:Heating:Fuel,", + " Desiccant Process Heating Coil, !- Name", + " Constant, !- Availability Schedule Name", + " Gas, !- Fuel Type", + " 0.8, !- Gas Burner Efficiency", + " autosize, !- Nominal Capacity {W}", + " Desiccant Supply Fan Outlet Node, !- Air Inlet Node Name", + " Desiccant DXSystem Air Loop Outlet Node, !- Air Outlet Node Name", + " Desiccant DXSystem Air Loop Outlet Node; !- Temperature Setpoint Node Name", + + " Coil:Heating:Fuel,", + " Desiccant Regen Coil, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " Gas, !- Fuel Type", + " 1, !- Gas Burner Efficiency", + " autosize, !- Nominal Capacity {W}", + " Regen Coil Inlet Node, !- Air Inlet Node Name", + " HX Regen Inlet Node; !- Air Outlet Node Name", + + " Coil:Cooling:DX:VariableSpeed,", + " Desiccant DXSystem Cooling Coil, !- Name", + " Desiccant DXSystem Mixed Air Node, !- Indoor Air Inlet Node Name", + " HX Process Inlet Node, !- Indoor Air Outlet Node Name", + " 1.0, !- Number of Speeds {dimensionless}", + " 1.0, !- Nominal Speed Level {dimensionless}", + " 22000, !- Gross Rated Total Cooling Capacity At Selected Nominal Speed Level {w}", + " 1.05, !- Rated Air Flow Rate At Selected Nominal Speed Level {m3/s}", + " 1000, !- Nominal Time for Condensate to Begin Leaving the Coil {s}", + " 0.4, !- Initial Moisture Evaporation Rate Divided by Steady-State AC Latent Capacity {dimensionless}", + " HPACCOOLPLFFPLR, !- Energy Part Load Fraction Curve Name", + " Condenser Inlet Node, !- Condenser Air Inlet Node Name", + " AirCooled, !- Condenser Type", + " , !- Evaporative Condenser Pump Rated Power Consumption {W}", + " 0.0, !- Crankcase Heater Capacity {W}", + " 10.0, !- Maximum Outdoor Dry-Bulb Temperature for Crankcase Heater Operation {C}", + " , !- Minimum Outdoor Dry-Bulb Temperature for Compressor Operation {C}", + " , !- Supply Water Storage Tank Name", + " , !- Condensate Collection Water Storage Tank Name", + " , !- Basin Heater Capacity {W/K}", + " , !- Basin Heater Setpoint Temperature {C}", + " , !- Basin Heater Operating Schedule Name", + " 36991.44197, !- Speed 1 Reference Unit Gross Rated Total Cooling Capacity {w}", + " 0.75, !- Speed 1 Reference Unit Gross Rated Sensible Heat Ratio {dimensionless}", + " 3.5, !- Speed 1 Reference Unit Gross Rated Cooling COP {dimensionless}", + " 3.776, !- Speed 1 Reference Unit Rated Air Flow Rate {m3/s}", + " 10.62, !- Speed 1 Reference Unit Rated Condenser Air Flow Rate {m3/s}", + " , !- Speed 1 Reference Unit Rated Pad Effectiveness of Evap Precooling {dimensionless}", + " HPCoolingCAPFTemp4, !- Speed 1 Total Cooling Capacity Function of Temperature Curve Name", + " HPACFFF, !- Speed 1 Total Cooling Capacity Function of Air Flow Fraction Curve Name", + " HPCoolingEIRFTemp4, !- Speed 1 Energy Input Ratio Function of Temperature Curve Name", + " HPACFFF; !- Speed 1 Energy Input Ratio Function of Air Flow Fraction Curve Name", + + " Curve:Cubic,", + " HPACFFF, !- Name", + " 1.0, !- Coefficient1 Constant", + " 0.0, !- Coefficient2 x", + " 0.0, !- Coefficient3 x**2", + " 0.0, !- Coefficient4 x**3", + " 0.5, !- Minimum Value of x", + " 1.5; !- Maximum Value of x", + + " Curve:Biquadratic,", + " HPCoolingEIRFTemp4, !- Name", + " 0.0001514017, !- Coefficient1 Constant", + " 0.0655062896, !- Coefficient2 x", + " -0.0020370821, !- Coefficient3 x**2", + " 0.0067823041, !- Coefficient4 y", + " 0.0004087196, !- Coefficient5 y**2", + " -0.0003552302, !- Coefficient6 x*y", + " 13.89, !- Minimum Value of x", + " 22.22, !- Maximum Value of x", + " 12.78, !- Minimum Value of y", + " 51.67, !- Maximum Value of y", + " 0.5141, !- Minimum Curve Output", + " 1.7044, !- Maximum Curve Output", + " Temperature, !- Input Unit Type for X", + " Temperature, !- Input Unit Type for Y", + " Dimensionless; !- Output Unit Type", + + " Curve:Biquadratic,", + " HPCoolingCAPFTemp4, !- Name", + " 1.3544202152, !- Coefficient1 Constant", + " -0.0493402773, !- Coefficient2 x", + " 0.0022649843, !- Coefficient3 x**2", + " 0.0008517727, !- Coefficient4 y", + " -0.0000426316, !- Coefficient5 y**2", + " -0.0003364517, !- Coefficient6 x*y", + " 13.89, !- Minimum Value of x", + " 22.22, !- Maximum Value of x", + " 12.78, !- Minimum Value of y", + " 51.67, !- Maximum Value of y", + " 0.7923, !- Minimum Curve Output", + " 1.2736, !- Maximum Curve Output", + " Temperature, !- Input Unit Type for X", + " Temperature, !- Input Unit Type for Y", + " Dimensionless; !- Output Unit Type", + + " Fan:ConstantVolume,", + " Desiccant DXSystem Supply Fan, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " 0.7, !- Fan Total Efficiency", + " 571.66, !- Pressure Rise {Pa}", + " autosize, !- Maximum Flow Rate {m3/s}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Airstream Fraction", + " HX Process Outlet Node, !- Air Inlet Node Name", + " Desiccant Supply Fan Outlet Node; !- Air Outlet Node Name", + + " Fan:ConstantVolume,", + " Desiccant Regen Fan, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " 0.7, !- Fan Total Efficiency", + " 205.5, !- Pressure Rise {Pa}", + " autosize, !- Maximum Flow Rate {m3/s}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Airstream Fraction", + " HX Regen Outlet Node, !- Air Inlet Node Name", + " Regen Fan Outlet Node; !- Air Outlet Node Name", + + " Dehumidifier:Desiccant:System,", + " Desiccant 1, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " HeatExchanger:Desiccant:BalancedFlow, !- Desiccant Heat Exchanger Object Type", + " Desiccant Heat Exchanger 1, !- Desiccant Heat Exchanger Name", + " HX Process Outlet Node, !- Sensor Node Name", + " Fan:ConstantVolume, !- Regeneration Air Fan Object Type", + " Desiccant Regen Fan, !- Regeneration Air Fan Name", + " DrawThrough, !- Regeneration Air Fan Placement", + " Coil:Heating:Fuel, !- Regeneration Air Heater Object Type", + " Desiccant Regen Coil, !- Regeneration Air Heater Name", + " 46.111111, !- Regeneration Inlet Air Setpoint Temperature {C}", + " Coil:Cooling:DX:VariableSpeed, !- Companion Cooling Coil Object Type", + " Desiccant DXSystem Cooling Coil, !- Companion Cooling Coil Name", + " Yes, !- Companion Cooling Coil Upstream of Dehumidifier Process Inlet", + " Yes, !- Companion Coil Regeneration Air Heating", + " 0.87931, !- Exhaust Fan Maximum Flow Rate {m3/s}", + " 50, !- Exhaust Fan Maximum Power {W}", + " EXHAUSTFANPLF; !- Exhaust Fan Power Curve Name", + + " HeatExchanger:Desiccant:BalancedFlow,", + " Desiccant Heat Exchanger 1, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " HX Regen Inlet Node, !- Regeneration Air Inlet Node Name", + " HX Regen Outlet Node, !- Regeneration Air Outlet Node Name", + " HX Process Inlet Node, !- Process Air Inlet Node Name", + " HX Process Outlet Node, !- Process Air Outlet Node Name", + " HeatExchanger:Desiccant:BalancedFlow:PerformanceDataType1, !- Heat Exchanger Performance Object Type", + " HXDesPerf1; !- Heat Exchanger Performance Name", + + " HeatExchanger:Desiccant:BalancedFlow:PerformanceDataType1,", + " HXDesPerf1, !- Name", + " 0.87931, !- Nominal Air Flow Rate {m3/s}", + " 3.25, !- Nominal Air Face Velocity {m/s}", + " 50.0, !- Nominal Electric Power {W}", + " -2.53636E+00, !- Temperature Equation Coefficient 1", + " 2.13247E+01, !- Temperature Equation Coefficient 2", + " 9.23308E-01, !- Temperature Equation Coefficient 3", + " 9.43276E+02, !- Temperature Equation Coefficient 4", + " -5.92367E+01, !- Temperature Equation Coefficient 5", + " -4.27465E-02, !- Temperature Equation Coefficient 6", + " 1.12204E+02, !- Temperature Equation Coefficient 7", + " 7.78252E-01, !- Temperature Equation Coefficient 8", + " 0.007143, !- Minimum Regeneration Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", + " 0.024286, !- Maximum Regeneration Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", + " 46.111110, !- Minimum Regeneration Inlet Air Temperature for Temperature Equation {C}", + " 46.111112, !- Maximum Regeneration Inlet Air Temperature for Temperature Equation {C}", + " 0.005000, !- Minimum Process Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", + " 0.015714, !- Maximum Process Inlet Air Humidity Ratio for Temperature Equation {kgWater/kgDryAir}", + " 4.583333, !- Minimum Process Inlet Air Temperature for Temperature Equation {C}", + " 21.83333, !- Maximum Process Inlet Air Temperature for Temperature Equation {C}", + " 2.286, !- Minimum Regeneration Air Velocity for Temperature Equation {m/s}", + " 4.826, !- Maximum Regeneration Air Velocity for Temperature Equation {m/s}", + " 35.0, !- Minimum Regeneration Outlet Air Temperature for Temperature Equation {C}", + " 50.0, !- Maximum Regeneration Outlet Air Temperature for Temperature Equation {C}", + " 5.0, !- Minimum Regeneration Inlet Air Relative Humidity for Temperature Equation {percent}", + " 45.0, !- Maximum Regeneration Inlet Air Relative Humidity for Temperature Equation {percent}", + " 80.0, !- Minimum Process Inlet Air Relative Humidity for Temperature Equation {percent}", + " 100.0, !- Maximum Process Inlet Air Relative Humidity for Temperature Equation {percent}", + " -2.25547E+01, !- Humidity Ratio Equation Coefficient 1", + " 9.76839E-01, !- Humidity Ratio Equation Coefficient 2", + " 4.89176E-01, !- Humidity Ratio Equation Coefficient 3", + " -6.30019E-02, !- Humidity Ratio Equation Coefficient 4", + " 1.20773E-02, !- Humidity Ratio Equation Coefficient 5", + " 5.17134E-05, !- Humidity Ratio Equation Coefficient 6", + " 4.94917E-02, !- Humidity Ratio Equation Coefficient 7", + " -2.59417E-04, !- Humidity Ratio Equation Coefficient 8", + " 0.007143, !- Minimum Regeneration Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " 0.024286, !- Maximum Regeneration Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " 46.111110, !- Minimum Regeneration Inlet Air Temperature for Humidity Ratio Equation {C}", + " 46.111112, !- Maximum Regeneration Inlet Air Temperature for Humidity Ratio Equation {C}", + " 0.005000, !- Minimum Process Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " 0.015714, !- Maximum Process Inlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " 4.583333, !- Minimum Process Inlet Air Temperature for Humidity Ratio Equation {C}", + " 21.83333, !- Maximum Process Inlet Air Temperature for Humidity Ratio Equation {C}", + " 2.286, !- Minimum Regeneration Air Velocity for Humidity Ratio Equation {m/s}", + " 4.826, !- Maximum Regeneration Air Velocity for Humidity Ratio Equation {m/s}", + " 0.007914, !- Minimum Regeneration Outlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " 0.026279, !- Maximum Regeneration Outlet Air Humidity Ratio for Humidity Ratio Equation {kgWater/kgDryAir}", + " 5.0, !- Minimum Regeneration Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", + " 45.0, !- Maximum Regeneration Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", + " 80.0, !- Minimum Process Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", + " 100.0; !- Maximum Process Inlet Air Relative Humidity for Humidity Ratio Equation {percent}", + }); + + ASSERT_TRUE(process_idf(idf_objects)); + + OutputProcessor::TimeValue.allocate(2); + DataGlobals::DDOnlySimulation = true; + + SimulationManager::GetProjectData(); + OutputReportPredefined::SetPredefinedTables(); + createFacilityElectricPowerServiceObject(); + SetPreConstructionInputParameters(); // establish array bounds for constructions early + BranchInputManager::ManageBranchInput(); + BeginSimFlag = true; + BeginEnvrnFlag = true; + ZoneSizingCalc = true; + SysSizingCalc = true; + SizingManager::ManageSizing(); + + DataSizing::CurSysNum = 1; + DataSizing::CurOASysNum = 0; + + GetDesiccantDehumidifierInput(); + EXPECT_EQ(1, NumDesicDehums); + EXPECT_EQ("DESICCANT 1", DesicDehum(DesicDehumNum).Name); + EXPECT_EQ("DESICCANT REGEN COIL", DesicDehum(DesicDehumNum).RegenCoilName); + + EXPECT_EQ(DesicDehum(DesicDehumNum).coolingCoil_TypeNum, DataHVACGlobals::Coil_CoolingAirToAirVariableSpeed); + + EXPECT_EQ(DesicDehum(DesicDehumNum).CoilUpstreamOfProcessSide, 1); + + CompName = DesicDehum(DesicDehumNum).Name; + CompIndex = NumGenericDesicDehums; + SimDesiccantDehumidifier(CompName, FirstHVACIteration, CompIndex); + + RegCoilDesInletTemp = FinalSysSizing(DataSizing::CurSysNum).HeatOutTemp; + RegCoilDesOutletTemp = DesicDehum(DesicDehumNum).RegenSetPointTemp; + RegCoilInletAirMassFlowRate = FinalSysSizing(DataSizing::CurSysNum).DesMainVolFlow * DataEnvironment::StdRhoAir; + RegCoilCapacity = RegCoilInletAirMassFlowRate * PsyCpAirFnWTdb(0.0, 20.0) * (RegCoilDesOutletTemp - RegCoilDesInletTemp); + + for (loop = 1; loop <= NumHeatingCoils; ++loop) { if (HeatingCoil(loop).Name == DesicDehum(DesicDehumNum).RegenCoilName) { CoilIndex = loop; - } - } + } + } EXPECT_EQ(RegCoilCapacity, HeatingCoil(CoilIndex).NominalCapacity); } } // namespace EnergyPlus diff --git a/tst/EnergyPlus/unit/HVACFourPipeBeam.unit.cc b/tst/EnergyPlus/unit/HVACFourPipeBeam.unit.cc index fbe1cd1de0b..455c88b2ea0 100644 --- a/tst/EnergyPlus/unit/HVACFourPipeBeam.unit.cc +++ b/tst/EnergyPlus/unit/HVACFourPipeBeam.unit.cc @@ -76,3101 +76,3101 @@ namespace EnergyPlus { TEST_F(EnergyPlusFixture, Beam_FactoryAllAutosize) { - std::string const idf_objects = delimited_string( { - "Version,8.4;", - "AirTerminal:SingleDuct:ConstantVolume:FourPipeBeam,", - " Perimeter_top_ZN_4 4pipe Beam, !- Name", - " , !- Primary Air Availability Schedule Name", - " , !- Cooling Availability Schedule Name", - " , !- Heating Availability Schedule Name", - " Perimeter_top_ZN_4 4pipe Beam Inlet Node Name , !- Primary Air Inlet Node Name", - " Perimeter_top_ZN_4 4pipe Beam Outlet Node Name , !- Primary Air Outlet Node Name", - " Perimeter_top_ZN_4 4pipe Beam CW Inlet Node , !- Chilled Water Inlet Node Name", - " Perimeter_top_ZN_4 4pipe Beam CW Outlet Node , !- Chilled Water Outlet Node Name", - " Perimeter_top_ZN_4 4pipe Beam HW Inlet Node , !- Hot Water Inlet Node Name", - " Perimeter_top_ZN_4 4pipe Beam HW Outlet Node, !- Hot Water Outlet Node Name", - " AUTOSIZE , !- Design Primary Air Volume Flow Rate", - " AUTOSIZE , !- Design Chilled Water Volume Flow Rate", - " AUTOSIZE , !- Design Hot Water Volume Flow Rate", - " AUTOSIZE , !- Zone Total Beam Length", - " 0.036 , !- Rated Primary Air Flow Rate per Meter", - " 597 , !- Rated Beam Cooling Capacity per Meter", - " 10.0 , !- Rated Cooling Room Air Chilled Water Temperature Difference", - " 5.2E-5 , !- Rated Chilled Water Volume Flow Rate per Meter", - " CapModFuncOfTempDiff, !- Beam Cooling Capacity Temperature Difference Modification Factor Curve or Table Name", - " CoolCapModFuncOfSAFlow, !- Beam Cooling Capacity Air Flow Modification Factor Curve or Table Name", - " CapModFuncOfWaterFlow, !- Beam Cooling Capacity Chilled Water Flow Modification Factor Curve or Table Name", - " 1548 , !- Rated Beam Heating Capacity per Meter", - " 27.8, !- Rated Heating Room Air Hot Water Temperature Difference", - " 5.2E-5, !- Rated Hot Water Volume Flow Rate per Meter", - " CapModFuncOfTempDiff, !- Beam Heating Capacity Temperature Difference Modification Factor Curve or Table Name", - " HeatCapModFuncOfSAFlow, !- Beam Heating Capacity Air Flow Modification Factor Curve or Table Name", - " CapModFuncOfWaterFlow; !- Beam Heating Capacity Hot Water Flow Modification Factor Curve or Table Name", - " Curve:Linear, ! y = x", - " CapModFuncOfTempDiff, !-Name", - " 0, !_ Coef Const", - " 1, !- Coef x", - " 0, !- min x", - " 1.5, !- max x", - " 0.0 , !- min y", - " 1.5; ! max y", - " Table:OneIndependentVariable,", - " CoolCapModFuncOfSAFlow, !- Name", - " quadratic,!- Curve Type", - " EvaluateCurveToLimits,!- Interpolation Method", - " 0.714,!- min x", - " 1.2857,!- max x", - " 0.8234,!- min y", - " 1.1256,!- max y", - " dimensionless, !-", - " dimensionless, !- ", - " , !- normalization ref", - " 0.714286, 0.823403,", - " 1.0, 1.0,", - " 1.2857, 1.1256;", - " Table:OneIndependentVariable,", - " CapModFuncOfWaterFlow, !- Name", - " quadratic,!- Curve Type", - " EvaluateCurveToLimits,!- Interpolation Method", - " 0.0,!- min x", - " 1.333333,!- max x", - " 0.0,!- min y", - " 1.04,!- max y", - " dimensionless, !-", - " dimensionless, !- ", - " , !- normalization ref", - " 0.0, 0.0,", - " 0.05, 0.001,", - " 0.33333, 0.71,", - " 0.5, 0.85,", - " 0.666667, 0.92,", - " 0.833333, 0.97,", - " 1.0, 1.0,", - " 1.333333, 1.04;", - " Table:OneIndependentVariable,", - " HeatCapModFuncOfSAFlow, !- Name", - " quadratic,!- Curve Type", - " EvaluateCurveToLimits,!- Interpolation Method", - " 0.714,!- min x", - " 1.2857,!- max x", - " 0.8554,!- min y", - " 1.0778,!- max y", - " dimensionless, !-", - " dimensionless, !- ", - " , !- normalization ref", - " 0.714286, 0.8554,", - " 1.0, 1.0,", - " 1.2857, 1.0778; ", - } ); - - ASSERT_TRUE( process_idf( idf_objects ) ); - DataGlobals::NumOfZones = 1; - - DataHeatBalance::Zone.allocate( DataGlobals::NumOfZones ); - - DataZoneEquipment::ZoneEquipConfig.allocate( 1 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).NumInletNodes = 1; - DataZoneEquipment::ZoneEquipConfig( 1 ).IsControlled = true; - DataZoneEquipment::ZoneEquipConfig( 1 ).InletNode.allocate( 1 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).AirDistUnitCool.allocate( 1 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).AirDistUnitHeat.allocate( 1 ); - - DataZoneEquipment::ZoneEquipConfig( 1 ).InletNode( 1 ) = 3; - bool ErrorsFound = false; + std::string const idf_objects = delimited_string({ + "Version,8.4;", + "AirTerminal:SingleDuct:ConstantVolume:FourPipeBeam,", + " Perimeter_top_ZN_4 4pipe Beam, !- Name", + " , !- Primary Air Availability Schedule Name", + " , !- Cooling Availability Schedule Name", + " , !- Heating Availability Schedule Name", + " Perimeter_top_ZN_4 4pipe Beam Inlet Node Name , !- Primary Air Inlet Node Name", + " Perimeter_top_ZN_4 4pipe Beam Outlet Node Name , !- Primary Air Outlet Node Name", + " Perimeter_top_ZN_4 4pipe Beam CW Inlet Node , !- Chilled Water Inlet Node Name", + " Perimeter_top_ZN_4 4pipe Beam CW Outlet Node , !- Chilled Water Outlet Node Name", + " Perimeter_top_ZN_4 4pipe Beam HW Inlet Node , !- Hot Water Inlet Node Name", + " Perimeter_top_ZN_4 4pipe Beam HW Outlet Node, !- Hot Water Outlet Node Name", + " AUTOSIZE , !- Design Primary Air Volume Flow Rate", + " AUTOSIZE , !- Design Chilled Water Volume Flow Rate", + " AUTOSIZE , !- Design Hot Water Volume Flow Rate", + " AUTOSIZE , !- Zone Total Beam Length", + " 0.036 , !- Rated Primary Air Flow Rate per Meter", + " 597 , !- Rated Beam Cooling Capacity per Meter", + " 10.0 , !- Rated Cooling Room Air Chilled Water Temperature Difference", + " 5.2E-5 , !- Rated Chilled Water Volume Flow Rate per Meter", + " CapModFuncOfTempDiff, !- Beam Cooling Capacity Temperature Difference Modification Factor Curve or Table Name", + " CoolCapModFuncOfSAFlow, !- Beam Cooling Capacity Air Flow Modification Factor Curve or Table Name", + " CapModFuncOfWaterFlow, !- Beam Cooling Capacity Chilled Water Flow Modification Factor Curve or Table Name", + " 1548 , !- Rated Beam Heating Capacity per Meter", + " 27.8, !- Rated Heating Room Air Hot Water Temperature Difference", + " 5.2E-5, !- Rated Hot Water Volume Flow Rate per Meter", + " CapModFuncOfTempDiff, !- Beam Heating Capacity Temperature Difference Modification Factor Curve or Table Name", + " HeatCapModFuncOfSAFlow, !- Beam Heating Capacity Air Flow Modification Factor Curve or Table Name", + " CapModFuncOfWaterFlow; !- Beam Heating Capacity Hot Water Flow Modification Factor Curve or Table Name", + " Curve:Linear, ! y = x", + " CapModFuncOfTempDiff, !-Name", + " 0, !_ Coef Const", + " 1, !- Coef x", + " 0, !- min x", + " 1.5, !- max x", + " 0.0 , !- min y", + " 1.5; ! max y", + " Table:OneIndependentVariable,", + " CoolCapModFuncOfSAFlow, !- Name", + " quadratic,!- Curve Type", + " EvaluateCurveToLimits,!- Interpolation Method", + " 0.714,!- min x", + " 1.2857,!- max x", + " 0.8234,!- min y", + " 1.1256,!- max y", + " dimensionless, !-", + " dimensionless, !- ", + " , !- normalization ref", + " 0.714286, 0.823403,", + " 1.0, 1.0,", + " 1.2857, 1.1256;", + " Table:OneIndependentVariable,", + " CapModFuncOfWaterFlow, !- Name", + " quadratic,!- Curve Type", + " EvaluateCurveToLimits,!- Interpolation Method", + " 0.0,!- min x", + " 1.333333,!- max x", + " 0.0,!- min y", + " 1.04,!- max y", + " dimensionless, !-", + " dimensionless, !- ", + " , !- normalization ref", + " 0.0, 0.0,", + " 0.05, 0.001,", + " 0.33333, 0.71,", + " 0.5, 0.85,", + " 0.666667, 0.92,", + " 0.833333, 0.97,", + " 1.0, 1.0,", + " 1.333333, 1.04;", + " Table:OneIndependentVariable,", + " HeatCapModFuncOfSAFlow, !- Name", + " quadratic,!- Curve Type", + " EvaluateCurveToLimits,!- Interpolation Method", + " 0.714,!- min x", + " 1.2857,!- max x", + " 0.8554,!- min y", + " 1.0778,!- max y", + " dimensionless, !-", + " dimensionless, !- ", + " , !- normalization ref", + " 0.714286, 0.8554,", + " 1.0, 1.0,", + " 1.2857, 1.0778; ", + }); + + ASSERT_TRUE(process_idf(idf_objects)); + DataGlobals::NumOfZones = 1; + + DataHeatBalance::Zone.allocate(DataGlobals::NumOfZones); + + DataZoneEquipment::ZoneEquipConfig.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).NumInletNodes = 1; + DataZoneEquipment::ZoneEquipConfig(1).IsControlled = true; + DataZoneEquipment::ZoneEquipConfig(1).InletNode.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).AirDistUnitCool.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).AirDistUnitHeat.allocate(1); + + DataZoneEquipment::ZoneEquipConfig(1).InletNode(1) = 3; + bool ErrorsFound = false; DataZoneEquipment::ZoneEquipConfig(1).ZoneNode = NodeInputManager::GetOnlySingleNode("Zone 1 Node", ErrorsFound, "Zone", "BeamTest", DataLoopNode::NodeType_Air, DataLoopNode::NodeConnectionType_ZoneNode, 1, DataLoopNode::ObjectIsNotParent, "Test zone node"); - DataDefineEquip::NumAirDistUnits = 1; - DataDefineEquip::AirDistUnit.allocate( 1 ); + DataDefineEquip::NumAirDistUnits = 1; + DataDefineEquip::AirDistUnit.allocate(1); DataDefineEquip::AirDistUnit(1).EquipName(1) = "PERIMETER_TOP_ZN_4 4PIPE BEAM"; // needs to be uppercased, or item will not be found at line 2488 in IP - DataDefineEquip::AirDistUnit( 1 ).OutletNodeNum = 3; + DataDefineEquip::AirDistUnit(1).OutletNodeNum = 3; DataDefineEquip::AirDistUnit(1).airTerminalPtr = FourPipeBeam::HVACFourPipeBeam::fourPipeBeamFactory( DataDefineEquip::SingleDuctConstVolFourPipeBeam, DataDefineEquip::AirDistUnit(1).EquipName(1)); - //EXPECT_EQ( DataDefineEquip::AirDistUnit( 1 ).airTerminalPtr->name, "PERIMETER_TOP_ZN_4 4PIPE BEAM"); - - EXPECT_EQ( 2, DataZoneEquipment::ZoneEquipConfig( 1 ).AirDistUnitHeat( 1 ).InNode ); - - EXPECT_EQ( 3, DataZoneEquipment::ZoneEquipConfig( 1 ).AirDistUnitHeat( 1 ).OutNode ); - //EXPECT_EQ( DataDefineEquip::AirDistUnit( 1 ).airTerminalPtr->aDUNum, 1 ); - } - - TEST_F( EnergyPlusFixture, Beam_sizeandSimulateOneZone ) - { - std::string const idf_objects = delimited_string( { - " SimulationControl,", - " YES, !- Do Zone Sizing Calculation", - " YES, !- Do System Sizing Calculation", - " YES, !- Do Plant Sizing Calculation", - " Yes, !- Run Simulation for Sizing Periods", - " yes; !- Run Simulation for Weather File Run Periods", - - " Building,", - " Simple One Zone (Wireframe DXF), !- Name", - " 0, !- North Axis {deg}", - " Suburbs, !- Terrain", - " 0.04, !- Loads Convergence Tolerance Value", - " 0.004, !- Temperature Convergence Tolerance Value {deltaC}", - " MinimalShadowing, !- Solar Distribution", - " 30, !- Maximum Number of Warmup Days", - " 6; !- Minimum Number of Warmup Days", - - " RunPeriod,", - " annual, !- Name", - " 1, !- Begin Month", - " 1, !- Begin Day of Month", - " , !- Begin Year", - " 12, !- End Month", - " 31, !- End Day of Month", - " , !- End Year", - " Sunday, !- Day of Week for Start Day", - " No, !- Use Weather File Holidays and Special Days", - " No, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " Yes; !- Use Weather File Snow Indicators", - - " ScheduleTypeLimits,", - " On/Off, !- Name", - " 0, !- Lower Limit Value", - " 1, !- Upper Limit Value", - " DISCRETE; !- Numeric Type", - - " ScheduleTypeLimits,", - " Any Number; !- Name", - - " ScheduleTypeLimits,", - " Temperature, !- Name", - " -60, !- Lower Limit Value", - " 200, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - " ScheduleTypeLimits,", - " Control Type, !- Name", - " 0, !- Lower Limit Value", - " 4, !- Upper Limit Value", - " DISCRETE; !- Numeric Type", - - " Schedule:Compact,", - " ALWAYS_ON, !- Name", - " On/Off, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1; !- Field 3", - - " Schedule:Compact,", - " ACTIVITY_SCH, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,120; !- Field 3", - - " Schedule:Compact,", - " WORK_EFF_SCH, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,0.0; !- Field 3", - - " Schedule:Compact,", - " AIR_VELO_SCH, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,0.2; !- Field 3", - - " Schedule:Compact,", - " CLOTHING_SCH, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 04/30, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0, !- Field 3", - " Through: 09/30, !- Field 5", - " For: AllDays, !- Field 6", - " Until: 24:00,0.5, !- Field 7", - " Through: 12/31, !- Field 9", - " For: AllDays, !- Field 10", - " Until: 24:00,1.0; !- Field 11", - - " Schedule:Compact,", - " BLDG_OCC_SCH, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: SummerDesignDay, !- Field 2", - " Until: 06:00,0.0, !- Field 3", - " Until: 22:00,1.0, !- Field 5", - " Until: 24:00,0.05, !- Field 7", - " For: Weekdays, !- Field 9", - " Until: 06:00,0.0, !- Field 10", - " Until: 07:00,0.1, !- Field 12", - " Until: 08:00,0.2, !- Field 14", - " Until: 12:00,0.95, !- Field 16", - " Until: 13:00,0.5, !- Field 18", - " Until: 17:00,0.95, !- Field 20", - " Until: 18:00,0.7, !- Field 22", - " Until: 20:00,0.4, !- Field 24", - " Until: 22:00,0.1, !- Field 26", - " Until: 24:00,0.05, !- Field 28", - " For: Saturday, !- Field 30", - " Until: 06:00,0.0, !- Field 31", - " Until: 08:00,0.1, !- Field 33", - " Until: 14:00,0.5, !- Field 35", - " Until: 17:00,0.1, !- Field 37", - " Until: 24:00,0.0, !- Field 39", - " For: AllOtherDays, !- Field 41", - " Until: 24:00,0.0; !- Field 42", - - " Schedule:Compact,", - " BLDG_LIGHT_SCH, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Weekdays, !- Field 2", - " Until: 05:00,0.05, !- Field 3", - " Until: 07:00,0.1, !- Field 5", - " Until: 08:00,0.3, !- Field 7", - " Until: 17:00,0.9, !- Field 9", - " Until: 18:00,0.7, !- Field 11", - " Until: 20:00,0.5, !- Field 13", - " Until: 22:00,0.3, !- Field 15", - " Until: 23:00,0.1, !- Field 17", - " Until: 24:00,0.05, !- Field 19", - " For: Saturday, !- Field 21", - " Until: 06:00,0.05, !- Field 22", - " Until: 08:00,0.1, !- Field 24", - " Until: 14:00,0.5, !- Field 26", - " Until: 17:00,0.15, !- Field 28", - " Until: 24:00,0.05, !- Field 30", - " For: SummerDesignDay, !- Field 32", - " Until: 24:00,1.0, !- Field 33", - " For: WinterDesignDay, !- Field 35", - " Until: 24:00,0.0, !- Field 36", - " For: AllOtherDays, !- Field 38", - " Until: 24:00,0.05; !- Field 39", - - " Schedule:Compact,", - " BLDG_EQUIP_SCH, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Weekdays, !- Field 2", - " Until: 08:00,0.40, !- Field 3", - " Until: 12:00,0.90, !- Field 5", - " Until: 13:00,0.80, !- Field 7", - " Until: 17:00,0.90, !- Field 9", - " Until: 18:00,0.80, !- Field 11", - " Until: 20:00,0.60, !- Field 13", - " Until: 22:00,0.50, !- Field 15", - " Until: 24:00,0.40, !- Field 17", - " For: Saturday, !- Field 19", - " Until: 06:00,0.30, !- Field 20", - " Until: 08:00,0.4, !- Field 22", - " Until: 14:00,0.5, !- Field 24", - " Until: 17:00,0.35, !- Field 26", - " Until: 24:00,0.30, !- Field 28", - " For: SummerDesignDay, !- Field 30", - " Until: 24:00,1.0, !- Field 31", - " For: WinterDesignDay, !- Field 33", - " Until: 24:00,0.0, !- Field 34", - " For: AllOtherDays, !- Field 36", - " Until: 24:00,0.30; !- Field 37", - - " SurfaceConvectionAlgorithm:Inside,TARP;", - - " SurfaceConvectionAlgorithm:Outside,DOE-2;", - - " HeatBalanceAlgorithm,ConductionTransferFunction,200.0000;", - - " ZoneAirHeatBalanceAlgorithm,", - " AnalyticalSolution; !- Algorithm", - - " Sizing:Parameters,", - " 1.33, !- Heating Sizing Factor", - " 1.33, !- Cooling Sizing Factor", - " 6; !- Timesteps in Averaging Window", - - " ConvergenceLimits,", - " 2, !- Minimum System Timestep {minutes}", - " 25; !- Maximum HVAC Iterations", - - " ShadowCalculation,", - " AverageOverDaysInFrequency, !- Calculation Method", - " 7, !- Calculation Frequency", - " 15000; !- Maximum Figures in Shadow Overlap Calculations", - - " Timestep,6;", - " Site:Location,", - " USA IL-CHICAGO-OHARE, !- Name", - " 41.77, !- Latitude {deg}", - " -87.75, !- Longitude {deg}", - " -6.00, !- Time Zone {hr}", - " 190; !- Elevation {m}", - - "! CHICAGO_IL_USA Annual Heating 99.6%, MaxDB=-20.6�C", - - " SizingPeriod:DesignDay,", - " CHICAGO Ann Htg 99.6% Condns DB, !- Name", - " 1, !- Month", - " 21, !- Day of Month", - " WinterDesignDay, !- Day Type", - " -20.6, !- Maximum Dry-Bulb Temperature {C}", - " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " -20.6, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 4.9, !- Wind Speed {m/s}", - " 270, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 0.00; !- Sky Clearness", - - "! CHICAGO_IL_USA Annual Cooling (WB=>MDB) .4%, MDB=31.2�C WB=25.5�C", - - " SizingPeriod:DesignDay,", - " CHICAGO Ann Clg .4% Condns WB=>MDB, !- Name", - " 7, !- Month", - " 21, !- Day of Month", - " SummerDesignDay, !- Day Type", - " 31.2, !- Maximum Dry-Bulb Temperature {C}", - " 10.7, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " 25.5, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 5.3, !- Wind Speed {m/s}", - " 230, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 1.00; !- Sky Clearness", - - " Material:NoMass,", - " R13LAYER, !- Name", - " Rough, !- Roughness", - " 2.290965, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material:NoMass,", - " R31LAYER, !- Name", - " Rough, !- Roughness", - " 5.456, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " C5 - 4 IN HW CONCRETE, !- Name", - " MediumRough, !- Roughness", - " 0.1014984, !- Thickness {m}", - " 1.729577, !- Conductivity {W/m-K}", - " 2242.585, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - - " Construction,", - " R13WALL, !- Name", - " R13LAYER; !- Outside Layer", - - " Construction,", - " FLOOR, !- Name", - " C5 - 4 IN HW CONCRETE; !- Outside Layer", - - " Construction,", - " ROOF31, !- Name", - " R31LAYER; !- Outside Layer", - - " Zone,", - " ZONE ONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " People,", - " ZONE ONE People, !- Name", - " ZONE ONE, !- Zone or ZoneList Name", - " BLDG_OCC_SCH, !- Number of People Schedule Name", - " Area/Person, !- Number of People Calculation Method", - " , !- Number of People", - " , !- People per Zone Floor Area {person/m2}", - " 18.58, !- Zone Floor Area per Person {m2/person}", - " 0.3000, !- Fraction Radiant", - " AUTOCALCULATE, !- Sensible Heat Fraction", - " ACTIVITY_SCH, !- Activity Level Schedule Name", - " , !- Carbon Dioxide Generation Rate {m3/s-W}", - " No, !- Enable ASHRAE 55 Comfort Warnings", - " ZoneAveraged, !- Mean Radiant Temperature Calculation Type", - " , !- Surface Name/Angle Factor List Name", - " WORK_EFF_SCH, !- Work Efficiency Schedule Name", - " ClothingInsulationSchedule, !- Clothing Insulation Calculation Method", - " , !- Clothing Insulation Calculation Method Schedule Name", - " CLOTHING_SCH, !- Clothing Insulation Schedule Name", - " AIR_VELO_SCH, !- Air Velocity Schedule Name", - " FANGER; !- Thermal Comfort Model 1 Type", - - " Lights,", - " ZONE ONE Lights, !- Name", - " ZONE ONE, !- Zone or ZoneList Name", - " BLDG_LIGHT_SCH, !- Schedule Name", - " Watts/Area, !- Design Level Calculation Method", - " , !- Lighting Level {W}", - " 10.76, !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.0000, !- Return Air Fraction", - " 0.7000, !- Fraction Radiant", - " 0.2000, !- Fraction Visible", - " 1.0000, !- Fraction Replaceable", - " General, !- End-Use Subcategory", - " No; !- Return Air Fraction Calculated from Plenum Temperature", - - " ElectricEquipment,", - " ZONE ONE Equip, !- Name", - " ZONE ONE, !- Zone or ZoneList Name", - " BLDG_EQUIP_SCH, !- Schedule Name", - " Watts/Area, !- Design Level Calculation Method", - " , !- Design Level {W}", - " 10.76, !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.0000, !- Fraction Latent", - " 0.5000, !- Fraction Radiant", - " 0.0000, !- Fraction Lost", - " General; !- End-Use Subcategory", - - " ScheduleTypeLimits,", - " Fraction, !- Name", - " 0.0, !- Lower Limit Value", - " 1.0, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - " GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " CounterClockWise, !- Vertex Entry Direction", - " World; !- Coordinate System", - - " BuildingSurface:Detailed,", - " Zn001:Wall001, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " ZONE ONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 15.24000,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,0,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall002, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " ZONE ONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000,0,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 15.24000,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 15.24000,15.24000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall003, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " ZONE ONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 15.24000,15.24000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,15.24000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall004, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " ZONE ONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,15.24000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,0,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Flr001, !- Name", - " Floor, !- Surface Type", - " FLOOR, !- Construction Name", - " ZONE ONE, !- Zone Name", - " Adiabatic, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000,0.000000,0.0, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000,0.000000,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 0.000000,15.24000,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,15.24000,0.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Roof001, !- Name", - " Roof, !- Surface Type", - " ROOF31, !- Construction Name", - " ZONE ONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.000000,15.24000,4.572, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000,0.000000,4.572, !- X,Y,Z ==> Vertex 2 {m}", - " 15.24000,0.000000,4.572, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,15.24000,4.572; !- X,Y,Z ==> Vertex 4 {m}", - - " Sizing:Zone,", - " Zone One, !- Zone or ZoneList Name", - " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", - " 12.8000, !- Zone Cooling Design Supply Air Temperature {C}", - " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", - " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", - " 50.0000, !- Zone Heating Design Supply Air Temperature {C}", - " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", - " 0.0085, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " 0.0080, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " SZ DSOA Zone One, !- Design Specification Outdoor Air Object Name", - " , !- Zone Heating Sizing Factor", - " , !- Zone Cooling Sizing Factor", - " DesignDay, !- Cooling Design Air Flow Method", - " , !- Cooling Design Air Flow Rate {m3/s}", - " , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", - " , !- Cooling Minimum Air Flow {m3/s}", - " , !- Cooling Minimum Air Flow Fraction", - " DesignDay, !- Heating Design Air Flow Method", - " , !- Heating Design Air Flow Rate {m3/s}", - " , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", - " , !- Heating Maximum Air Flow {m3/s}", - " ; !- Heating Maximum Air Flow Fraction", - - " DesignSpecification:OutdoorAir,", - " SZ DSOA Zone One, !- Name", - " Flow/Person, !- Outdoor Air Method", - " 0.0125; !- Outdoor Air Flow per Person {m3/s-person}", - - " ZoneControl:Thermostat,", - " Zone One Thermostat, !- Name", - " Zone One, !- Zone or ZoneList Name", - " Dual Zone Control Type Sched, !- Control Type Schedule Name", - " ThermostatSetpoint:DualSetpoint, !- Control 1 Object Type", - " Zone One DualSPSched; !- Control 1 Name", - - " Schedule:Compact,", - " Dual Zone Control Type Sched, !- Name", - " Control Type, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,4; !- Field 3", - - " ThermostatSetpoint:DualSetpoint,", - " Zone One DualSPSched, !- Name", - " HTGSETP_SCH, !- Heating Setpoint Temperature Schedule Name", - " CLGSETP_SCH; !- Cooling Setpoint Temperature Schedule Name", - - " Schedule:Compact,", - " CLGSETP_SCH, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Weekdays SummerDesignDay, !- Field 2", - " Until: 06:00,26.7, !- Field 3", - " Until: 22:00,24.0, !- Field 5", - " Until: 24:00,26.7, !- Field 7", - " For: Saturday, !- Field 9", - " Until: 06:00,26.7, !- Field 10", - " Until: 18:00,24.0, !- Field 12", - " Until: 24:00,26.7, !- Field 14", - " For WinterDesignDay, !- Field 16", - " Until: 24:00,26.7, !- Field 17", - " For: AllOtherDays, !- Field 19", - " Until: 24:00,26.7; !- Field 20", - - " Schedule:Compact,", - " HTGSETP_SCH, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Weekdays, !- Field 2", - " Until: 06:00,15.6, !- Field 3", - " Until: 22:00,21.0, !- Field 5", - " Until: 24:00,15.6, !- Field 7", - " For SummerDesignDay, !- Field 9", - " Until: 24:00,15.6, !- Field 10", - " For: Saturday, !- Field 12", - " Until: 06:00,15.6, !- Field 13", - " Until: 18:00,21.0, !- Field 15", - " Until: 24:00,15.6, !- Field 17", - " For: WinterDesignDay, !- Field 19", - " Until: 24:00,21.0, !- Field 20", - " For: AllOtherDays, !- Field 22", - " Until: 24:00,15.6; !- Field 23", - - " Sizing:System,", - " CV_1, !- AirLoop Name", - " Sensible, !- Type of Load to Size On", - " AUTOSIZE, !- Design Outdoor Air Flow Rate {m3/s}", - " 0.3, !- Central Heating Maximum System Air Flow Ratio", - " 7.0, !- Preheat Design Temperature {C}", - " 0.008, !- Preheat Design Humidity Ratio {kgWater/kgDryAir}", - " 12.8000, !- Precool Design Temperature {C}", - " 0.008, !- Precool Design Humidity Ratio {kgWater/kgDryAir}", - " 12.8000, !- Central Cooling Design Supply Air Temperature {C}", - " 16.7000, !- Central Heating Design Supply Air Temperature {C}", - " NonCoincident, !- Type of Zone Sum to Use", - " No, !- 100% Outdoor Air in Cooling", - " No, !- 100% Outdoor Air in Heating", - " 0.0085, !- Central Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " 0.0080, !- Central Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " DesignDay, !- Cooling Design Air Flow Method", - " , !- Cooling Design Air Flow Rate {m3/s}", - " , !- Supply Air Flow Rate Per Floor Area During Cooling Operation {m3/s-m2}", - " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", - " , !- Design Supply Air Flow Rate Per Unit Cooling Capacity {m3/s-W}", - " DesignDay, !- Heating Design Air Flow Method", - " , !- Heating Design Air Flow Rate {m3/s}", - " , !- Supply Air Flow Rate Per Floor Area During Heating Operation {m3/s-m2}", - " , !- Fraction of Autosized Design Heating Supply Air Flow Rate", - " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", - " , !- Design Supply Air Flow Rate Per Unit Heating Capacity {m3/s-W}", - " , !- System Outdoor Air Method", - " 1.0, !- Zone Maximum Outdoor Air Fraction {dimensionless}", - " CoolingDesignCapacity, !- Cooling Design Capacity Method", - " autosize, !- Cooling Design Capacity {W}", - " , !- Cooling Design Capacity Per Floor Area {W/m2}", - " , !- Fraction of Autosized Cooling Design Capacity", - " HeatingDesignCapacity, !- Heating Design Capacity Method", - " autosize, !- Heating Design Capacity {W}", - " , !- Heating Design Capacity Per Floor Area {W/m2}", - " , !- Fraction of Autosized Heating Design Capacity", - " ONOFF; !- Central Cooling Capacity Control Method", - - " ZoneHVAC:EquipmentConnections,", - " Zone One, !- Zone Name", - " Zone One Equipment, !- Zone Conditioning Equipment List Name", - " Zone One Inlet Nodes, !- Zone Air Inlet Node or NodeList Name", - " , !- Zone Air Exhaust Node or NodeList Name", - " Zone One Air Node, !- Zone Air Node Name", - " Zone One Return Air Node Name; !- Zone Return Air Node Name", - - " ZoneHVAC:EquipmentList,", - " Zone One Equipment, !- Name", - " SequentialLoad, !- Load Distribution Scheme", - " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", - " Zone One 4pipe Beam, !- Zone Equipment 1 Name", - " 1, !- Zone Equipment 1 Cooling Sequence", - " 1; !- Zone Equipment 1 Heating or No-Load Sequence", - - " ZoneHVAC:AirDistributionUnit,", - " Zone One 4pipe Beam, !- Name", - " Zone One 4pipe Beam Outlet Node Name, !- Air Distribution Unit Outlet Node Name", - " AirTerminal:SingleDuct:ConstantVolume:FourPipeBeam, !- Air Terminal Object Type", - " Zone One 4pipe Beam; !- Air Terminal Name", - - " NodeList,", - " Zone One Inlet Nodes, !- Name", - " Zone One 4pipe Beam Outlet Node Name; !- Node 1 Name", - - " AirLoopHVAC:ZoneSplitter,", - " CV_1 Supply Air Splitter, !- Name", - " CV_1 Zone Equipment Inlet Node, !- Inlet Node Name", - " Zone One 4pipe Beam Inlet Node Name; !- Outlet 1 Node Name", - - " AirLoopHVAC:ReturnPath,", - " CV_1 Return Air Path, !- Name", - " CV_1 Zone Equipment Outlet Node, !- Return Air Path Outlet Node Name", - " AirLoopHVAC:ZoneMixer, !- Component 2 Object Type", - " CV_1 Return Air Mixer; !- Component 2 Name", - - " AirLoopHVAC:ZoneMixer,", - " CV_1 Return Air Mixer, !- Name", - " CV_1 Zone Equipment Outlet Node, !- Outlet Node Name", - " Zone One Return Air Node Name; !- Inlet 1 Node Name", - - " Fan:VariableVolume,", - " CV_1_Fan, !- Name", - " always_on, !- Availability Schedule Name", - " 0.6045, !- Fan Total Efficiency", - " 1017.592, !- Pressure Rise {Pa}", - " AUTOSIZE, !- Maximum Flow Rate {m3/s}", - " FixedFlowRate, !- Fan Power Minimum Flow Rate Input Method", - " , !- Fan Power Minimum Flow Fraction", - " 0.0000, !- Fan Power Minimum Air Flow Rate {m3/s}", - " 0.93, !- Motor Efficiency", - " 1.0, !- Motor In Airstream Fraction", - " 0.0407598940, !- Fan Power Coefficient 1", - " 0.08804497, !- Fan Power Coefficient 2", - " -0.072926120, !- Fan Power Coefficient 3", - " 0.9437398230, !- Fan Power Coefficient 4", - " 0, !- Fan Power Coefficient 5", - " CV_1_HeatC-CV_1_FanNode, !- Air Inlet Node Name", - " CV_1 Supply Equipment Outlet Node, !- Air Outlet Node Name", - " Fan Energy; !- End-Use Subcategory", - - " Coil:Heating:Water,", - " CV_1_HeatC, !- Name", - " ALWAYS_ON, !- Availability Schedule Name", - " AUTOSIZE, !- U-Factor Times Area Value {W/K}", - " AUTOSIZE, !- Maximum Water Flow Rate {m3/s}", - " CV_1_HeatCDemand Inlet Node, !- Water Inlet Node Name", - " CV_1_HeatCDemand Outlet Node, !- Water Outlet Node Name", - " CV_1_CoolC-CV_1_HeatCNode, !- Air Inlet Node Name", - " CV_1_HeatC-CV_1_FanNode, !- Air Outlet Node Name", - " UFactorTimesAreaAndDesignWaterFlowRate, !- Performance Input Method", - " AUTOSIZE, !- Rated Capacity {W}", - " 82.2, !- Rated Inlet Water Temperature {C}", - " 16.6, !- Rated Inlet Air Temperature {C}", - " 71.1, !- Rated Outlet Water Temperature {C}", - " 32.2, !- Rated Outlet Air Temperature {C}", - " ; !- Rated Ratio for Air and Water Convection", - - " Coil:Cooling:Water,", - " CV_1_CoolC, !- Name", - " ALWAYS_ON, !- Availability Schedule Name", - " AUTOSIZE, !- Design Water Flow Rate {m3/s}", - " AUTOSIZE, !- Design Air Flow Rate {m3/s}", - " AUTOSIZE, !- Design Inlet Water Temperature {C}", - " AUTOSIZE, !- Design Inlet Air Temperature {C}", - " AUTOSIZE, !- Design Outlet Air Temperature {C}", - " AUTOSIZE, !- Design Inlet Air Humidity Ratio {kgWater/kgDryAir}", - " AUTOSIZE, !- Design Outlet Air Humidity Ratio {kgWater/kgDryAir}", - " CV_1_CoolCDemand Inlet Node, !- Water Inlet Node Name", - " CV_1_CoolCDemand Outlet Node, !- Water Outlet Node Name", - " CV_1_OA-CV_1_CoolCNode,!- Air Inlet Node Name", - " CV_1_CoolC-CV_1_HeatCNode, !- Air Outlet Node Name", - " SimpleAnalysis, !- Type of Analysis", - " CrossFlow; !- Heat Exchanger Configuration", - - " Controller:OutdoorAir,", - " CV_1_OA_Controller, !- Name", - " CV_1_OARelief Node, !- Relief Air Outlet Node Name", - " CV_1 Supply Equipment Inlet Node, !- Return Air Node Name", - " CV_1_OA-CV_1_CoolCNode,!- Mixed Air Node Name", - " CV_1_OAInlet Node, !- Actuator Node Name", - " AUTOSIZE, !- Minimum Outdoor Air Flow Rate {m3/s}", - " AUTOSIZE, !- Maximum Outdoor Air Flow Rate {m3/s}", - " DifferentialDryBulb, !- Economizer Control Type", - " ModulateFlow, !- Economizer Control Action Type", - " 28.0, !- Economizer Maximum Limit Dry-Bulb Temperature {C}", - " 64000.0, !- Economizer Maximum Limit Enthalpy {J/kg}", - " , !- Economizer Maximum Limit Dewpoint Temperature {C}", - " , !- Electronic Enthalpy Limit Curve Name", - " -100.0, !- Economizer Minimum Limit Dry-Bulb Temperature {C}", - " NoLockout, !- Lockout Type", - " FixedMinimum, !- Minimum Limit Type", - " MinOA_MotorizedDamper_Sched; !- Minimum Outdoor Air Schedule Name", - - " Schedule:Compact,", - " MinOA_MotorizedDamper_Sched, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Weekdays SummerDesignDay, !- Field 2", - " Until: 07:00,0.0, !- Field 3", - " Until: 22:00,1.0, !- Field 5", - " Until: 24:00,0.0, !- Field 7", - " For: Saturday WinterDesignDay, !- Field 9", - " Until: 07:00,0.0, !- Field 10", - " Until: 18:00,1.0, !- Field 12", - " Until: 24:00,0.0, !- Field 14", - " For: AllOtherDays, !- Field 16", - " Until: 24:00,0.0; !- Field 17", - - " SetpointManager:Scheduled,", - " CV_1 SAT setpoint, !- Name", - " Temperature, !- Control Variable", - " Seasonal-Reset-Supply-Air-Temp-Sch, !- Schedule Name", - " CV_1 Supply Equipment Outlet Node; !- Setpoint Node or NodeList Name", - - " Schedule:Compact,", - " Seasonal-Reset-Supply-Air-Temp-Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,12.8; !- Field 3", - - " AirLoopHVAC,", - " CV_1, !- Name", - " CV_1_Controllers, !- Controller List Name", - " CV_1 Availability Manager List, !- Availability Manager List Name", - " AUTOSIZE, !- Design Supply Air Flow Rate {m3/s}", - " CV_1 Air Loop Branches, !- Branch List Name", - " , !- Connector List Name", - " CV_1 Supply Equipment Inlet Node, !- Supply Side Inlet Node Name", - " CV_1 Zone Equipment Outlet Node, !- Demand Side Outlet Node Name", - " CV_1 Zone Equipment Inlet Node, !- Demand Side Inlet Node Names", - " CV_1 Supply Equipment Outlet Node; !- Supply Side Outlet Node Names", - - " AvailabilityManagerAssignmentList,", - " CV_1 Availability Manager List, !- Name", - " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", - " CV_1 Avail; !- Availability Manager 1 Name", - - " AvailabilityManager:Scheduled,", - " CV_1 Avail, !- Name", - " always_on; !- Schedule Name", - - " NodeList,", - " CV_1_OANode List, !- Name", - " CV_1_OAInlet Node; !- Node 1 Name", - - " BranchList,", - " CV_1 Air Loop Branches, !- Name", - " CV_1 Air Loop Main Branch; !- Branch 1 Name", - - " Branch,", - " CV_1 Air Loop Main Branch, !- Name", - " , !- Pressure Drop Curve Name", - " AirLoopHVAC:OutdoorAirSystem, !- Component 1 Object Type", - " CV_1_OA, !- Component 1 Name", - " CV_1 Supply Equipment Inlet Node, !- Component 1 Inlet Node Name", - " CV_1_OA-CV_1_CoolCNode,!- Component 1 Outlet Node Name", - " Coil:Cooling:Water, !- Component 2 Object Type", - " CV_1_CoolC, !- Component 2 Name", - " CV_1_OA-CV_1_CoolCNode,!- Component 2 Inlet Node Name", - " CV_1_CoolC-CV_1_HeatCNode, !- Component 2 Outlet Node Name", - " Coil:Heating:Water, !- Component 3 Object Type", - " CV_1_HeatC, !- Component 3 Name", - " CV_1_CoolC-CV_1_HeatCNode, !- Component 3 Inlet Node Name", - " CV_1_HeatC-CV_1_FanNode, !- Component 3 Outlet Node Name", - " Fan:VariableVolume, !- Component 4 Object Type", - " CV_1_Fan, !- Component 4 Name", - " CV_1_HeatC-CV_1_FanNode, !- Component 4 Inlet Node Name", - " CV_1 Supply Equipment Outlet Node; !- Component 4 Outlet Node Name", - - " AirLoopHVAC:ControllerList,", - " CV_1_Controllers, !- Name", - " Controller:WaterCoil, !- Controller 1 Object Type", - " CV_1_CoolC_Controller, !- Controller 1 Name", - " Controller:WaterCoil, !- Controller 2 Object Type", - " CV_1_HeatC_Controller; !- Controller 2 Name", - - " AirLoopHVAC:ControllerList,", - " CV_1_OA_Controllers, !- Name", - " Controller:OutdoorAir, !- Controller 1 Object Type", - " CV_1_OA_Controller; !- Controller 1 Name", - - " AirLoopHVAC:OutdoorAirSystem:EquipmentList,", - " CV_1_OA_Equipment, !- Name", - " OutdoorAir:Mixer, !- Component 1 Object Type", - " CV_1_OAMixing Box; !- Component 1 Name", - - " AirLoopHVAC:OutdoorAirSystem,", - " CV_1_OA, !- Name", - " CV_1_OA_Controllers, !- Controller List Name", - " CV_1_OA_Equipment, !- Outdoor Air Equipment List Name", - " CV_1 Availability Manager List; !- Availability Manager List Name", - - " OutdoorAir:NodeList,", - " CV_1_OANode List; !- Node or NodeList Name 1", - - " OutdoorAir:Mixer,", - " CV_1_OAMixing Box, !- Name", - " CV_1_OA-CV_1_CoolCNode,!- Mixed Air Node Name", - " CV_1_OAInlet Node, !- Outdoor Air Stream Node Name", - " CV_1_OARelief Node, !- Relief Air Stream Node Name", - " CV_1 Supply Equipment Inlet Node; !- Return Air Stream Node Name", - - " SetpointManager:MixedAir,", - " CV_1_CoolC SAT Manager, !- Name", - " Temperature, !- Control Variable", - " CV_1 Supply Equipment Outlet Node, !- Reference Setpoint Node Name", - " CV_1_HeatC-CV_1_FanNode, !- Fan Inlet Node Name", - " CV_1 Supply Equipment Outlet Node, !- Fan Outlet Node Name", - " CV_1_CoolC-CV_1_HeatCNode; !- Setpoint Node or NodeList Name", - - " SetpointManager:MixedAir,", - " CV_1_HeatC SAT Manager, !- Name", - " Temperature, !- Control Variable", - " CV_1 Supply Equipment Outlet Node, !- Reference Setpoint Node Name", - " CV_1_HeatC-CV_1_FanNode, !- Fan Inlet Node Name", - " CV_1 Supply Equipment Outlet Node, !- Fan Outlet Node Name", - " CV_1_HeatC-CV_1_FanNode; !- Setpoint Node or NodeList Name", - - " SetpointManager:MixedAir,", - " CV_1_OAMixed Air Temp Manager, !- Name", - " Temperature, !- Control Variable", - " CV_1 Supply Equipment Outlet Node, !- Reference Setpoint Node Name", - " CV_1_HeatC-CV_1_FanNode, !- Fan Inlet Node Name", - " CV_1 Supply Equipment Outlet Node, !- Fan Outlet Node Name", - " CV_1_OA-CV_1_CoolCNode;!- Setpoint Node or NodeList Name", - - " AirLoopHVAC:SupplyPath,", - " CV_1, !- Name", - " CV_1 Zone Equipment Inlet Node, !- Supply Air Path Inlet Node Name", - " AirLoopHVAC:ZoneSplitter,!- Component 1 Object Type", - " CV_1 Supply Air Splitter; !- Component 1 Name", - - " Controller:WaterCoil,", - " CV_1_CoolC_Controller, !- Name", - " Temperature, !- Control Variable", - " Reverse, !- Action", - " Flow, !- Actuator Variable", - " CV_1_CoolC-CV_1_HeatCNode, !- Sensor Node Name", - " CV_1_CoolCDemand Inlet Node, !- Actuator Node Name", - " , !- Controller Convergence Tolerance {deltaC}", - " AUTOSIZE, !- Maximum Actuated Flow {m3/s}", - " 0.0; !- Minimum Actuated Flow {m3/s}", - - " Controller:WaterCoil,", - " CV_1_HeatC_Controller, !- Name", - " Temperature, !- Control Variable", - " Normal, !- Action", - " Flow, !- Actuator Variable", - " CV_1_HeatC-CV_1_FanNode, !- Sensor Node Name", - " CV_1_HeatCDemand Inlet Node, !- Actuator Node Name", - " 0.0001, !- Controller Convergence Tolerance {deltaC}", - " AUTOSIZE, !- Maximum Actuated Flow {m3/s}", - " 0.0; !- Minimum Actuated Flow {m3/s}", - - " Sizing:Plant,", - " Chilled Water Loop, !- Plant or Condenser Loop Name", - " Cooling, !- Loop Type", - " 6.67, !- Design Loop Exit Temperature {C}", - " 6.67, !- Loop Design Temperature Difference {deltaC}", - " Coincident, !- Sizing Option", - " 1, !- Zone Timesteps in Averaging Window", - " None; !- Coincident Sizing Factor Mode", - - " ConnectorList,", - " CoolSys1 Demand Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " CoolSys1 Demand Splitter,!- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " CoolSys1 Demand Mixer; !- Connector 2 Name", - - " BranchList,", - " CoolSys1 Demand Branches,!- Name", - " CoolSys1 Demand Inlet Branch, !- Branch 1 Name", - " CoolSys1 Demand Load Branch 1, !- Branch 2 Name", - " CoolSys1 Demand Load Branch 2, !- Branch 3 Name", - " CoolSys1 Demand Bypass Branch, !- Branch 6 Name", - " CoolSys1 Demand Outlet Branch; !- Branch 7 Name", - - " Connector:Splitter,", - " CoolSys1 Demand Splitter,!- Name", - " CoolSys1 Demand Inlet Branch, !- Inlet Branch Name", - " CoolSys1 Demand Load Branch 1, !- Outlet Branch 1 Name", - " CoolSys1 Demand Load Branch 2, !- Outlet Branch 2 Name", - " CoolSys1 Demand Bypass Branch; !- Branch 6 Name", - - " Connector:Mixer,", - " CoolSys1 Demand Mixer, !- Name", - " CoolSys1 Demand Outlet Branch, !- Outlet Branch Name", - " CoolSys1 Demand Load Branch 1, !- Inlet Branch 1 Name", - " CoolSys1 Demand Load Branch 2, !- Inlet Branch 2 Name", - " CoolSys1 Demand Bypass Branch; !- Branch 6 Name", - - " Branch,", - " CoolSys1 Demand Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " CoolSys1 Demand Inlet Pipe, !- Component 1 Name", - " CoolSys1 Demand Inlet Node, !- Component 1 Inlet Node Name", - " CoolSys1 Demand Inlet Pipe-CoolSys1 Demand Mixer; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " CoolSys1 Demand Inlet Pipe, !- Name", - " CoolSys1 Demand Inlet Node, !- Inlet Node Name", - " CoolSys1 Demand Inlet Pipe-CoolSys1 Demand Mixer; !- Outlet Node Name", - - " Pipe:Adiabatic,", - " CoolSys1 Demand Outlet Pipe, !- Name", - " CoolSys1 Demand Mixer-CoolSys1 Demand Outlet Pipe, !- Inlet Node Name", - " CoolSys1 Demand Outlet Node; !- Outlet Node Name", - - " Pipe:Adiabatic,", - " CoolSys1 Demand Bypass Pipe, !- Name", - " CoolSys1 Demand Bypass Pipe Inlet Node, !- Inlet Node Name", - " CoolSys1 Demand Bypass Pipe Outlet Node; !- Outlet Node Name", - - " Branch,", - " CoolSys1 Demand Load Branch 1, !- Name", - " , !- Pressure Drop Curve Name", - " Coil:Cooling:Water, !- Component 1 Object Type", - " CV_1_CoolC, !- Component 1 Name", - " CV_1_CoolCDemand Inlet Node, !- Component 1 Inlet Node Name", - " CV_1_CoolCDemand Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " CoolSys1 Demand Load Branch 2, !- Name", - " , !- Pressure Drop Curve Name", - " AirTerminal:SingleDuct:ConstantVolume:FourPipeBeam, !- Component 1 Object Type", - " Zone One 4pipe Beam, !- Component 1 Name", - " Zone One 4pipe Beam CW Inlet Node, !- Component 1 Inlet Node Name", - " Zone One 4pipe Beam CW Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " CoolSys1 Demand Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " CoolSys1 Demand Outlet Pipe, !- Component 1 Name", - " CoolSys1 Demand Mixer-CoolSys1 Demand Outlet Pipe, !- Component 1 Inlet Node Name", - " CoolSys1 Demand Outlet Node; !- Component 1 Outlet Node Name", - - " PlantLoop,", - " Chilled Water Loop, !- Name", - " WATER, !- Fluid Type", - " , !- User Defined Fluid Type", - " SOURCE Loop Operation, !- Plant Equipment Operation Scheme Name", - " SOURCE Supply Outlet Node, !- Loop Temperature Setpoint Node Name", - " 100, !- Maximum Loop Temperature {C}", - " 3, !- Minimum Loop Temperature {C", - " 0.003, !- Maximum Loop Flow Rate {m3/s}", - " 0, !- Minimum Loop Flow Rate {m3/s}", - " autocalculate, !- Plant Loop Volume {m3}", - " SOURCE Supply Inlet Node,!- Plant Side Inlet Node Name", - " SOURCE Supply Outlet Node, !- Plant Side Outlet Node Name", - " SOURCE Supply Branches, !- Plant Side Branch List Name", - " SOURCE Supply Connectors,!- Plant Side Connector List Name", - " CoolSys1 Demand Inlet Node, !- Demand Side Inlet Node Name", - " CoolSys1 Demand Outlet Node, !- Demand Side Outlet Node Name", - " CoolSys1 Demand Branches, !- Demand Side Branch List Name", - " CoolSys1 Demand Connectors,!- Demand Side Connector List Name", - " OPTIMAL, !- Load Distribution Scheme", - " , !- Availability Manager List Name", - " , !- Plant Loop Demand Calculation Scheme", - " , !- Common Pipe Simulation", - " , !- Pressure Simulation Type", - " 2.0; !- Loop Circulation Time {minutes}", - - " SetpointManager:Scheduled,", - " SOURCE Loop Setpoint Manager, !- Name", - " Temperature, !- Control Variable", - " SOURCE Loop Temp Sch, !- Schedule Name", - " SOURCE Loop Setpoint Node List; !- Setpoint Node or NodeList Name", - - " Schedule:Compact,", - " SOURCE Loop Temp Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " THROUGH: 12/31, !- Field 1", - " FOR: AllDays, !- Field 2", - " UNTIL: 24:00,6.7; !- Field 3", - - " NodeList,", - " SOURCE Loop Setpoint Node List, !- Name", - " SOURCE Supply Outlet Node; !- Node 1 Name", - - " PlantEquipmentOperationSchemes,", - " SOURCE Loop Operation, !- Name", - " PlantEquipmentOperation:CoolingLoad, !- Control Scheme 1 Object Type", - " SOURCE Purchased Only, !- Control Scheme 1 Name", - " Always_On; !- Control Scheme 1 Schedule Name", - - " PlantEquipmentOperation:CoolingLoad,", - " SOURCE Purchased Only, !- Name", - " 0, !- Load Range 1 Lower Limit {W}", - " 10000000, !- Load Range 1 Upper Limit {W}", - " SOURCE Cooling Plant; !- Range 1 Equipment List Name", - - " PlantEquipmentList,", - " SOURCE Cooling Plant, !- Name", - " DistrictCooling, !- Equipment 1 Object Type", - " SOURCE Purchased Cooling;!- Equipment 1 Name", - - " BranchList,", - " SOURCE Supply Branches, !- Name", - " SOURCE Supply Inlet Branch, !- Branch 1 Name", - " SOURCE Cooling Branch, !- Branch 2 Name", - " SOURCE Supply Outlet Branch; !- Branch 3 Name", - - " ConnectorList,", - " SOURCE Supply Connectors,!- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " SOURCE Supply Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " SOURCE Supply Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " SOURCE Supply Splitter, !- Name", - " SOURCE Supply Inlet Branch, !- Inlet Branch Name", - " SOURCE Cooling Branch; !- Outlet Branch 1 Name", - - " Connector:Mixer,", - " SOURCE Supply Mixer, !- Name", - " SOURCE Supply Outlet Branch, !- Outlet Branch Name", - " SOURCE Cooling Branch; !- Inlet Branch 1 Name", - - " Branch,", - " SOURCE Supply Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pump:VariableSpeed, !- Component 1 Object Type", - " SOURCE Pump, !- Component 1 Name", - " SOURCE Supply Inlet Node,!- Component 1 Inlet Node Name", - " SOURCE Supply Pump-Cooling Node; !- Component 1 Outlet Node Name", - - " Pump:VariableSpeed,", - " SOURCE Pump, !- Name", - " SOURCE Supply Inlet Node,!- Inlet Node Name", - " SOURCE Supply Pump-Cooling Node, !- Outlet Node Name", - " 0.005, !- Rated Flow Rate {m3/s}", - " 300000, !- Rated Pump Head {Pa}", - " 2250, !- Rated Power Consumption {W}", - " 0.87, !- Motor Efficiency", - " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", - " 0, !- Coefficient 1 of the Part Load Performance Curve", - " 1, !- Coefficient 2 of the Part Load Performance Curve", - " 0, !- Coefficient 3 of the Part Load Performance Curve", - " 0, !- Coefficient 4 of the Part Load Performance Curve", - " 0, !- Minimum Flow Rate {m3/s}", - " INTERMITTENT; !- Pump Control Type", - - " Branch,", - " SOURCE Cooling Branch, !- Name", - " , !- Pressure Drop Curve Name", - " DistrictCooling, !- Component 1 Object Type", - " SOURCE Purchased Cooling,!- Component 1 Name", - " SOURCE Supply Cooling Inlet Node, !- Component 1 Inlet Node Name", - " SOURCE Supply Cooling Outlet Node; !- Component 1 Outlet Node Name", - - " DistrictCooling,", - " SOURCE Purchased Cooling,!- Name", - " SOURCE Supply Cooling Inlet Node, !- Chilled Water Inlet Node Name", - " SOURCE Supply Cooling Outlet Node, !- Chilled Water Outlet Node Name", - " 1000000; !- Nominal Capacity {W}", - - " Branch,", - " SOURCE Supply Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " SOURCE Supply Outlet Pipe, !- Component 1 Name", - " SOURCE Supply Cooling-Pipe Node, !- Component 1 Inlet Node Name", - " SOURCE Supply Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " SOURCE Supply Outlet Pipe, !- Name", - " SOURCE Supply Cooling-Pipe Node, !- Inlet Node Name", - " SOURCE Supply Outlet Node; !- Outlet Node Name", - - " Branch,", - " CoolSys1 Demand Bypass Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " CoolSys1 Demand Bypass Pipe, !- Component 1 Name", - " CoolSys1 Demand Bypass Pipe Inlet Node, !- Component 1 Inlet Node Name", - " CoolSys1 Demand Bypass Pipe Outlet Node; !- Component 1 Outlet Node Name", - - " Sizing:Plant,", - " HeatSys1 Loop, !- Plant or Condenser Loop Name", - " Heating, !- Loop Type", - " 60.0, !- Design Loop Exit Temperature {C}", - " 11.1, !- Loop Design Temperature Difference {deltaC}", - " Coincident, !- Sizing Option", - " 2, !- Zone Timesteps in Averaging Window", - " None; !- Coincident Sizing Factor Mode ", - - " PlantLoop,", - " HeatSys1 Loop, !- Name", - " WATER, !- Fluid Type", - " , !- User Defined Fluid Type", - " HeatSys1 Loop Operation, !- Plant Equipment Operation Scheme Name", - " HeatSys1 Supply Outlet Node, !- Loop Temperature Setpoint Node Name", - " 100, !- Maximum Loop Temperature {C}", - " 3, !- Minimum Loop Temperature {C}", - " 0.003, !- Maximum Loop Flow Rate {m3/s}", - " 0, !- Minimum Loop Flow Rate {m3/s}", - " autocalculate, !- Plant Loop Volume {m3}", - " HeatSys1 Supply Inlet Node,!- Plant Side Inlet Node Name", - " HeatSys1 Supply Outlet Node, !- Plant Side Outlet Node Name", - " HeatSys1 Supply Branches, !- Plant Side Branch List Name", - " HeatSys1 Supply Connectors,!- Plant Side Connector List Name", - " HeatSys1 Demand Inlet Node,!- Demand Side Inlet Node Name", - " HeatSys1 Demand Outlet Node, !- Demand Side Outlet Node Name", - " HeatSys1 Demand Branches, !- Demand Side Branch List Name", - " HeatSys1 Demand Connectors,!- Demand Side Connector List Name", - " OPTIMAL, !- Load Distribution Scheme", - " , !- Availability Manager List Name", - " , !- Plant Loop Demand Calculation Scheme", - " , !- Common Pipe Simulation", - " , !- Pressure Simulation Type", - " 2.0; !- Loop Circulation Time {minutes}", - - " SetpointManager:Scheduled,", - " HeatSys1 Loop Setpoint Manager, !- Name", - " Temperature, !- Control Variable", - " HeatSys1 Loop Temp Sch, !- Schedule Name", - " HeatSys1 Loop Setpoint Node List; !- Setpoint Node or NodeList Name", - - " Schedule:Compact,", - " HeatSys1 Loop Temp Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,60.0; !- Field 3", - - " NodeList,", - " HeatSys1 Loop Setpoint Node List, !- Name", - " HeatSys1 Supply Outlet Node; !- Node 1 Name", - - " PlantEquipmentOperationSchemes,", - " HeatSys1 Loop Operation, !- Name", - " PlantEquipmentOperation:HeatingLoad, !- Control Scheme 1 Object Type", - " HeatSys1 Purchased Only, !- Control Scheme 1 Name", - " Always_On; !- Control Scheme 1 Schedule Name", - - " PlantEquipmentOperation:HeatingLoad,", - " HeatSys1 Purchased Only, !- Name", - " 0, !- Load Range 1 Lower Limit {W}", - " 10000000, !- Load Range 1 Upper Limit {W}", - " HeatSys1 Heating Plant; !- Range 1 Equipment List Name", - - " PlantEquipmentList,", - " HeatSys1 Heating Plant, !- Name", - " DistrictHeating, !- Equipment 1 Object Type", - " HeatSys1 Purchased Heating;!- Equipment 1 Name", - - " BranchList,", - " HeatSys1 Supply Branches, !- Name", - " HeatSys1 Supply Inlet Branch, !- Branch 1 Name", - " HeatSys1 Heating Branch, !- Branch 2 Name", - " HeatSys1 Supply Outlet Branch; !- Branch 3 Name", - - " ConnectorList,", - " HeatSys1 Supply Connectors,!- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " HeatSys1 Supply Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " HeatSys1 Supply Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " HeatSys1 Supply Splitter, !- Name", - " HeatSys1 Supply Inlet Branch, !- Inlet Branch Name", - " HeatSys1 Heating Branch; !- Outlet Branch 1 Name", - - " Connector:Mixer,", - " HeatSys1 Supply Mixer, !- Name", - " HeatSys1 Supply Outlet Branch, !- Outlet Branch Name", - " HeatSys1 Heating Branch; !- Inlet Branch 1 Name", - - " Branch,", - " HeatSys1 Supply Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pump:VariableSpeed, !- Component 1 Object Type", - " HeatSys1 Pump, !- Component 1 Name", - " HeatSys1 Supply Inlet Node,!- Component 1 Inlet Node Name", - " HeatSys1 Supply Pump-Heating Node; !- Component 1 Outlet Node Name", - - " Pump:VariableSpeed,", - " HeatSys1 Pump, !- Name", - " HeatSys1 Supply Inlet Node,!- Inlet Node Name", - " HeatSys1 Supply Pump-Heating Node, !- Outlet Node Name", - " 0.005, !- Rated Flow Rate {m3/s}", - " 300000, !- Rated Pump Head {Pa}", - " 2250, !- Rated Power Consumption {W}", - " 0.87, !- Motor Efficiency", - " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", - " 0, !- Coefficient 1 of the Part Load Performance Curve", - " 1, !- Coefficient 2 of the Part Load Performance Curve", - " 0, !- Coefficient 3 of the Part Load Performance Curve", - " 0, !- Coefficient 4 of the Part Load Performance Curve", - " 0, !- Minimum Flow Rate {m3/s}", - " INTERMITTENT; !- Pump Control Type", - - " Branch,", - " HeatSys1 Heating Branch, !- Name", - " , !- Pressure Drop Curve Name", - " DistrictHeating, !- Component 1 Object Type", - " HeatSys1 Purchased Heating,!- Component 1 Name", - " HeatSys1 Supply Heating Inlet Node, !- Component 1 Inlet Node Name", - " HeatSys1 Supply Heating Outlet Node; !- Component 1 Outlet Node Name", - - " DistrictHeating,", - " HeatSys1 Purchased Heating,!- Name", - " HeatSys1 Supply Heating Inlet Node, !- Hot Water Inlet Node Name", - " HeatSys1 Supply Heating Outlet Node, !- Hot Water Outlet Node Name", - " 1000000; !- Nominal Capacity {W}", - - " Branch,", - " HeatSys1 Supply Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " HeatSys1 Supply Outlet Pipe, !- Component 1 Name", - " HeatSys1 Supply Heating-Pipe Node, !- Component 1 Inlet Node Name", - " HeatSys1 Supply Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " HeatSys1 Supply Outlet Pipe, !- Name", - " HeatSys1 Supply Heating-Pipe Node, !- Inlet Node Name", - " HeatSys1 Supply Outlet Node; !- Outlet Node Name", - - " Pipe:Adiabatic,", - " HeatSys1 Demand Bypass Pipe, !- Name", - " HeatSys1 Demand Bypass Pipe Inlet Node, !- Inlet Node Name", - " HeatSys1 Demand Bypass Pipe Outlet Node; !- Outlet Node Name", - - " ConnectorList,", - " HeatSys1 Demand Connectors,!- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " HeatSys1 Demand Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " HeatSys1 Demand Mixer; !- Connector 2 Name", - - " Branch,", - " HeatSys1 Demand Bypass Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " HeatSys1 Demand Bypass Pipe, !- Component 1 Name", - " HeatSys1 Demand Bypass Pipe Inlet Node, !- Component 1 Inlet Node Name", - " HeatSys1 Demand Bypass Pipe Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " HeatSys1 Demand Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " HeatSys1 Demand Inlet Pipe,!- Component 1 Name", - " HeatSys1 Demand Inlet Node,!- Component 1 Inlet Node Name", - " HeatSys1 Demand Pipe-Load Profile Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " HeatSys1 Demand Inlet Pipe,!- Name", - " HeatSys1 Demand Inlet Node,!- Inlet Node Name", - " HeatSys1 Demand Pipe-Load Profile Node; !- Outlet Node Name", - - " Branch,", - " HeatSys1 Demand Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " HeatSys1 Demand Outlet Pipe, !- Component 1 Name", - " HeatSys1 Demand Load Profile-Pipe Node, !- Component 1 Inlet Node Name", - " HeatSys1 Demand Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " HeatSys1 Demand Outlet Pipe, !- Name", - " HeatSys1 Demand Load Profile-Pipe Node, !- Inlet Node Name", - " HeatSys1 Demand Outlet Node; !- Outlet Node Name", - - " Connector:Splitter,", - " HeatSys1 Demand Splitter, !- Name", - " HeatSys1 Demand Inlet Branch, !- Inlet Branch Name", - " HeatSys1 Demand Load Branch 1, !- Branch 2 Name", - " HeatSys1 Demand Load Branch 2, !- Branch 3 Name", - " HeatSys1 Demand Bypass Branch; !- Branch 4 Name", - - " Connector:Mixer,", - " HeatSys1 Demand Mixer, !- Name", - " HeatSys1 Demand Outlet Branch, !- Outlet Branch Name", - " HeatSys1 Demand Load Branch 1, !- Branch 2 Name", - " HeatSys1 Demand Load Branch 2, !- Branch 3 Name", - " HeatSys1 Demand Bypass Branch; !- Branch 4 Name", - - " BranchList,", - " HeatSys1 Demand Branches,!- Name", - " HeatSys1 Demand Inlet Branch, !- Branch 1 Name", - " HeatSys1 Demand Load Branch 1, !- Branch 2 Name", - " HeatSys1 Demand Load Branch 2, !- Branch 3 Name", - " HeatSys1 Demand Bypass Branch, !- Branch 4 Name", - " HeatSys1 Demand Outlet Branch; !- Branch 5 Name", - - " Branch,", - " HeatSys1 Demand Load Branch 1, !- Name", - " , !- Pressure Drop Curve Name", - " Coil:Heating:Water, !- Component 1 Object Type", - " CV_1_HeatC, !- Component 1 Name", - " CV_1_HeatCDemand Inlet Node, !- Component 1 Inlet Node Name", - " CV_1_heatCDemand Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " HeatSys1 Demand Load Branch 2, !- Name", - " , !- Pressure Drop Curve Name", - " AirTerminal:SingleDuct:ConstantVolume:FourPipeBeam, !- Component 1 Object Type", - " Zone One 4pipe Beam, !- Component 1 Name", - " Zone One 4pipe Beam HW Inlet Node, !- Component 1 Inlet Node Name", - " Zone One 4pipe Beam HW Outlet Node; !- Component 1 Outlet Node Name", - - " AirTerminal:SingleDuct:ConstantVolume:FourPipeBeam,", - " Zone One 4pipe Beam, !- Name", - " ALWAYS_ON , !- Primary Air Availability Schedule Name", - " ALWAYS_ON , !- Cooling Availability Schedule Name", - " ALWAYS_ON , !- Heating Availability Schedule Name", - " Zone One 4pipe Beam Inlet Node Name , !- Primary Air Inlet Node Name", - " Zone One 4pipe Beam Outlet Node Name , !- Primary Air Outlet Node Name", - " Zone One 4pipe Beam CW Inlet Node , !- Chilled Water Inlet Node Name", - " Zone One 4pipe Beam CW Outlet Node , !- Chilled Water Outlet Node Name", - " Zone One 4pipe Beam HW Inlet Node , !- Hot Water Inlet Node Name", - " Zone One 4pipe Beam HW Outlet Node, !- Hot Water Outlet Node Name", - " AUTOSIZE , !- Design Primary Air Volume Flow Rate", - " AUTOSIZE , !- Design Chilled Water Volume Flow Rate", - " AUTOSIZE , !- Design Hot Water Volume Flow Rate", - " AUTOSIZE , !- Zone Total Beam Length", - " 0.036 , !- Rated Primary Air Flow Rate per Meter", - " 597 , !- Rated Beam Cooling Capacity per Meter", - " 10.0 , !- Rated Cooling Room Air Chilled Water Temperature Difference", - " 5.2E-5 , !- Rated Chilled Water Volume Flow Rate per Meter", - " CapModFuncOfTempDiff, !- Beam Cooling Capacity Temperature Difference Modification Factor Curve or Table Name", - " CoolCapModFuncOfSAFlow, !- Beam Cooling Capacity Air Flow Modification Factor Curve or Table Name", - " CapModFuncOfWaterFlow, !- Beam Cooling Capacity Chilled Water Flow Modification Factor Curve or Table Name", - " 1548 , !- Rated Beam Heating Capacity per Meter", - " 27.8, !- Rated Heating Room Air Hot Water Temperature Difference", - " 5.2E-5, !- Rated Hot Water Volume Flow Rate per Meter", - " CapModFuncOfTempDiff, !- Beam Heating Capacity Temperature Difference Modification Factor Curve or Table Name", - " HeatCapModFuncOfSAFlow, !- Beam Heating Capacity Air Flow Modification Factor Curve or Table Name", - " CapModFuncOfWaterFlow; !- Beam Heating Capacity Hot Water Flow Modification Factor Curve or Table Name", - - " Curve:Linear, ! y = x", - " CapModFuncOfTempDiff, !-Name", - " 0, !_ Coef Const", - " 1, !- Coef x", - " 0, !- min x", - " 1.5, !- max x", - " 0.0 , !- min y", - " 1.5; ! max y", - - " Table:OneIndependentVariable,", - " CoolCapModFuncOfSAFlow, !- Name", - " quadratic,!- Curve Type", - " EvaluateCurveToLimits,!- Interpolation Method", - " 0.714,!- min x", - " 1.2857,!- max x", - " 0.8234,!- min y", - " 1.1256,!- max y", - " dimensionless, !-", - " dimensionless, !- ", - " , !- normalization ref", - " 0.714286, 0.823403,", - " 1.0, 1.0,", - " 1.2857, 1.1256;", - - " Table:OneIndependentVariable,", - " CapModFuncOfWaterFlow, !- Name", - " quadratic,!- Curve ", - " EvaluateCurveToLimits,!- Interpolation Method", - " 0.0,!- min x", - " 1.333333,!- max x", - " 0.0,!- min y", - " 1.04,!- max y", - " dimensionless, !-", - " dimensionless, !- ", - " , !- normalization ref", - " 0.0, 0.0,", - " 0.05, 0.001,", - " 0.33333, 0.71,", - " 0.5, 0.85,", - " 0.666667, 0.92,", - " 0.833333, 0.97,", - " 1.0, 1.0,", - " 1.333333, 1.04;", - - " Table:OneIndependentVariable,", - " HeatCapModFuncOfSAFlow, !- Name", - " quadratic,!- Curve Type", - " EvaluateCurveToLimits,!- Interpolation Method", - " 0.714,!- min x", - " 1.2857,!- max x", - " 0.8554,!- min y", - " 1.0778,!- max y", - " dimensionless, !-", - " dimensionless, !- ", - " , !- normalization ref", - " 0.714286, 0.8554,", - " 1.0, 1.0,", - " 1.2857, 1.0778; ", - } ); - - ASSERT_TRUE( process_idf( idf_objects ) ); - SimulationManager::PostIPProcessing(); - - bool ErrorsFound = false; - - DataGlobals::BeginSimFlag = true; - SimulationManager::GetProjectData(); - - OutputReportPredefined::SetPredefinedTables(); - HeatBalanceManager::SetPreConstructionInputParameters(); //establish array bounds for constructions early - OutputProcessor::TimeValue.allocate( 2 ); - OutputProcessor::SetupTimePointers( "Zone", DataGlobals::TimeStepZone ); // Set up Time pointer for HB/Zone Simulation - OutputProcessor::SetupTimePointers( "HVAC", DataHVACGlobals::TimeStepSys ); - PlantManager::CheckIfAnyPlant(); - createFacilityElectricPowerServiceObject(); - BranchInputManager::ManageBranchInput(); // just gets input and returns. - DataGlobals::DoingSizing = true; - SizingManager::ManageSizing(); - DataGlobals::DoingSizing = false; - DataGlobals::KickOffSimulation = true; - - WeatherManager::ResetEnvironmentCounter(); - TestAirPathIntegrity( ErrorsFound ); // Needed to initialize return node connections to airloops and inlet nodes - SimulationManager::SetupSimulation( ErrorsFound ); - DataGlobals::KickOffSimulation = false; - - DataHVACGlobals::SimZoneEquipmentFlag = true; - DataHVACGlobals::SimNonZoneEquipmentFlag = false; - DataHVACGlobals::SimAirLoopsFlag = true; - DataHVACGlobals::SimPlantLoopsFlag = true; - DataHVACGlobals::SimElecCircuitsFlag = false; - bool FirstHVACIteration = true; - - //PlantManager::InitializeLoops( FirstHVACIteration ); - PlantUtilities::SetAllFlowLocks( DataPlant::FlowUnlocked ); - //first run with a sensible cooling load of 5000 W and cold supply air - DataZoneEnergyDemands::ZoneSysEnergyDemand( 1 ).RemainingOutputRequired = -5000.0; - DataZoneEnergyDemands::ZoneSysEnergyDemand( 1 ).RemainingOutputReqToHeatSP = -4000.0; - DataZoneEnergyDemands::ZoneSysEnergyDemand( 1 ).RemainingOutputReqToCoolSP = -5000.0; - - //indexes values has been changed according to new input_processor output - // node indexes may be viewed in NodeID array - DataLoopNode::Node( 14 ).Temp = 14.0; // chilled water inlet node - DataLoopNode::Node( 40 ).HumRat = 0.008; // zone node - DataLoopNode::Node( 40 ).Temp = 24.0; // zone node - DataLoopNode::Node( 44 ).HumRat = 0.008; // primary air inlet node - - DataLoopNode::Node( 44 ).Temp = 12.8; // primary air inlet node - DataLoopNode::Node( 38 ).Temp = 45.0; // hot water inlet node - // DataLoopNode::Node( 44 ).Temp = 12.8; // primary air inlet node - // DataLoopNode::Node( 38 ).Temp = 45.0; // hot water inlet node - - Real64 NonAirSysOutput = 0.0; - DataDefineEquip::AirDistUnit( 1 ).airTerminalPtr->simulate( FirstHVACIteration, NonAirSysOutput ); - - EXPECT_NEAR( DataLoopNode::Node( 1 ).MassFlowRate, 0.3521952339035046, 0.00001 ); - EXPECT_NEAR( DataLoopNode::Node( 15 ).Temp, 19.191523455437512, 0.00001 ); - EXPECT_NEAR( DataLoopNode::Node( 15 ).MassFlowRate, 0.046199561631265804, 0.00001 ); - EXPECT_DOUBLE_EQ( DataLoopNode::Node( 39 ).Temp, 45.0 ); - EXPECT_DOUBLE_EQ( DataLoopNode::Node( 39 ).MassFlowRate, 0.0 ); - - EXPECT_NEAR( NonAirSysOutput, -1004.0437766383318, 0.0001 ); - - //next run with a sensible heating load of 5000 W and cold supply air - DataZoneEnergyDemands::ZoneSysEnergyDemand( 1 ).RemainingOutputRequired = 5000.0; - DataZoneEnergyDemands::ZoneSysEnergyDemand( 1 ).RemainingOutputReqToHeatSP = 5000.0; - DataZoneEnergyDemands::ZoneSysEnergyDemand( 1 ).RemainingOutputReqToCoolSP = 6000.0; - - DataLoopNode::Node( 40 ).Temp = 21.0; // zone node - DataDefineEquip::AirDistUnit( 1 ).airTerminalPtr->simulate( FirstHVACIteration, NonAirSysOutput ); - - EXPECT_DOUBLE_EQ( DataLoopNode::Node( 15 ).Temp, 14.0 ); - EXPECT_DOUBLE_EQ( DataLoopNode::Node( 15 ).MassFlowRate, 0.0 ); - EXPECT_NEAR( DataLoopNode::Node( 39 ).Temp, 35.064466069323743, 0.00001 ); - EXPECT_NEAR( DataLoopNode::Node( 39 ).MassFlowRate, 0.19320550334974979, 0.00001 ); - - EXPECT_NEAR( NonAirSysOutput, 8023.9273066417645, 0.0001 ); - - // next run with cooling load and neutral supply air - DataZoneEnergyDemands::ZoneSysEnergyDemand( 1 ).RemainingOutputRequired = -5000.0; - DataZoneEnergyDemands::ZoneSysEnergyDemand( 1 ).RemainingOutputReqToHeatSP = -4000.0; - DataZoneEnergyDemands::ZoneSysEnergyDemand( 1 ).RemainingOutputReqToCoolSP = -5000.0; - - DataLoopNode::Node( 14 ).Temp = 14.0; // chilled water inlet node - DataLoopNode::Node( 40 ).HumRat = 0.008; // zone node - DataLoopNode::Node( 40 ).Temp = 24.0; // zone node - DataLoopNode::Node( 44 ).HumRat = 0.008; // primary air inlet node - DataLoopNode::Node( 44 ).Temp = 22.0; // primary air inlet node - DataLoopNode::Node( 38 ).Temp = 45.0; // hot water inlet node - - NonAirSysOutput = 0.0; - DataDefineEquip::AirDistUnit( 1 ).airTerminalPtr->simulate( FirstHVACIteration, NonAirSysOutput ); - - EXPECT_NEAR( DataLoopNode::Node( 15 ).Temp, 18.027306264618733, 0.00001 ); - EXPECT_NEAR( DataLoopNode::Node( 15 ).MassFlowRate, 0.25614844309380103, 0.00001); - EXPECT_DOUBLE_EQ( DataLoopNode::Node( 39 ).Temp, 45.0 ); - EXPECT_DOUBLE_EQ( DataLoopNode::Node( 39 ).MassFlowRate, 0.0 ); - // EXPECT_NEAR( DataLoopNode::Node( 15 ).Temp, 18.027306264618733, 0.00001 ); - // EXPECT_NEAR( DataLoopNode::Node( 15 ).MassFlowRate, 0.25614844309380103, 0.00001 ); - // EXPECT_DOUBLE_EQ( DataLoopNode::Node( 39 ).Temp, 45.0 ); - // EXPECT_DOUBLE_EQ( DataLoopNode::Node( 39 ).MassFlowRate, 0.0 ); - - EXPECT_NEAR( NonAirSysOutput, -4318.4346465170929, 0.0001 ); - - // next run with heating load and neutral supply air - DataZoneEnergyDemands::ZoneSysEnergyDemand( 1 ).RemainingOutputRequired = 5000.0; - DataZoneEnergyDemands::ZoneSysEnergyDemand( 1 ).RemainingOutputReqToHeatSP = 5000.0; - DataZoneEnergyDemands::ZoneSysEnergyDemand( 1 ).RemainingOutputReqToCoolSP = 6000.0; - - DataLoopNode::Node( 40 ).Temp = 21.0; // zone node - - NonAirSysOutput = 0.0; - DataDefineEquip::AirDistUnit( 1 ).airTerminalPtr->simulate( FirstHVACIteration, NonAirSysOutput ); - - EXPECT_DOUBLE_EQ( DataLoopNode::Node( 15 ).Temp, 14.0); - EXPECT_DOUBLE_EQ( DataLoopNode::Node( 15 ).MassFlowRate, 0.0); - EXPECT_NEAR( DataLoopNode::Node( 39 ).Temp, 33.836239364981424, 0.00001 ); - EXPECT_NEAR( DataLoopNode::Node( 39 ).MassFlowRate, 0.10040605035467959, 0.00001 ); - // EXPECT_DOUBLE_EQ( DataLoopNode::Node( 15 ).Temp, 14.0 ); - // EXPECT_DOUBLE_EQ( DataLoopNode::Node( 15 ).MassFlowRate, 0.0 ); - // EXPECT_NEAR( DataLoopNode::Node( 39 ).Temp, 33.836239364981424, 0.00001 ); - // EXPECT_NEAR( DataLoopNode::Node( 39 ).MassFlowRate, 0.10040605035467959, 0.00001 ); - - EXPECT_NEAR( NonAirSysOutput, 4685.4000901131676, 0.0001 ); - } - - TEST_F( EnergyPlusFixture, Beam_fatalWhenSysSizingOff ) - { - std::string const idf_objects = delimited_string( { - " SimulationControl,", - " YES, !- Do Zone Sizing Calculation", - " NO, !- Do System Sizing Calculation", - " NO, !- Do Plant Sizing Calculation", - " NO, !- Run Simulation for Sizing Periods", - " YES; !- Run Simulation for Weather File Run Periods", - - " Building,", - " Simple One Zone ( Wireframe DXF ), !- Name", - " 0, !- North Axis {deg}", - " Suburbs, !- Terrain", - " 0.04, !- Loads Convergence Tolerance Value", - " 0.004, !- Temperature Convergence Tolerance Value {deltaC}", - " MinimalShadowing, !- Solar Distribution", - " 30, !- Maximum Number of Warmup Days", - " 6; !- Minimum Number of Warmup Days", - - " ScheduleTypeLimits,", - " On/Off, !- Name", - " 0, !- Lower Limit Value", - " 1, !- Upper Limit Value", - " DISCRETE; !- Numeric Type", - - " ScheduleTypeLimits,", - " Any Number; !- Name", - - " ScheduleTypeLimits,", - " Temperature, !- Name", - " -60, !- Lower Limit Value", - " 200, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - " ScheduleTypeLimits,", - " Control Type, !- Name", - " 0, !- Lower Limit Value", - " 4, !- Upper Limit Value", - " DISCRETE; !- Numeric Type", - - " Schedule:Compact,", - " ALWAYS_ON, !- Name", - " On/Off, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1; !- Field 3", - - " Schedule:Compact,", - " ACTIVITY_SCH, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,120; !- Field 3", - - " Schedule:Compact,", - " WORK_EFF_SCH, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,0.0; !- Field 3", - - " Schedule:Compact,", - " AIR_VELO_SCH, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,0.2; !- Field 3", - - " Schedule:Compact,", - " CLOTHING_SCH, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 04/30, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0, !- Field 3", - " Through: 09/30, !- Field 5", - " For: AllDays, !- Field 6", - " Until: 24:00,0.5, !- Field 7", - " Through: 12/31, !- Field 9", - " For: AllDays, !- Field 10", - " Until: 24:00,1.0; !- Field 11", - - " Schedule:Compact,", - " BLDG_OCC_SCH, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: SummerDesignDay, !- Field 2", - " Until: 06:00,0.0, !- Field 3", - " Until: 22:00,1.0, !- Field 5", - " Until: 24:00,0.05, !- Field 7", - " For: Weekdays, !- Field 9", - " Until: 06:00,0.0, !- Field 10", - " Until: 07:00,0.1, !- Field 12", - " Until: 08:00,0.2, !- Field 14", - " Until: 12:00,0.95, !- Field 16", - " Until: 13:00,0.5, !- Field 18", - " Until: 17:00,0.95, !- Field 20", - " Until: 18:00,0.7, !- Field 22", - " Until: 20:00,0.4, !- Field 24", - " Until: 22:00,0.1, !- Field 26", - " Until: 24:00,0.05, !- Field 28", - " For: Saturday, !- Field 30", - " Until: 06:00,0.0, !- Field 31", - " Until: 08:00,0.1, !- Field 33", - " Until: 14:00,0.5, !- Field 35", - " Until: 17:00,0.1, !- Field 37", - " Until: 24:00,0.0, !- Field 39", - " For: AllOtherDays, !- Field 41", - " Until: 24:00,0.0; !- Field 42", - - " Schedule:Compact,", - " BLDG_LIGHT_SCH, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Weekdays, !- Field 2", - " Until: 05:00,0.05, !- Field 3", - " Until: 07:00,0.1, !- Field 5", - " Until: 08:00,0.3, !- Field 7", - " Until: 17:00,0.9, !- Field 9", - " Until: 18:00,0.7, !- Field 11", - " Until: 20:00,0.5, !- Field 13", - " Until: 22:00,0.3, !- Field 15", - " Until: 23:00,0.1, !- Field 17", - " Until: 24:00,0.05, !- Field 19", - " For: Saturday, !- Field 21", - " Until: 06:00,0.05, !- Field 22", - " Until: 08:00,0.1, !- Field 24", - " Until: 14:00,0.5, !- Field 26", - " Until: 17:00,0.15, !- Field 28", - " Until: 24:00,0.05, !- Field 30", - " For: SummerDesignDay, !- Field 32", - " Until: 24:00,1.0, !- Field 33", - " For: WinterDesignDay, !- Field 35", - " Until: 24:00,0.0, !- Field 36", - " For: AllOtherDays, !- Field 38", - " Until: 24:00,0.05; !- Field 39", - - " Schedule:Compact,", - " BLDG_EQUIP_SCH, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Weekdays, !- Field 2", - " Until: 08:00,0.40, !- Field 3", - " Until: 12:00,0.90, !- Field 5", - " Until: 13:00,0.80, !- Field 7", - " Until: 17:00,0.90, !- Field 9", - " Until: 18:00,0.80, !- Field 11", - " Until: 20:00,0.60, !- Field 13", - " Until: 22:00,0.50, !- Field 15", - " Until: 24:00,0.40, !- Field 17", - " For: Saturday, !- Field 19", - " Until: 06:00,0.30, !- Field 20", - " Until: 08:00,0.4, !- Field 22", - " Until: 14:00,0.5, !- Field 24", - " Until: 17:00,0.35, !- Field 26", - " Until: 24:00,0.30, !- Field 28", - " For: SummerDesignDay, !- Field 30", - " Until: 24:00,1.0, !- Field 31", - " For: WinterDesignDay, !- Field 33", - " Until: 24:00,0.0, !- Field 34", - " For: AllOtherDays, !- Field 36", - " Until: 24:00,0.30; !- Field 37", - - " SurfaceConvectionAlgorithm:Inside,TARP;", - - " SurfaceConvectionAlgorithm:Outside,DOE-2;", - - " HeatBalanceAlgorithm,ConductionTransferFunction,200.0000;", - - " ZoneAirHeatBalanceAlgorithm,", - " AnalyticalSolution; !- Algorithm", - - " Sizing:Parameters,", - " 1.33, !- Heating Sizing Factor", - " 1.33, !- Cooling Sizing Factor", - " 6; !- Timesteps in Averaging Window", - - " ConvergenceLimits,", - " 2, !- Minimum System Timestep {minutes}", - " 25; !- Maximum HVAC Iterations", - - " ShadowCalculation,", - " AverageOverDaysInFrequency, !- Calculation Method", - " 7, !- Calculation Frequency", - " 15000; !- Maximum Figures in Shadow Overlap Calculations", - - " Timestep,6;", - " Site:Location,", - " USA IL-CHICAGO-OHARE, !- Name", - " 41.77, !- Latitude {deg}", - " -87.75, !- Longitude {deg}", - " -6.00, !- Time Zone {hr}", - " 190; !- Elevation {m}", - - "! CHICAGO_IL_USA Annual Heating 99.6%, MaxDB=-20.6?C", - - " SizingPeriod:DesignDay,", - " CHICAGO Ann Htg 99.6% Condns DB, !- Name", - " 1, !- Month", - " 21, !- Day of Month", - " WinterDesignDay, !- Day Type", - " -20.6, !- Maximum Dry-Bulb Temperature {C}", - " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " -20.6, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 4.9, !- Wind Speed {m/s}", - " 270, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance ( taub ) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance ( taud ) {dimensionless}", - " 0.00; !- Sky Clearness", - - "! CHICAGO_IL_USA Annual Cooling ( WB=>MDB ) .4%, MDB=31.2?C WB=25.5?C", - - " SizingPeriod:DesignDay,", - " CHICAGO Ann Clg .4% Condns WB=>MDB, !- Name", - " 7, !- Month", - " 21, !- Day of Month", - " SummerDesignDay, !- Day Type", - " 31.2, !- Maximum Dry-Bulb Temperature {C}", - " 10.7, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " 25.5, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 5.3, !- Wind Speed {m/s}", - " 230, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance ( taub ) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance ( taud ) {dimensionless}", - " 1.00; !- Sky Clearness", - - " Material:NoMass,", - " R13LAYER, !- Name", - " Rough, !- Roughness", - " 2.290965, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material:NoMass,", - " R31LAYER, !- Name", - " Rough, !- Roughness", - " 5.456, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " C5 - 4 IN HW CONCRETE, !- Name", - " MediumRough, !- Roughness", - " 0.1014984, !- Thickness {m}", - " 1.729577, !- Conductivity {W/m-K}", - " 2242.585, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - - " Construction,", - " R13WALL, !- Name", - " R13LAYER; !- Outside Layer", - - " Construction,", - " FLOOR, !- Name", - " C5 - 4 IN HW CONCRETE; !- Outside Layer", - - " Construction,", - " ROOF31, !- Name", - " R31LAYER; !- Outside Layer", - - " Zone,", - " ZONE ONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " People,", - " ZONE ONE People, !- Name", - " ZONE ONE, !- Zone or ZoneList Name", - " BLDG_OCC_SCH, !- Number of People Schedule Name", - " Area/Person, !- Number of People Calculation Method", - " , !- Number of People", - " , !- People per Zone Floor Area {person/m2}", - " 18.58, !- Zone Floor Area per Person {m2/person}", - " 0.3000, !- Fraction Radiant", - " AUTOCALCULATE, !- Sensible Heat Fraction", - " ACTIVITY_SCH, !- Activity Level Schedule Name", - " , !- Carbon Dioxide Generation Rate {m3/s-W}", - " No, !- Enable ASHRAE 55 Comfort Warnings", - " ZoneAveraged, !- Mean Radiant Temperature Calculation Type", - " , !- Surface Name/Angle Factor List Name", - " WORK_EFF_SCH, !- Work Efficiency Schedule Name", - " ClothingInsulationSchedule, !- Clothing Insulation Calculation Method", - " , !- Clothing Insulation Calculation Method Schedule Name", - " CLOTHING_SCH, !- Clothing Insulation Schedule Name", - " AIR_VELO_SCH, !- Air Velocity Schedule Name", - " FANGER; !- Thermal Comfort Model 1 Type", - - " Lights,", - " ZONE ONE Lights, !- Name", - " ZONE ONE, !- Zone or ZoneList Name", - " BLDG_LIGHT_SCH, !- Schedule Name", - " Watts/Area, !- Design Level Calculation Method", - " , !- Lighting Level {W}", - " 10.76, !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.0000, !- Return Air Fraction", - " 0.7000, !- Fraction Radiant", - " 0.2000, !- Fraction Visible", - " 1.0000, !- Fraction Replaceable", - " General, !- End-Use Subcategory", - " No; !- Return Air Fraction Calculated from Plenum Temperature", - - " ElectricEquipment,", - " ZONE ONE Equip, !- Name", - " ZONE ONE, !- Zone or ZoneList Name", - " BLDG_EQUIP_SCH, !- Schedule Name", - " Watts/Area, !- Design Level Calculation Method", - " , !- Design Level {W}", - " 10.76, !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.0000, !- Fraction Latent", - " 0.5000, !- Fraction Radiant", - " 0.0000, !- Fraction Lost", - " General; !- End-Use Subcategory", - - " ScheduleTypeLimits,", - " Fraction, !- Name", - " 0.0, !- Lower Limit Value", - " 1.0, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - " GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " CounterClockWise, !- Vertex Entry Direction", - " World; !- Coordinate System", - - " BuildingSurface:Detailed,", - " Zn001:Wall001, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " ZONE ONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 15.24000,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,0,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall002, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " ZONE ONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000,0,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 15.24000,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 15.24000,15.24000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall003, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " ZONE ONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 15.24000,15.24000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,15.24000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall004, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " ZONE ONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,15.24000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,0,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Flr001, !- Name", - " Floor, !- Surface Type", - " FLOOR, !- Construction Name", - " ZONE ONE, !- Zone Name", - " Adiabatic, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000,0.000000,0.0, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000,0.000000,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 0.000000,15.24000,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,15.24000,0.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Roof001, !- Name", - " Roof, !- Surface Type", - " ROOF31, !- Construction Name", - " ZONE ONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.000000,15.24000,4.572, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000,0.000000,4.572, !- X,Y,Z ==> Vertex 2 {m}", - " 15.24000,0.000000,4.572, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,15.24000,4.572; !- X,Y,Z ==> Vertex 4 {m}", - - " Sizing:Zone,", - " Zone One, !- Zone or ZoneList Name", - " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", - " 12.8000, !- Zone Cooling Design Supply Air Temperature {C}", - " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", - " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", - " 50.0000, !- Zone Heating Design Supply Air Temperature {C}", - " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", - " 0.0085, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " 0.0080, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " SZ DSOA Zone One, !- Design Specification Outdoor Air Object Name", - " , !- Zone Heating Sizing Factor", - " , !- Zone Cooling Sizing Factor", - " DesignDay, !- Cooling Design Air Flow Method", - " , !- Cooling Design Air Flow Rate {m3/s}", - " , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", - " , !- Cooling Minimum Air Flow {m3/s}", - " , !- Cooling Minimum Air Flow Fraction", - " DesignDay, !- Heating Design Air Flow Method", - " , !- Heating Design Air Flow Rate {m3/s}", - " , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", - " , !- Heating Maximum Air Flow {m3/s}", - " ; !- Heating Maximum Air Flow Fraction", - - " DesignSpecification:OutdoorAir,", - " SZ DSOA Zone One, !- Name", - " Flow/Person, !- Outdoor Air Method", - " 0.0125; !- Outdoor Air Flow per Person {m3/s-person}", - - " ZoneControl:Thermostat,", - " Zone One Thermostat, !- Name", - " Zone One, !- Zone or ZoneList Name", - " Dual Zone Control Type Sched, !- Control Type Schedule Name", - " ThermostatSetpoint:DualSetpoint, !- Control 1 Object Type", - " Zone One DualSPSched; !- Control 1 Name", - - " Schedule:Compact,", - " Dual Zone Control Type Sched, !- Name", - " Control Type, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,4; !- Field 3", - - " ThermostatSetpoint:DualSetpoint,", - " Zone One DualSPSched, !- Name", - " HTGSETP_SCH, !- Heating Setpoint Temperature Schedule Name", - " CLGSETP_SCH; !- Cooling Setpoint Temperature Schedule Name", - - " Schedule:Compact,", - " CLGSETP_SCH, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Weekdays SummerDesignDay, !- Field 2", - " Until: 06:00,26.7, !- Field 3", - " Until: 22:00,24.0, !- Field 5", - " Until: 24:00,26.7, !- Field 7", - " For: Saturday, !- Field 9", - " Until: 06:00,26.7, !- Field 10", - " Until: 18:00,24.0, !- Field 12", - " Until: 24:00,26.7, !- Field 14", - " For WinterDesignDay, !- Field 16", - " Until: 24:00,26.7, !- Field 17", - " For: AllOtherDays, !- Field 19", - " Until: 24:00,26.7; !- Field 20", - - " Schedule:Compact,", - " HTGSETP_SCH, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Weekdays, !- Field 2", - " Until: 06:00,15.6, !- Field 3", - " Until: 22:00,21.0, !- Field 5", - " Until: 24:00,15.6, !- Field 7", - " For SummerDesignDay, !- Field 9", - " Until: 24:00,15.6, !- Field 10", - " For: Saturday, !- Field 12", - " Until: 06:00,15.6, !- Field 13", - " Until: 18:00,21.0, !- Field 15", - " Until: 24:00,15.6, !- Field 17", - " For: WinterDesignDay, !- Field 19", - " Until: 24:00,21.0, !- Field 20", - " For: AllOtherDays, !- Field 22", - " Until: 24:00,15.6; !- Field 23", - - " Sizing:System,", - " CV_1, !- AirLoop Name", - " Sensible, !- Type of Load to Size On", - " AUTOSIZE, !- Design Outdoor Air Flow Rate {m3/s}", - " 0.3, !- Central Heating Maximum System Air Flow Ratio", - " 7.0, !- Preheat Design Temperature {C}", - " 0.008, !- Preheat Design Humidity Ratio {kgWater/kgDryAir}", - " 12.8000, !- Precool Design Temperature {C}", - " 0.008, !- Precool Design Humidity Ratio {kgWater/kgDryAir}", - " 12.8000, !- Central Cooling Design Supply Air Temperature {C}", - " 16.7000, !- Central Heating Design Supply Air Temperature {C}", - " NonCoincident, !- Type of Zone Sum to Use", - " No, !- 100% Outdoor Air in Cooling", - " No, !- 100% Outdoor Air in Heating", - " 0.0085, !- Central Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " 0.0080, !- Central Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " DesignDay, !- Cooling Design Air Flow Method", - " , !- Cooling Design Air Flow Rate {m3/s}", - " , !- Supply Air Flow Rate Per Floor Area During Cooling Operation {m3/s-m2}", - " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", - " , !- Design Supply Air Flow Rate Per Unit Cooling Capacity {m3/s-W}", - " DesignDay, !- Heating Design Air Flow Method", - " , !- Heating Design Air Flow Rate {m3/s}", - " , !- Supply Air Flow Rate Per Floor Area During Heating Operation {m3/s-m2}", - " , !- Fraction of Autosized Design Heating Supply Air Flow Rate", - " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", - " , !- Design Supply Air Flow Rate Per Unit Heating Capacity {m3/s-W}", - " , !- System Outdoor Air Method", - " 1.0, !- Zone Maximum Outdoor Air Fraction {dimensionless}", - " CoolingDesignCapacity, !- Cooling Design Capacity Method", - " autosize, !- Cooling Design Capacity {W}", - " , !- Cooling Design Capacity Per Floor Area {W/m2}", - " , !- Fraction of Autosized Cooling Design Capacity", - " HeatingDesignCapacity, !- Heating Design Capacity Method", - " autosize, !- Heating Design Capacity {W}", - " , !- Heating Design Capacity Per Floor Area {W/m2}", - " , !- Fraction of Autosized Heating Design Capacity", - " ONOFF; !- Central Cooling Capacity Control Method", - - " ZoneHVAC:EquipmentConnections,", - " Zone One, !- Zone Name", - " Zone One Equipment, !- Zone Conditioning Equipment List Name", - " Zone One Inlet Nodes, !- Zone Air Inlet Node or NodeList Name", - " , !- Zone Air Exhaust Node or NodeList Name", - " Zone One Air Node, !- Zone Air Node Name", - " Zone One Return Air Node Name; !- Zone Return Air Node Name", - - " ZoneHVAC:EquipmentList,", - " Zone One Equipment, !- Name", - " SequentialLoad, !- Load Distribution Scheme", - " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", - " Zone One 4pipe Beam, !- Zone Equipment 1 Name", - " 1, !- Zone Equipment 1 Cooling Sequence", - " 1; !- Zone Equipment 1 Heating or No-Load Sequence", - - " ZoneHVAC:AirDistributionUnit,", - " Zone One 4pipe Beam, !- Name", - " Zone One 4pipe Beam Outlet Node Name, !- Air Distribution Unit Outlet Node Name", - " AirTerminal:SingleDuct:ConstantVolume:FourPipeBeam, !- Air Terminal Object Type", - " Zone One 4pipe Beam; !- Air Terminal Name", - - " NodeList,", - " Zone One Inlet Nodes, !- Name", - " Zone One 4pipe Beam Outlet Node Name; !- Node 1 Name", - - " AirLoopHVAC:ZoneSplitter,", - " CV_1 Supply Air Splitter, !- Name", - " CV_1 Zone Equipment Inlet Node, !- Inlet Node Name", - " Zone One 4pipe Beam Inlet Node Name; !- Outlet 1 Node Name", - - " AirLoopHVAC:ReturnPath,", - " CV_1 Return Air Path, !- Name", - " CV_1 Zone Equipment Outlet Node, !- Return Air Path Outlet Node Name", - " AirLoopHVAC:ZoneMixer, !- Component 2 Object Type", - " CV_1 Return Air Mixer; !- Component 2 Name", - - " AirLoopHVAC:ZoneMixer,", - " CV_1 Return Air Mixer, !- Name", - " CV_1 Zone Equipment Outlet Node, !- Outlet Node Name", - " Zone One Return Air Node Name; !- Inlet 1 Node Name", - - " Fan:VariableVolume,", - " CV_1_Fan, !- Name", - " always_on, !- Availability Schedule Name", - " 0.6045, !- Fan Total Efficiency", - " 1017.592, !- Pressure Rise {Pa}", - " AUTOSIZE, !- Maximum Flow Rate {m3/s}", - " FixedFlowRate, !- Fan Power Minimum Flow Rate Input Method", - " , !- Fan Power Minimum Flow Fraction", - " 0.0000, !- Fan Power Minimum Air Flow Rate {m3/s}", - " 0.93, !- Motor Efficiency", - " 1.0, !- Motor In Airstream Fraction", - " 0.0407598940, !- Fan Power Coefficient 1", - " 0.08804497, !- Fan Power Coefficient 2", - " -0.072926120, !- Fan Power Coefficient 3", - " 0.9437398230, !- Fan Power Coefficient 4", - " 0, !- Fan Power Coefficient 5", - " CV_1_HeatC-CV_1_FanNode, !- Air Inlet Node Name", - " CV_1 Supply Equipment Outlet Node, !- Air Outlet Node Name", - " Fan Energy; !- End-Use Subcategory", - - " Coil:Heating:Water,", - " CV_1_HeatC, !- Name", - " ALWAYS_ON, !- Availability Schedule Name", - " AUTOSIZE, !- U-Factor Times Area Value {W/K}", - " AUTOSIZE, !- Maximum Water Flow Rate {m3/s}", - " CV_1_HeatCDemand Inlet Node, !- Water Inlet Node Name", - " CV_1_HeatCDemand Outlet Node, !- Water Outlet Node Name", - " CV_1_CoolC-CV_1_HeatCNode, !- Air Inlet Node Name", - " CV_1_HeatC-CV_1_FanNode, !- Air Outlet Node Name", - " UFactorTimesAreaAndDesignWaterFlowRate, !- Performance Input Method", - " AUTOSIZE, !- Rated Capacity {W}", - " 82.2, !- Rated Inlet Water Temperature {C}", - " 16.6, !- Rated Inlet Air Temperature {C}", - " 71.1, !- Rated Outlet Water Temperature {C}", - " 32.2, !- Rated Outlet Air Temperature {C}", - " ; !- Rated Ratio for Air and Water Convection", - - " Coil:Cooling:Water,", - " CV_1_CoolC, !- Name", - " ALWAYS_ON, !- Availability Schedule Name", - " AUTOSIZE, !- Design Water Flow Rate {m3/s}", - " AUTOSIZE, !- Design Air Flow Rate {m3/s}", - " AUTOSIZE, !- Design Inlet Water Temperature {C}", - " AUTOSIZE, !- Design Inlet Air Temperature {C}", - " AUTOSIZE, !- Design Outlet Air Temperature {C}", - " AUTOSIZE, !- Design Inlet Air Humidity Ratio {kgWater/kgDryAir}", - " AUTOSIZE, !- Design Outlet Air Humidity Ratio {kgWater/kgDryAir}", - " CV_1_CoolCDemand Inlet Node, !- Water Inlet Node Name", - " CV_1_CoolCDemand Outlet Node, !- Water Outlet Node Name", - " CV_1_OA-CV_1_CoolCNode,!- Air Inlet Node Name", - " CV_1_CoolC-CV_1_HeatCNode, !- Air Outlet Node Name", - " SimpleAnalysis, !- Type of Analysis", - " CrossFlow; !- Heat Exchanger Configuration", - - " Controller:OutdoorAir,", - " CV_1_OA_Controller, !- Name", - " CV_1_OARelief Node, !- Relief Air Outlet Node Name", - " CV_1 Supply Equipment Inlet Node, !- Return Air Node Name", - " CV_1_OA-CV_1_CoolCNode,!- Mixed Air Node Name", - " CV_1_OAInlet Node, !- Actuator Node Name", - " AUTOSIZE, !- Minimum Outdoor Air Flow Rate {m3/s}", - " AUTOSIZE, !- Maximum Outdoor Air Flow Rate {m3/s}", - " DifferentialDryBulb, !- Economizer Control Type", - " ModulateFlow, !- Economizer Control Action Type", - " 28.0, !- Economizer Maximum Limit Dry-Bulb Temperature {C}", - " 64000.0, !- Economizer Maximum Limit Enthalpy {J/kg}", - " , !- Economizer Maximum Limit Dewpoint Temperature {C}", - " , !- Electronic Enthalpy Limit Curve Name", - " -100.0, !- Economizer Minimum Limit Dry-Bulb Temperature {C}", - " NoLockout, !- Lockout Type", - " FixedMinimum, !- Minimum Limit Type", - " MinOA_MotorizedDamper_Sched; !- Minimum Outdoor Air Schedule Name", - - " Schedule:Compact,", - " MinOA_MotorizedDamper_Sched, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Weekdays SummerDesignDay, !- Field 2", - " Until: 07:00,0.0, !- Field 3", - " Until: 22:00,1.0, !- Field 5", - " Until: 24:00,0.0, !- Field 7", - " For: Saturday WinterDesignDay, !- Field 9", - " Until: 07:00,0.0, !- Field 10", - " Until: 18:00,1.0, !- Field 12", - " Until: 24:00,0.0, !- Field 14", - " For: AllOtherDays, !- Field 16", - " Until: 24:00,0.0; !- Field 17", - - " SetpointManager:Scheduled,", - " CV_1 SAT setpoint, !- Name", - " Temperature, !- Control Variable", - " Seasonal-Reset-Supply-Air-Temp-Sch, !- Schedule Name", - " CV_1 Supply Equipment Outlet Node; !- Setpoint Node or NodeList Name", - - " Schedule:Compact,", - " Seasonal-Reset-Supply-Air-Temp-Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,12.8; !- Field 3", - - " AirLoopHVAC,", - " CV_1, !- Name", - " CV_1_Controllers, !- Controller List Name", - " CV_1 Availability Manager List, !- Availability Manager List Name", - " AUTOSIZE, !- Design Supply Air Flow Rate {m3/s}", - " CV_1 Air Loop Branches, !- Branch List Name", - " , !- Connector List Name", - " CV_1 Supply Equipment Inlet Node, !- Supply Side Inlet Node Name", - " CV_1 Zone Equipment Outlet Node, !- Demand Side Outlet Node Name", - " CV_1 Zone Equipment Inlet Node, !- Demand Side Inlet Node Names", - " CV_1 Supply Equipment Outlet Node; !- Supply Side Outlet Node Names", - - " AvailabilityManagerAssignmentList,", - " CV_1 Availability Manager List, !- Name", - " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", - " CV_1 Avail; !- Availability Manager 1 Name", - - " AvailabilityManager:Scheduled,", - " CV_1 Avail, !- Name", - " always_on; !- Schedule Name", - - " NodeList,", - " CV_1_OANode List, !- Name", - " CV_1_OAInlet Node; !- Node 1 Name", - - " BranchList,", - " CV_1 Air Loop Branches, !- Name", - " CV_1 Air Loop Main Branch; !- Branch 1 Name", - - " Branch,", - " CV_1 Air Loop Main Branch, !- Name", - " , !- Pressure Drop Curve Name", - " AirLoopHVAC:OutdoorAirSystem, !- Component 1 Object Type", - " CV_1_OA, !- Component 1 Name", - " CV_1 Supply Equipment Inlet Node, !- Component 1 Inlet Node Name", - " CV_1_OA-CV_1_CoolCNode,!- Component 1 Outlet Node Name", - " Coil:Cooling:Water, !- Component 2 Object Type", - " CV_1_CoolC, !- Component 2 Name", - " CV_1_OA-CV_1_CoolCNode,!- Component 2 Inlet Node Name", - " CV_1_CoolC-CV_1_HeatCNode, !- Component 2 Outlet Node Name", - " Coil:Heating:Water, !- Component 3 Object Type", - " CV_1_HeatC, !- Component 3 Name", - " CV_1_CoolC-CV_1_HeatCNode, !- Component 3 Inlet Node Name", - " CV_1_HeatC-CV_1_FanNode, !- Component 3 Outlet Node Name", - " Fan:VariableVolume, !- Component 4 Object Type", - " CV_1_Fan, !- Component 4 Name", - " CV_1_HeatC-CV_1_FanNode, !- Component 4 Inlet Node Name", - " CV_1 Supply Equipment Outlet Node; !- Component 4 Outlet Node Name", - - " AirLoopHVAC:ControllerList,", - " CV_1_Controllers, !- Name", - " Controller:WaterCoil, !- Controller 1 Object Type", - " CV_1_CoolC_Controller, !- Controller 1 Name", - " Controller:WaterCoil, !- Controller 2 Object Type", - " CV_1_HeatC_Controller; !- Controller 2 Name", - - " AirLoopHVAC:ControllerList,", - " CV_1_OA_Controllers, !- Name", - " Controller:OutdoorAir, !- Controller 1 Object Type", - " CV_1_OA_Controller; !- Controller 1 Name", - - " AirLoopHVAC:OutdoorAirSystem:EquipmentList,", - " CV_1_OA_Equipment, !- Name", - " OutdoorAir:Mixer, !- Component 1 Object Type", - " CV_1_OAMixing Box; !- Component 1 Name", - - " AirLoopHVAC:OutdoorAirSystem,", - " CV_1_OA, !- Name", - " CV_1_OA_Controllers, !- Controller List Name", - " CV_1_OA_Equipment, !- Outdoor Air Equipment List Name", - " CV_1 Availability Manager List; !- Availability Manager List Name", - - " OutdoorAir:NodeList,", - " CV_1_OANode List; !- Node or NodeList Name 1", - - " OutdoorAir:Mixer,", - " CV_1_OAMixing Box, !- Name", - " CV_1_OA-CV_1_CoolCNode,!- Mixed Air Node Name", - " CV_1_OAInlet Node, !- Outdoor Air Stream Node Name", - " CV_1_OARelief Node, !- Relief Air Stream Node Name", - " CV_1 Supply Equipment Inlet Node; !- Return Air Stream Node Name", - - " SetpointManager:MixedAir,", - " CV_1_CoolC SAT Manager, !- Name", - " Temperature, !- Control Variable", - " CV_1 Supply Equipment Outlet Node, !- Reference Setpoint Node Name", - " CV_1_HeatC-CV_1_FanNode, !- Fan Inlet Node Name", - " CV_1 Supply Equipment Outlet Node, !- Fan Outlet Node Name", - " CV_1_CoolC-CV_1_HeatCNode; !- Setpoint Node or NodeList Name", - - " SetpointManager:MixedAir,", - " CV_1_HeatC SAT Manager, !- Name", - " Temperature, !- Control Variable", - " CV_1 Supply Equipment Outlet Node, !- Reference Setpoint Node Name", - " CV_1_HeatC-CV_1_FanNode, !- Fan Inlet Node Name", - " CV_1 Supply Equipment Outlet Node, !- Fan Outlet Node Name", - " CV_1_HeatC-CV_1_FanNode; !- Setpoint Node or NodeList Name", - - " SetpointManager:MixedAir,", - " CV_1_OAMixed Air Temp Manager, !- Name", - " Temperature, !- Control Variable", - " CV_1 Supply Equipment Outlet Node, !- Reference Setpoint Node Name", - " CV_1_HeatC-CV_1_FanNode, !- Fan Inlet Node Name", - " CV_1 Supply Equipment Outlet Node, !- Fan Outlet Node Name", - " CV_1_OA-CV_1_CoolCNode;!- Setpoint Node or NodeList Name", - - " AirLoopHVAC:SupplyPath,", - " CV_1, !- Name", - " CV_1 Zone Equipment Inlet Node, !- Supply Air Path Inlet Node Name", - " AirLoopHVAC:ZoneSplitter,!- Component 1 Object Type", - " CV_1 Supply Air Splitter; !- Component 1 Name", - - " Controller:WaterCoil,", - " CV_1_CoolC_Controller, !- Name", - " Temperature, !- Control Variable", - " Reverse, !- Action", - " Flow, !- Actuator Variable", - " CV_1_CoolC-CV_1_HeatCNode, !- Sensor Node Name", - " CV_1_CoolCDemand Inlet Node, !- Actuator Node Name", - " , !- Controller Convergence Tolerance {deltaC}", - " AUTOSIZE, !- Maximum Actuated Flow {m3/s}", - " 0.0; !- Minimum Actuated Flow {m3/s}", - - " Controller:WaterCoil,", - " CV_1_HeatC_Controller, !- Name", - " Temperature, !- Control Variable", - " Normal, !- Action", - " Flow, !- Actuator Variable", - " CV_1_HeatC-CV_1_FanNode, !- Sensor Node Name", - " CV_1_HeatCDemand Inlet Node, !- Actuator Node Name", - " 0.0001, !- Controller Convergence Tolerance {deltaC}", - " AUTOSIZE, !- Maximum Actuated Flow {m3/s}", - " 0.0; !- Minimum Actuated Flow {m3/s}", - - " Sizing:Plant,", - " Chilled Water Loop, !- Plant or Condenser Loop Name", - " Cooling, !- Loop Type", - " 6.67, !- Design Loop Exit Temperature {C}", - " 6.67, !- Loop Design Temperature Difference {deltaC}", - " Coincident, !- Sizing Option", - " 1, !- Zone Timesteps in Averaging Window", - " None; !- Coincident Sizing Factor Mode", - - " ConnectorList,", - " CoolSys1 Demand Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " CoolSys1 Demand Splitter,!- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " CoolSys1 Demand Mixer; !- Connector 2 Name", - - " BranchList,", - " CoolSys1 Demand Branches,!- Name", - " CoolSys1 Demand Inlet Branch, !- Branch 1 Name", - " CoolSys1 Demand Load Branch 1, !- Branch 2 Name", - " CoolSys1 Demand Load Branch 2, !- Branch 3 Name", - " CoolSys1 Demand Bypass Branch, !- Branch 6 Name", - " CoolSys1 Demand Outlet Branch; !- Branch 7 Name", - - " Connector:Splitter,", - " CoolSys1 Demand Splitter,!- Name", - " CoolSys1 Demand Inlet Branch, !- Inlet Branch Name", - " CoolSys1 Demand Load Branch 1, !- Outlet Branch 1 Name", - " CoolSys1 Demand Load Branch 2, !- Outlet Branch 2 Name", - " CoolSys1 Demand Bypass Branch; !- Branch 6 Name", - - " Connector:Mixer,", - " CoolSys1 Demand Mixer, !- Name", - " CoolSys1 Demand Outlet Branch, !- Outlet Branch Name", - " CoolSys1 Demand Load Branch 1, !- Inlet Branch 1 Name", - " CoolSys1 Demand Load Branch 2, !- Inlet Branch 2 Name", - " CoolSys1 Demand Bypass Branch; !- Branch 6 Name", - - " Branch,", - " CoolSys1 Demand Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " CoolSys1 Demand Inlet Pipe, !- Component 1 Name", - " CoolSys1 Demand Inlet Node, !- Component 1 Inlet Node Name", - " CoolSys1 Demand Inlet Pipe-CoolSys1 Demand Mixer; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " CoolSys1 Demand Inlet Pipe, !- Name", - " CoolSys1 Demand Inlet Node, !- Inlet Node Name", - " CoolSys1 Demand Inlet Pipe-CoolSys1 Demand Mixer; !- Outlet Node Name", - - " Pipe:Adiabatic,", - " CoolSys1 Demand Outlet Pipe, !- Name", - " CoolSys1 Demand Mixer-CoolSys1 Demand Outlet Pipe, !- Inlet Node Name", - " CoolSys1 Demand Outlet Node; !- Outlet Node Name", - - " Pipe:Adiabatic,", - " CoolSys1 Demand Bypass Pipe, !- Name", - " CoolSys1 Demand Bypass Pipe Inlet Node, !- Inlet Node Name", - " CoolSys1 Demand Bypass Pipe Outlet Node; !- Outlet Node Name", - - " Branch,", - " CoolSys1 Demand Load Branch 1, !- Name", - " , !- Pressure Drop Curve Name", - " Coil:Cooling:Water, !- Component 1 Object Type", - " CV_1_CoolC, !- Component 1 Name", - " CV_1_CoolCDemand Inlet Node, !- Component 1 Inlet Node Name", - " CV_1_CoolCDemand Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " CoolSys1 Demand Load Branch 2, !- Name", - " , !- Pressure Drop Curve Name", - " AirTerminal:SingleDuct:ConstantVolume:FourPipeBeam, !- Component 1 Object Type", - " Zone One 4pipe Beam, !- Component 1 Name", - " Zone One 4pipe Beam CW Inlet Node, !- Component 1 Inlet Node Name", - " Zone One 4pipe Beam CW Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " CoolSys1 Demand Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " CoolSys1 Demand Outlet Pipe, !- Component 1 Name", - " CoolSys1 Demand Mixer-CoolSys1 Demand Outlet Pipe, !- Component 1 Inlet Node Name", - " CoolSys1 Demand Outlet Node; !- Component 1 Outlet Node Name", - - " PlantLoop,", - " Chilled Water Loop, !- Name", - " WATER, !- Fluid Type", - " , !- User Defined Fluid Type", - " SOURCE Loop Operation, !- Plant Equipment Operation Scheme Name", - " SOURCE Supply Outlet Node, !- Loop Temperature Setpoint Node Name", - " 100, !- Maximum Loop Temperature {C}", - " 3, !- Minimum Loop Temperature {C", - " 0.003, !- Maximum Loop Flow Rate {m3/s}", - " 0, !- Minimum Loop Flow Rate {m3/s}", - " autocalculate, !- Plant Loop Volume {m3}", - " SOURCE Supply Inlet Node,!- Plant Side Inlet Node Name", - " SOURCE Supply Outlet Node, !- Plant Side Outlet Node Name", - " SOURCE Supply Branches, !- Plant Side Branch List Name", - " SOURCE Supply Connectors,!- Plant Side Connector List Name", - " CoolSys1 Demand Inlet Node, !- Demand Side Inlet Node Name", - " CoolSys1 Demand Outlet Node, !- Demand Side Outlet Node Name", - " CoolSys1 Demand Branches, !- Demand Side Branch List Name", - " CoolSys1 Demand Connectors,!- Demand Side Connector List Name", - " OPTIMAL, !- Load Distribution Scheme", - " , !- Availability Manager List Name", - " , !- Plant Loop Demand Calculation Scheme", - " , !- Common Pipe Simulation", - " , !- Pressure Simulation Type", - " 2.0; !- Loop Circulation Time {minutes}", - - " SetpointManager:Scheduled,", - " SOURCE Loop Setpoint Manager, !- Name", - " Temperature, !- Control Variable", - " SOURCE Loop Temp Sch, !- Schedule Name", - " SOURCE Loop Setpoint Node List; !- Setpoint Node or NodeList Name", - - " Schedule:Compact,", - " SOURCE Loop Temp Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " THROUGH: 12/31, !- Field 1", - " FOR: AllDays, !- Field 2", - " UNTIL: 24:00,6.7; !- Field 3", - - " NodeList,", - " SOURCE Loop Setpoint Node List, !- Name", - " SOURCE Supply Outlet Node; !- Node 1 Name", - - " PlantEquipmentOperationSchemes,", - " SOURCE Loop Operation, !- Name", - " PlantEquipmentOperation:CoolingLoad, !- Control Scheme 1 Object Type", - " SOURCE Purchased Only, !- Control Scheme 1 Name", - " Always_On; !- Control Scheme 1 Schedule Name", - - " PlantEquipmentOperation:CoolingLoad,", - " SOURCE Purchased Only, !- Name", - " 0, !- Load Range 1 Lower Limit {W}", - " 10000000, !- Load Range 1 Upper Limit {W}", - " SOURCE Cooling Plant; !- Range 1 Equipment List Name", - - " PlantEquipmentList,", - " SOURCE Cooling Plant, !- Name", - " DistrictCooling, !- Equipment 1 Object Type", - " SOURCE Purchased Cooling;!- Equipment 1 Name", - - " BranchList,", - " SOURCE Supply Branches, !- Name", - " SOURCE Supply Inlet Branch, !- Branch 1 Name", - " SOURCE Cooling Branch, !- Branch 2 Name", - " SOURCE Supply Outlet Branch; !- Branch 3 Name", - - " ConnectorList,", - " SOURCE Supply Connectors,!- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " SOURCE Supply Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " SOURCE Supply Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " SOURCE Supply Splitter, !- Name", - " SOURCE Supply Inlet Branch, !- Inlet Branch Name", - " SOURCE Cooling Branch; !- Outlet Branch 1 Name", - - " Connector:Mixer,", - " SOURCE Supply Mixer, !- Name", - " SOURCE Supply Outlet Branch, !- Outlet Branch Name", - " SOURCE Cooling Branch; !- Inlet Branch 1 Name", - - " Branch,", - " SOURCE Supply Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pump:VariableSpeed, !- Component 1 Object Type", - " SOURCE Pump, !- Component 1 Name", - " SOURCE Supply Inlet Node,!- Component 1 Inlet Node Name", - " SOURCE Supply Pump-Cooling Node; !- Component 1 Outlet Node Name", - - " Pump:VariableSpeed,", - " SOURCE Pump, !- Name", - " SOURCE Supply Inlet Node,!- Inlet Node Name", - " SOURCE Supply Pump-Cooling Node, !- Outlet Node Name", - " 0.005, !- Rated Flow Rate {m3/s}", - " 300000, !- Rated Pump Head {Pa}", - " 2250, !- Rated Power Consumption {W}", - " 0.87, !- Motor Efficiency", - " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", - " 0, !- Coefficient 1 of the Part Load Performance Curve", - " 1, !- Coefficient 2 of the Part Load Performance Curve", - " 0, !- Coefficient 3 of the Part Load Performance Curve", - " 0, !- Coefficient 4 of the Part Load Performance Curve", - " 0, !- Minimum Flow Rate {m3/s}", - " INTERMITTENT; !- Pump Control Type", - - " Branch,", - " SOURCE Cooling Branch, !- Name", - " , !- Pressure Drop Curve Name", - " DistrictCooling, !- Component 1 Object Type", - " SOURCE Purchased Cooling,!- Component 1 Name", - " SOURCE Supply Cooling Inlet Node, !- Component 1 Inlet Node Name", - " SOURCE Supply Cooling Outlet Node; !- Component 1 Outlet Node Name", - - " DistrictCooling,", - " SOURCE Purchased Cooling,!- Name", - " SOURCE Supply Cooling Inlet Node, !- Chilled Water Inlet Node Name", - " SOURCE Supply Cooling Outlet Node, !- Chilled Water Outlet Node Name", - " 1000000; !- Nominal Capacity {W}", - - " Branch,", - " SOURCE Supply Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " SOURCE Supply Outlet Pipe, !- Component 1 Name", - " SOURCE Supply Cooling-Pipe Node, !- Component 1 Inlet Node Name", - " SOURCE Supply Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " SOURCE Supply Outlet Pipe, !- Name", - " SOURCE Supply Cooling-Pipe Node, !- Inlet Node Name", - " SOURCE Supply Outlet Node; !- Outlet Node Name", - - " Branch,", - " CoolSys1 Demand Bypass Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " CoolSys1 Demand Bypass Pipe, !- Component 1 Name", - " CoolSys1 Demand Bypass Pipe Inlet Node, !- Component 1 Inlet Node Name", - " CoolSys1 Demand Bypass Pipe Outlet Node; !- Component 1 Outlet Node Name", - - " Sizing:Plant,", - " HeatSys1 Loop, !- Plant or Condenser Loop Name", - " Heating, !- Loop Type", - " 60.0, !- Design Loop Exit Temperature {C}", - " 11.1, !- Loop Design Temperature Difference {deltaC}", - " Coincident, !- Sizing Option", - " 2, !- Zone Timesteps in Averaging Window", - " None; !- Coincident Sizing Factor Mode ", - - " PlantLoop,", - " HeatSys1 Loop, !- Name", - " WATER, !- Fluid Type", - " , !- User Defined Fluid Type", - " HeatSys1 Loop Operation, !- Plant Equipment Operation Scheme Name", - " HeatSys1 Supply Outlet Node, !- Loop Temperature Setpoint Node Name", - " 100, !- Maximum Loop Temperature {C}", - " 3, !- Minimum Loop Temperature {C}", - " 0.003, !- Maximum Loop Flow Rate {m3/s}", - " 0, !- Minimum Loop Flow Rate {m3/s}", - " autocalculate, !- Plant Loop Volume {m3}", - " HeatSys1 Supply Inlet Node,!- Plant Side Inlet Node Name", - " HeatSys1 Supply Outlet Node, !- Plant Side Outlet Node Name", - " HeatSys1 Supply Branches, !- Plant Side Branch List Name", - " HeatSys1 Supply Connectors,!- Plant Side Connector List Name", - " HeatSys1 Demand Inlet Node,!- Demand Side Inlet Node Name", - " HeatSys1 Demand Outlet Node, !- Demand Side Outlet Node Name", - " HeatSys1 Demand Branches, !- Demand Side Branch List Name", - " HeatSys1 Demand Connectors,!- Demand Side Connector List Name", - " OPTIMAL, !- Load Distribution Scheme", - " , !- Availability Manager List Name", - " , !- Plant Loop Demand Calculation Scheme", - " , !- Common Pipe Simulation", - " , !- Pressure Simulation Type", - " 2.0; !- Loop Circulation Time {minutes}", - - " SetpointManager:Scheduled,", - " HeatSys1 Loop Setpoint Manager, !- Name", - " Temperature, !- Control Variable", - " HeatSys1 Loop Temp Sch, !- Schedule Name", - " HeatSys1 Loop Setpoint Node List; !- Setpoint Node or NodeList Name", - - " Schedule:Compact,", - " HeatSys1 Loop Temp Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,60.0; !- Field 3", - - " NodeList,", - " HeatSys1 Loop Setpoint Node List, !- Name", - " HeatSys1 Supply Outlet Node; !- Node 1 Name", - - " PlantEquipmentOperationSchemes,", - " HeatSys1 Loop Operation, !- Name", - " PlantEquipmentOperation:HeatingLoad, !- Control Scheme 1 Object Type", - " HeatSys1 Purchased Only, !- Control Scheme 1 Name", - " Always_On; !- Control Scheme 1 Schedule Name", - - " PlantEquipmentOperation:HeatingLoad,", - " HeatSys1 Purchased Only, !- Name", - " 0, !- Load Range 1 Lower Limit {W}", - " 10000000, !- Load Range 1 Upper Limit {W}", - " HeatSys1 Heating Plant; !- Range 1 Equipment List Name", - - " PlantEquipmentList,", - " HeatSys1 Heating Plant, !- Name", - " DistrictHeating, !- Equipment 1 Object Type", - " HeatSys1 Purchased Heating;!- Equipment 1 Name", - - " BranchList,", - " HeatSys1 Supply Branches, !- Name", - " HeatSys1 Supply Inlet Branch, !- Branch 1 Name", - " HeatSys1 Heating Branch, !- Branch 2 Name", - " HeatSys1 Supply Outlet Branch; !- Branch 3 Name", - - " ConnectorList,", - " HeatSys1 Supply Connectors,!- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " HeatSys1 Supply Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " HeatSys1 Supply Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " HeatSys1 Supply Splitter, !- Name", - " HeatSys1 Supply Inlet Branch, !- Inlet Branch Name", - " HeatSys1 Heating Branch; !- Outlet Branch 1 Name", - - " Connector:Mixer,", - " HeatSys1 Supply Mixer, !- Name", - " HeatSys1 Supply Outlet Branch, !- Outlet Branch Name", - " HeatSys1 Heating Branch; !- Inlet Branch 1 Name", - - " Branch,", - " HeatSys1 Supply Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pump:VariableSpeed, !- Component 1 Object Type", - " HeatSys1 Pump, !- Component 1 Name", - " HeatSys1 Supply Inlet Node,!- Component 1 Inlet Node Name", - " HeatSys1 Supply Pump-Heating Node; !- Component 1 Outlet Node Name", - - " Pump:VariableSpeed,", - " HeatSys1 Pump, !- Name", - " HeatSys1 Supply Inlet Node,!- Inlet Node Name", - " HeatSys1 Supply Pump-Heating Node, !- Outlet Node Name", - " 0.005, !- Rated Flow Rate {m3/s}", - " 300000, !- Rated Pump Head {Pa}", - " 2250, !- Rated Power Consumption {W}", - " 0.87, !- Motor Efficiency", - " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", - " 0, !- Coefficient 1 of the Part Load Performance Curve", - " 1, !- Coefficient 2 of the Part Load Performance Curve", - " 0, !- Coefficient 3 of the Part Load Performance Curve", - " 0, !- Coefficient 4 of the Part Load Performance Curve", - " 0, !- Minimum Flow Rate {m3/s}", - " INTERMITTENT; !- Pump Control Type", - - " Branch,", - " HeatSys1 Heating Branch, !- Name", - " , !- Pressure Drop Curve Name", - " DistrictHeating, !- Component 1 Object Type", - " HeatSys1 Purchased Heating,!- Component 1 Name", - " HeatSys1 Supply Heating Inlet Node, !- Component 1 Inlet Node Name", - " HeatSys1 Supply Heating Outlet Node; !- Component 1 Outlet Node Name", - - " DistrictHeating,", - " HeatSys1 Purchased Heating,!- Name", - " HeatSys1 Supply Heating Inlet Node, !- Hot Water Inlet Node Name", - " HeatSys1 Supply Heating Outlet Node, !- Hot Water Outlet Node Name", - " 1000000; !- Nominal Capacity {W}", - - " Branch,", - " HeatSys1 Supply Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " HeatSys1 Supply Outlet Pipe, !- Component 1 Name", - " HeatSys1 Supply Heating-Pipe Node, !- Component 1 Inlet Node Name", - " HeatSys1 Supply Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " HeatSys1 Supply Outlet Pipe, !- Name", - " HeatSys1 Supply Heating-Pipe Node, !- Inlet Node Name", - " HeatSys1 Supply Outlet Node; !- Outlet Node Name", - - " Pipe:Adiabatic,", - " HeatSys1 Demand Bypass Pipe, !- Name", - " HeatSys1 Demand Bypass Pipe Inlet Node, !- Inlet Node Name", - " HeatSys1 Demand Bypass Pipe Outlet Node; !- Outlet Node Name", - - " ConnectorList,", - " HeatSys1 Demand Connectors,!- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " HeatSys1 Demand Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " HeatSys1 Demand Mixer; !- Connector 2 Name", - - " Branch,", - " HeatSys1 Demand Bypass Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " HeatSys1 Demand Bypass Pipe, !- Component 1 Name", - " HeatSys1 Demand Bypass Pipe Inlet Node, !- Component 1 Inlet Node Name", - " HeatSys1 Demand Bypass Pipe Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " HeatSys1 Demand Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " HeatSys1 Demand Inlet Pipe,!- Component 1 Name", - " HeatSys1 Demand Inlet Node,!- Component 1 Inlet Node Name", - " HeatSys1 Demand Pipe-Load Profile Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " HeatSys1 Demand Inlet Pipe,!- Name", - " HeatSys1 Demand Inlet Node,!- Inlet Node Name", - " HeatSys1 Demand Pipe-Load Profile Node; !- Outlet Node Name", - - " Branch,", - " HeatSys1 Demand Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " HeatSys1 Demand Outlet Pipe, !- Component 1 Name", - " HeatSys1 Demand Load Profile-Pipe Node, !- Component 1 Inlet Node Name", - " HeatSys1 Demand Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " HeatSys1 Demand Outlet Pipe, !- Name", - " HeatSys1 Demand Load Profile-Pipe Node, !- Inlet Node Name", - " HeatSys1 Demand Outlet Node; !- Outlet Node Name", - - " Connector:Splitter,", - " HeatSys1 Demand Splitter, !- Name", - " HeatSys1 Demand Inlet Branch, !- Inlet Branch Name", - " HeatSys1 Demand Load Branch 1, !- Branch 2 Name", - " HeatSys1 Demand Load Branch 2, !- Branch 3 Name", - " HeatSys1 Demand Bypass Branch; !- Branch 4 Name", - - " Connector:Mixer,", - " HeatSys1 Demand Mixer, !- Name", - " HeatSys1 Demand Outlet Branch, !- Outlet Branch Name", - " HeatSys1 Demand Load Branch 1, !- Branch 2 Name", - " HeatSys1 Demand Load Branch 2, !- Branch 3 Name", - " HeatSys1 Demand Bypass Branch; !- Branch 4 Name", - - " BranchList,", - " HeatSys1 Demand Branches,!- Name", - " HeatSys1 Demand Inlet Branch, !- Branch 1 Name", - " HeatSys1 Demand Load Branch 1, !- Branch 2 Name", - " HeatSys1 Demand Load Branch 2, !- Branch 3 Name", - " HeatSys1 Demand Bypass Branch, !- Branch 4 Name", - " HeatSys1 Demand Outlet Branch; !- Branch 5 Name", - - " Branch,", - " HeatSys1 Demand Load Branch 1, !- Name", - " , !- Pressure Drop Curve Name", - " Coil:Heating:Water, !- Component 1 Object Type", - " CV_1_HeatC, !- Component 1 Name", - " CV_1_HeatCDemand Inlet Node, !- Component 1 Inlet Node Name", - " CV_1_heatCDemand Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " HeatSys1 Demand Load Branch 2, !- Name", - " , !- Pressure Drop Curve Name", - " AirTerminal:SingleDuct:ConstantVolume:FourPipeBeam, !- Component 1 Object Type", - " Zone One 4pipe Beam, !- Component 1 Name", - " Zone One 4pipe Beam HW Inlet Node, !- Component 1 Inlet Node Name", - " Zone One 4pipe Beam HW Outlet Node; !- Component 1 Outlet Node Name", - - " AirTerminal:SingleDuct:ConstantVolume:FourPipeBeam,", - " Zone One 4pipe Beam, !- Name", - " ALWAYS_ON , !- Primary Air Availability Schedule Name", - " ALWAYS_ON , !- Cooling Availability Schedule Name", - " ALWAYS_ON , !- Heating Availability Schedule Name", - " Zone One 4pipe Beam Inlet Node Name , !- Primary Air Inlet Node Name", - " Zone One 4pipe Beam Outlet Node Name , !- Primary Air Outlet Node Name", - " Zone One 4pipe Beam CW Inlet Node , !- Chilled Water Inlet Node Name", - " Zone One 4pipe Beam CW Outlet Node , !- Chilled Water Outlet Node Name", - " Zone One 4pipe Beam HW Inlet Node , !- Hot Water Inlet Node Name", - " Zone One 4pipe Beam HW Outlet Node, !- Hot Water Outlet Node Name", - " AUTOSIZE , !- Design Primary Air Volume Flow Rate", - " AUTOSIZE , !- Design Chilled Water Volume Flow Rate", - " AUTOSIZE , !- Design Hot Water Volume Flow Rate", - " AUTOSIZE , !- Zone Total Beam Length", - " 0.036 , !- Rated Primary Air Flow Rate per Meter", - " 597 , !- Rated Beam Cooling Capacity per Meter", - " 10.0 , !- Rated Cooling Room Air Chilled Water Temperature Difference", - " 5.2E-5 , !- Rated Chilled Water Volume Flow Rate per Meter", - " CapModFuncOfTempDiff, !- Beam Cooling Capacity Temperature Difference Modification Factor Curve or Table Name", - " CoolCapModFuncOfSAFlow, !- Beam Cooling Capacity Air Flow Modification Factor Curve or Table Name", - " CapModFuncOfWaterFlow, !- Beam Cooling Capacity Chilled Water Flow Modification Factor Curve or Table Name", - " 1548 , !- Rated Beam Heating Capacity per Meter", - " 27.8, !- Rated Heating Room Air Hot Water Temperature Difference", - " 5.2E-5, !- Rated Hot Water Volume Flow Rate per Meter", - " CapModFuncOfTempDiff, !- Beam Heating Capacity Temperature Difference Modification Factor Curve or Table Name", - " HeatCapModFuncOfSAFlow, !- Beam Heating Capacity Air Flow Modification Factor Curve or Table Name", - " CapModFuncOfWaterFlow; !- Beam Heating Capacity Hot Water Flow Modification Factor Curve or Table Name", - - " Curve:Linear, ! y = x", - " CapModFuncOfTempDiff, !-Name", - " 0, !_ Coef Const", - " 1, !- Coef x", - " 0, !- min x", - " 1.5, !- max x", - " 0.0 , !- min y", - " 1.5; ! max y", - - " Table:OneIndependentVariable,", - " CoolCapModFuncOfSAFlow, !- Name", - " quadratic,!- Curve Type", - " EvaluateCurveToLimits,!- Interpolation Method", - " 0.714,!- min x", - " 1.2857,!- max x", - " 0.8234,!- min y", - " 1.1256,!- max y", - " dimensionless, !-", - " dimensionless, !- ", - " , !- normalization ref", - " 0.714286, 0.823403,", - " 1.0, 1.0,", - " 1.2857, 1.1256;", - - " Table:OneIndependentVariable,", - " CapModFuncOfWaterFlow, !- Name", - " quadratic,!- Curve ", - " EvaluateCurveToLimits,!- Interpolation Method", - " 0.0,!- min x", - " 1.333333,!- max x", - " 0.0,!- min y", - " 1.04,!- max y", - " dimensionless, !-", - " dimensionless, !- ", - " , !- normalization ref", - " 0.0, 0.0,", - " 0.05, 0.001,", - " 0.33333, 0.71,", - " 0.5, 0.85,", - " 0.666667, 0.92,", - " 0.833333, 0.97,", - " 1.0, 1.0,", - " 1.333333, 1.04;", - - " Table:OneIndependentVariable,", - " HeatCapModFuncOfSAFlow, !- Name", - " quadratic,!- Curve Type", - " EvaluateCurveToLimits,!- Interpolation Method", - " 0.714,!- min x", - " 1.2857,!- max x", - " 0.8554,!- min y", - " 1.0778,!- max y", - " dimensionless, !-", - " dimensionless, !- ", - " , !- normalization ref", - " 0.714286, 0.8554,", - " 1.0, 1.0,", - " 1.2857, 1.0778; ", - } ); - - ASSERT_TRUE( process_idf( idf_objects ) ); - SimulationManager::PostIPProcessing(); - - bool ErrorsFound = false; - - DataGlobals::BeginSimFlag = true; - SimulationManager::GetProjectData(); - - OutputReportPredefined::SetPredefinedTables(); - HeatBalanceManager::SetPreConstructionInputParameters(); //establish array bounds for constructions early - OutputProcessor::TimeValue.allocate( 2 ); - OutputProcessor::SetupTimePointers( "Zone", DataGlobals::TimeStepZone ); // Set up Time pointer for HB/Zone Simulation - OutputProcessor::SetupTimePointers( "HVAC", DataHVACGlobals::TimeStepSys ); - PlantManager::CheckIfAnyPlant(); - createFacilityElectricPowerServiceObject(); - BranchInputManager::ManageBranchInput(); // just gets input and returns. - DataGlobals::DoingSizing = true; - SizingManager::ManageSizing(); - DataGlobals::DoingSizing = false; - DataGlobals::KickOffSimulation = true; - - WeatherManager::ResetEnvironmentCounter(); - - ASSERT_ANY_THROW( SimulationManager::SetupSimulation( ErrorsFound ) ); - } + // EXPECT_EQ( DataDefineEquip::AirDistUnit( 1 ).airTerminalPtr->name, "PERIMETER_TOP_ZN_4 4PIPE BEAM"); + + EXPECT_EQ(2, DataZoneEquipment::ZoneEquipConfig(1).AirDistUnitHeat(1).InNode); + + EXPECT_EQ(3, DataZoneEquipment::ZoneEquipConfig(1).AirDistUnitHeat(1).OutNode); + // EXPECT_EQ( DataDefineEquip::AirDistUnit( 1 ).airTerminalPtr->aDUNum, 1 ); +} + +TEST_F(EnergyPlusFixture, Beam_sizeandSimulateOneZone) +{ + std::string const idf_objects = delimited_string({ + " SimulationControl,", + " YES, !- Do Zone Sizing Calculation", + " YES, !- Do System Sizing Calculation", + " YES, !- Do Plant Sizing Calculation", + " Yes, !- Run Simulation for Sizing Periods", + " yes; !- Run Simulation for Weather File Run Periods", + + " Building,", + " Simple One Zone (Wireframe DXF), !- Name", + " 0, !- North Axis {deg}", + " Suburbs, !- Terrain", + " 0.04, !- Loads Convergence Tolerance Value", + " 0.004, !- Temperature Convergence Tolerance Value {deltaC}", + " MinimalShadowing, !- Solar Distribution", + " 30, !- Maximum Number of Warmup Days", + " 6; !- Minimum Number of Warmup Days", + + " RunPeriod,", + " annual, !- Name", + " 1, !- Begin Month", + " 1, !- Begin Day of Month", + " , !- Begin Year", + " 12, !- End Month", + " 31, !- End Day of Month", + " , !- End Year", + " Sunday, !- Day of Week for Start Day", + " No, !- Use Weather File Holidays and Special Days", + " No, !- Use Weather File Daylight Saving Period", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " Yes; !- Use Weather File Snow Indicators", + + " ScheduleTypeLimits,", + " On/Off, !- Name", + " 0, !- Lower Limit Value", + " 1, !- Upper Limit Value", + " DISCRETE; !- Numeric Type", + + " ScheduleTypeLimits,", + " Any Number; !- Name", + + " ScheduleTypeLimits,", + " Temperature, !- Name", + " -60, !- Lower Limit Value", + " 200, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + " ScheduleTypeLimits,", + " Control Type, !- Name", + " 0, !- Lower Limit Value", + " 4, !- Upper Limit Value", + " DISCRETE; !- Numeric Type", + + " Schedule:Compact,", + " ALWAYS_ON, !- Name", + " On/Off, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1; !- Field 3", + + " Schedule:Compact,", + " ACTIVITY_SCH, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,120; !- Field 3", + + " Schedule:Compact,", + " WORK_EFF_SCH, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,0.0; !- Field 3", + + " Schedule:Compact,", + " AIR_VELO_SCH, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,0.2; !- Field 3", + + " Schedule:Compact,", + " CLOTHING_SCH, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 04/30, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0, !- Field 3", + " Through: 09/30, !- Field 5", + " For: AllDays, !- Field 6", + " Until: 24:00,0.5, !- Field 7", + " Through: 12/31, !- Field 9", + " For: AllDays, !- Field 10", + " Until: 24:00,1.0; !- Field 11", + + " Schedule:Compact,", + " BLDG_OCC_SCH, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: SummerDesignDay, !- Field 2", + " Until: 06:00,0.0, !- Field 3", + " Until: 22:00,1.0, !- Field 5", + " Until: 24:00,0.05, !- Field 7", + " For: Weekdays, !- Field 9", + " Until: 06:00,0.0, !- Field 10", + " Until: 07:00,0.1, !- Field 12", + " Until: 08:00,0.2, !- Field 14", + " Until: 12:00,0.95, !- Field 16", + " Until: 13:00,0.5, !- Field 18", + " Until: 17:00,0.95, !- Field 20", + " Until: 18:00,0.7, !- Field 22", + " Until: 20:00,0.4, !- Field 24", + " Until: 22:00,0.1, !- Field 26", + " Until: 24:00,0.05, !- Field 28", + " For: Saturday, !- Field 30", + " Until: 06:00,0.0, !- Field 31", + " Until: 08:00,0.1, !- Field 33", + " Until: 14:00,0.5, !- Field 35", + " Until: 17:00,0.1, !- Field 37", + " Until: 24:00,0.0, !- Field 39", + " For: AllOtherDays, !- Field 41", + " Until: 24:00,0.0; !- Field 42", + + " Schedule:Compact,", + " BLDG_LIGHT_SCH, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Weekdays, !- Field 2", + " Until: 05:00,0.05, !- Field 3", + " Until: 07:00,0.1, !- Field 5", + " Until: 08:00,0.3, !- Field 7", + " Until: 17:00,0.9, !- Field 9", + " Until: 18:00,0.7, !- Field 11", + " Until: 20:00,0.5, !- Field 13", + " Until: 22:00,0.3, !- Field 15", + " Until: 23:00,0.1, !- Field 17", + " Until: 24:00,0.05, !- Field 19", + " For: Saturday, !- Field 21", + " Until: 06:00,0.05, !- Field 22", + " Until: 08:00,0.1, !- Field 24", + " Until: 14:00,0.5, !- Field 26", + " Until: 17:00,0.15, !- Field 28", + " Until: 24:00,0.05, !- Field 30", + " For: SummerDesignDay, !- Field 32", + " Until: 24:00,1.0, !- Field 33", + " For: WinterDesignDay, !- Field 35", + " Until: 24:00,0.0, !- Field 36", + " For: AllOtherDays, !- Field 38", + " Until: 24:00,0.05; !- Field 39", + + " Schedule:Compact,", + " BLDG_EQUIP_SCH, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Weekdays, !- Field 2", + " Until: 08:00,0.40, !- Field 3", + " Until: 12:00,0.90, !- Field 5", + " Until: 13:00,0.80, !- Field 7", + " Until: 17:00,0.90, !- Field 9", + " Until: 18:00,0.80, !- Field 11", + " Until: 20:00,0.60, !- Field 13", + " Until: 22:00,0.50, !- Field 15", + " Until: 24:00,0.40, !- Field 17", + " For: Saturday, !- Field 19", + " Until: 06:00,0.30, !- Field 20", + " Until: 08:00,0.4, !- Field 22", + " Until: 14:00,0.5, !- Field 24", + " Until: 17:00,0.35, !- Field 26", + " Until: 24:00,0.30, !- Field 28", + " For: SummerDesignDay, !- Field 30", + " Until: 24:00,1.0, !- Field 31", + " For: WinterDesignDay, !- Field 33", + " Until: 24:00,0.0, !- Field 34", + " For: AllOtherDays, !- Field 36", + " Until: 24:00,0.30; !- Field 37", + + " SurfaceConvectionAlgorithm:Inside,TARP;", + + " SurfaceConvectionAlgorithm:Outside,DOE-2;", + + " HeatBalanceAlgorithm,ConductionTransferFunction,200.0000;", + + " ZoneAirHeatBalanceAlgorithm,", + " AnalyticalSolution; !- Algorithm", + + " Sizing:Parameters,", + " 1.33, !- Heating Sizing Factor", + " 1.33, !- Cooling Sizing Factor", + " 6; !- Timesteps in Averaging Window", + + " ConvergenceLimits,", + " 2, !- Minimum System Timestep {minutes}", + " 25; !- Maximum HVAC Iterations", + + " ShadowCalculation,", + " AverageOverDaysInFrequency, !- Calculation Method", + " 7, !- Calculation Frequency", + " 15000; !- Maximum Figures in Shadow Overlap Calculations", + + " Timestep,6;", + " Site:Location,", + " USA IL-CHICAGO-OHARE, !- Name", + " 41.77, !- Latitude {deg}", + " -87.75, !- Longitude {deg}", + " -6.00, !- Time Zone {hr}", + " 190; !- Elevation {m}", + + "! CHICAGO_IL_USA Annual Heating 99.6%, MaxDB=-20.6�C", + + " SizingPeriod:DesignDay,", + " CHICAGO Ann Htg 99.6% Condns DB, !- Name", + " 1, !- Month", + " 21, !- Day of Month", + " WinterDesignDay, !- Day Type", + " -20.6, !- Maximum Dry-Bulb Temperature {C}", + " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " -20.6, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 4.9, !- Wind Speed {m/s}", + " 270, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 0.00; !- Sky Clearness", + + "! CHICAGO_IL_USA Annual Cooling (WB=>MDB) .4%, MDB=31.2�C WB=25.5�C", + + " SizingPeriod:DesignDay,", + " CHICAGO Ann Clg .4% Condns WB=>MDB, !- Name", + " 7, !- Month", + " 21, !- Day of Month", + " SummerDesignDay, !- Day Type", + " 31.2, !- Maximum Dry-Bulb Temperature {C}", + " 10.7, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " 25.5, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 5.3, !- Wind Speed {m/s}", + " 230, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 1.00; !- Sky Clearness", + + " Material:NoMass,", + " R13LAYER, !- Name", + " Rough, !- Roughness", + " 2.290965, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material:NoMass,", + " R31LAYER, !- Name", + " Rough, !- Roughness", + " 5.456, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " C5 - 4 IN HW CONCRETE, !- Name", + " MediumRough, !- Roughness", + " 0.1014984, !- Thickness {m}", + " 1.729577, !- Conductivity {W/m-K}", + " 2242.585, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + + " Construction,", + " R13WALL, !- Name", + " R13LAYER; !- Outside Layer", + + " Construction,", + " FLOOR, !- Name", + " C5 - 4 IN HW CONCRETE; !- Outside Layer", + + " Construction,", + " ROOF31, !- Name", + " R31LAYER; !- Outside Layer", + + " Zone,", + " ZONE ONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " People,", + " ZONE ONE People, !- Name", + " ZONE ONE, !- Zone or ZoneList Name", + " BLDG_OCC_SCH, !- Number of People Schedule Name", + " Area/Person, !- Number of People Calculation Method", + " , !- Number of People", + " , !- People per Zone Floor Area {person/m2}", + " 18.58, !- Zone Floor Area per Person {m2/person}", + " 0.3000, !- Fraction Radiant", + " AUTOCALCULATE, !- Sensible Heat Fraction", + " ACTIVITY_SCH, !- Activity Level Schedule Name", + " , !- Carbon Dioxide Generation Rate {m3/s-W}", + " No, !- Enable ASHRAE 55 Comfort Warnings", + " ZoneAveraged, !- Mean Radiant Temperature Calculation Type", + " , !- Surface Name/Angle Factor List Name", + " WORK_EFF_SCH, !- Work Efficiency Schedule Name", + " ClothingInsulationSchedule, !- Clothing Insulation Calculation Method", + " , !- Clothing Insulation Calculation Method Schedule Name", + " CLOTHING_SCH, !- Clothing Insulation Schedule Name", + " AIR_VELO_SCH, !- Air Velocity Schedule Name", + " FANGER; !- Thermal Comfort Model 1 Type", + + " Lights,", + " ZONE ONE Lights, !- Name", + " ZONE ONE, !- Zone or ZoneList Name", + " BLDG_LIGHT_SCH, !- Schedule Name", + " Watts/Area, !- Design Level Calculation Method", + " , !- Lighting Level {W}", + " 10.76, !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.0000, !- Return Air Fraction", + " 0.7000, !- Fraction Radiant", + " 0.2000, !- Fraction Visible", + " 1.0000, !- Fraction Replaceable", + " General, !- End-Use Subcategory", + " No; !- Return Air Fraction Calculated from Plenum Temperature", + + " ElectricEquipment,", + " ZONE ONE Equip, !- Name", + " ZONE ONE, !- Zone or ZoneList Name", + " BLDG_EQUIP_SCH, !- Schedule Name", + " Watts/Area, !- Design Level Calculation Method", + " , !- Design Level {W}", + " 10.76, !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.0000, !- Fraction Latent", + " 0.5000, !- Fraction Radiant", + " 0.0000, !- Fraction Lost", + " General; !- End-Use Subcategory", + + " ScheduleTypeLimits,", + " Fraction, !- Name", + " 0.0, !- Lower Limit Value", + " 1.0, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + " GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " CounterClockWise, !- Vertex Entry Direction", + " World; !- Coordinate System", + + " BuildingSurface:Detailed,", + " Zn001:Wall001, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " ZONE ONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 15.24000,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,0,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall002, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " ZONE ONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000,0,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 15.24000,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 15.24000,15.24000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall003, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " ZONE ONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 15.24000,15.24000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,15.24000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall004, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " ZONE ONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,15.24000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,0,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Flr001, !- Name", + " Floor, !- Surface Type", + " FLOOR, !- Construction Name", + " ZONE ONE, !- Zone Name", + " Adiabatic, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000,0.000000,0.0, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000,0.000000,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 0.000000,15.24000,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,15.24000,0.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Roof001, !- Name", + " Roof, !- Surface Type", + " ROOF31, !- Construction Name", + " ZONE ONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.000000,15.24000,4.572, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000,0.000000,4.572, !- X,Y,Z ==> Vertex 2 {m}", + " 15.24000,0.000000,4.572, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,15.24000,4.572; !- X,Y,Z ==> Vertex 4 {m}", + + " Sizing:Zone,", + " Zone One, !- Zone or ZoneList Name", + " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", + " 12.8000, !- Zone Cooling Design Supply Air Temperature {C}", + " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", + " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", + " 50.0000, !- Zone Heating Design Supply Air Temperature {C}", + " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", + " 0.0085, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " 0.0080, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " SZ DSOA Zone One, !- Design Specification Outdoor Air Object Name", + " , !- Zone Heating Sizing Factor", + " , !- Zone Cooling Sizing Factor", + " DesignDay, !- Cooling Design Air Flow Method", + " , !- Cooling Design Air Flow Rate {m3/s}", + " , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", + " , !- Cooling Minimum Air Flow {m3/s}", + " , !- Cooling Minimum Air Flow Fraction", + " DesignDay, !- Heating Design Air Flow Method", + " , !- Heating Design Air Flow Rate {m3/s}", + " , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", + " , !- Heating Maximum Air Flow {m3/s}", + " ; !- Heating Maximum Air Flow Fraction", + + " DesignSpecification:OutdoorAir,", + " SZ DSOA Zone One, !- Name", + " Flow/Person, !- Outdoor Air Method", + " 0.0125; !- Outdoor Air Flow per Person {m3/s-person}", + + " ZoneControl:Thermostat,", + " Zone One Thermostat, !- Name", + " Zone One, !- Zone or ZoneList Name", + " Dual Zone Control Type Sched, !- Control Type Schedule Name", + " ThermostatSetpoint:DualSetpoint, !- Control 1 Object Type", + " Zone One DualSPSched; !- Control 1 Name", + + " Schedule:Compact,", + " Dual Zone Control Type Sched, !- Name", + " Control Type, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,4; !- Field 3", + + " ThermostatSetpoint:DualSetpoint,", + " Zone One DualSPSched, !- Name", + " HTGSETP_SCH, !- Heating Setpoint Temperature Schedule Name", + " CLGSETP_SCH; !- Cooling Setpoint Temperature Schedule Name", + + " Schedule:Compact,", + " CLGSETP_SCH, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Weekdays SummerDesignDay, !- Field 2", + " Until: 06:00,26.7, !- Field 3", + " Until: 22:00,24.0, !- Field 5", + " Until: 24:00,26.7, !- Field 7", + " For: Saturday, !- Field 9", + " Until: 06:00,26.7, !- Field 10", + " Until: 18:00,24.0, !- Field 12", + " Until: 24:00,26.7, !- Field 14", + " For WinterDesignDay, !- Field 16", + " Until: 24:00,26.7, !- Field 17", + " For: AllOtherDays, !- Field 19", + " Until: 24:00,26.7; !- Field 20", + + " Schedule:Compact,", + " HTGSETP_SCH, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Weekdays, !- Field 2", + " Until: 06:00,15.6, !- Field 3", + " Until: 22:00,21.0, !- Field 5", + " Until: 24:00,15.6, !- Field 7", + " For SummerDesignDay, !- Field 9", + " Until: 24:00,15.6, !- Field 10", + " For: Saturday, !- Field 12", + " Until: 06:00,15.6, !- Field 13", + " Until: 18:00,21.0, !- Field 15", + " Until: 24:00,15.6, !- Field 17", + " For: WinterDesignDay, !- Field 19", + " Until: 24:00,21.0, !- Field 20", + " For: AllOtherDays, !- Field 22", + " Until: 24:00,15.6; !- Field 23", + + " Sizing:System,", + " CV_1, !- AirLoop Name", + " Sensible, !- Type of Load to Size On", + " AUTOSIZE, !- Design Outdoor Air Flow Rate {m3/s}", + " 0.3, !- Central Heating Maximum System Air Flow Ratio", + " 7.0, !- Preheat Design Temperature {C}", + " 0.008, !- Preheat Design Humidity Ratio {kgWater/kgDryAir}", + " 12.8000, !- Precool Design Temperature {C}", + " 0.008, !- Precool Design Humidity Ratio {kgWater/kgDryAir}", + " 12.8000, !- Central Cooling Design Supply Air Temperature {C}", + " 16.7000, !- Central Heating Design Supply Air Temperature {C}", + " NonCoincident, !- Type of Zone Sum to Use", + " No, !- 100% Outdoor Air in Cooling", + " No, !- 100% Outdoor Air in Heating", + " 0.0085, !- Central Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " 0.0080, !- Central Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " DesignDay, !- Cooling Design Air Flow Method", + " , !- Cooling Design Air Flow Rate {m3/s}", + " , !- Supply Air Flow Rate Per Floor Area During Cooling Operation {m3/s-m2}", + " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", + " , !- Design Supply Air Flow Rate Per Unit Cooling Capacity {m3/s-W}", + " DesignDay, !- Heating Design Air Flow Method", + " , !- Heating Design Air Flow Rate {m3/s}", + " , !- Supply Air Flow Rate Per Floor Area During Heating Operation {m3/s-m2}", + " , !- Fraction of Autosized Design Heating Supply Air Flow Rate", + " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", + " , !- Design Supply Air Flow Rate Per Unit Heating Capacity {m3/s-W}", + " , !- System Outdoor Air Method", + " 1.0, !- Zone Maximum Outdoor Air Fraction {dimensionless}", + " CoolingDesignCapacity, !- Cooling Design Capacity Method", + " autosize, !- Cooling Design Capacity {W}", + " , !- Cooling Design Capacity Per Floor Area {W/m2}", + " , !- Fraction of Autosized Cooling Design Capacity", + " HeatingDesignCapacity, !- Heating Design Capacity Method", + " autosize, !- Heating Design Capacity {W}", + " , !- Heating Design Capacity Per Floor Area {W/m2}", + " , !- Fraction of Autosized Heating Design Capacity", + " ONOFF; !- Central Cooling Capacity Control Method", + + " ZoneHVAC:EquipmentConnections,", + " Zone One, !- Zone Name", + " Zone One Equipment, !- Zone Conditioning Equipment List Name", + " Zone One Inlet Nodes, !- Zone Air Inlet Node or NodeList Name", + " , !- Zone Air Exhaust Node or NodeList Name", + " Zone One Air Node, !- Zone Air Node Name", + " Zone One Return Air Node Name; !- Zone Return Air Node Name", + + " ZoneHVAC:EquipmentList,", + " Zone One Equipment, !- Name", + " SequentialLoad, !- Load Distribution Scheme", + " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", + " Zone One 4pipe Beam, !- Zone Equipment 1 Name", + " 1, !- Zone Equipment 1 Cooling Sequence", + " 1; !- Zone Equipment 1 Heating or No-Load Sequence", + + " ZoneHVAC:AirDistributionUnit,", + " Zone One 4pipe Beam, !- Name", + " Zone One 4pipe Beam Outlet Node Name, !- Air Distribution Unit Outlet Node Name", + " AirTerminal:SingleDuct:ConstantVolume:FourPipeBeam, !- Air Terminal Object Type", + " Zone One 4pipe Beam; !- Air Terminal Name", + + " NodeList,", + " Zone One Inlet Nodes, !- Name", + " Zone One 4pipe Beam Outlet Node Name; !- Node 1 Name", + + " AirLoopHVAC:ZoneSplitter,", + " CV_1 Supply Air Splitter, !- Name", + " CV_1 Zone Equipment Inlet Node, !- Inlet Node Name", + " Zone One 4pipe Beam Inlet Node Name; !- Outlet 1 Node Name", + + " AirLoopHVAC:ReturnPath,", + " CV_1 Return Air Path, !- Name", + " CV_1 Zone Equipment Outlet Node, !- Return Air Path Outlet Node Name", + " AirLoopHVAC:ZoneMixer, !- Component 2 Object Type", + " CV_1 Return Air Mixer; !- Component 2 Name", + + " AirLoopHVAC:ZoneMixer,", + " CV_1 Return Air Mixer, !- Name", + " CV_1 Zone Equipment Outlet Node, !- Outlet Node Name", + " Zone One Return Air Node Name; !- Inlet 1 Node Name", + + " Fan:VariableVolume,", + " CV_1_Fan, !- Name", + " always_on, !- Availability Schedule Name", + " 0.6045, !- Fan Total Efficiency", + " 1017.592, !- Pressure Rise {Pa}", + " AUTOSIZE, !- Maximum Flow Rate {m3/s}", + " FixedFlowRate, !- Fan Power Minimum Flow Rate Input Method", + " , !- Fan Power Minimum Flow Fraction", + " 0.0000, !- Fan Power Minimum Air Flow Rate {m3/s}", + " 0.93, !- Motor Efficiency", + " 1.0, !- Motor In Airstream Fraction", + " 0.0407598940, !- Fan Power Coefficient 1", + " 0.08804497, !- Fan Power Coefficient 2", + " -0.072926120, !- Fan Power Coefficient 3", + " 0.9437398230, !- Fan Power Coefficient 4", + " 0, !- Fan Power Coefficient 5", + " CV_1_HeatC-CV_1_FanNode, !- Air Inlet Node Name", + " CV_1 Supply Equipment Outlet Node, !- Air Outlet Node Name", + " Fan Energy; !- End-Use Subcategory", + + " Coil:Heating:Water,", + " CV_1_HeatC, !- Name", + " ALWAYS_ON, !- Availability Schedule Name", + " AUTOSIZE, !- U-Factor Times Area Value {W/K}", + " AUTOSIZE, !- Maximum Water Flow Rate {m3/s}", + " CV_1_HeatCDemand Inlet Node, !- Water Inlet Node Name", + " CV_1_HeatCDemand Outlet Node, !- Water Outlet Node Name", + " CV_1_CoolC-CV_1_HeatCNode, !- Air Inlet Node Name", + " CV_1_HeatC-CV_1_FanNode, !- Air Outlet Node Name", + " UFactorTimesAreaAndDesignWaterFlowRate, !- Performance Input Method", + " AUTOSIZE, !- Rated Capacity {W}", + " 82.2, !- Rated Inlet Water Temperature {C}", + " 16.6, !- Rated Inlet Air Temperature {C}", + " 71.1, !- Rated Outlet Water Temperature {C}", + " 32.2, !- Rated Outlet Air Temperature {C}", + " ; !- Rated Ratio for Air and Water Convection", + + " Coil:Cooling:Water,", + " CV_1_CoolC, !- Name", + " ALWAYS_ON, !- Availability Schedule Name", + " AUTOSIZE, !- Design Water Flow Rate {m3/s}", + " AUTOSIZE, !- Design Air Flow Rate {m3/s}", + " AUTOSIZE, !- Design Inlet Water Temperature {C}", + " AUTOSIZE, !- Design Inlet Air Temperature {C}", + " AUTOSIZE, !- Design Outlet Air Temperature {C}", + " AUTOSIZE, !- Design Inlet Air Humidity Ratio {kgWater/kgDryAir}", + " AUTOSIZE, !- Design Outlet Air Humidity Ratio {kgWater/kgDryAir}", + " CV_1_CoolCDemand Inlet Node, !- Water Inlet Node Name", + " CV_1_CoolCDemand Outlet Node, !- Water Outlet Node Name", + " CV_1_OA-CV_1_CoolCNode,!- Air Inlet Node Name", + " CV_1_CoolC-CV_1_HeatCNode, !- Air Outlet Node Name", + " SimpleAnalysis, !- Type of Analysis", + " CrossFlow; !- Heat Exchanger Configuration", + + " Controller:OutdoorAir,", + " CV_1_OA_Controller, !- Name", + " CV_1_OARelief Node, !- Relief Air Outlet Node Name", + " CV_1 Supply Equipment Inlet Node, !- Return Air Node Name", + " CV_1_OA-CV_1_CoolCNode,!- Mixed Air Node Name", + " CV_1_OAInlet Node, !- Actuator Node Name", + " AUTOSIZE, !- Minimum Outdoor Air Flow Rate {m3/s}", + " AUTOSIZE, !- Maximum Outdoor Air Flow Rate {m3/s}", + " DifferentialDryBulb, !- Economizer Control Type", + " ModulateFlow, !- Economizer Control Action Type", + " 28.0, !- Economizer Maximum Limit Dry-Bulb Temperature {C}", + " 64000.0, !- Economizer Maximum Limit Enthalpy {J/kg}", + " , !- Economizer Maximum Limit Dewpoint Temperature {C}", + " , !- Electronic Enthalpy Limit Curve Name", + " -100.0, !- Economizer Minimum Limit Dry-Bulb Temperature {C}", + " NoLockout, !- Lockout Type", + " FixedMinimum, !- Minimum Limit Type", + " MinOA_MotorizedDamper_Sched; !- Minimum Outdoor Air Schedule Name", + + " Schedule:Compact,", + " MinOA_MotorizedDamper_Sched, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Weekdays SummerDesignDay, !- Field 2", + " Until: 07:00,0.0, !- Field 3", + " Until: 22:00,1.0, !- Field 5", + " Until: 24:00,0.0, !- Field 7", + " For: Saturday WinterDesignDay, !- Field 9", + " Until: 07:00,0.0, !- Field 10", + " Until: 18:00,1.0, !- Field 12", + " Until: 24:00,0.0, !- Field 14", + " For: AllOtherDays, !- Field 16", + " Until: 24:00,0.0; !- Field 17", + + " SetpointManager:Scheduled,", + " CV_1 SAT setpoint, !- Name", + " Temperature, !- Control Variable", + " Seasonal-Reset-Supply-Air-Temp-Sch, !- Schedule Name", + " CV_1 Supply Equipment Outlet Node; !- Setpoint Node or NodeList Name", + + " Schedule:Compact,", + " Seasonal-Reset-Supply-Air-Temp-Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,12.8; !- Field 3", + + " AirLoopHVAC,", + " CV_1, !- Name", + " CV_1_Controllers, !- Controller List Name", + " CV_1 Availability Manager List, !- Availability Manager List Name", + " AUTOSIZE, !- Design Supply Air Flow Rate {m3/s}", + " CV_1 Air Loop Branches, !- Branch List Name", + " , !- Connector List Name", + " CV_1 Supply Equipment Inlet Node, !- Supply Side Inlet Node Name", + " CV_1 Zone Equipment Outlet Node, !- Demand Side Outlet Node Name", + " CV_1 Zone Equipment Inlet Node, !- Demand Side Inlet Node Names", + " CV_1 Supply Equipment Outlet Node; !- Supply Side Outlet Node Names", + + " AvailabilityManagerAssignmentList,", + " CV_1 Availability Manager List, !- Name", + " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", + " CV_1 Avail; !- Availability Manager 1 Name", + + " AvailabilityManager:Scheduled,", + " CV_1 Avail, !- Name", + " always_on; !- Schedule Name", + + " NodeList,", + " CV_1_OANode List, !- Name", + " CV_1_OAInlet Node; !- Node 1 Name", + + " BranchList,", + " CV_1 Air Loop Branches, !- Name", + " CV_1 Air Loop Main Branch; !- Branch 1 Name", + + " Branch,", + " CV_1 Air Loop Main Branch, !- Name", + " , !- Pressure Drop Curve Name", + " AirLoopHVAC:OutdoorAirSystem, !- Component 1 Object Type", + " CV_1_OA, !- Component 1 Name", + " CV_1 Supply Equipment Inlet Node, !- Component 1 Inlet Node Name", + " CV_1_OA-CV_1_CoolCNode,!- Component 1 Outlet Node Name", + " Coil:Cooling:Water, !- Component 2 Object Type", + " CV_1_CoolC, !- Component 2 Name", + " CV_1_OA-CV_1_CoolCNode,!- Component 2 Inlet Node Name", + " CV_1_CoolC-CV_1_HeatCNode, !- Component 2 Outlet Node Name", + " Coil:Heating:Water, !- Component 3 Object Type", + " CV_1_HeatC, !- Component 3 Name", + " CV_1_CoolC-CV_1_HeatCNode, !- Component 3 Inlet Node Name", + " CV_1_HeatC-CV_1_FanNode, !- Component 3 Outlet Node Name", + " Fan:VariableVolume, !- Component 4 Object Type", + " CV_1_Fan, !- Component 4 Name", + " CV_1_HeatC-CV_1_FanNode, !- Component 4 Inlet Node Name", + " CV_1 Supply Equipment Outlet Node; !- Component 4 Outlet Node Name", + + " AirLoopHVAC:ControllerList,", + " CV_1_Controllers, !- Name", + " Controller:WaterCoil, !- Controller 1 Object Type", + " CV_1_CoolC_Controller, !- Controller 1 Name", + " Controller:WaterCoil, !- Controller 2 Object Type", + " CV_1_HeatC_Controller; !- Controller 2 Name", + + " AirLoopHVAC:ControllerList,", + " CV_1_OA_Controllers, !- Name", + " Controller:OutdoorAir, !- Controller 1 Object Type", + " CV_1_OA_Controller; !- Controller 1 Name", + + " AirLoopHVAC:OutdoorAirSystem:EquipmentList,", + " CV_1_OA_Equipment, !- Name", + " OutdoorAir:Mixer, !- Component 1 Object Type", + " CV_1_OAMixing Box; !- Component 1 Name", + + " AirLoopHVAC:OutdoorAirSystem,", + " CV_1_OA, !- Name", + " CV_1_OA_Controllers, !- Controller List Name", + " CV_1_OA_Equipment, !- Outdoor Air Equipment List Name", + " CV_1 Availability Manager List; !- Availability Manager List Name", + + " OutdoorAir:NodeList,", + " CV_1_OANode List; !- Node or NodeList Name 1", + + " OutdoorAir:Mixer,", + " CV_1_OAMixing Box, !- Name", + " CV_1_OA-CV_1_CoolCNode,!- Mixed Air Node Name", + " CV_1_OAInlet Node, !- Outdoor Air Stream Node Name", + " CV_1_OARelief Node, !- Relief Air Stream Node Name", + " CV_1 Supply Equipment Inlet Node; !- Return Air Stream Node Name", + + " SetpointManager:MixedAir,", + " CV_1_CoolC SAT Manager, !- Name", + " Temperature, !- Control Variable", + " CV_1 Supply Equipment Outlet Node, !- Reference Setpoint Node Name", + " CV_1_HeatC-CV_1_FanNode, !- Fan Inlet Node Name", + " CV_1 Supply Equipment Outlet Node, !- Fan Outlet Node Name", + " CV_1_CoolC-CV_1_HeatCNode; !- Setpoint Node or NodeList Name", + + " SetpointManager:MixedAir,", + " CV_1_HeatC SAT Manager, !- Name", + " Temperature, !- Control Variable", + " CV_1 Supply Equipment Outlet Node, !- Reference Setpoint Node Name", + " CV_1_HeatC-CV_1_FanNode, !- Fan Inlet Node Name", + " CV_1 Supply Equipment Outlet Node, !- Fan Outlet Node Name", + " CV_1_HeatC-CV_1_FanNode; !- Setpoint Node or NodeList Name", + + " SetpointManager:MixedAir,", + " CV_1_OAMixed Air Temp Manager, !- Name", + " Temperature, !- Control Variable", + " CV_1 Supply Equipment Outlet Node, !- Reference Setpoint Node Name", + " CV_1_HeatC-CV_1_FanNode, !- Fan Inlet Node Name", + " CV_1 Supply Equipment Outlet Node, !- Fan Outlet Node Name", + " CV_1_OA-CV_1_CoolCNode;!- Setpoint Node or NodeList Name", + + " AirLoopHVAC:SupplyPath,", + " CV_1, !- Name", + " CV_1 Zone Equipment Inlet Node, !- Supply Air Path Inlet Node Name", + " AirLoopHVAC:ZoneSplitter,!- Component 1 Object Type", + " CV_1 Supply Air Splitter; !- Component 1 Name", + + " Controller:WaterCoil,", + " CV_1_CoolC_Controller, !- Name", + " Temperature, !- Control Variable", + " Reverse, !- Action", + " Flow, !- Actuator Variable", + " CV_1_CoolC-CV_1_HeatCNode, !- Sensor Node Name", + " CV_1_CoolCDemand Inlet Node, !- Actuator Node Name", + " , !- Controller Convergence Tolerance {deltaC}", + " AUTOSIZE, !- Maximum Actuated Flow {m3/s}", + " 0.0; !- Minimum Actuated Flow {m3/s}", + + " Controller:WaterCoil,", + " CV_1_HeatC_Controller, !- Name", + " Temperature, !- Control Variable", + " Normal, !- Action", + " Flow, !- Actuator Variable", + " CV_1_HeatC-CV_1_FanNode, !- Sensor Node Name", + " CV_1_HeatCDemand Inlet Node, !- Actuator Node Name", + " 0.0001, !- Controller Convergence Tolerance {deltaC}", + " AUTOSIZE, !- Maximum Actuated Flow {m3/s}", + " 0.0; !- Minimum Actuated Flow {m3/s}", + + " Sizing:Plant,", + " Chilled Water Loop, !- Plant or Condenser Loop Name", + " Cooling, !- Loop Type", + " 6.67, !- Design Loop Exit Temperature {C}", + " 6.67, !- Loop Design Temperature Difference {deltaC}", + " Coincident, !- Sizing Option", + " 1, !- Zone Timesteps in Averaging Window", + " None; !- Coincident Sizing Factor Mode", + + " ConnectorList,", + " CoolSys1 Demand Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " CoolSys1 Demand Splitter,!- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " CoolSys1 Demand Mixer; !- Connector 2 Name", + + " BranchList,", + " CoolSys1 Demand Branches,!- Name", + " CoolSys1 Demand Inlet Branch, !- Branch 1 Name", + " CoolSys1 Demand Load Branch 1, !- Branch 2 Name", + " CoolSys1 Demand Load Branch 2, !- Branch 3 Name", + " CoolSys1 Demand Bypass Branch, !- Branch 6 Name", + " CoolSys1 Demand Outlet Branch; !- Branch 7 Name", + + " Connector:Splitter,", + " CoolSys1 Demand Splitter,!- Name", + " CoolSys1 Demand Inlet Branch, !- Inlet Branch Name", + " CoolSys1 Demand Load Branch 1, !- Outlet Branch 1 Name", + " CoolSys1 Demand Load Branch 2, !- Outlet Branch 2 Name", + " CoolSys1 Demand Bypass Branch; !- Branch 6 Name", + + " Connector:Mixer,", + " CoolSys1 Demand Mixer, !- Name", + " CoolSys1 Demand Outlet Branch, !- Outlet Branch Name", + " CoolSys1 Demand Load Branch 1, !- Inlet Branch 1 Name", + " CoolSys1 Demand Load Branch 2, !- Inlet Branch 2 Name", + " CoolSys1 Demand Bypass Branch; !- Branch 6 Name", + + " Branch,", + " CoolSys1 Demand Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " CoolSys1 Demand Inlet Pipe, !- Component 1 Name", + " CoolSys1 Demand Inlet Node, !- Component 1 Inlet Node Name", + " CoolSys1 Demand Inlet Pipe-CoolSys1 Demand Mixer; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " CoolSys1 Demand Inlet Pipe, !- Name", + " CoolSys1 Demand Inlet Node, !- Inlet Node Name", + " CoolSys1 Demand Inlet Pipe-CoolSys1 Demand Mixer; !- Outlet Node Name", + + " Pipe:Adiabatic,", + " CoolSys1 Demand Outlet Pipe, !- Name", + " CoolSys1 Demand Mixer-CoolSys1 Demand Outlet Pipe, !- Inlet Node Name", + " CoolSys1 Demand Outlet Node; !- Outlet Node Name", + + " Pipe:Adiabatic,", + " CoolSys1 Demand Bypass Pipe, !- Name", + " CoolSys1 Demand Bypass Pipe Inlet Node, !- Inlet Node Name", + " CoolSys1 Demand Bypass Pipe Outlet Node; !- Outlet Node Name", + + " Branch,", + " CoolSys1 Demand Load Branch 1, !- Name", + " , !- Pressure Drop Curve Name", + " Coil:Cooling:Water, !- Component 1 Object Type", + " CV_1_CoolC, !- Component 1 Name", + " CV_1_CoolCDemand Inlet Node, !- Component 1 Inlet Node Name", + " CV_1_CoolCDemand Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " CoolSys1 Demand Load Branch 2, !- Name", + " , !- Pressure Drop Curve Name", + " AirTerminal:SingleDuct:ConstantVolume:FourPipeBeam, !- Component 1 Object Type", + " Zone One 4pipe Beam, !- Component 1 Name", + " Zone One 4pipe Beam CW Inlet Node, !- Component 1 Inlet Node Name", + " Zone One 4pipe Beam CW Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " CoolSys1 Demand Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " CoolSys1 Demand Outlet Pipe, !- Component 1 Name", + " CoolSys1 Demand Mixer-CoolSys1 Demand Outlet Pipe, !- Component 1 Inlet Node Name", + " CoolSys1 Demand Outlet Node; !- Component 1 Outlet Node Name", + + " PlantLoop,", + " Chilled Water Loop, !- Name", + " WATER, !- Fluid Type", + " , !- User Defined Fluid Type", + " SOURCE Loop Operation, !- Plant Equipment Operation Scheme Name", + " SOURCE Supply Outlet Node, !- Loop Temperature Setpoint Node Name", + " 100, !- Maximum Loop Temperature {C}", + " 3, !- Minimum Loop Temperature {C", + " 0.003, !- Maximum Loop Flow Rate {m3/s}", + " 0, !- Minimum Loop Flow Rate {m3/s}", + " autocalculate, !- Plant Loop Volume {m3}", + " SOURCE Supply Inlet Node,!- Plant Side Inlet Node Name", + " SOURCE Supply Outlet Node, !- Plant Side Outlet Node Name", + " SOURCE Supply Branches, !- Plant Side Branch List Name", + " SOURCE Supply Connectors,!- Plant Side Connector List Name", + " CoolSys1 Demand Inlet Node, !- Demand Side Inlet Node Name", + " CoolSys1 Demand Outlet Node, !- Demand Side Outlet Node Name", + " CoolSys1 Demand Branches, !- Demand Side Branch List Name", + " CoolSys1 Demand Connectors,!- Demand Side Connector List Name", + " OPTIMAL, !- Load Distribution Scheme", + " , !- Availability Manager List Name", + " , !- Plant Loop Demand Calculation Scheme", + " , !- Common Pipe Simulation", + " , !- Pressure Simulation Type", + " 2.0; !- Loop Circulation Time {minutes}", + + " SetpointManager:Scheduled,", + " SOURCE Loop Setpoint Manager, !- Name", + " Temperature, !- Control Variable", + " SOURCE Loop Temp Sch, !- Schedule Name", + " SOURCE Loop Setpoint Node List; !- Setpoint Node or NodeList Name", + + " Schedule:Compact,", + " SOURCE Loop Temp Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " THROUGH: 12/31, !- Field 1", + " FOR: AllDays, !- Field 2", + " UNTIL: 24:00,6.7; !- Field 3", + + " NodeList,", + " SOURCE Loop Setpoint Node List, !- Name", + " SOURCE Supply Outlet Node; !- Node 1 Name", + + " PlantEquipmentOperationSchemes,", + " SOURCE Loop Operation, !- Name", + " PlantEquipmentOperation:CoolingLoad, !- Control Scheme 1 Object Type", + " SOURCE Purchased Only, !- Control Scheme 1 Name", + " Always_On; !- Control Scheme 1 Schedule Name", + + " PlantEquipmentOperation:CoolingLoad,", + " SOURCE Purchased Only, !- Name", + " 0, !- Load Range 1 Lower Limit {W}", + " 10000000, !- Load Range 1 Upper Limit {W}", + " SOURCE Cooling Plant; !- Range 1 Equipment List Name", + + " PlantEquipmentList,", + " SOURCE Cooling Plant, !- Name", + " DistrictCooling, !- Equipment 1 Object Type", + " SOURCE Purchased Cooling;!- Equipment 1 Name", + + " BranchList,", + " SOURCE Supply Branches, !- Name", + " SOURCE Supply Inlet Branch, !- Branch 1 Name", + " SOURCE Cooling Branch, !- Branch 2 Name", + " SOURCE Supply Outlet Branch; !- Branch 3 Name", + + " ConnectorList,", + " SOURCE Supply Connectors,!- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " SOURCE Supply Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " SOURCE Supply Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " SOURCE Supply Splitter, !- Name", + " SOURCE Supply Inlet Branch, !- Inlet Branch Name", + " SOURCE Cooling Branch; !- Outlet Branch 1 Name", + + " Connector:Mixer,", + " SOURCE Supply Mixer, !- Name", + " SOURCE Supply Outlet Branch, !- Outlet Branch Name", + " SOURCE Cooling Branch; !- Inlet Branch 1 Name", + + " Branch,", + " SOURCE Supply Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pump:VariableSpeed, !- Component 1 Object Type", + " SOURCE Pump, !- Component 1 Name", + " SOURCE Supply Inlet Node,!- Component 1 Inlet Node Name", + " SOURCE Supply Pump-Cooling Node; !- Component 1 Outlet Node Name", + + " Pump:VariableSpeed,", + " SOURCE Pump, !- Name", + " SOURCE Supply Inlet Node,!- Inlet Node Name", + " SOURCE Supply Pump-Cooling Node, !- Outlet Node Name", + " 0.005, !- Rated Flow Rate {m3/s}", + " 300000, !- Rated Pump Head {Pa}", + " 2250, !- Rated Power Consumption {W}", + " 0.87, !- Motor Efficiency", + " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", + " 0, !- Coefficient 1 of the Part Load Performance Curve", + " 1, !- Coefficient 2 of the Part Load Performance Curve", + " 0, !- Coefficient 3 of the Part Load Performance Curve", + " 0, !- Coefficient 4 of the Part Load Performance Curve", + " 0, !- Minimum Flow Rate {m3/s}", + " INTERMITTENT; !- Pump Control Type", + + " Branch,", + " SOURCE Cooling Branch, !- Name", + " , !- Pressure Drop Curve Name", + " DistrictCooling, !- Component 1 Object Type", + " SOURCE Purchased Cooling,!- Component 1 Name", + " SOURCE Supply Cooling Inlet Node, !- Component 1 Inlet Node Name", + " SOURCE Supply Cooling Outlet Node; !- Component 1 Outlet Node Name", + + " DistrictCooling,", + " SOURCE Purchased Cooling,!- Name", + " SOURCE Supply Cooling Inlet Node, !- Chilled Water Inlet Node Name", + " SOURCE Supply Cooling Outlet Node, !- Chilled Water Outlet Node Name", + " 1000000; !- Nominal Capacity {W}", + + " Branch,", + " SOURCE Supply Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " SOURCE Supply Outlet Pipe, !- Component 1 Name", + " SOURCE Supply Cooling-Pipe Node, !- Component 1 Inlet Node Name", + " SOURCE Supply Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " SOURCE Supply Outlet Pipe, !- Name", + " SOURCE Supply Cooling-Pipe Node, !- Inlet Node Name", + " SOURCE Supply Outlet Node; !- Outlet Node Name", + + " Branch,", + " CoolSys1 Demand Bypass Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " CoolSys1 Demand Bypass Pipe, !- Component 1 Name", + " CoolSys1 Demand Bypass Pipe Inlet Node, !- Component 1 Inlet Node Name", + " CoolSys1 Demand Bypass Pipe Outlet Node; !- Component 1 Outlet Node Name", + + " Sizing:Plant,", + " HeatSys1 Loop, !- Plant or Condenser Loop Name", + " Heating, !- Loop Type", + " 60.0, !- Design Loop Exit Temperature {C}", + " 11.1, !- Loop Design Temperature Difference {deltaC}", + " Coincident, !- Sizing Option", + " 2, !- Zone Timesteps in Averaging Window", + " None; !- Coincident Sizing Factor Mode ", + + " PlantLoop,", + " HeatSys1 Loop, !- Name", + " WATER, !- Fluid Type", + " , !- User Defined Fluid Type", + " HeatSys1 Loop Operation, !- Plant Equipment Operation Scheme Name", + " HeatSys1 Supply Outlet Node, !- Loop Temperature Setpoint Node Name", + " 100, !- Maximum Loop Temperature {C}", + " 3, !- Minimum Loop Temperature {C}", + " 0.003, !- Maximum Loop Flow Rate {m3/s}", + " 0, !- Minimum Loop Flow Rate {m3/s}", + " autocalculate, !- Plant Loop Volume {m3}", + " HeatSys1 Supply Inlet Node,!- Plant Side Inlet Node Name", + " HeatSys1 Supply Outlet Node, !- Plant Side Outlet Node Name", + " HeatSys1 Supply Branches, !- Plant Side Branch List Name", + " HeatSys1 Supply Connectors,!- Plant Side Connector List Name", + " HeatSys1 Demand Inlet Node,!- Demand Side Inlet Node Name", + " HeatSys1 Demand Outlet Node, !- Demand Side Outlet Node Name", + " HeatSys1 Demand Branches, !- Demand Side Branch List Name", + " HeatSys1 Demand Connectors,!- Demand Side Connector List Name", + " OPTIMAL, !- Load Distribution Scheme", + " , !- Availability Manager List Name", + " , !- Plant Loop Demand Calculation Scheme", + " , !- Common Pipe Simulation", + " , !- Pressure Simulation Type", + " 2.0; !- Loop Circulation Time {minutes}", + + " SetpointManager:Scheduled,", + " HeatSys1 Loop Setpoint Manager, !- Name", + " Temperature, !- Control Variable", + " HeatSys1 Loop Temp Sch, !- Schedule Name", + " HeatSys1 Loop Setpoint Node List; !- Setpoint Node or NodeList Name", + + " Schedule:Compact,", + " HeatSys1 Loop Temp Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,60.0; !- Field 3", + + " NodeList,", + " HeatSys1 Loop Setpoint Node List, !- Name", + " HeatSys1 Supply Outlet Node; !- Node 1 Name", + + " PlantEquipmentOperationSchemes,", + " HeatSys1 Loop Operation, !- Name", + " PlantEquipmentOperation:HeatingLoad, !- Control Scheme 1 Object Type", + " HeatSys1 Purchased Only, !- Control Scheme 1 Name", + " Always_On; !- Control Scheme 1 Schedule Name", + + " PlantEquipmentOperation:HeatingLoad,", + " HeatSys1 Purchased Only, !- Name", + " 0, !- Load Range 1 Lower Limit {W}", + " 10000000, !- Load Range 1 Upper Limit {W}", + " HeatSys1 Heating Plant; !- Range 1 Equipment List Name", + + " PlantEquipmentList,", + " HeatSys1 Heating Plant, !- Name", + " DistrictHeating, !- Equipment 1 Object Type", + " HeatSys1 Purchased Heating;!- Equipment 1 Name", + + " BranchList,", + " HeatSys1 Supply Branches, !- Name", + " HeatSys1 Supply Inlet Branch, !- Branch 1 Name", + " HeatSys1 Heating Branch, !- Branch 2 Name", + " HeatSys1 Supply Outlet Branch; !- Branch 3 Name", + + " ConnectorList,", + " HeatSys1 Supply Connectors,!- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " HeatSys1 Supply Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " HeatSys1 Supply Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " HeatSys1 Supply Splitter, !- Name", + " HeatSys1 Supply Inlet Branch, !- Inlet Branch Name", + " HeatSys1 Heating Branch; !- Outlet Branch 1 Name", + + " Connector:Mixer,", + " HeatSys1 Supply Mixer, !- Name", + " HeatSys1 Supply Outlet Branch, !- Outlet Branch Name", + " HeatSys1 Heating Branch; !- Inlet Branch 1 Name", + + " Branch,", + " HeatSys1 Supply Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pump:VariableSpeed, !- Component 1 Object Type", + " HeatSys1 Pump, !- Component 1 Name", + " HeatSys1 Supply Inlet Node,!- Component 1 Inlet Node Name", + " HeatSys1 Supply Pump-Heating Node; !- Component 1 Outlet Node Name", + + " Pump:VariableSpeed,", + " HeatSys1 Pump, !- Name", + " HeatSys1 Supply Inlet Node,!- Inlet Node Name", + " HeatSys1 Supply Pump-Heating Node, !- Outlet Node Name", + " 0.005, !- Rated Flow Rate {m3/s}", + " 300000, !- Rated Pump Head {Pa}", + " 2250, !- Rated Power Consumption {W}", + " 0.87, !- Motor Efficiency", + " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", + " 0, !- Coefficient 1 of the Part Load Performance Curve", + " 1, !- Coefficient 2 of the Part Load Performance Curve", + " 0, !- Coefficient 3 of the Part Load Performance Curve", + " 0, !- Coefficient 4 of the Part Load Performance Curve", + " 0, !- Minimum Flow Rate {m3/s}", + " INTERMITTENT; !- Pump Control Type", + + " Branch,", + " HeatSys1 Heating Branch, !- Name", + " , !- Pressure Drop Curve Name", + " DistrictHeating, !- Component 1 Object Type", + " HeatSys1 Purchased Heating,!- Component 1 Name", + " HeatSys1 Supply Heating Inlet Node, !- Component 1 Inlet Node Name", + " HeatSys1 Supply Heating Outlet Node; !- Component 1 Outlet Node Name", + + " DistrictHeating,", + " HeatSys1 Purchased Heating,!- Name", + " HeatSys1 Supply Heating Inlet Node, !- Hot Water Inlet Node Name", + " HeatSys1 Supply Heating Outlet Node, !- Hot Water Outlet Node Name", + " 1000000; !- Nominal Capacity {W}", + + " Branch,", + " HeatSys1 Supply Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " HeatSys1 Supply Outlet Pipe, !- Component 1 Name", + " HeatSys1 Supply Heating-Pipe Node, !- Component 1 Inlet Node Name", + " HeatSys1 Supply Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " HeatSys1 Supply Outlet Pipe, !- Name", + " HeatSys1 Supply Heating-Pipe Node, !- Inlet Node Name", + " HeatSys1 Supply Outlet Node; !- Outlet Node Name", + + " Pipe:Adiabatic,", + " HeatSys1 Demand Bypass Pipe, !- Name", + " HeatSys1 Demand Bypass Pipe Inlet Node, !- Inlet Node Name", + " HeatSys1 Demand Bypass Pipe Outlet Node; !- Outlet Node Name", + + " ConnectorList,", + " HeatSys1 Demand Connectors,!- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " HeatSys1 Demand Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " HeatSys1 Demand Mixer; !- Connector 2 Name", + + " Branch,", + " HeatSys1 Demand Bypass Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " HeatSys1 Demand Bypass Pipe, !- Component 1 Name", + " HeatSys1 Demand Bypass Pipe Inlet Node, !- Component 1 Inlet Node Name", + " HeatSys1 Demand Bypass Pipe Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " HeatSys1 Demand Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " HeatSys1 Demand Inlet Pipe,!- Component 1 Name", + " HeatSys1 Demand Inlet Node,!- Component 1 Inlet Node Name", + " HeatSys1 Demand Pipe-Load Profile Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " HeatSys1 Demand Inlet Pipe,!- Name", + " HeatSys1 Demand Inlet Node,!- Inlet Node Name", + " HeatSys1 Demand Pipe-Load Profile Node; !- Outlet Node Name", + + " Branch,", + " HeatSys1 Demand Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " HeatSys1 Demand Outlet Pipe, !- Component 1 Name", + " HeatSys1 Demand Load Profile-Pipe Node, !- Component 1 Inlet Node Name", + " HeatSys1 Demand Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " HeatSys1 Demand Outlet Pipe, !- Name", + " HeatSys1 Demand Load Profile-Pipe Node, !- Inlet Node Name", + " HeatSys1 Demand Outlet Node; !- Outlet Node Name", + + " Connector:Splitter,", + " HeatSys1 Demand Splitter, !- Name", + " HeatSys1 Demand Inlet Branch, !- Inlet Branch Name", + " HeatSys1 Demand Load Branch 1, !- Branch 2 Name", + " HeatSys1 Demand Load Branch 2, !- Branch 3 Name", + " HeatSys1 Demand Bypass Branch; !- Branch 4 Name", + + " Connector:Mixer,", + " HeatSys1 Demand Mixer, !- Name", + " HeatSys1 Demand Outlet Branch, !- Outlet Branch Name", + " HeatSys1 Demand Load Branch 1, !- Branch 2 Name", + " HeatSys1 Demand Load Branch 2, !- Branch 3 Name", + " HeatSys1 Demand Bypass Branch; !- Branch 4 Name", + + " BranchList,", + " HeatSys1 Demand Branches,!- Name", + " HeatSys1 Demand Inlet Branch, !- Branch 1 Name", + " HeatSys1 Demand Load Branch 1, !- Branch 2 Name", + " HeatSys1 Demand Load Branch 2, !- Branch 3 Name", + " HeatSys1 Demand Bypass Branch, !- Branch 4 Name", + " HeatSys1 Demand Outlet Branch; !- Branch 5 Name", + + " Branch,", + " HeatSys1 Demand Load Branch 1, !- Name", + " , !- Pressure Drop Curve Name", + " Coil:Heating:Water, !- Component 1 Object Type", + " CV_1_HeatC, !- Component 1 Name", + " CV_1_HeatCDemand Inlet Node, !- Component 1 Inlet Node Name", + " CV_1_heatCDemand Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " HeatSys1 Demand Load Branch 2, !- Name", + " , !- Pressure Drop Curve Name", + " AirTerminal:SingleDuct:ConstantVolume:FourPipeBeam, !- Component 1 Object Type", + " Zone One 4pipe Beam, !- Component 1 Name", + " Zone One 4pipe Beam HW Inlet Node, !- Component 1 Inlet Node Name", + " Zone One 4pipe Beam HW Outlet Node; !- Component 1 Outlet Node Name", + + " AirTerminal:SingleDuct:ConstantVolume:FourPipeBeam,", + " Zone One 4pipe Beam, !- Name", + " ALWAYS_ON , !- Primary Air Availability Schedule Name", + " ALWAYS_ON , !- Cooling Availability Schedule Name", + " ALWAYS_ON , !- Heating Availability Schedule Name", + " Zone One 4pipe Beam Inlet Node Name , !- Primary Air Inlet Node Name", + " Zone One 4pipe Beam Outlet Node Name , !- Primary Air Outlet Node Name", + " Zone One 4pipe Beam CW Inlet Node , !- Chilled Water Inlet Node Name", + " Zone One 4pipe Beam CW Outlet Node , !- Chilled Water Outlet Node Name", + " Zone One 4pipe Beam HW Inlet Node , !- Hot Water Inlet Node Name", + " Zone One 4pipe Beam HW Outlet Node, !- Hot Water Outlet Node Name", + " AUTOSIZE , !- Design Primary Air Volume Flow Rate", + " AUTOSIZE , !- Design Chilled Water Volume Flow Rate", + " AUTOSIZE , !- Design Hot Water Volume Flow Rate", + " AUTOSIZE , !- Zone Total Beam Length", + " 0.036 , !- Rated Primary Air Flow Rate per Meter", + " 597 , !- Rated Beam Cooling Capacity per Meter", + " 10.0 , !- Rated Cooling Room Air Chilled Water Temperature Difference", + " 5.2E-5 , !- Rated Chilled Water Volume Flow Rate per Meter", + " CapModFuncOfTempDiff, !- Beam Cooling Capacity Temperature Difference Modification Factor Curve or Table Name", + " CoolCapModFuncOfSAFlow, !- Beam Cooling Capacity Air Flow Modification Factor Curve or Table Name", + " CapModFuncOfWaterFlow, !- Beam Cooling Capacity Chilled Water Flow Modification Factor Curve or Table Name", + " 1548 , !- Rated Beam Heating Capacity per Meter", + " 27.8, !- Rated Heating Room Air Hot Water Temperature Difference", + " 5.2E-5, !- Rated Hot Water Volume Flow Rate per Meter", + " CapModFuncOfTempDiff, !- Beam Heating Capacity Temperature Difference Modification Factor Curve or Table Name", + " HeatCapModFuncOfSAFlow, !- Beam Heating Capacity Air Flow Modification Factor Curve or Table Name", + " CapModFuncOfWaterFlow; !- Beam Heating Capacity Hot Water Flow Modification Factor Curve or Table Name", + + " Curve:Linear, ! y = x", + " CapModFuncOfTempDiff, !-Name", + " 0, !_ Coef Const", + " 1, !- Coef x", + " 0, !- min x", + " 1.5, !- max x", + " 0.0 , !- min y", + " 1.5; ! max y", + + " Table:OneIndependentVariable,", + " CoolCapModFuncOfSAFlow, !- Name", + " quadratic,!- Curve Type", + " EvaluateCurveToLimits,!- Interpolation Method", + " 0.714,!- min x", + " 1.2857,!- max x", + " 0.8234,!- min y", + " 1.1256,!- max y", + " dimensionless, !-", + " dimensionless, !- ", + " , !- normalization ref", + " 0.714286, 0.823403,", + " 1.0, 1.0,", + " 1.2857, 1.1256;", + + " Table:OneIndependentVariable,", + " CapModFuncOfWaterFlow, !- Name", + " quadratic,!- Curve ", + " EvaluateCurveToLimits,!- Interpolation Method", + " 0.0,!- min x", + " 1.333333,!- max x", + " 0.0,!- min y", + " 1.04,!- max y", + " dimensionless, !-", + " dimensionless, !- ", + " , !- normalization ref", + " 0.0, 0.0,", + " 0.05, 0.001,", + " 0.33333, 0.71,", + " 0.5, 0.85,", + " 0.666667, 0.92,", + " 0.833333, 0.97,", + " 1.0, 1.0,", + " 1.333333, 1.04;", + + " Table:OneIndependentVariable,", + " HeatCapModFuncOfSAFlow, !- Name", + " quadratic,!- Curve Type", + " EvaluateCurveToLimits,!- Interpolation Method", + " 0.714,!- min x", + " 1.2857,!- max x", + " 0.8554,!- min y", + " 1.0778,!- max y", + " dimensionless, !-", + " dimensionless, !- ", + " , !- normalization ref", + " 0.714286, 0.8554,", + " 1.0, 1.0,", + " 1.2857, 1.0778; ", + }); + + ASSERT_TRUE(process_idf(idf_objects)); + SimulationManager::PostIPProcessing(); + + bool ErrorsFound = false; + + DataGlobals::BeginSimFlag = true; + SimulationManager::GetProjectData(); + + OutputReportPredefined::SetPredefinedTables(); + HeatBalanceManager::SetPreConstructionInputParameters(); // establish array bounds for constructions early + OutputProcessor::TimeValue.allocate(2); + OutputProcessor::SetupTimePointers("Zone", DataGlobals::TimeStepZone); // Set up Time pointer for HB/Zone Simulation + OutputProcessor::SetupTimePointers("HVAC", DataHVACGlobals::TimeStepSys); + PlantManager::CheckIfAnyPlant(); + createFacilityElectricPowerServiceObject(); + BranchInputManager::ManageBranchInput(); // just gets input and returns. + DataGlobals::DoingSizing = true; + SizingManager::ManageSizing(); + DataGlobals::DoingSizing = false; + DataGlobals::KickOffSimulation = true; + + WeatherManager::ResetEnvironmentCounter(); + TestAirPathIntegrity(ErrorsFound); // Needed to initialize return node connections to airloops and inlet nodes + SimulationManager::SetupSimulation(ErrorsFound); + DataGlobals::KickOffSimulation = false; + + DataHVACGlobals::SimZoneEquipmentFlag = true; + DataHVACGlobals::SimNonZoneEquipmentFlag = false; + DataHVACGlobals::SimAirLoopsFlag = true; + DataHVACGlobals::SimPlantLoopsFlag = true; + DataHVACGlobals::SimElecCircuitsFlag = false; + bool FirstHVACIteration = true; + + // PlantManager::InitializeLoops( FirstHVACIteration ); + PlantUtilities::SetAllFlowLocks(DataPlant::FlowUnlocked); + // first run with a sensible cooling load of 5000 W and cold supply air + DataZoneEnergyDemands::ZoneSysEnergyDemand(1).RemainingOutputRequired = -5000.0; + DataZoneEnergyDemands::ZoneSysEnergyDemand(1).RemainingOutputReqToHeatSP = -4000.0; + DataZoneEnergyDemands::ZoneSysEnergyDemand(1).RemainingOutputReqToCoolSP = -5000.0; + + // indexes values has been changed according to new input_processor output + // node indexes may be viewed in NodeID array + DataLoopNode::Node(14).Temp = 14.0; // chilled water inlet node + DataLoopNode::Node(40).HumRat = 0.008; // zone node + DataLoopNode::Node(40).Temp = 24.0; // zone node + DataLoopNode::Node(44).HumRat = 0.008; // primary air inlet node + + DataLoopNode::Node(44).Temp = 12.8; // primary air inlet node + DataLoopNode::Node(38).Temp = 45.0; // hot water inlet node + // DataLoopNode::Node( 44 ).Temp = 12.8; // primary air inlet node + // DataLoopNode::Node( 38 ).Temp = 45.0; // hot water inlet node + + Real64 NonAirSysOutput = 0.0; + DataDefineEquip::AirDistUnit(1).airTerminalPtr->simulate(FirstHVACIteration, NonAirSysOutput); + + EXPECT_NEAR(DataLoopNode::Node(1).MassFlowRate, 0.3521952339035046, 0.00001); + EXPECT_NEAR(DataLoopNode::Node(15).Temp, 19.191523455437512, 0.00001); + EXPECT_NEAR(DataLoopNode::Node(15).MassFlowRate, 0.046199561631265804, 0.00001); + EXPECT_DOUBLE_EQ(DataLoopNode::Node(39).Temp, 45.0); + EXPECT_DOUBLE_EQ(DataLoopNode::Node(39).MassFlowRate, 0.0); + + EXPECT_NEAR(NonAirSysOutput, -1004.0437766383318, 0.0001); + + // next run with a sensible heating load of 5000 W and cold supply air + DataZoneEnergyDemands::ZoneSysEnergyDemand(1).RemainingOutputRequired = 5000.0; + DataZoneEnergyDemands::ZoneSysEnergyDemand(1).RemainingOutputReqToHeatSP = 5000.0; + DataZoneEnergyDemands::ZoneSysEnergyDemand(1).RemainingOutputReqToCoolSP = 6000.0; + + DataLoopNode::Node(40).Temp = 21.0; // zone node + DataDefineEquip::AirDistUnit(1).airTerminalPtr->simulate(FirstHVACIteration, NonAirSysOutput); + + EXPECT_DOUBLE_EQ(DataLoopNode::Node(15).Temp, 14.0); + EXPECT_DOUBLE_EQ(DataLoopNode::Node(15).MassFlowRate, 0.0); + EXPECT_NEAR(DataLoopNode::Node(39).Temp, 35.064466069323743, 0.00001); + EXPECT_NEAR(DataLoopNode::Node(39).MassFlowRate, 0.19320550334974979, 0.00001); + + EXPECT_NEAR(NonAirSysOutput, 8023.9273066417645, 0.0001); + + // next run with cooling load and neutral supply air + DataZoneEnergyDemands::ZoneSysEnergyDemand(1).RemainingOutputRequired = -5000.0; + DataZoneEnergyDemands::ZoneSysEnergyDemand(1).RemainingOutputReqToHeatSP = -4000.0; + DataZoneEnergyDemands::ZoneSysEnergyDemand(1).RemainingOutputReqToCoolSP = -5000.0; + + DataLoopNode::Node(14).Temp = 14.0; // chilled water inlet node + DataLoopNode::Node(40).HumRat = 0.008; // zone node + DataLoopNode::Node(40).Temp = 24.0; // zone node + DataLoopNode::Node(44).HumRat = 0.008; // primary air inlet node + DataLoopNode::Node(44).Temp = 22.0; // primary air inlet node + DataLoopNode::Node(38).Temp = 45.0; // hot water inlet node + + NonAirSysOutput = 0.0; + DataDefineEquip::AirDistUnit(1).airTerminalPtr->simulate(FirstHVACIteration, NonAirSysOutput); + + EXPECT_NEAR(DataLoopNode::Node(15).Temp, 18.027306264618733, 0.00001); + EXPECT_NEAR(DataLoopNode::Node(15).MassFlowRate, 0.25614844309380103, 0.00001); + EXPECT_DOUBLE_EQ(DataLoopNode::Node(39).Temp, 45.0); + EXPECT_DOUBLE_EQ(DataLoopNode::Node(39).MassFlowRate, 0.0); + // EXPECT_NEAR( DataLoopNode::Node( 15 ).Temp, 18.027306264618733, 0.00001 ); + // EXPECT_NEAR( DataLoopNode::Node( 15 ).MassFlowRate, 0.25614844309380103, 0.00001 ); + // EXPECT_DOUBLE_EQ( DataLoopNode::Node( 39 ).Temp, 45.0 ); + // EXPECT_DOUBLE_EQ( DataLoopNode::Node( 39 ).MassFlowRate, 0.0 ); + + EXPECT_NEAR(NonAirSysOutput, -4318.4346465170929, 0.0001); + + // next run with heating load and neutral supply air + DataZoneEnergyDemands::ZoneSysEnergyDemand(1).RemainingOutputRequired = 5000.0; + DataZoneEnergyDemands::ZoneSysEnergyDemand(1).RemainingOutputReqToHeatSP = 5000.0; + DataZoneEnergyDemands::ZoneSysEnergyDemand(1).RemainingOutputReqToCoolSP = 6000.0; + + DataLoopNode::Node(40).Temp = 21.0; // zone node + + NonAirSysOutput = 0.0; + DataDefineEquip::AirDistUnit(1).airTerminalPtr->simulate(FirstHVACIteration, NonAirSysOutput); + + EXPECT_DOUBLE_EQ(DataLoopNode::Node(15).Temp, 14.0); + EXPECT_DOUBLE_EQ(DataLoopNode::Node(15).MassFlowRate, 0.0); + EXPECT_NEAR(DataLoopNode::Node(39).Temp, 33.836239364981424, 0.00001); + EXPECT_NEAR(DataLoopNode::Node(39).MassFlowRate, 0.10040605035467959, 0.00001); + // EXPECT_DOUBLE_EQ( DataLoopNode::Node( 15 ).Temp, 14.0 ); + // EXPECT_DOUBLE_EQ( DataLoopNode::Node( 15 ).MassFlowRate, 0.0 ); + // EXPECT_NEAR( DataLoopNode::Node( 39 ).Temp, 33.836239364981424, 0.00001 ); + // EXPECT_NEAR( DataLoopNode::Node( 39 ).MassFlowRate, 0.10040605035467959, 0.00001 ); + + EXPECT_NEAR(NonAirSysOutput, 4685.4000901131676, 0.0001); +} + +TEST_F(EnergyPlusFixture, Beam_fatalWhenSysSizingOff) +{ + std::string const idf_objects = delimited_string({ + " SimulationControl,", + " YES, !- Do Zone Sizing Calculation", + " NO, !- Do System Sizing Calculation", + " NO, !- Do Plant Sizing Calculation", + " NO, !- Run Simulation for Sizing Periods", + " YES; !- Run Simulation for Weather File Run Periods", + + " Building,", + " Simple One Zone ( Wireframe DXF ), !- Name", + " 0, !- North Axis {deg}", + " Suburbs, !- Terrain", + " 0.04, !- Loads Convergence Tolerance Value", + " 0.004, !- Temperature Convergence Tolerance Value {deltaC}", + " MinimalShadowing, !- Solar Distribution", + " 30, !- Maximum Number of Warmup Days", + " 6; !- Minimum Number of Warmup Days", + + " ScheduleTypeLimits,", + " On/Off, !- Name", + " 0, !- Lower Limit Value", + " 1, !- Upper Limit Value", + " DISCRETE; !- Numeric Type", + + " ScheduleTypeLimits,", + " Any Number; !- Name", + + " ScheduleTypeLimits,", + " Temperature, !- Name", + " -60, !- Lower Limit Value", + " 200, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + " ScheduleTypeLimits,", + " Control Type, !- Name", + " 0, !- Lower Limit Value", + " 4, !- Upper Limit Value", + " DISCRETE; !- Numeric Type", + + " Schedule:Compact,", + " ALWAYS_ON, !- Name", + " On/Off, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1; !- Field 3", + + " Schedule:Compact,", + " ACTIVITY_SCH, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,120; !- Field 3", + + " Schedule:Compact,", + " WORK_EFF_SCH, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,0.0; !- Field 3", + + " Schedule:Compact,", + " AIR_VELO_SCH, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,0.2; !- Field 3", + + " Schedule:Compact,", + " CLOTHING_SCH, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 04/30, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0, !- Field 3", + " Through: 09/30, !- Field 5", + " For: AllDays, !- Field 6", + " Until: 24:00,0.5, !- Field 7", + " Through: 12/31, !- Field 9", + " For: AllDays, !- Field 10", + " Until: 24:00,1.0; !- Field 11", + + " Schedule:Compact,", + " BLDG_OCC_SCH, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: SummerDesignDay, !- Field 2", + " Until: 06:00,0.0, !- Field 3", + " Until: 22:00,1.0, !- Field 5", + " Until: 24:00,0.05, !- Field 7", + " For: Weekdays, !- Field 9", + " Until: 06:00,0.0, !- Field 10", + " Until: 07:00,0.1, !- Field 12", + " Until: 08:00,0.2, !- Field 14", + " Until: 12:00,0.95, !- Field 16", + " Until: 13:00,0.5, !- Field 18", + " Until: 17:00,0.95, !- Field 20", + " Until: 18:00,0.7, !- Field 22", + " Until: 20:00,0.4, !- Field 24", + " Until: 22:00,0.1, !- Field 26", + " Until: 24:00,0.05, !- Field 28", + " For: Saturday, !- Field 30", + " Until: 06:00,0.0, !- Field 31", + " Until: 08:00,0.1, !- Field 33", + " Until: 14:00,0.5, !- Field 35", + " Until: 17:00,0.1, !- Field 37", + " Until: 24:00,0.0, !- Field 39", + " For: AllOtherDays, !- Field 41", + " Until: 24:00,0.0; !- Field 42", + + " Schedule:Compact,", + " BLDG_LIGHT_SCH, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Weekdays, !- Field 2", + " Until: 05:00,0.05, !- Field 3", + " Until: 07:00,0.1, !- Field 5", + " Until: 08:00,0.3, !- Field 7", + " Until: 17:00,0.9, !- Field 9", + " Until: 18:00,0.7, !- Field 11", + " Until: 20:00,0.5, !- Field 13", + " Until: 22:00,0.3, !- Field 15", + " Until: 23:00,0.1, !- Field 17", + " Until: 24:00,0.05, !- Field 19", + " For: Saturday, !- Field 21", + " Until: 06:00,0.05, !- Field 22", + " Until: 08:00,0.1, !- Field 24", + " Until: 14:00,0.5, !- Field 26", + " Until: 17:00,0.15, !- Field 28", + " Until: 24:00,0.05, !- Field 30", + " For: SummerDesignDay, !- Field 32", + " Until: 24:00,1.0, !- Field 33", + " For: WinterDesignDay, !- Field 35", + " Until: 24:00,0.0, !- Field 36", + " For: AllOtherDays, !- Field 38", + " Until: 24:00,0.05; !- Field 39", + + " Schedule:Compact,", + " BLDG_EQUIP_SCH, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Weekdays, !- Field 2", + " Until: 08:00,0.40, !- Field 3", + " Until: 12:00,0.90, !- Field 5", + " Until: 13:00,0.80, !- Field 7", + " Until: 17:00,0.90, !- Field 9", + " Until: 18:00,0.80, !- Field 11", + " Until: 20:00,0.60, !- Field 13", + " Until: 22:00,0.50, !- Field 15", + " Until: 24:00,0.40, !- Field 17", + " For: Saturday, !- Field 19", + " Until: 06:00,0.30, !- Field 20", + " Until: 08:00,0.4, !- Field 22", + " Until: 14:00,0.5, !- Field 24", + " Until: 17:00,0.35, !- Field 26", + " Until: 24:00,0.30, !- Field 28", + " For: SummerDesignDay, !- Field 30", + " Until: 24:00,1.0, !- Field 31", + " For: WinterDesignDay, !- Field 33", + " Until: 24:00,0.0, !- Field 34", + " For: AllOtherDays, !- Field 36", + " Until: 24:00,0.30; !- Field 37", + + " SurfaceConvectionAlgorithm:Inside,TARP;", + + " SurfaceConvectionAlgorithm:Outside,DOE-2;", + + " HeatBalanceAlgorithm,ConductionTransferFunction,200.0000;", + + " ZoneAirHeatBalanceAlgorithm,", + " AnalyticalSolution; !- Algorithm", + + " Sizing:Parameters,", + " 1.33, !- Heating Sizing Factor", + " 1.33, !- Cooling Sizing Factor", + " 6; !- Timesteps in Averaging Window", + + " ConvergenceLimits,", + " 2, !- Minimum System Timestep {minutes}", + " 25; !- Maximum HVAC Iterations", + + " ShadowCalculation,", + " AverageOverDaysInFrequency, !- Calculation Method", + " 7, !- Calculation Frequency", + " 15000; !- Maximum Figures in Shadow Overlap Calculations", + + " Timestep,6;", + " Site:Location,", + " USA IL-CHICAGO-OHARE, !- Name", + " 41.77, !- Latitude {deg}", + " -87.75, !- Longitude {deg}", + " -6.00, !- Time Zone {hr}", + " 190; !- Elevation {m}", + + "! CHICAGO_IL_USA Annual Heating 99.6%, MaxDB=-20.6?C", + + " SizingPeriod:DesignDay,", + " CHICAGO Ann Htg 99.6% Condns DB, !- Name", + " 1, !- Month", + " 21, !- Day of Month", + " WinterDesignDay, !- Day Type", + " -20.6, !- Maximum Dry-Bulb Temperature {C}", + " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " -20.6, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 4.9, !- Wind Speed {m/s}", + " 270, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance ( taub ) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance ( taud ) {dimensionless}", + " 0.00; !- Sky Clearness", + + "! CHICAGO_IL_USA Annual Cooling ( WB=>MDB ) .4%, MDB=31.2?C WB=25.5?C", + + " SizingPeriod:DesignDay,", + " CHICAGO Ann Clg .4% Condns WB=>MDB, !- Name", + " 7, !- Month", + " 21, !- Day of Month", + " SummerDesignDay, !- Day Type", + " 31.2, !- Maximum Dry-Bulb Temperature {C}", + " 10.7, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " 25.5, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 5.3, !- Wind Speed {m/s}", + " 230, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance ( taub ) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance ( taud ) {dimensionless}", + " 1.00; !- Sky Clearness", + + " Material:NoMass,", + " R13LAYER, !- Name", + " Rough, !- Roughness", + " 2.290965, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material:NoMass,", + " R31LAYER, !- Name", + " Rough, !- Roughness", + " 5.456, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " C5 - 4 IN HW CONCRETE, !- Name", + " MediumRough, !- Roughness", + " 0.1014984, !- Thickness {m}", + " 1.729577, !- Conductivity {W/m-K}", + " 2242.585, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + + " Construction,", + " R13WALL, !- Name", + " R13LAYER; !- Outside Layer", + + " Construction,", + " FLOOR, !- Name", + " C5 - 4 IN HW CONCRETE; !- Outside Layer", + + " Construction,", + " ROOF31, !- Name", + " R31LAYER; !- Outside Layer", + + " Zone,", + " ZONE ONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " People,", + " ZONE ONE People, !- Name", + " ZONE ONE, !- Zone or ZoneList Name", + " BLDG_OCC_SCH, !- Number of People Schedule Name", + " Area/Person, !- Number of People Calculation Method", + " , !- Number of People", + " , !- People per Zone Floor Area {person/m2}", + " 18.58, !- Zone Floor Area per Person {m2/person}", + " 0.3000, !- Fraction Radiant", + " AUTOCALCULATE, !- Sensible Heat Fraction", + " ACTIVITY_SCH, !- Activity Level Schedule Name", + " , !- Carbon Dioxide Generation Rate {m3/s-W}", + " No, !- Enable ASHRAE 55 Comfort Warnings", + " ZoneAveraged, !- Mean Radiant Temperature Calculation Type", + " , !- Surface Name/Angle Factor List Name", + " WORK_EFF_SCH, !- Work Efficiency Schedule Name", + " ClothingInsulationSchedule, !- Clothing Insulation Calculation Method", + " , !- Clothing Insulation Calculation Method Schedule Name", + " CLOTHING_SCH, !- Clothing Insulation Schedule Name", + " AIR_VELO_SCH, !- Air Velocity Schedule Name", + " FANGER; !- Thermal Comfort Model 1 Type", + + " Lights,", + " ZONE ONE Lights, !- Name", + " ZONE ONE, !- Zone or ZoneList Name", + " BLDG_LIGHT_SCH, !- Schedule Name", + " Watts/Area, !- Design Level Calculation Method", + " , !- Lighting Level {W}", + " 10.76, !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.0000, !- Return Air Fraction", + " 0.7000, !- Fraction Radiant", + " 0.2000, !- Fraction Visible", + " 1.0000, !- Fraction Replaceable", + " General, !- End-Use Subcategory", + " No; !- Return Air Fraction Calculated from Plenum Temperature", + + " ElectricEquipment,", + " ZONE ONE Equip, !- Name", + " ZONE ONE, !- Zone or ZoneList Name", + " BLDG_EQUIP_SCH, !- Schedule Name", + " Watts/Area, !- Design Level Calculation Method", + " , !- Design Level {W}", + " 10.76, !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.0000, !- Fraction Latent", + " 0.5000, !- Fraction Radiant", + " 0.0000, !- Fraction Lost", + " General; !- End-Use Subcategory", + + " ScheduleTypeLimits,", + " Fraction, !- Name", + " 0.0, !- Lower Limit Value", + " 1.0, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + " GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " CounterClockWise, !- Vertex Entry Direction", + " World; !- Coordinate System", + + " BuildingSurface:Detailed,", + " Zn001:Wall001, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " ZONE ONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 15.24000,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,0,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall002, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " ZONE ONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000,0,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 15.24000,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 15.24000,15.24000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall003, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " ZONE ONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 15.24000,15.24000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,15.24000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall004, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " ZONE ONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,15.24000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,0,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Flr001, !- Name", + " Floor, !- Surface Type", + " FLOOR, !- Construction Name", + " ZONE ONE, !- Zone Name", + " Adiabatic, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000,0.000000,0.0, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000,0.000000,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 0.000000,15.24000,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,15.24000,0.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Roof001, !- Name", + " Roof, !- Surface Type", + " ROOF31, !- Construction Name", + " ZONE ONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.000000,15.24000,4.572, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000,0.000000,4.572, !- X,Y,Z ==> Vertex 2 {m}", + " 15.24000,0.000000,4.572, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,15.24000,4.572; !- X,Y,Z ==> Vertex 4 {m}", + + " Sizing:Zone,", + " Zone One, !- Zone or ZoneList Name", + " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", + " 12.8000, !- Zone Cooling Design Supply Air Temperature {C}", + " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", + " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", + " 50.0000, !- Zone Heating Design Supply Air Temperature {C}", + " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", + " 0.0085, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " 0.0080, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " SZ DSOA Zone One, !- Design Specification Outdoor Air Object Name", + " , !- Zone Heating Sizing Factor", + " , !- Zone Cooling Sizing Factor", + " DesignDay, !- Cooling Design Air Flow Method", + " , !- Cooling Design Air Flow Rate {m3/s}", + " , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", + " , !- Cooling Minimum Air Flow {m3/s}", + " , !- Cooling Minimum Air Flow Fraction", + " DesignDay, !- Heating Design Air Flow Method", + " , !- Heating Design Air Flow Rate {m3/s}", + " , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", + " , !- Heating Maximum Air Flow {m3/s}", + " ; !- Heating Maximum Air Flow Fraction", + + " DesignSpecification:OutdoorAir,", + " SZ DSOA Zone One, !- Name", + " Flow/Person, !- Outdoor Air Method", + " 0.0125; !- Outdoor Air Flow per Person {m3/s-person}", + + " ZoneControl:Thermostat,", + " Zone One Thermostat, !- Name", + " Zone One, !- Zone or ZoneList Name", + " Dual Zone Control Type Sched, !- Control Type Schedule Name", + " ThermostatSetpoint:DualSetpoint, !- Control 1 Object Type", + " Zone One DualSPSched; !- Control 1 Name", + + " Schedule:Compact,", + " Dual Zone Control Type Sched, !- Name", + " Control Type, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,4; !- Field 3", + + " ThermostatSetpoint:DualSetpoint,", + " Zone One DualSPSched, !- Name", + " HTGSETP_SCH, !- Heating Setpoint Temperature Schedule Name", + " CLGSETP_SCH; !- Cooling Setpoint Temperature Schedule Name", + + " Schedule:Compact,", + " CLGSETP_SCH, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Weekdays SummerDesignDay, !- Field 2", + " Until: 06:00,26.7, !- Field 3", + " Until: 22:00,24.0, !- Field 5", + " Until: 24:00,26.7, !- Field 7", + " For: Saturday, !- Field 9", + " Until: 06:00,26.7, !- Field 10", + " Until: 18:00,24.0, !- Field 12", + " Until: 24:00,26.7, !- Field 14", + " For WinterDesignDay, !- Field 16", + " Until: 24:00,26.7, !- Field 17", + " For: AllOtherDays, !- Field 19", + " Until: 24:00,26.7; !- Field 20", + + " Schedule:Compact,", + " HTGSETP_SCH, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Weekdays, !- Field 2", + " Until: 06:00,15.6, !- Field 3", + " Until: 22:00,21.0, !- Field 5", + " Until: 24:00,15.6, !- Field 7", + " For SummerDesignDay, !- Field 9", + " Until: 24:00,15.6, !- Field 10", + " For: Saturday, !- Field 12", + " Until: 06:00,15.6, !- Field 13", + " Until: 18:00,21.0, !- Field 15", + " Until: 24:00,15.6, !- Field 17", + " For: WinterDesignDay, !- Field 19", + " Until: 24:00,21.0, !- Field 20", + " For: AllOtherDays, !- Field 22", + " Until: 24:00,15.6; !- Field 23", + + " Sizing:System,", + " CV_1, !- AirLoop Name", + " Sensible, !- Type of Load to Size On", + " AUTOSIZE, !- Design Outdoor Air Flow Rate {m3/s}", + " 0.3, !- Central Heating Maximum System Air Flow Ratio", + " 7.0, !- Preheat Design Temperature {C}", + " 0.008, !- Preheat Design Humidity Ratio {kgWater/kgDryAir}", + " 12.8000, !- Precool Design Temperature {C}", + " 0.008, !- Precool Design Humidity Ratio {kgWater/kgDryAir}", + " 12.8000, !- Central Cooling Design Supply Air Temperature {C}", + " 16.7000, !- Central Heating Design Supply Air Temperature {C}", + " NonCoincident, !- Type of Zone Sum to Use", + " No, !- 100% Outdoor Air in Cooling", + " No, !- 100% Outdoor Air in Heating", + " 0.0085, !- Central Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " 0.0080, !- Central Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " DesignDay, !- Cooling Design Air Flow Method", + " , !- Cooling Design Air Flow Rate {m3/s}", + " , !- Supply Air Flow Rate Per Floor Area During Cooling Operation {m3/s-m2}", + " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", + " , !- Design Supply Air Flow Rate Per Unit Cooling Capacity {m3/s-W}", + " DesignDay, !- Heating Design Air Flow Method", + " , !- Heating Design Air Flow Rate {m3/s}", + " , !- Supply Air Flow Rate Per Floor Area During Heating Operation {m3/s-m2}", + " , !- Fraction of Autosized Design Heating Supply Air Flow Rate", + " , !- Fraction of Autosized Design Cooling Supply Air Flow Rate", + " , !- Design Supply Air Flow Rate Per Unit Heating Capacity {m3/s-W}", + " , !- System Outdoor Air Method", + " 1.0, !- Zone Maximum Outdoor Air Fraction {dimensionless}", + " CoolingDesignCapacity, !- Cooling Design Capacity Method", + " autosize, !- Cooling Design Capacity {W}", + " , !- Cooling Design Capacity Per Floor Area {W/m2}", + " , !- Fraction of Autosized Cooling Design Capacity", + " HeatingDesignCapacity, !- Heating Design Capacity Method", + " autosize, !- Heating Design Capacity {W}", + " , !- Heating Design Capacity Per Floor Area {W/m2}", + " , !- Fraction of Autosized Heating Design Capacity", + " ONOFF; !- Central Cooling Capacity Control Method", + + " ZoneHVAC:EquipmentConnections,", + " Zone One, !- Zone Name", + " Zone One Equipment, !- Zone Conditioning Equipment List Name", + " Zone One Inlet Nodes, !- Zone Air Inlet Node or NodeList Name", + " , !- Zone Air Exhaust Node or NodeList Name", + " Zone One Air Node, !- Zone Air Node Name", + " Zone One Return Air Node Name; !- Zone Return Air Node Name", + + " ZoneHVAC:EquipmentList,", + " Zone One Equipment, !- Name", + " SequentialLoad, !- Load Distribution Scheme", + " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", + " Zone One 4pipe Beam, !- Zone Equipment 1 Name", + " 1, !- Zone Equipment 1 Cooling Sequence", + " 1; !- Zone Equipment 1 Heating or No-Load Sequence", + + " ZoneHVAC:AirDistributionUnit,", + " Zone One 4pipe Beam, !- Name", + " Zone One 4pipe Beam Outlet Node Name, !- Air Distribution Unit Outlet Node Name", + " AirTerminal:SingleDuct:ConstantVolume:FourPipeBeam, !- Air Terminal Object Type", + " Zone One 4pipe Beam; !- Air Terminal Name", + + " NodeList,", + " Zone One Inlet Nodes, !- Name", + " Zone One 4pipe Beam Outlet Node Name; !- Node 1 Name", + + " AirLoopHVAC:ZoneSplitter,", + " CV_1 Supply Air Splitter, !- Name", + " CV_1 Zone Equipment Inlet Node, !- Inlet Node Name", + " Zone One 4pipe Beam Inlet Node Name; !- Outlet 1 Node Name", + + " AirLoopHVAC:ReturnPath,", + " CV_1 Return Air Path, !- Name", + " CV_1 Zone Equipment Outlet Node, !- Return Air Path Outlet Node Name", + " AirLoopHVAC:ZoneMixer, !- Component 2 Object Type", + " CV_1 Return Air Mixer; !- Component 2 Name", + + " AirLoopHVAC:ZoneMixer,", + " CV_1 Return Air Mixer, !- Name", + " CV_1 Zone Equipment Outlet Node, !- Outlet Node Name", + " Zone One Return Air Node Name; !- Inlet 1 Node Name", + + " Fan:VariableVolume,", + " CV_1_Fan, !- Name", + " always_on, !- Availability Schedule Name", + " 0.6045, !- Fan Total Efficiency", + " 1017.592, !- Pressure Rise {Pa}", + " AUTOSIZE, !- Maximum Flow Rate {m3/s}", + " FixedFlowRate, !- Fan Power Minimum Flow Rate Input Method", + " , !- Fan Power Minimum Flow Fraction", + " 0.0000, !- Fan Power Minimum Air Flow Rate {m3/s}", + " 0.93, !- Motor Efficiency", + " 1.0, !- Motor In Airstream Fraction", + " 0.0407598940, !- Fan Power Coefficient 1", + " 0.08804497, !- Fan Power Coefficient 2", + " -0.072926120, !- Fan Power Coefficient 3", + " 0.9437398230, !- Fan Power Coefficient 4", + " 0, !- Fan Power Coefficient 5", + " CV_1_HeatC-CV_1_FanNode, !- Air Inlet Node Name", + " CV_1 Supply Equipment Outlet Node, !- Air Outlet Node Name", + " Fan Energy; !- End-Use Subcategory", + + " Coil:Heating:Water,", + " CV_1_HeatC, !- Name", + " ALWAYS_ON, !- Availability Schedule Name", + " AUTOSIZE, !- U-Factor Times Area Value {W/K}", + " AUTOSIZE, !- Maximum Water Flow Rate {m3/s}", + " CV_1_HeatCDemand Inlet Node, !- Water Inlet Node Name", + " CV_1_HeatCDemand Outlet Node, !- Water Outlet Node Name", + " CV_1_CoolC-CV_1_HeatCNode, !- Air Inlet Node Name", + " CV_1_HeatC-CV_1_FanNode, !- Air Outlet Node Name", + " UFactorTimesAreaAndDesignWaterFlowRate, !- Performance Input Method", + " AUTOSIZE, !- Rated Capacity {W}", + " 82.2, !- Rated Inlet Water Temperature {C}", + " 16.6, !- Rated Inlet Air Temperature {C}", + " 71.1, !- Rated Outlet Water Temperature {C}", + " 32.2, !- Rated Outlet Air Temperature {C}", + " ; !- Rated Ratio for Air and Water Convection", + + " Coil:Cooling:Water,", + " CV_1_CoolC, !- Name", + " ALWAYS_ON, !- Availability Schedule Name", + " AUTOSIZE, !- Design Water Flow Rate {m3/s}", + " AUTOSIZE, !- Design Air Flow Rate {m3/s}", + " AUTOSIZE, !- Design Inlet Water Temperature {C}", + " AUTOSIZE, !- Design Inlet Air Temperature {C}", + " AUTOSIZE, !- Design Outlet Air Temperature {C}", + " AUTOSIZE, !- Design Inlet Air Humidity Ratio {kgWater/kgDryAir}", + " AUTOSIZE, !- Design Outlet Air Humidity Ratio {kgWater/kgDryAir}", + " CV_1_CoolCDemand Inlet Node, !- Water Inlet Node Name", + " CV_1_CoolCDemand Outlet Node, !- Water Outlet Node Name", + " CV_1_OA-CV_1_CoolCNode,!- Air Inlet Node Name", + " CV_1_CoolC-CV_1_HeatCNode, !- Air Outlet Node Name", + " SimpleAnalysis, !- Type of Analysis", + " CrossFlow; !- Heat Exchanger Configuration", + + " Controller:OutdoorAir,", + " CV_1_OA_Controller, !- Name", + " CV_1_OARelief Node, !- Relief Air Outlet Node Name", + " CV_1 Supply Equipment Inlet Node, !- Return Air Node Name", + " CV_1_OA-CV_1_CoolCNode,!- Mixed Air Node Name", + " CV_1_OAInlet Node, !- Actuator Node Name", + " AUTOSIZE, !- Minimum Outdoor Air Flow Rate {m3/s}", + " AUTOSIZE, !- Maximum Outdoor Air Flow Rate {m3/s}", + " DifferentialDryBulb, !- Economizer Control Type", + " ModulateFlow, !- Economizer Control Action Type", + " 28.0, !- Economizer Maximum Limit Dry-Bulb Temperature {C}", + " 64000.0, !- Economizer Maximum Limit Enthalpy {J/kg}", + " , !- Economizer Maximum Limit Dewpoint Temperature {C}", + " , !- Electronic Enthalpy Limit Curve Name", + " -100.0, !- Economizer Minimum Limit Dry-Bulb Temperature {C}", + " NoLockout, !- Lockout Type", + " FixedMinimum, !- Minimum Limit Type", + " MinOA_MotorizedDamper_Sched; !- Minimum Outdoor Air Schedule Name", + + " Schedule:Compact,", + " MinOA_MotorizedDamper_Sched, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Weekdays SummerDesignDay, !- Field 2", + " Until: 07:00,0.0, !- Field 3", + " Until: 22:00,1.0, !- Field 5", + " Until: 24:00,0.0, !- Field 7", + " For: Saturday WinterDesignDay, !- Field 9", + " Until: 07:00,0.0, !- Field 10", + " Until: 18:00,1.0, !- Field 12", + " Until: 24:00,0.0, !- Field 14", + " For: AllOtherDays, !- Field 16", + " Until: 24:00,0.0; !- Field 17", + + " SetpointManager:Scheduled,", + " CV_1 SAT setpoint, !- Name", + " Temperature, !- Control Variable", + " Seasonal-Reset-Supply-Air-Temp-Sch, !- Schedule Name", + " CV_1 Supply Equipment Outlet Node; !- Setpoint Node or NodeList Name", + + " Schedule:Compact,", + " Seasonal-Reset-Supply-Air-Temp-Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,12.8; !- Field 3", + + " AirLoopHVAC,", + " CV_1, !- Name", + " CV_1_Controllers, !- Controller List Name", + " CV_1 Availability Manager List, !- Availability Manager List Name", + " AUTOSIZE, !- Design Supply Air Flow Rate {m3/s}", + " CV_1 Air Loop Branches, !- Branch List Name", + " , !- Connector List Name", + " CV_1 Supply Equipment Inlet Node, !- Supply Side Inlet Node Name", + " CV_1 Zone Equipment Outlet Node, !- Demand Side Outlet Node Name", + " CV_1 Zone Equipment Inlet Node, !- Demand Side Inlet Node Names", + " CV_1 Supply Equipment Outlet Node; !- Supply Side Outlet Node Names", + + " AvailabilityManagerAssignmentList,", + " CV_1 Availability Manager List, !- Name", + " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", + " CV_1 Avail; !- Availability Manager 1 Name", + + " AvailabilityManager:Scheduled,", + " CV_1 Avail, !- Name", + " always_on; !- Schedule Name", + + " NodeList,", + " CV_1_OANode List, !- Name", + " CV_1_OAInlet Node; !- Node 1 Name", + + " BranchList,", + " CV_1 Air Loop Branches, !- Name", + " CV_1 Air Loop Main Branch; !- Branch 1 Name", + + " Branch,", + " CV_1 Air Loop Main Branch, !- Name", + " , !- Pressure Drop Curve Name", + " AirLoopHVAC:OutdoorAirSystem, !- Component 1 Object Type", + " CV_1_OA, !- Component 1 Name", + " CV_1 Supply Equipment Inlet Node, !- Component 1 Inlet Node Name", + " CV_1_OA-CV_1_CoolCNode,!- Component 1 Outlet Node Name", + " Coil:Cooling:Water, !- Component 2 Object Type", + " CV_1_CoolC, !- Component 2 Name", + " CV_1_OA-CV_1_CoolCNode,!- Component 2 Inlet Node Name", + " CV_1_CoolC-CV_1_HeatCNode, !- Component 2 Outlet Node Name", + " Coil:Heating:Water, !- Component 3 Object Type", + " CV_1_HeatC, !- Component 3 Name", + " CV_1_CoolC-CV_1_HeatCNode, !- Component 3 Inlet Node Name", + " CV_1_HeatC-CV_1_FanNode, !- Component 3 Outlet Node Name", + " Fan:VariableVolume, !- Component 4 Object Type", + " CV_1_Fan, !- Component 4 Name", + " CV_1_HeatC-CV_1_FanNode, !- Component 4 Inlet Node Name", + " CV_1 Supply Equipment Outlet Node; !- Component 4 Outlet Node Name", + + " AirLoopHVAC:ControllerList,", + " CV_1_Controllers, !- Name", + " Controller:WaterCoil, !- Controller 1 Object Type", + " CV_1_CoolC_Controller, !- Controller 1 Name", + " Controller:WaterCoil, !- Controller 2 Object Type", + " CV_1_HeatC_Controller; !- Controller 2 Name", + + " AirLoopHVAC:ControllerList,", + " CV_1_OA_Controllers, !- Name", + " Controller:OutdoorAir, !- Controller 1 Object Type", + " CV_1_OA_Controller; !- Controller 1 Name", + + " AirLoopHVAC:OutdoorAirSystem:EquipmentList,", + " CV_1_OA_Equipment, !- Name", + " OutdoorAir:Mixer, !- Component 1 Object Type", + " CV_1_OAMixing Box; !- Component 1 Name", + + " AirLoopHVAC:OutdoorAirSystem,", + " CV_1_OA, !- Name", + " CV_1_OA_Controllers, !- Controller List Name", + " CV_1_OA_Equipment, !- Outdoor Air Equipment List Name", + " CV_1 Availability Manager List; !- Availability Manager List Name", + + " OutdoorAir:NodeList,", + " CV_1_OANode List; !- Node or NodeList Name 1", + + " OutdoorAir:Mixer,", + " CV_1_OAMixing Box, !- Name", + " CV_1_OA-CV_1_CoolCNode,!- Mixed Air Node Name", + " CV_1_OAInlet Node, !- Outdoor Air Stream Node Name", + " CV_1_OARelief Node, !- Relief Air Stream Node Name", + " CV_1 Supply Equipment Inlet Node; !- Return Air Stream Node Name", + + " SetpointManager:MixedAir,", + " CV_1_CoolC SAT Manager, !- Name", + " Temperature, !- Control Variable", + " CV_1 Supply Equipment Outlet Node, !- Reference Setpoint Node Name", + " CV_1_HeatC-CV_1_FanNode, !- Fan Inlet Node Name", + " CV_1 Supply Equipment Outlet Node, !- Fan Outlet Node Name", + " CV_1_CoolC-CV_1_HeatCNode; !- Setpoint Node or NodeList Name", + + " SetpointManager:MixedAir,", + " CV_1_HeatC SAT Manager, !- Name", + " Temperature, !- Control Variable", + " CV_1 Supply Equipment Outlet Node, !- Reference Setpoint Node Name", + " CV_1_HeatC-CV_1_FanNode, !- Fan Inlet Node Name", + " CV_1 Supply Equipment Outlet Node, !- Fan Outlet Node Name", + " CV_1_HeatC-CV_1_FanNode; !- Setpoint Node or NodeList Name", + + " SetpointManager:MixedAir,", + " CV_1_OAMixed Air Temp Manager, !- Name", + " Temperature, !- Control Variable", + " CV_1 Supply Equipment Outlet Node, !- Reference Setpoint Node Name", + " CV_1_HeatC-CV_1_FanNode, !- Fan Inlet Node Name", + " CV_1 Supply Equipment Outlet Node, !- Fan Outlet Node Name", + " CV_1_OA-CV_1_CoolCNode;!- Setpoint Node or NodeList Name", + + " AirLoopHVAC:SupplyPath,", + " CV_1, !- Name", + " CV_1 Zone Equipment Inlet Node, !- Supply Air Path Inlet Node Name", + " AirLoopHVAC:ZoneSplitter,!- Component 1 Object Type", + " CV_1 Supply Air Splitter; !- Component 1 Name", + + " Controller:WaterCoil,", + " CV_1_CoolC_Controller, !- Name", + " Temperature, !- Control Variable", + " Reverse, !- Action", + " Flow, !- Actuator Variable", + " CV_1_CoolC-CV_1_HeatCNode, !- Sensor Node Name", + " CV_1_CoolCDemand Inlet Node, !- Actuator Node Name", + " , !- Controller Convergence Tolerance {deltaC}", + " AUTOSIZE, !- Maximum Actuated Flow {m3/s}", + " 0.0; !- Minimum Actuated Flow {m3/s}", + + " Controller:WaterCoil,", + " CV_1_HeatC_Controller, !- Name", + " Temperature, !- Control Variable", + " Normal, !- Action", + " Flow, !- Actuator Variable", + " CV_1_HeatC-CV_1_FanNode, !- Sensor Node Name", + " CV_1_HeatCDemand Inlet Node, !- Actuator Node Name", + " 0.0001, !- Controller Convergence Tolerance {deltaC}", + " AUTOSIZE, !- Maximum Actuated Flow {m3/s}", + " 0.0; !- Minimum Actuated Flow {m3/s}", + + " Sizing:Plant,", + " Chilled Water Loop, !- Plant or Condenser Loop Name", + " Cooling, !- Loop Type", + " 6.67, !- Design Loop Exit Temperature {C}", + " 6.67, !- Loop Design Temperature Difference {deltaC}", + " Coincident, !- Sizing Option", + " 1, !- Zone Timesteps in Averaging Window", + " None; !- Coincident Sizing Factor Mode", + + " ConnectorList,", + " CoolSys1 Demand Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " CoolSys1 Demand Splitter,!- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " CoolSys1 Demand Mixer; !- Connector 2 Name", + + " BranchList,", + " CoolSys1 Demand Branches,!- Name", + " CoolSys1 Demand Inlet Branch, !- Branch 1 Name", + " CoolSys1 Demand Load Branch 1, !- Branch 2 Name", + " CoolSys1 Demand Load Branch 2, !- Branch 3 Name", + " CoolSys1 Demand Bypass Branch, !- Branch 6 Name", + " CoolSys1 Demand Outlet Branch; !- Branch 7 Name", + + " Connector:Splitter,", + " CoolSys1 Demand Splitter,!- Name", + " CoolSys1 Demand Inlet Branch, !- Inlet Branch Name", + " CoolSys1 Demand Load Branch 1, !- Outlet Branch 1 Name", + " CoolSys1 Demand Load Branch 2, !- Outlet Branch 2 Name", + " CoolSys1 Demand Bypass Branch; !- Branch 6 Name", + + " Connector:Mixer,", + " CoolSys1 Demand Mixer, !- Name", + " CoolSys1 Demand Outlet Branch, !- Outlet Branch Name", + " CoolSys1 Demand Load Branch 1, !- Inlet Branch 1 Name", + " CoolSys1 Demand Load Branch 2, !- Inlet Branch 2 Name", + " CoolSys1 Demand Bypass Branch; !- Branch 6 Name", + + " Branch,", + " CoolSys1 Demand Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " CoolSys1 Demand Inlet Pipe, !- Component 1 Name", + " CoolSys1 Demand Inlet Node, !- Component 1 Inlet Node Name", + " CoolSys1 Demand Inlet Pipe-CoolSys1 Demand Mixer; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " CoolSys1 Demand Inlet Pipe, !- Name", + " CoolSys1 Demand Inlet Node, !- Inlet Node Name", + " CoolSys1 Demand Inlet Pipe-CoolSys1 Demand Mixer; !- Outlet Node Name", + + " Pipe:Adiabatic,", + " CoolSys1 Demand Outlet Pipe, !- Name", + " CoolSys1 Demand Mixer-CoolSys1 Demand Outlet Pipe, !- Inlet Node Name", + " CoolSys1 Demand Outlet Node; !- Outlet Node Name", + + " Pipe:Adiabatic,", + " CoolSys1 Demand Bypass Pipe, !- Name", + " CoolSys1 Demand Bypass Pipe Inlet Node, !- Inlet Node Name", + " CoolSys1 Demand Bypass Pipe Outlet Node; !- Outlet Node Name", + + " Branch,", + " CoolSys1 Demand Load Branch 1, !- Name", + " , !- Pressure Drop Curve Name", + " Coil:Cooling:Water, !- Component 1 Object Type", + " CV_1_CoolC, !- Component 1 Name", + " CV_1_CoolCDemand Inlet Node, !- Component 1 Inlet Node Name", + " CV_1_CoolCDemand Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " CoolSys1 Demand Load Branch 2, !- Name", + " , !- Pressure Drop Curve Name", + " AirTerminal:SingleDuct:ConstantVolume:FourPipeBeam, !- Component 1 Object Type", + " Zone One 4pipe Beam, !- Component 1 Name", + " Zone One 4pipe Beam CW Inlet Node, !- Component 1 Inlet Node Name", + " Zone One 4pipe Beam CW Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " CoolSys1 Demand Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " CoolSys1 Demand Outlet Pipe, !- Component 1 Name", + " CoolSys1 Demand Mixer-CoolSys1 Demand Outlet Pipe, !- Component 1 Inlet Node Name", + " CoolSys1 Demand Outlet Node; !- Component 1 Outlet Node Name", + + " PlantLoop,", + " Chilled Water Loop, !- Name", + " WATER, !- Fluid Type", + " , !- User Defined Fluid Type", + " SOURCE Loop Operation, !- Plant Equipment Operation Scheme Name", + " SOURCE Supply Outlet Node, !- Loop Temperature Setpoint Node Name", + " 100, !- Maximum Loop Temperature {C}", + " 3, !- Minimum Loop Temperature {C", + " 0.003, !- Maximum Loop Flow Rate {m3/s}", + " 0, !- Minimum Loop Flow Rate {m3/s}", + " autocalculate, !- Plant Loop Volume {m3}", + " SOURCE Supply Inlet Node,!- Plant Side Inlet Node Name", + " SOURCE Supply Outlet Node, !- Plant Side Outlet Node Name", + " SOURCE Supply Branches, !- Plant Side Branch List Name", + " SOURCE Supply Connectors,!- Plant Side Connector List Name", + " CoolSys1 Demand Inlet Node, !- Demand Side Inlet Node Name", + " CoolSys1 Demand Outlet Node, !- Demand Side Outlet Node Name", + " CoolSys1 Demand Branches, !- Demand Side Branch List Name", + " CoolSys1 Demand Connectors,!- Demand Side Connector List Name", + " OPTIMAL, !- Load Distribution Scheme", + " , !- Availability Manager List Name", + " , !- Plant Loop Demand Calculation Scheme", + " , !- Common Pipe Simulation", + " , !- Pressure Simulation Type", + " 2.0; !- Loop Circulation Time {minutes}", + + " SetpointManager:Scheduled,", + " SOURCE Loop Setpoint Manager, !- Name", + " Temperature, !- Control Variable", + " SOURCE Loop Temp Sch, !- Schedule Name", + " SOURCE Loop Setpoint Node List; !- Setpoint Node or NodeList Name", + + " Schedule:Compact,", + " SOURCE Loop Temp Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " THROUGH: 12/31, !- Field 1", + " FOR: AllDays, !- Field 2", + " UNTIL: 24:00,6.7; !- Field 3", + + " NodeList,", + " SOURCE Loop Setpoint Node List, !- Name", + " SOURCE Supply Outlet Node; !- Node 1 Name", + + " PlantEquipmentOperationSchemes,", + " SOURCE Loop Operation, !- Name", + " PlantEquipmentOperation:CoolingLoad, !- Control Scheme 1 Object Type", + " SOURCE Purchased Only, !- Control Scheme 1 Name", + " Always_On; !- Control Scheme 1 Schedule Name", + + " PlantEquipmentOperation:CoolingLoad,", + " SOURCE Purchased Only, !- Name", + " 0, !- Load Range 1 Lower Limit {W}", + " 10000000, !- Load Range 1 Upper Limit {W}", + " SOURCE Cooling Plant; !- Range 1 Equipment List Name", + + " PlantEquipmentList,", + " SOURCE Cooling Plant, !- Name", + " DistrictCooling, !- Equipment 1 Object Type", + " SOURCE Purchased Cooling;!- Equipment 1 Name", + + " BranchList,", + " SOURCE Supply Branches, !- Name", + " SOURCE Supply Inlet Branch, !- Branch 1 Name", + " SOURCE Cooling Branch, !- Branch 2 Name", + " SOURCE Supply Outlet Branch; !- Branch 3 Name", + + " ConnectorList,", + " SOURCE Supply Connectors,!- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " SOURCE Supply Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " SOURCE Supply Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " SOURCE Supply Splitter, !- Name", + " SOURCE Supply Inlet Branch, !- Inlet Branch Name", + " SOURCE Cooling Branch; !- Outlet Branch 1 Name", + + " Connector:Mixer,", + " SOURCE Supply Mixer, !- Name", + " SOURCE Supply Outlet Branch, !- Outlet Branch Name", + " SOURCE Cooling Branch; !- Inlet Branch 1 Name", + + " Branch,", + " SOURCE Supply Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pump:VariableSpeed, !- Component 1 Object Type", + " SOURCE Pump, !- Component 1 Name", + " SOURCE Supply Inlet Node,!- Component 1 Inlet Node Name", + " SOURCE Supply Pump-Cooling Node; !- Component 1 Outlet Node Name", + + " Pump:VariableSpeed,", + " SOURCE Pump, !- Name", + " SOURCE Supply Inlet Node,!- Inlet Node Name", + " SOURCE Supply Pump-Cooling Node, !- Outlet Node Name", + " 0.005, !- Rated Flow Rate {m3/s}", + " 300000, !- Rated Pump Head {Pa}", + " 2250, !- Rated Power Consumption {W}", + " 0.87, !- Motor Efficiency", + " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", + " 0, !- Coefficient 1 of the Part Load Performance Curve", + " 1, !- Coefficient 2 of the Part Load Performance Curve", + " 0, !- Coefficient 3 of the Part Load Performance Curve", + " 0, !- Coefficient 4 of the Part Load Performance Curve", + " 0, !- Minimum Flow Rate {m3/s}", + " INTERMITTENT; !- Pump Control Type", + + " Branch,", + " SOURCE Cooling Branch, !- Name", + " , !- Pressure Drop Curve Name", + " DistrictCooling, !- Component 1 Object Type", + " SOURCE Purchased Cooling,!- Component 1 Name", + " SOURCE Supply Cooling Inlet Node, !- Component 1 Inlet Node Name", + " SOURCE Supply Cooling Outlet Node; !- Component 1 Outlet Node Name", + + " DistrictCooling,", + " SOURCE Purchased Cooling,!- Name", + " SOURCE Supply Cooling Inlet Node, !- Chilled Water Inlet Node Name", + " SOURCE Supply Cooling Outlet Node, !- Chilled Water Outlet Node Name", + " 1000000; !- Nominal Capacity {W}", + + " Branch,", + " SOURCE Supply Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " SOURCE Supply Outlet Pipe, !- Component 1 Name", + " SOURCE Supply Cooling-Pipe Node, !- Component 1 Inlet Node Name", + " SOURCE Supply Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " SOURCE Supply Outlet Pipe, !- Name", + " SOURCE Supply Cooling-Pipe Node, !- Inlet Node Name", + " SOURCE Supply Outlet Node; !- Outlet Node Name", + + " Branch,", + " CoolSys1 Demand Bypass Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " CoolSys1 Demand Bypass Pipe, !- Component 1 Name", + " CoolSys1 Demand Bypass Pipe Inlet Node, !- Component 1 Inlet Node Name", + " CoolSys1 Demand Bypass Pipe Outlet Node; !- Component 1 Outlet Node Name", + + " Sizing:Plant,", + " HeatSys1 Loop, !- Plant or Condenser Loop Name", + " Heating, !- Loop Type", + " 60.0, !- Design Loop Exit Temperature {C}", + " 11.1, !- Loop Design Temperature Difference {deltaC}", + " Coincident, !- Sizing Option", + " 2, !- Zone Timesteps in Averaging Window", + " None; !- Coincident Sizing Factor Mode ", + + " PlantLoop,", + " HeatSys1 Loop, !- Name", + " WATER, !- Fluid Type", + " , !- User Defined Fluid Type", + " HeatSys1 Loop Operation, !- Plant Equipment Operation Scheme Name", + " HeatSys1 Supply Outlet Node, !- Loop Temperature Setpoint Node Name", + " 100, !- Maximum Loop Temperature {C}", + " 3, !- Minimum Loop Temperature {C}", + " 0.003, !- Maximum Loop Flow Rate {m3/s}", + " 0, !- Minimum Loop Flow Rate {m3/s}", + " autocalculate, !- Plant Loop Volume {m3}", + " HeatSys1 Supply Inlet Node,!- Plant Side Inlet Node Name", + " HeatSys1 Supply Outlet Node, !- Plant Side Outlet Node Name", + " HeatSys1 Supply Branches, !- Plant Side Branch List Name", + " HeatSys1 Supply Connectors,!- Plant Side Connector List Name", + " HeatSys1 Demand Inlet Node,!- Demand Side Inlet Node Name", + " HeatSys1 Demand Outlet Node, !- Demand Side Outlet Node Name", + " HeatSys1 Demand Branches, !- Demand Side Branch List Name", + " HeatSys1 Demand Connectors,!- Demand Side Connector List Name", + " OPTIMAL, !- Load Distribution Scheme", + " , !- Availability Manager List Name", + " , !- Plant Loop Demand Calculation Scheme", + " , !- Common Pipe Simulation", + " , !- Pressure Simulation Type", + " 2.0; !- Loop Circulation Time {minutes}", + + " SetpointManager:Scheduled,", + " HeatSys1 Loop Setpoint Manager, !- Name", + " Temperature, !- Control Variable", + " HeatSys1 Loop Temp Sch, !- Schedule Name", + " HeatSys1 Loop Setpoint Node List; !- Setpoint Node or NodeList Name", + + " Schedule:Compact,", + " HeatSys1 Loop Temp Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,60.0; !- Field 3", + + " NodeList,", + " HeatSys1 Loop Setpoint Node List, !- Name", + " HeatSys1 Supply Outlet Node; !- Node 1 Name", + + " PlantEquipmentOperationSchemes,", + " HeatSys1 Loop Operation, !- Name", + " PlantEquipmentOperation:HeatingLoad, !- Control Scheme 1 Object Type", + " HeatSys1 Purchased Only, !- Control Scheme 1 Name", + " Always_On; !- Control Scheme 1 Schedule Name", + + " PlantEquipmentOperation:HeatingLoad,", + " HeatSys1 Purchased Only, !- Name", + " 0, !- Load Range 1 Lower Limit {W}", + " 10000000, !- Load Range 1 Upper Limit {W}", + " HeatSys1 Heating Plant; !- Range 1 Equipment List Name", + + " PlantEquipmentList,", + " HeatSys1 Heating Plant, !- Name", + " DistrictHeating, !- Equipment 1 Object Type", + " HeatSys1 Purchased Heating;!- Equipment 1 Name", + + " BranchList,", + " HeatSys1 Supply Branches, !- Name", + " HeatSys1 Supply Inlet Branch, !- Branch 1 Name", + " HeatSys1 Heating Branch, !- Branch 2 Name", + " HeatSys1 Supply Outlet Branch; !- Branch 3 Name", + + " ConnectorList,", + " HeatSys1 Supply Connectors,!- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " HeatSys1 Supply Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " HeatSys1 Supply Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " HeatSys1 Supply Splitter, !- Name", + " HeatSys1 Supply Inlet Branch, !- Inlet Branch Name", + " HeatSys1 Heating Branch; !- Outlet Branch 1 Name", + + " Connector:Mixer,", + " HeatSys1 Supply Mixer, !- Name", + " HeatSys1 Supply Outlet Branch, !- Outlet Branch Name", + " HeatSys1 Heating Branch; !- Inlet Branch 1 Name", + + " Branch,", + " HeatSys1 Supply Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pump:VariableSpeed, !- Component 1 Object Type", + " HeatSys1 Pump, !- Component 1 Name", + " HeatSys1 Supply Inlet Node,!- Component 1 Inlet Node Name", + " HeatSys1 Supply Pump-Heating Node; !- Component 1 Outlet Node Name", + + " Pump:VariableSpeed,", + " HeatSys1 Pump, !- Name", + " HeatSys1 Supply Inlet Node,!- Inlet Node Name", + " HeatSys1 Supply Pump-Heating Node, !- Outlet Node Name", + " 0.005, !- Rated Flow Rate {m3/s}", + " 300000, !- Rated Pump Head {Pa}", + " 2250, !- Rated Power Consumption {W}", + " 0.87, !- Motor Efficiency", + " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", + " 0, !- Coefficient 1 of the Part Load Performance Curve", + " 1, !- Coefficient 2 of the Part Load Performance Curve", + " 0, !- Coefficient 3 of the Part Load Performance Curve", + " 0, !- Coefficient 4 of the Part Load Performance Curve", + " 0, !- Minimum Flow Rate {m3/s}", + " INTERMITTENT; !- Pump Control Type", + + " Branch,", + " HeatSys1 Heating Branch, !- Name", + " , !- Pressure Drop Curve Name", + " DistrictHeating, !- Component 1 Object Type", + " HeatSys1 Purchased Heating,!- Component 1 Name", + " HeatSys1 Supply Heating Inlet Node, !- Component 1 Inlet Node Name", + " HeatSys1 Supply Heating Outlet Node; !- Component 1 Outlet Node Name", + + " DistrictHeating,", + " HeatSys1 Purchased Heating,!- Name", + " HeatSys1 Supply Heating Inlet Node, !- Hot Water Inlet Node Name", + " HeatSys1 Supply Heating Outlet Node, !- Hot Water Outlet Node Name", + " 1000000; !- Nominal Capacity {W}", + + " Branch,", + " HeatSys1 Supply Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " HeatSys1 Supply Outlet Pipe, !- Component 1 Name", + " HeatSys1 Supply Heating-Pipe Node, !- Component 1 Inlet Node Name", + " HeatSys1 Supply Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " HeatSys1 Supply Outlet Pipe, !- Name", + " HeatSys1 Supply Heating-Pipe Node, !- Inlet Node Name", + " HeatSys1 Supply Outlet Node; !- Outlet Node Name", + + " Pipe:Adiabatic,", + " HeatSys1 Demand Bypass Pipe, !- Name", + " HeatSys1 Demand Bypass Pipe Inlet Node, !- Inlet Node Name", + " HeatSys1 Demand Bypass Pipe Outlet Node; !- Outlet Node Name", + + " ConnectorList,", + " HeatSys1 Demand Connectors,!- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " HeatSys1 Demand Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " HeatSys1 Demand Mixer; !- Connector 2 Name", + + " Branch,", + " HeatSys1 Demand Bypass Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " HeatSys1 Demand Bypass Pipe, !- Component 1 Name", + " HeatSys1 Demand Bypass Pipe Inlet Node, !- Component 1 Inlet Node Name", + " HeatSys1 Demand Bypass Pipe Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " HeatSys1 Demand Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " HeatSys1 Demand Inlet Pipe,!- Component 1 Name", + " HeatSys1 Demand Inlet Node,!- Component 1 Inlet Node Name", + " HeatSys1 Demand Pipe-Load Profile Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " HeatSys1 Demand Inlet Pipe,!- Name", + " HeatSys1 Demand Inlet Node,!- Inlet Node Name", + " HeatSys1 Demand Pipe-Load Profile Node; !- Outlet Node Name", + + " Branch,", + " HeatSys1 Demand Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " HeatSys1 Demand Outlet Pipe, !- Component 1 Name", + " HeatSys1 Demand Load Profile-Pipe Node, !- Component 1 Inlet Node Name", + " HeatSys1 Demand Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " HeatSys1 Demand Outlet Pipe, !- Name", + " HeatSys1 Demand Load Profile-Pipe Node, !- Inlet Node Name", + " HeatSys1 Demand Outlet Node; !- Outlet Node Name", + + " Connector:Splitter,", + " HeatSys1 Demand Splitter, !- Name", + " HeatSys1 Demand Inlet Branch, !- Inlet Branch Name", + " HeatSys1 Demand Load Branch 1, !- Branch 2 Name", + " HeatSys1 Demand Load Branch 2, !- Branch 3 Name", + " HeatSys1 Demand Bypass Branch; !- Branch 4 Name", + + " Connector:Mixer,", + " HeatSys1 Demand Mixer, !- Name", + " HeatSys1 Demand Outlet Branch, !- Outlet Branch Name", + " HeatSys1 Demand Load Branch 1, !- Branch 2 Name", + " HeatSys1 Demand Load Branch 2, !- Branch 3 Name", + " HeatSys1 Demand Bypass Branch; !- Branch 4 Name", + + " BranchList,", + " HeatSys1 Demand Branches,!- Name", + " HeatSys1 Demand Inlet Branch, !- Branch 1 Name", + " HeatSys1 Demand Load Branch 1, !- Branch 2 Name", + " HeatSys1 Demand Load Branch 2, !- Branch 3 Name", + " HeatSys1 Demand Bypass Branch, !- Branch 4 Name", + " HeatSys1 Demand Outlet Branch; !- Branch 5 Name", + + " Branch,", + " HeatSys1 Demand Load Branch 1, !- Name", + " , !- Pressure Drop Curve Name", + " Coil:Heating:Water, !- Component 1 Object Type", + " CV_1_HeatC, !- Component 1 Name", + " CV_1_HeatCDemand Inlet Node, !- Component 1 Inlet Node Name", + " CV_1_heatCDemand Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " HeatSys1 Demand Load Branch 2, !- Name", + " , !- Pressure Drop Curve Name", + " AirTerminal:SingleDuct:ConstantVolume:FourPipeBeam, !- Component 1 Object Type", + " Zone One 4pipe Beam, !- Component 1 Name", + " Zone One 4pipe Beam HW Inlet Node, !- Component 1 Inlet Node Name", + " Zone One 4pipe Beam HW Outlet Node; !- Component 1 Outlet Node Name", + + " AirTerminal:SingleDuct:ConstantVolume:FourPipeBeam,", + " Zone One 4pipe Beam, !- Name", + " ALWAYS_ON , !- Primary Air Availability Schedule Name", + " ALWAYS_ON , !- Cooling Availability Schedule Name", + " ALWAYS_ON , !- Heating Availability Schedule Name", + " Zone One 4pipe Beam Inlet Node Name , !- Primary Air Inlet Node Name", + " Zone One 4pipe Beam Outlet Node Name , !- Primary Air Outlet Node Name", + " Zone One 4pipe Beam CW Inlet Node , !- Chilled Water Inlet Node Name", + " Zone One 4pipe Beam CW Outlet Node , !- Chilled Water Outlet Node Name", + " Zone One 4pipe Beam HW Inlet Node , !- Hot Water Inlet Node Name", + " Zone One 4pipe Beam HW Outlet Node, !- Hot Water Outlet Node Name", + " AUTOSIZE , !- Design Primary Air Volume Flow Rate", + " AUTOSIZE , !- Design Chilled Water Volume Flow Rate", + " AUTOSIZE , !- Design Hot Water Volume Flow Rate", + " AUTOSIZE , !- Zone Total Beam Length", + " 0.036 , !- Rated Primary Air Flow Rate per Meter", + " 597 , !- Rated Beam Cooling Capacity per Meter", + " 10.0 , !- Rated Cooling Room Air Chilled Water Temperature Difference", + " 5.2E-5 , !- Rated Chilled Water Volume Flow Rate per Meter", + " CapModFuncOfTempDiff, !- Beam Cooling Capacity Temperature Difference Modification Factor Curve or Table Name", + " CoolCapModFuncOfSAFlow, !- Beam Cooling Capacity Air Flow Modification Factor Curve or Table Name", + " CapModFuncOfWaterFlow, !- Beam Cooling Capacity Chilled Water Flow Modification Factor Curve or Table Name", + " 1548 , !- Rated Beam Heating Capacity per Meter", + " 27.8, !- Rated Heating Room Air Hot Water Temperature Difference", + " 5.2E-5, !- Rated Hot Water Volume Flow Rate per Meter", + " CapModFuncOfTempDiff, !- Beam Heating Capacity Temperature Difference Modification Factor Curve or Table Name", + " HeatCapModFuncOfSAFlow, !- Beam Heating Capacity Air Flow Modification Factor Curve or Table Name", + " CapModFuncOfWaterFlow; !- Beam Heating Capacity Hot Water Flow Modification Factor Curve or Table Name", + + " Curve:Linear, ! y = x", + " CapModFuncOfTempDiff, !-Name", + " 0, !_ Coef Const", + " 1, !- Coef x", + " 0, !- min x", + " 1.5, !- max x", + " 0.0 , !- min y", + " 1.5; ! max y", + + " Table:OneIndependentVariable,", + " CoolCapModFuncOfSAFlow, !- Name", + " quadratic,!- Curve Type", + " EvaluateCurveToLimits,!- Interpolation Method", + " 0.714,!- min x", + " 1.2857,!- max x", + " 0.8234,!- min y", + " 1.1256,!- max y", + " dimensionless, !-", + " dimensionless, !- ", + " , !- normalization ref", + " 0.714286, 0.823403,", + " 1.0, 1.0,", + " 1.2857, 1.1256;", + + " Table:OneIndependentVariable,", + " CapModFuncOfWaterFlow, !- Name", + " quadratic,!- Curve ", + " EvaluateCurveToLimits,!- Interpolation Method", + " 0.0,!- min x", + " 1.333333,!- max x", + " 0.0,!- min y", + " 1.04,!- max y", + " dimensionless, !-", + " dimensionless, !- ", + " , !- normalization ref", + " 0.0, 0.0,", + " 0.05, 0.001,", + " 0.33333, 0.71,", + " 0.5, 0.85,", + " 0.666667, 0.92,", + " 0.833333, 0.97,", + " 1.0, 1.0,", + " 1.333333, 1.04;", + + " Table:OneIndependentVariable,", + " HeatCapModFuncOfSAFlow, !- Name", + " quadratic,!- Curve Type", + " EvaluateCurveToLimits,!- Interpolation Method", + " 0.714,!- min x", + " 1.2857,!- max x", + " 0.8554,!- min y", + " 1.0778,!- max y", + " dimensionless, !-", + " dimensionless, !- ", + " , !- normalization ref", + " 0.714286, 0.8554,", + " 1.0, 1.0,", + " 1.2857, 1.0778; ", + }); + + ASSERT_TRUE(process_idf(idf_objects)); + SimulationManager::PostIPProcessing(); + + bool ErrorsFound = false; + + DataGlobals::BeginSimFlag = true; + SimulationManager::GetProjectData(); + + OutputReportPredefined::SetPredefinedTables(); + HeatBalanceManager::SetPreConstructionInputParameters(); // establish array bounds for constructions early + OutputProcessor::TimeValue.allocate(2); + OutputProcessor::SetupTimePointers("Zone", DataGlobals::TimeStepZone); // Set up Time pointer for HB/Zone Simulation + OutputProcessor::SetupTimePointers("HVAC", DataHVACGlobals::TimeStepSys); + PlantManager::CheckIfAnyPlant(); + createFacilityElectricPowerServiceObject(); + BranchInputManager::ManageBranchInput(); // just gets input and returns. + DataGlobals::DoingSizing = true; + SizingManager::ManageSizing(); + DataGlobals::DoingSizing = false; + DataGlobals::KickOffSimulation = true; + + WeatherManager::ResetEnvironmentCounter(); + + ASSERT_ANY_THROW(SimulationManager::SetupSimulation(ErrorsFound)); +} } // namespace EnergyPlus diff --git a/tst/EnergyPlus/unit/HeatBalanceManager.unit.cc b/tst/EnergyPlus/unit/HeatBalanceManager.unit.cc index d1d02d3007f..6c0df292bf3 100644 --- a/tst/EnergyPlus/unit/HeatBalanceManager.unit.cc +++ b/tst/EnergyPlus/unit/HeatBalanceManager.unit.cc @@ -88,456 +88,456 @@ using namespace EnergyPlus::DataHVACGlobals; namespace EnergyPlus { TEST_F(EnergyPlusFixture, HeatBalanceManager_ZoneAirBalance_OutdoorAir) - { +{ std::string const idf_objects = delimited_string({ - "ZoneAirBalance:OutdoorAir,\n", - " LIVING ZONE Balance 1, !- Name\n", - " LIVING ZONE, !- Zone Name\n", - " Quadrature, !- Air Balance Method\n", - " 0.01, !- Induced Outdoor Air Due to Unbalanced Duct Leakage {m3/s}\n", - " INF-SCHED; !- Induced Outdoor Air Schedule Name", - "ZoneAirBalance:OutdoorAir,\n", - " LIVING ZONE Balance 2, !- Name\n", - " LIVING ZONE, !- Zone Name\n", - " Quadrature, !- Air Balance Method\n", - " 0.01, !- Induced Outdoor Air Due to Unbalanced Duct Leakage {m3/s}\n", - " INF-SCHED2; !- Induced Outdoor Air Schedule Name", - "Zone,", - "LIVING ZONE, !- Name", - "0, !- Direction of Relative North {deg}", - "0, !- X Origin {m}", - "0, !- Y Origin {m}", - "0, !- Z Origin {m}", - "1, !- Type", - "1, !- Multiplier", - "autocalculate, !- Ceiling Height {m}", - "autocalculate; !- Volume {m3}", + "ZoneAirBalance:OutdoorAir,\n", + " LIVING ZONE Balance 1, !- Name\n", + " LIVING ZONE, !- Zone Name\n", + " Quadrature, !- Air Balance Method\n", + " 0.01, !- Induced Outdoor Air Due to Unbalanced Duct Leakage {m3/s}\n", + " INF-SCHED; !- Induced Outdoor Air Schedule Name", + "ZoneAirBalance:OutdoorAir,\n", + " LIVING ZONE Balance 2, !- Name\n", + " LIVING ZONE, !- Zone Name\n", + " Quadrature, !- Air Balance Method\n", + " 0.01, !- Induced Outdoor Air Due to Unbalanced Duct Leakage {m3/s}\n", + " INF-SCHED2; !- Induced Outdoor Air Schedule Name", + "Zone,", + "LIVING ZONE, !- Name", + "0, !- Direction of Relative North {deg}", + "0, !- X Origin {m}", + "0, !- Y Origin {m}", + "0, !- Z Origin {m}", + "1, !- Type", + "1, !- Multiplier", + "autocalculate, !- Ceiling Height {m}", + "autocalculate; !- Volume {m3}", }); - ASSERT_TRUE( process_idf( idf_objects ) ); - bool ErrorsFound = false; - auto numZones = inputProcessor->getNumObjectsFound( "Zone" ); - ZoneReOrder.allocate( numZones ); - GetZoneData( ErrorsFound ); - GetAirFlowFlag( ErrorsFound ); - EXPECT_TRUE( ErrorsFound ); - } - - TEST_F( EnergyPlusFixture, HeatBalanceManager_WindowMaterial_Gap_Duplicate_Names ) - { - std::string const idf_objects = delimited_string( { - "Version,8.6;", - " WindowMaterial:Gap,", - " Gap_1_Layer, !- Name", - " 0.0127, !- Thickness {m}", - " Gas_1_W_0_0127, !- Gas (or Gas Mixture)", - " 101325.0000; !- Pressure {Pa}", - " WindowGap:DeflectionState,", - " DeflectionState_813_Measured_Gap_1, !- Name", - " 0.0120; !- Deflected Thickness {m}", - " WindowMaterial:Gap,", - " Gap_6_Layer, !- Name", - " 0.0060, !- Thickness {m}", - " Gap_6_W_0_0060, !- Gas (or Gas Mixture)", - " 101300.0000, !- Pressure {Pa}", - " DeflectionState_813_Measured_Gap_1; !- Deflection State", - " WindowMaterial:Gap,", - " Gap_1_Layer, !- Name", - " 0.0100, !- Thickness {m}", - " Gas_1_W_0_0100, !- Gas (or Gas Mixture)", - " 101325.0000; !- Pressure {Pa}", - } ); - - ASSERT_FALSE( process_idf( idf_objects, false ) ); // expect errors - std::string const error_string = delimited_string( { - " ** Severe ** Duplicate name found. name: \"Gap_1_Layer\". Overwriting existing object.", - } ); - EXPECT_TRUE( compare_err_stream( error_string, true ) ); - - bool ErrorsFound( false ); - - GetMaterialData( ErrorsFound ); - - EXPECT_FALSE( ErrorsFound ); - } - - TEST_F( EnergyPlusFixture, HeatBalanceManager_WindowMaterial_Gap_Duplicate_Names_2 ) - { + ASSERT_TRUE(process_idf(idf_objects)); + bool ErrorsFound = false; + auto numZones = inputProcessor->getNumObjectsFound("Zone"); + ZoneReOrder.allocate(numZones); + GetZoneData(ErrorsFound); + GetAirFlowFlag(ErrorsFound); + EXPECT_TRUE(ErrorsFound); +} + +TEST_F(EnergyPlusFixture, HeatBalanceManager_WindowMaterial_Gap_Duplicate_Names) +{ std::string const idf_objects = delimited_string({ - "Version,8.6;", - " WindowGap:DeflectionState,", - " DeflectionState_813_Measured_Gap_1, !- Name", - " 0.0120; !- Deflected Thickness {m}", - " WindowMaterial:Gap,", - " Gap_6_Layer, !- Name", - " 0.0060, !- Thickness {m}", - " Gap_6_W_0_0060, !- Gas (or Gas Mixture)", - " 101300.0000, !- Pressure {Pa}", - " DeflectionState_813_Measured_Gap_1; !- Deflection State", - " WindowMaterial:Gap,", - " Gap_1_Layer, !- Name", - " 0.0127, !- Thickness {m}", - " Gas_1_W_0_0127, !- Gas (or Gas Mixture)", - " 101325.0000; !- Pressure {Pa}", - " WindowMaterial:Gap,", - " Gap_1_Layer, !- Name", - " 0.0100, !- Thickness {m}", - " Gas_1_W_0_0100, !- Gas (or Gas Mixture)", - " 101325.0000; !- Pressure {Pa}", + "Version,8.6;", + " WindowMaterial:Gap,", + " Gap_1_Layer, !- Name", + " 0.0127, !- Thickness {m}", + " Gas_1_W_0_0127, !- Gas (or Gas Mixture)", + " 101325.0000; !- Pressure {Pa}", + " WindowGap:DeflectionState,", + " DeflectionState_813_Measured_Gap_1, !- Name", + " 0.0120; !- Deflected Thickness {m}", + " WindowMaterial:Gap,", + " Gap_6_Layer, !- Name", + " 0.0060, !- Thickness {m}", + " Gap_6_W_0_0060, !- Gas (or Gas Mixture)", + " 101300.0000, !- Pressure {Pa}", + " DeflectionState_813_Measured_Gap_1; !- Deflection State", + " WindowMaterial:Gap,", + " Gap_1_Layer, !- Name", + " 0.0100, !- Thickness {m}", + " Gas_1_W_0_0100, !- Gas (or Gas Mixture)", + " 101325.0000; !- Pressure {Pa}", }); - ASSERT_FALSE( process_idf( idf_objects, false ) ); // expect errors - std::string const error_string = delimited_string( { - " ** Severe ** Duplicate name found. name: \"Gap_1_Layer\". Overwriting existing object.", - } ); - EXPECT_TRUE( compare_err_stream( error_string, true ) ); - - bool ErrorsFound( false ); - - GetMaterialData( ErrorsFound ); - - EXPECT_FALSE( ErrorsFound ); - } - - TEST_F( EnergyPlusFixture, HeatBalanceManager_ProcessZoneData ) - { - // Test input processing of Zone object - // Zone, - // ZONE ONE, !- Name - // 0, !- Direction of Relative North{ deg } - // 0, 0, 0, !- X, Y, Z{ m } - // 1, !- Type - // 1, !- Multiplier - // autocalculate, !- Ceiling Height{ m } - // autocalculate, !- Volume{ m3 } - // , !- Floor Area{ m2 } - // AdaptiveConvectionAlgorithm; !- Zone Inside Convection Algorithm - - bool ErrorsFound( false ); // If errors detected in input - int ZoneNum( 0 ); // Zone number - int NumAlphas ( 2 ); - int NumNumbers ( 9 ); - - cCurrentModuleObject = "Zone"; - NumOfZones = 2; - Zone.allocate( NumOfZones ); - - // Set up a Zone object - NumAlphas = 2; - NumNumbers = 9; - lNumericFieldBlanks.allocate ( NumNumbers ); - lAlphaFieldBlanks.allocate( NumAlphas ); - cAlphaFieldNames.allocate( NumAlphas ); - cNumericFieldNames.allocate( NumNumbers ); - cAlphaArgs.allocate( NumAlphas ); - rNumericArgs.allocate( NumNumbers ); - lNumericFieldBlanks = false; - lAlphaFieldBlanks = false; - cAlphaFieldNames = " "; - cNumericFieldNames = " "; - cAlphaArgs = " "; - rNumericArgs = 0.0; - - ZoneNum = 1; - cAlphaArgs( 1 ) = "Zone One"; // Name - rNumericArgs( 1 ) = 0.0; // Direction of Relative North[deg] - rNumericArgs( 2 ) = 0.0; // X [m] - rNumericArgs( 3 ) = 0.0; // Y [m] - rNumericArgs( 4 ) = 0.0; // Z [m] - rNumericArgs( 5 ) = 0.0; // Type - rNumericArgs( 6 ) = 0.0; // Multiplier - lNumericFieldBlanks( 7 ) = true; // Ceiling Height{ m } - lNumericFieldBlanks( 8 ) = true; // Volume{ m3 } - lNumericFieldBlanks( 9 ) = true; // Floor Area{ m2 } - cAlphaArgs( 2 ) = "ADAPTIVECONVECTIONALGORITHM"; // Zone Inside Convection Algorithm - Must be UPPERCASE by this point - - ErrorsFound = false; + ASSERT_FALSE(process_idf(idf_objects, false)); // expect errors + std::string const error_string = delimited_string({ + " ** Severe ** Duplicate name found. name: \"Gap_1_Layer\". Overwriting existing object.", + }); + EXPECT_TRUE(compare_err_stream(error_string, true)); + + bool ErrorsFound(false); + + GetMaterialData(ErrorsFound); + + EXPECT_FALSE(ErrorsFound); +} + +TEST_F(EnergyPlusFixture, HeatBalanceManager_WindowMaterial_Gap_Duplicate_Names_2) +{ + std::string const idf_objects = delimited_string({ + "Version,8.6;", + " WindowGap:DeflectionState,", + " DeflectionState_813_Measured_Gap_1, !- Name", + " 0.0120; !- Deflected Thickness {m}", + " WindowMaterial:Gap,", + " Gap_6_Layer, !- Name", + " 0.0060, !- Thickness {m}", + " Gap_6_W_0_0060, !- Gas (or Gas Mixture)", + " 101300.0000, !- Pressure {Pa}", + " DeflectionState_813_Measured_Gap_1; !- Deflection State", + " WindowMaterial:Gap,", + " Gap_1_Layer, !- Name", + " 0.0127, !- Thickness {m}", + " Gas_1_W_0_0127, !- Gas (or Gas Mixture)", + " 101325.0000; !- Pressure {Pa}", + " WindowMaterial:Gap,", + " Gap_1_Layer, !- Name", + " 0.0100, !- Thickness {m}", + " Gas_1_W_0_0100, !- Gas (or Gas Mixture)", + " 101325.0000; !- Pressure {Pa}", + }); + + ASSERT_FALSE(process_idf(idf_objects, false)); // expect errors + std::string const error_string = delimited_string({ + " ** Severe ** Duplicate name found. name: \"Gap_1_Layer\". Overwriting existing object.", + }); + EXPECT_TRUE(compare_err_stream(error_string, true)); + + bool ErrorsFound(false); + + GetMaterialData(ErrorsFound); + + EXPECT_FALSE(ErrorsFound); +} + +TEST_F(EnergyPlusFixture, HeatBalanceManager_ProcessZoneData) +{ + // Test input processing of Zone object + // Zone, + // ZONE ONE, !- Name + // 0, !- Direction of Relative North{ deg } + // 0, 0, 0, !- X, Y, Z{ m } + // 1, !- Type + // 1, !- Multiplier + // autocalculate, !- Ceiling Height{ m } + // autocalculate, !- Volume{ m3 } + // , !- Floor Area{ m2 } + // AdaptiveConvectionAlgorithm; !- Zone Inside Convection Algorithm + + bool ErrorsFound(false); // If errors detected in input + int ZoneNum(0); // Zone number + int NumAlphas(2); + int NumNumbers(9); + + cCurrentModuleObject = "Zone"; + NumOfZones = 2; + Zone.allocate(NumOfZones); + + // Set up a Zone object + NumAlphas = 2; + NumNumbers = 9; + lNumericFieldBlanks.allocate(NumNumbers); + lAlphaFieldBlanks.allocate(NumAlphas); + cAlphaFieldNames.allocate(NumAlphas); + cNumericFieldNames.allocate(NumNumbers); + cAlphaArgs.allocate(NumAlphas); + rNumericArgs.allocate(NumNumbers); + lNumericFieldBlanks = false; + lAlphaFieldBlanks = false; + cAlphaFieldNames = " "; + cNumericFieldNames = " "; + cAlphaArgs = " "; + rNumericArgs = 0.0; + + ZoneNum = 1; + cAlphaArgs(1) = "Zone One"; // Name + rNumericArgs(1) = 0.0; // Direction of Relative North[deg] + rNumericArgs(2) = 0.0; // X [m] + rNumericArgs(3) = 0.0; // Y [m] + rNumericArgs(4) = 0.0; // Z [m] + rNumericArgs(5) = 0.0; // Type + rNumericArgs(6) = 0.0; // Multiplier + lNumericFieldBlanks(7) = true; // Ceiling Height{ m } + lNumericFieldBlanks(8) = true; // Volume{ m3 } + lNumericFieldBlanks(9) = true; // Floor Area{ m2 } + cAlphaArgs(2) = "ADAPTIVECONVECTIONALGORITHM"; // Zone Inside Convection Algorithm - Must be UPPERCASE by this point + + ErrorsFound = false; ProcessZoneData(cCurrentModuleObject, ZoneNum, cAlphaArgs, NumAlphas, rNumericArgs, NumNumbers, lNumericFieldBlanks, lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames, ErrorsFound); - EXPECT_FALSE( ErrorsFound ); + EXPECT_FALSE(ErrorsFound); - ZoneNum = 2; - cAlphaArgs( 1 ) = "Zone Two"; // Name - cAlphaArgs( 2 ) = "InvalidChoice"; // Zone Inside Convection Algorithm - Must be UPPERCASE by this point - ErrorsFound = false; + ZoneNum = 2; + cAlphaArgs(1) = "Zone Two"; // Name + cAlphaArgs(2) = "InvalidChoice"; // Zone Inside Convection Algorithm - Must be UPPERCASE by this point + ErrorsFound = false; ProcessZoneData(cCurrentModuleObject, ZoneNum, cAlphaArgs, NumAlphas, rNumericArgs, NumNumbers, lNumericFieldBlanks, lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames, ErrorsFound); - EXPECT_TRUE( ErrorsFound ); + EXPECT_TRUE(ErrorsFound); - ZoneNum = 2; - cAlphaArgs( 1 ) = "Zone Two"; // Name - cAlphaArgs( 2 ) = "TARP"; // Zone Inside Convection Algorithm - Must be UPPERCASE by this point - ErrorsFound = false; + ZoneNum = 2; + cAlphaArgs(1) = "Zone Two"; // Name + cAlphaArgs(2) = "TARP"; // Zone Inside Convection Algorithm - Must be UPPERCASE by this point + ErrorsFound = false; ProcessZoneData(cCurrentModuleObject, ZoneNum, cAlphaArgs, NumAlphas, rNumericArgs, NumNumbers, lNumericFieldBlanks, lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames, ErrorsFound); - EXPECT_FALSE( ErrorsFound ); - - EXPECT_EQ( "Zone One", Zone( 1 ).Name ); - EXPECT_EQ( AdaptiveConvectionAlgorithm, Zone( 1 ).InsideConvectionAlgo ); - EXPECT_EQ( "Zone Two", Zone( 2 ).Name ); - EXPECT_EQ( ASHRAETARP, Zone( 2 ).InsideConvectionAlgo ); - } - - TEST_F( EnergyPlusFixture, HeatBalanceManager_GetWindowConstructData ) - { - // Test get input for window construction object - // Construction, - // WINDOWWBLIND, !- Name - // GLASS, !- Outside Layer - // AIRGAP, !- Layer 2 - // GLASS; !- Layer 3 - - std::string const idf_objects = delimited_string({ - "Version,8.3;", - "Construction,", - " WINDOWWBLIND, !- Name", - " GLASS, !- Outside Layer", - " AIRGAP, !- Layer 2", - " GLASS; !- Layer 3", - }); - - ASSERT_TRUE( process_idf( idf_objects ) ); - - bool ErrorsFound( false ); // If errors detected in input - - TotMaterials = 3; - Material.allocate( TotMaterials ); - Material( 1 ).Name = "GLASS"; - Material( 2 ).Name = "AIRGAP"; - Material( 3 ).Name = "GLASS"; - - // Material layer group index - Material( 1 ).Group = 3; // WindowGlass - Material( 2 ).Group = 4; // WindowGas - Material( 3 ).Group = 3; // WindowGlass - - NominalRforNominalUCalculation.allocate( 1 ); - NominalRforNominalUCalculation( 1 ) = 0.0; - NominalR.allocate( TotMaterials ); + EXPECT_FALSE(ErrorsFound); + + EXPECT_EQ("Zone One", Zone(1).Name); + EXPECT_EQ(AdaptiveConvectionAlgorithm, Zone(1).InsideConvectionAlgo); + EXPECT_EQ("Zone Two", Zone(2).Name); + EXPECT_EQ(ASHRAETARP, Zone(2).InsideConvectionAlgo); +} + +TEST_F(EnergyPlusFixture, HeatBalanceManager_GetWindowConstructData) +{ + // Test get input for window construction object + // Construction, + // WINDOWWBLIND, !- Name + // GLASS, !- Outside Layer + // AIRGAP, !- Layer 2 + // GLASS; !- Layer 3 + + std::string const idf_objects = delimited_string({ + "Version,8.3;", + "Construction,", + " WINDOWWBLIND, !- Name", + " GLASS, !- Outside Layer", + " AIRGAP, !- Layer 2", + " GLASS; !- Layer 3", + }); + + ASSERT_TRUE(process_idf(idf_objects)); + + bool ErrorsFound(false); // If errors detected in input + + TotMaterials = 3; + Material.allocate(TotMaterials); + Material(1).Name = "GLASS"; + Material(2).Name = "AIRGAP"; + Material(3).Name = "GLASS"; + + // Material layer group index + Material(1).Group = 3; // WindowGlass + Material(2).Group = 4; // WindowGas + Material(3).Group = 3; // WindowGlass + + NominalRforNominalUCalculation.allocate(1); + NominalRforNominalUCalculation(1) = 0.0; + NominalR.allocate(TotMaterials); NominalR(1) = 0.4; // Set these explicity for each material layer to avoid random failures of check for NominalRforNominalUCalculation == 0.0 at // end of GetConstructData - NominalR( 2 ) = 0.4; - NominalR( 3 ) = 0.4; - - // call to get valid window material types - ErrorsFound = false; - GetConstructData( ErrorsFound ); // returns ErrorsFound as false since all layers are valid - EXPECT_FALSE( ErrorsFound ); - - // Clear shared arrays that were allocated in GetConstructData - Construct.deallocate(); - - // call to get invalid window material type -// Material( 2 ).Group = 16; // BlindEquivalentLayer, this layer is invalid in plain windows -// ErrorsFound = false; -// GetConstructData( ErrorsFound ); // returns ErrorsFound as true since layer 2 is invalid -// EXPECT_TRUE( ErrorsFound ); - } - - TEST_F( EnergyPlusFixture, HeatBalanceManager_ZoneAirMassFlowConservationData1 ) - { - // Test get input for ZoneAirMassFlowConservation object - - std::string const idf_objects = delimited_string( { - "Version,8.3;", - "Building,", - "My Building, !- Name", - "30., !- North Axis{ deg }", - "City, !- Terrain", - "0.04, !- Loads Convergence Tolerance Value", - "0.4, !- Temperature Convergence Tolerance Value{ deltaC }", - "FullExterior, !- Solar Distribution", - "25, !- Maximum Number of Warmup Days", - "6; !- Minimum Number of Warmup Days", - "ZoneAirMassFlowConservation,", - "Yes, !- Adjust Zone Mixing For Zone Air Mass Flow Balance", - "AddInfiltrationFlow, !- Infiltration Balancing Method", - "MixingSourceZonesOnly; !- Infiltration Balancing Zones", - } ); - - ASSERT_TRUE( process_idf( idf_objects ) ); - - bool ErrorsFound( false ); // If errors detected in input - - // call to process input - ErrorsFound = false; - GetProjectControlData( ErrorsFound ); // returns ErrorsFound false, ZoneAirMassFlowConservation never sets it - EXPECT_FALSE( ErrorsFound ); - EXPECT_TRUE( ZoneAirMassFlow.EnforceZoneMassBalance ); - EXPECT_TRUE( ZoneAirMassFlow.BalanceMixing ); - EXPECT_EQ( ZoneAirMassFlow.InfiltrationTreatment, AddInfiltrationFlow ); - EXPECT_EQ( ZoneAirMassFlow.InfiltrationZoneType, MixingSourceZonesOnly ); - } - - TEST_F( EnergyPlusFixture, HeatBalanceManager_ZoneAirMassFlowConservationData2 ) - { - // Test get input for ZoneAirMassFlowConservation object + NominalR(2) = 0.4; + NominalR(3) = 0.4; + + // call to get valid window material types + ErrorsFound = false; + GetConstructData(ErrorsFound); // returns ErrorsFound as false since all layers are valid + EXPECT_FALSE(ErrorsFound); + + // Clear shared arrays that were allocated in GetConstructData + Construct.deallocate(); + + // call to get invalid window material type + // Material( 2 ).Group = 16; // BlindEquivalentLayer, this layer is invalid in plain windows + // ErrorsFound = false; + // GetConstructData( ErrorsFound ); // returns ErrorsFound as true since layer 2 is invalid + // EXPECT_TRUE( ErrorsFound ); +} + +TEST_F(EnergyPlusFixture, HeatBalanceManager_ZoneAirMassFlowConservationData1) +{ + // Test get input for ZoneAirMassFlowConservation object + + std::string const idf_objects = delimited_string({ + "Version,8.3;", + "Building,", + "My Building, !- Name", + "30., !- North Axis{ deg }", + "City, !- Terrain", + "0.04, !- Loads Convergence Tolerance Value", + "0.4, !- Temperature Convergence Tolerance Value{ deltaC }", + "FullExterior, !- Solar Distribution", + "25, !- Maximum Number of Warmup Days", + "6; !- Minimum Number of Warmup Days", + "ZoneAirMassFlowConservation,", + "Yes, !- Adjust Zone Mixing For Zone Air Mass Flow Balance", + "AddInfiltrationFlow, !- Infiltration Balancing Method", + "MixingSourceZonesOnly; !- Infiltration Balancing Zones", + }); + + ASSERT_TRUE(process_idf(idf_objects)); + + bool ErrorsFound(false); // If errors detected in input + + // call to process input + ErrorsFound = false; + GetProjectControlData(ErrorsFound); // returns ErrorsFound false, ZoneAirMassFlowConservation never sets it + EXPECT_FALSE(ErrorsFound); + EXPECT_TRUE(ZoneAirMassFlow.EnforceZoneMassBalance); + EXPECT_TRUE(ZoneAirMassFlow.BalanceMixing); + EXPECT_EQ(ZoneAirMassFlow.InfiltrationTreatment, AddInfiltrationFlow); + EXPECT_EQ(ZoneAirMassFlow.InfiltrationZoneType, MixingSourceZonesOnly); +} + +TEST_F(EnergyPlusFixture, HeatBalanceManager_ZoneAirMassFlowConservationData2) +{ + // Test get input for ZoneAirMassFlowConservation object std::string const idf_objects = delimited_string({"Version,8.3;", - "Building,", - "My Building, !- Name", - "30., !- North Axis{ deg }", - "City, !- Terrain", - "0.04, !- Loads Convergence Tolerance Value", - "0.4, !- Temperature Convergence Tolerance Value{ deltaC }", - "FullExterior, !- Solar Distribution", - "25, !- Maximum Number of Warmup Days", - "6; !- Minimum Number of Warmup Days", - "ZoneAirMassFlowConservation,", - "No, !- Adjust Zone Mixing For Zone Air Mass Flow Balance", - "AdjustInfiltrationFlow, !- Infiltration Balancing Method", - "AllZones; !- Infiltration Balancing Zones", - "Zone, Zone 1;", - "Zone, Zone 2;", - "ZoneMixing,", - "Zone 2 Zone Mixing, !- Name", - "Zone 2, !- Zone Name", - "Always1, !- Schedule Name", - "Flow/Zone, !- Design Flow Rate Calculation Method", - "0.07, !- Design Flow Rate{ m3 / s }", - ", !- Flow Rate per Zone Floor Area{ m3 / s - m2 }", - ", !- Flow Rate per Person{ m3 / s - person }", - ", !- Air Changes per Hour{ 1 / hr }", - "Zone 1, !- Source Zone Name", - "0.0; !- Delta Temperature{ deltaC }", - "ZoneInfiltration:DesignFlowRate,", - "Zone 1 Infil 1, !- Name", - "Zone 1, !- Zone or ZoneList Name", - "Always1, !- Schedule Name", - "flow/zone, !- Design Flow Rate Calculation Method", - "0.032, !- Design Flow Rate{ m3 / s }", - ", !- Flow per Zone Floor Area{ m3 / s - m2 }", - ", !- Flow per Exterior Surface Area{ m3 / s - m2 }", - ", !- Air Changes per Hour{ 1 / hr }", - "1, !- Constant Term Coefficient", - "0, !- Temperature Term Coefficient", - "0, !- Velocity Term Coefficient", - "0; !- Velocity Squared Term Coefficient", - "Schedule:Constant,Always1,,1.0;" - - } ); - - ASSERT_TRUE( process_idf( idf_objects ) ); - - bool ErrorsFound( false ); // If errors detected in input - - // call to process input - ProcessScheduleInput(); - ErrorsFound = false; - GetProjectControlData( ErrorsFound ); // returns ErrorsFound false, ZoneAirMassFlowConservation never sets it - EXPECT_FALSE( ErrorsFound ); - EXPECT_TRUE( ZoneAirMassFlow.EnforceZoneMassBalance ); - EXPECT_FALSE( ZoneAirMassFlow.BalanceMixing ); - EXPECT_EQ( ZoneAirMassFlow.InfiltrationTreatment, AdjustInfiltrationFlow ); - EXPECT_EQ( ZoneAirMassFlow.InfiltrationZoneType, AllZones ); - - // setup mixing and infiltration objects - NumOfZones = 2; - ZoneReOrder.allocate( NumOfZones ); - ErrorsFound = false; - GetZoneData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - AllocateHeatBalArrays(); - ErrorsFound = false; - GetSimpleAirModelInputs( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - SetZoneMassConservationFlag(); - // setup zone equipment configuration - ZoneEquipConfig.allocate( NumOfZones ); - - ZoneEquipConfig( 1 ).ZoneName = "Zone 1"; - ZoneEquipConfig( 1 ).ActualZoneNum = 1; - ZoneEquipConfig( 1 ).NumInletNodes = 1; - ZoneEquipConfig( 1 ).InletNode.allocate( 1 ); - ZoneEquipConfig( 1 ).NumExhaustNodes = 1; - ZoneEquipConfig( 1 ).ExhaustNode.allocate( 1 ); - ZoneEquipConfig( 1 ).ZoneNode = 1; - ZoneEquipConfig( 1 ).InletNode( 1 ) = 2; - ZoneEquipConfig( 1 ).ExhaustNode( 1 ) = 3; - ZoneEquipConfig( 1 ).NumReturnNodes = 1; - ZoneEquipConfig( 1 ).ReturnNode.allocate( 1 ); - ZoneEquipConfig( 1 ).ReturnNode( 1 ) = 4; - ZoneEquipConfig( 1 ).IsControlled = true; - ZoneEquipConfig( 1 ).ReturnFlowSchedPtrNum = ScheduleAlwaysOn; - ZoneEquipConfig( 1 ).InletNodeAirLoopNum.allocate( 1 ); - ZoneEquipConfig( 1 ).InletNodeADUNum.allocate( 1 ); - ZoneEquipConfig( 1 ).AirDistUnitCool.allocate( 1 ); - ZoneEquipConfig( 1 ).AirDistUnitHeat.allocate( 1 ); - ZoneEquipConfig( 1 ).InletNodeAirLoopNum( 1 ) = 1; - ZoneEquipConfig( 1 ).InletNodeADUNum( 1 ) = 0; - ZoneEquipConfig( 1 ).AirDistUnitCool( 1 ).InNode = 2; - ZoneEquipConfig( 1 ).ReturnNodeAirLoopNum.allocate( 1 ); - ZoneEquipConfig( 1 ).ReturnNodeInletNum.allocate( 1 ); - ZoneEquipConfig( 1 ).ReturnNodeAirLoopNum( 1 ) = 1; - ZoneEquipConfig( 1 ).ReturnNodeInletNum( 1 ) = 1; - - ZoneEquipConfig( 2 ).ZoneName = "Zone 2"; - ZoneEquipConfig( 2 ).ActualZoneNum = 2; - ZoneEquipConfig( 2 ).NumExhaustNodes = 1; - ZoneEquipConfig( 2 ).ExhaustNode.allocate( 1 ); - ZoneEquipConfig( 2 ).NumInletNodes = 1; - ZoneEquipConfig( 2 ).InletNode.allocate( 1 ); - ZoneEquipConfig( 2 ).ZoneNode = 5; - ZoneEquipConfig( 2 ).InletNode( 1 ) = 6; - ZoneEquipConfig( 2 ).ExhaustNode( 1 ) = 7; - ZoneEquipConfig( 2 ).NumReturnNodes = 1; - ZoneEquipConfig( 2 ).ReturnNode.allocate( 1 ); - ZoneEquipConfig( 2 ).ReturnNode( 1 ) = 8; - ZoneEquipConfig( 2 ).IsControlled = true; - ZoneEquipConfig( 2 ).ReturnFlowSchedPtrNum = ScheduleAlwaysOn; - ZoneEquipConfig( 2 ).InletNodeAirLoopNum.allocate( 1 ); - ZoneEquipConfig( 2 ).InletNodeADUNum.allocate( 1 ); - ZoneEquipConfig( 2 ).AirDistUnitCool.allocate( 1 ); - ZoneEquipConfig( 2 ).AirDistUnitHeat.allocate( 1 ); - ZoneEquipConfig( 2 ).InletNodeAirLoopNum( 1 ) = 1; - ZoneEquipConfig( 2 ).InletNodeADUNum( 1 ) = 0; - ZoneEquipConfig( 2 ).AirDistUnitCool( 1 ).InNode = 6; - ZoneEquipConfig( 2 ).ReturnNodeAirLoopNum.allocate( 1 ); - ZoneEquipConfig( 2 ).ReturnNodeInletNum.allocate( 1 ); - ZoneEquipConfig( 2 ).ReturnNodeAirLoopNum( 1 ) = 1; - ZoneEquipConfig( 2 ).ReturnNodeInletNum( 1 ) = 1; - - ZoneEquipInputsFilled = true; - NumPrimaryAirSys = 1; - AirLoopFlow.allocate( 1 ); - PrimaryAirSystem.allocate( 1 ); - PrimaryAirSystem( 1 ).OASysExists = true; - Node.allocate( 8 ); - - Node( 1 ).MassFlowRate = 0.0; // Zone 1 zone node - Node( 2 ).MassFlowRate = 1.0; // Zone 1 inlet node - Node( 3 ).MassFlowRate = 2.0; // Zone 1 exhaust node - Node( 4 ).MassFlowRate = 9.0; // Zone 1 return node - ZoneEquipConfig( 1 ).ZoneExh = 2.0; - - Node( 5 ).MassFlowRate = 0.0; // Zone 2 zone node - Node( 6 ).MassFlowRate = 2.0; // Zone 2 inlet node - Node( 7 ).MassFlowRate = 0.0; // Zone 2 exhaust node - Node( 8 ).MassFlowRate = 8.0; // Zone 2 return node - ZoneEquipConfig( 2 ).ZoneExh = 0.0; - AirLoopFlow( 1 ).MaxOutAir = Node( 2 ).MassFlowRate + Node( 6 ).MassFlowRate; - Infiltration( 1 ).MassFlowRate = 0.5; - Mixing( 1 ).MixingMassFlowRate = 0.1; - - // call zone air mass balance - CalcZoneMassBalance(); - EXPECT_EQ( Node( 4 ).MassFlowRate, 0.0 ); // Zone 1 return node (max(0.0, 1-2) - EXPECT_EQ( Infiltration( 1 ).MassFlowRate, 1.0); // Zone 1 infiltration flow rate (2 - 1) - EXPECT_EQ( Mixing( 1 ).MixingMassFlowRate, 0.1 ); // Zone 1 to Zone 2 mixing flow rate (unchanged) + "Building,", + "My Building, !- Name", + "30., !- North Axis{ deg }", + "City, !- Terrain", + "0.04, !- Loads Convergence Tolerance Value", + "0.4, !- Temperature Convergence Tolerance Value{ deltaC }", + "FullExterior, !- Solar Distribution", + "25, !- Maximum Number of Warmup Days", + "6; !- Minimum Number of Warmup Days", + "ZoneAirMassFlowConservation,", + "No, !- Adjust Zone Mixing For Zone Air Mass Flow Balance", + "AdjustInfiltrationFlow, !- Infiltration Balancing Method", + "AllZones; !- Infiltration Balancing Zones", + "Zone, Zone 1;", + "Zone, Zone 2;", + "ZoneMixing,", + "Zone 2 Zone Mixing, !- Name", + "Zone 2, !- Zone Name", + "Always1, !- Schedule Name", + "Flow/Zone, !- Design Flow Rate Calculation Method", + "0.07, !- Design Flow Rate{ m3 / s }", + ", !- Flow Rate per Zone Floor Area{ m3 / s - m2 }", + ", !- Flow Rate per Person{ m3 / s - person }", + ", !- Air Changes per Hour{ 1 / hr }", + "Zone 1, !- Source Zone Name", + "0.0; !- Delta Temperature{ deltaC }", + "ZoneInfiltration:DesignFlowRate,", + "Zone 1 Infil 1, !- Name", + "Zone 1, !- Zone or ZoneList Name", + "Always1, !- Schedule Name", + "flow/zone, !- Design Flow Rate Calculation Method", + "0.032, !- Design Flow Rate{ m3 / s }", + ", !- Flow per Zone Floor Area{ m3 / s - m2 }", + ", !- Flow per Exterior Surface Area{ m3 / s - m2 }", + ", !- Air Changes per Hour{ 1 / hr }", + "1, !- Constant Term Coefficient", + "0, !- Temperature Term Coefficient", + "0, !- Velocity Term Coefficient", + "0; !- Velocity Squared Term Coefficient", + "Schedule:Constant,Always1,,1.0;" + + }); + + ASSERT_TRUE(process_idf(idf_objects)); + + bool ErrorsFound(false); // If errors detected in input + + // call to process input + ProcessScheduleInput(); + ErrorsFound = false; + GetProjectControlData(ErrorsFound); // returns ErrorsFound false, ZoneAirMassFlowConservation never sets it + EXPECT_FALSE(ErrorsFound); + EXPECT_TRUE(ZoneAirMassFlow.EnforceZoneMassBalance); + EXPECT_FALSE(ZoneAirMassFlow.BalanceMixing); + EXPECT_EQ(ZoneAirMassFlow.InfiltrationTreatment, AdjustInfiltrationFlow); + EXPECT_EQ(ZoneAirMassFlow.InfiltrationZoneType, AllZones); + + // setup mixing and infiltration objects + NumOfZones = 2; + ZoneReOrder.allocate(NumOfZones); + ErrorsFound = false; + GetZoneData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + AllocateHeatBalArrays(); + ErrorsFound = false; + GetSimpleAirModelInputs(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + SetZoneMassConservationFlag(); + // setup zone equipment configuration + ZoneEquipConfig.allocate(NumOfZones); + + ZoneEquipConfig(1).ZoneName = "Zone 1"; + ZoneEquipConfig(1).ActualZoneNum = 1; + ZoneEquipConfig(1).NumInletNodes = 1; + ZoneEquipConfig(1).InletNode.allocate(1); + ZoneEquipConfig(1).NumExhaustNodes = 1; + ZoneEquipConfig(1).ExhaustNode.allocate(1); + ZoneEquipConfig(1).ZoneNode = 1; + ZoneEquipConfig(1).InletNode(1) = 2; + ZoneEquipConfig(1).ExhaustNode(1) = 3; + ZoneEquipConfig(1).NumReturnNodes = 1; + ZoneEquipConfig(1).ReturnNode.allocate(1); + ZoneEquipConfig(1).ReturnNode(1) = 4; + ZoneEquipConfig(1).IsControlled = true; + ZoneEquipConfig(1).ReturnFlowSchedPtrNum = ScheduleAlwaysOn; + ZoneEquipConfig(1).InletNodeAirLoopNum.allocate(1); + ZoneEquipConfig(1).InletNodeADUNum.allocate(1); + ZoneEquipConfig(1).AirDistUnitCool.allocate(1); + ZoneEquipConfig(1).AirDistUnitHeat.allocate(1); + ZoneEquipConfig(1).InletNodeAirLoopNum(1) = 1; + ZoneEquipConfig(1).InletNodeADUNum(1) = 0; + ZoneEquipConfig(1).AirDistUnitCool(1).InNode = 2; + ZoneEquipConfig(1).ReturnNodeAirLoopNum.allocate(1); + ZoneEquipConfig(1).ReturnNodeInletNum.allocate(1); + ZoneEquipConfig(1).ReturnNodeAirLoopNum(1) = 1; + ZoneEquipConfig(1).ReturnNodeInletNum(1) = 1; + + ZoneEquipConfig(2).ZoneName = "Zone 2"; + ZoneEquipConfig(2).ActualZoneNum = 2; + ZoneEquipConfig(2).NumExhaustNodes = 1; + ZoneEquipConfig(2).ExhaustNode.allocate(1); + ZoneEquipConfig(2).NumInletNodes = 1; + ZoneEquipConfig(2).InletNode.allocate(1); + ZoneEquipConfig(2).ZoneNode = 5; + ZoneEquipConfig(2).InletNode(1) = 6; + ZoneEquipConfig(2).ExhaustNode(1) = 7; + ZoneEquipConfig(2).NumReturnNodes = 1; + ZoneEquipConfig(2).ReturnNode.allocate(1); + ZoneEquipConfig(2).ReturnNode(1) = 8; + ZoneEquipConfig(2).IsControlled = true; + ZoneEquipConfig(2).ReturnFlowSchedPtrNum = ScheduleAlwaysOn; + ZoneEquipConfig(2).InletNodeAirLoopNum.allocate(1); + ZoneEquipConfig(2).InletNodeADUNum.allocate(1); + ZoneEquipConfig(2).AirDistUnitCool.allocate(1); + ZoneEquipConfig(2).AirDistUnitHeat.allocate(1); + ZoneEquipConfig(2).InletNodeAirLoopNum(1) = 1; + ZoneEquipConfig(2).InletNodeADUNum(1) = 0; + ZoneEquipConfig(2).AirDistUnitCool(1).InNode = 6; + ZoneEquipConfig(2).ReturnNodeAirLoopNum.allocate(1); + ZoneEquipConfig(2).ReturnNodeInletNum.allocate(1); + ZoneEquipConfig(2).ReturnNodeAirLoopNum(1) = 1; + ZoneEquipConfig(2).ReturnNodeInletNum(1) = 1; + + ZoneEquipInputsFilled = true; + NumPrimaryAirSys = 1; + AirLoopFlow.allocate(1); + PrimaryAirSystem.allocate(1); + PrimaryAirSystem(1).OASysExists = true; + Node.allocate(8); + + Node(1).MassFlowRate = 0.0; // Zone 1 zone node + Node(2).MassFlowRate = 1.0; // Zone 1 inlet node + Node(3).MassFlowRate = 2.0; // Zone 1 exhaust node + Node(4).MassFlowRate = 9.0; // Zone 1 return node + ZoneEquipConfig(1).ZoneExh = 2.0; + + Node(5).MassFlowRate = 0.0; // Zone 2 zone node + Node(6).MassFlowRate = 2.0; // Zone 2 inlet node + Node(7).MassFlowRate = 0.0; // Zone 2 exhaust node + Node(8).MassFlowRate = 8.0; // Zone 2 return node + ZoneEquipConfig(2).ZoneExh = 0.0; + AirLoopFlow(1).MaxOutAir = Node(2).MassFlowRate + Node(6).MassFlowRate; + Infiltration(1).MassFlowRate = 0.5; + Mixing(1).MixingMassFlowRate = 0.1; + + // call zone air mass balance + CalcZoneMassBalance(); + EXPECT_EQ(Node(4).MassFlowRate, 0.0); // Zone 1 return node (max(0.0, 1-2) + EXPECT_EQ(Infiltration(1).MassFlowRate, 1.0); // Zone 1 infiltration flow rate (2 - 1) + EXPECT_EQ(Mixing(1).MixingMassFlowRate, 0.1); // Zone 1 to Zone 2 mixing flow rate (unchanged) EXPECT_EQ(Node(8).MassFlowRate, 2.0); // Zone 2 return node (should be 2 now, because this has zone mass conservation active, so return should equal supply) - ZoneReOrder.deallocate(); - ZoneEquipConfig.deallocate(); - Node.deallocate(); - PrimaryAirSystem.deallocate(); - AirLoopFlow.deallocate(); - NumPrimaryAirSys = 0; - } + ZoneReOrder.deallocate(); + ZoneEquipConfig.deallocate(); + Node.deallocate(); + PrimaryAirSystem.deallocate(); + AirLoopFlow.deallocate(); + NumPrimaryAirSys = 0; +} - TEST_F( EnergyPlusFixture, HeatBalanceManager_ZoneAirMassFlowConservationData3 ) - { - // Test get input for ZoneAirMassFlowConservation object +TEST_F(EnergyPlusFixture, HeatBalanceManager_ZoneAirMassFlowConservationData3) +{ + // Test get input for ZoneAirMassFlowConservation object std::string const idf_objects = delimited_string( {"Version,8.3;", "Building,", "My Building, !- Name", "30., !- North Axis{ deg }", "City, !- Terrain", @@ -546,757 +546,757 @@ TEST_F(EnergyPlusFixture, HeatBalanceManager_ZoneAirBalance_OutdoorAir) "ZoneAirMassFlowConservation,", "No, !- Adjust Zone Mixing For Zone Air Mass Flow Balance", "None, !- Infiltration Balancing Method", "; !- Infiltration Balancing Zones"}); - ASSERT_TRUE( process_idf( idf_objects ) ); - - bool ErrorsFound( false ); // If errors detected in input - - // call to process input - ErrorsFound = false; - GetProjectControlData( ErrorsFound ); // returns ErrorsFound false, ZoneAirMassFlowConservation never sets it - EXPECT_FALSE( ErrorsFound ); - EXPECT_FALSE( ZoneAirMassFlow.EnforceZoneMassBalance ); - EXPECT_FALSE( ZoneAirMassFlow.BalanceMixing ); - EXPECT_EQ( ZoneAirMassFlow.InfiltrationTreatment, NoInfiltrationFlow ); - EXPECT_EQ( ZoneAirMassFlow.InfiltrationZoneType, 0 ); - } - - TEST_F( EnergyPlusFixture, HeatBalanceManager_ZoneAirMassFlowConservationReportVariableTest ) - { - // Test get output variables for ZoneAirMassFlowConservation object #5637 - - std::string const idf_objects = delimited_string( { - "Version,8.5;", - "Building,", - "My Building, !- Name", - "30., !- North Axis{ deg }", - "City, !- Terrain", - "0.04, !- Loads Convergence Tolerance Value", - "0.4, !- Temperature Convergence Tolerance Value{ deltaC }", - "FullExterior, !- Solar Distribution", - "25, !- Maximum Number of Warmup Days", - "6; !- Minimum Number of Warmup Days", - "ZoneAirMassFlowConservation,", - "Yes, !- Adjust Zone Mixing For Zone Air Mass Flow Balance", - "AdjustInfiltrationFlow, !- Infiltration Balancing Method", - "AllZones; !- Infiltration Balancing Zones", - - " Zone,", - " WEST ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " Zone,", - " EAST ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - " Output:Variable,", - " *, !- Key Value", - " Zone Air Mass Balance Exhaust Mass Flow Rate, !- Variable Name", - " hourly; !- Reporting Frequency", - } ); - - ASSERT_TRUE( process_idf( idf_objects ) ); - - bool ErrorsFound( false ); // If errors detected in input - - // call to process input - ErrorsFound = false; - GetProjectControlData( ErrorsFound ); // returns ErrorsFound false, ZoneAirMassFlowConservation never sets it - EXPECT_FALSE( ErrorsFound ); - NumOfZones = 2; - ZoneReOrder.allocate( NumOfZones ); - ErrorsFound = false; - GetZoneData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - ErrorsFound = false; - GetSimpleAirModelInputs( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - - // first 2 have indexes swapped now since they are in lexicigraphical order now according to the new input processor - EXPECT_EQ( "WEST ZONE:Zone Air Mass Balance Exhaust Mass Flow Rate", OutputProcessor::RVariableTypes( 1 ).VarName ); - EXPECT_EQ( "EAST ZONE:Zone Air Mass Balance Exhaust Mass Flow Rate", OutputProcessor::RVariableTypes( 2 ).VarName ); - EXPECT_EQ( 1, OutputProcessor::RVariableTypes( 1 ).ReportID ); - EXPECT_EQ( 2, OutputProcessor::RVariableTypes( 2 ).ReportID ); - } - - TEST_F( EnergyPlusFixture, HeatBalanceManager_GetMaterialRoofVegetation ) - { - std::string const idf_objects = delimited_string( { - " Version,8.6;", - - " Material:RoofVegetation,", - " ThickSoil, !- Name", - " 0.5, !- Height of Plants {m}", - " 5, !- Leaf Area Index {dimensionless}", - " 0.2, !- Leaf Reflectivity {dimensionless}", - " 0.95, !- Leaf Emissivity", - " 180, !- Minimum Stomatal Resistance {s/m}", - " EcoRoofSoil, !- Soil Layer Name", - " MediumSmooth, !- Roughness", - " 0.36, !- Thickness {m}", - " 0.4, !- Conductivity of Dry Soil {W/m-K}", - " 641, !- Density of Dry Soil {kg/m3}", - " 1100, !- Specific Heat of Dry Soil {J/kg-K}", - " 0.95, !- Thermal Absorptance", - " 0.8, !- Solar Absorptance", - " 0.7, !- Visible Absorptance", - " 0.4, !- Saturation Volumetric Moisture Content of the Soil Layer", - " 0.01, !- Residual Volumetric Moisture Content of the Soil Layer", - " 0.45, !- Initial Volumetric Moisture Content of the Soil Layer", - " Advanced; !- Moisture Diffusion Calculation Method", - } ); - - ASSERT_TRUE( process_idf( idf_objects ) ); - - bool ErrorsFound( false ); - GetMaterialData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - - // check the "Material:RoofVegetation" names - EXPECT_EQ( Material( 1 ).Name, "THICKSOIL" ); - // check maximum (saturated) moisture content - EXPECT_EQ( 0.4, Material( 1 ).Porosity ); - // check initial moisture Content was reset - EXPECT_EQ( 0.4, Material( 1 ).InitMoisture ); // reset from 0.45 to 0.4 during get input - } - - TEST_F( EnergyPlusFixture, HeatBalanceManager_WarmUpConvergenceSmallLoadTest ) - { - - WarmupFlag = false; - DayOfSim = 7; - MinNumberOfWarmupDays = 25; - NumOfZones = 1; - WarmupConvergenceValues.allocate( NumOfZones ); - TempConvergTol = 0.01; - LoadsConvergTol = 0.01; - MaxTempPrevDay.allocate( NumOfZones ); - MaxTempPrevDay( 1 ) = 23.0; - MaxTempZone.allocate( NumOfZones ); - MaxTempZone( 1 ) = 23.0; - MinTempPrevDay.allocate( NumOfZones ); - MinTempPrevDay( 1 ) = 23.0; - MinTempZone.allocate( NumOfZones ); - MinTempZone( 1 ) = 23.0; - MaxHeatLoadZone.allocate( NumOfZones ); - MaxHeatLoadPrevDay.allocate( NumOfZones ); - WarmupConvergenceValues( 1 ).TestMaxHeatLoadValue = 0.0; - MaxCoolLoadZone.allocate( NumOfZones ); - MaxCoolLoadPrevDay.allocate( NumOfZones ); - WarmupConvergenceValues( 1 ).TestMaxCoolLoadValue = 0.0; - - // Test 1: All Maxs both less than MinLoad (100.0) - MaxHeatLoadZone( 1 ) = 50.0; - MaxHeatLoadPrevDay( 1 ) = 90.0; - MaxCoolLoadZone( 1 ) = 50.0; - MaxCoolLoadPrevDay( 1 ) = 90.0; - CheckWarmupConvergence(); - EXPECT_EQ( WarmupConvergenceValues( 1 ).PassFlag( 3 ), 2 ); - EXPECT_EQ( WarmupConvergenceValues( 1 ).PassFlag( 4 ), 2 ); - EXPECT_NEAR( WarmupConvergenceValues( 1 ).TestMaxHeatLoadValue, 0.0, 0.0001 ); - EXPECT_NEAR( WarmupConvergenceValues( 1 ).TestMaxCoolLoadValue, 0.0, 0.0001 ); - - // Test 2: Max Previous Day both less than MinLoad - MaxHeatLoadZone( 1 ) = 100.5; - MaxHeatLoadPrevDay( 1 ) = 90.0; - MaxCoolLoadZone( 1 ) = 100.5; - MaxCoolLoadPrevDay( 1 ) = 90.0; - CheckWarmupConvergence(); - EXPECT_EQ( WarmupConvergenceValues( 1 ).PassFlag( 3 ), 2 ); - EXPECT_EQ( WarmupConvergenceValues( 1 ).PassFlag( 4 ), 2 ); - EXPECT_NEAR( WarmupConvergenceValues( 1 ).TestMaxHeatLoadValue, 0.005, 0.0001 ); - EXPECT_NEAR( WarmupConvergenceValues( 1 ).TestMaxCoolLoadValue, 0.005, 0.0001 ); - - // Test 3: Max Current Day both less than MinLoad - MaxHeatLoadZone( 1 ) = 90.0; - MaxHeatLoadPrevDay( 1 ) = 100.5; - MaxCoolLoadZone( 1 ) = 90.0; - MaxCoolLoadPrevDay( 1 ) = 100.5; - CheckWarmupConvergence(); - EXPECT_EQ( WarmupConvergenceValues( 1 ).PassFlag( 3 ), 2 ); - EXPECT_EQ( WarmupConvergenceValues( 1 ).PassFlag( 4 ), 2 ); - EXPECT_NEAR( WarmupConvergenceValues( 1 ).TestMaxHeatLoadValue, 0.005, 0.0001 ); - EXPECT_NEAR( WarmupConvergenceValues( 1 ).TestMaxCoolLoadValue, 0.005, 0.0001 ); - - // Test 4: Everything greater than MinLoad (pass convergence test) - MaxHeatLoadZone( 1 ) = 201.0; - MaxHeatLoadPrevDay( 1 ) = 200.0; - MaxCoolLoadZone( 1 ) = 201.0; - MaxCoolLoadPrevDay( 1 ) = 200.0; - CheckWarmupConvergence(); - EXPECT_EQ( WarmupConvergenceValues( 1 ).PassFlag( 3 ), 2 ); - EXPECT_EQ( WarmupConvergenceValues( 1 ).PassFlag( 4 ), 2 ); - EXPECT_NEAR( WarmupConvergenceValues( 1 ).TestMaxHeatLoadValue, 0.005, 0.0001 ); - EXPECT_NEAR( WarmupConvergenceValues( 1 ).TestMaxCoolLoadValue, 0.005, 0.0001 ); - - // Test 5: Everything greater than MinLoad (fail convergence test) - MaxHeatLoadZone( 1 ) = 210.0; - MaxHeatLoadPrevDay( 1 ) = 200.0; - MaxCoolLoadZone( 1 ) = 210.0; - MaxCoolLoadPrevDay( 1 ) = 200.0; - CheckWarmupConvergence(); - EXPECT_EQ( WarmupConvergenceValues( 1 ).PassFlag( 3 ), 1 ); - EXPECT_EQ( WarmupConvergenceValues( 1 ).PassFlag( 4 ), 1 ); - EXPECT_NEAR( WarmupConvergenceValues( 1 ).TestMaxHeatLoadValue, 0.05, 0.005 ); - EXPECT_NEAR( WarmupConvergenceValues( 1 ).TestMaxCoolLoadValue, 0.05, 0.005 ); - } - - TEST_F( EnergyPlusFixture, HeatBalanceManager_TestZonePropertyLocalEnv ) - { + ASSERT_TRUE(process_idf(idf_objects)); + + bool ErrorsFound(false); // If errors detected in input + + // call to process input + ErrorsFound = false; + GetProjectControlData(ErrorsFound); // returns ErrorsFound false, ZoneAirMassFlowConservation never sets it + EXPECT_FALSE(ErrorsFound); + EXPECT_FALSE(ZoneAirMassFlow.EnforceZoneMassBalance); + EXPECT_FALSE(ZoneAirMassFlow.BalanceMixing); + EXPECT_EQ(ZoneAirMassFlow.InfiltrationTreatment, NoInfiltrationFlow); + EXPECT_EQ(ZoneAirMassFlow.InfiltrationZoneType, 0); +} + +TEST_F(EnergyPlusFixture, HeatBalanceManager_ZoneAirMassFlowConservationReportVariableTest) +{ + // Test get output variables for ZoneAirMassFlowConservation object #5637 + + std::string const idf_objects = delimited_string({ + "Version,8.5;", + "Building,", + "My Building, !- Name", + "30., !- North Axis{ deg }", + "City, !- Terrain", + "0.04, !- Loads Convergence Tolerance Value", + "0.4, !- Temperature Convergence Tolerance Value{ deltaC }", + "FullExterior, !- Solar Distribution", + "25, !- Maximum Number of Warmup Days", + "6; !- Minimum Number of Warmup Days", + "ZoneAirMassFlowConservation,", + "Yes, !- Adjust Zone Mixing For Zone Air Mass Flow Balance", + "AdjustInfiltrationFlow, !- Infiltration Balancing Method", + "AllZones; !- Infiltration Balancing Zones", + + " Zone,", + " WEST ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " Zone,", + " EAST ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + " Output:Variable,", + " *, !- Key Value", + " Zone Air Mass Balance Exhaust Mass Flow Rate, !- Variable Name", + " hourly; !- Reporting Frequency", + }); + + ASSERT_TRUE(process_idf(idf_objects)); + + bool ErrorsFound(false); // If errors detected in input + + // call to process input + ErrorsFound = false; + GetProjectControlData(ErrorsFound); // returns ErrorsFound false, ZoneAirMassFlowConservation never sets it + EXPECT_FALSE(ErrorsFound); + NumOfZones = 2; + ZoneReOrder.allocate(NumOfZones); + ErrorsFound = false; + GetZoneData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + ErrorsFound = false; + GetSimpleAirModelInputs(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + + // first 2 have indexes swapped now since they are in lexicigraphical order now according to the new input processor + EXPECT_EQ("WEST ZONE:Zone Air Mass Balance Exhaust Mass Flow Rate", OutputProcessor::RVariableTypes(1).VarName); + EXPECT_EQ("EAST ZONE:Zone Air Mass Balance Exhaust Mass Flow Rate", OutputProcessor::RVariableTypes(2).VarName); + EXPECT_EQ(1, OutputProcessor::RVariableTypes(1).ReportID); + EXPECT_EQ(2, OutputProcessor::RVariableTypes(2).ReportID); +} + +TEST_F(EnergyPlusFixture, HeatBalanceManager_GetMaterialRoofVegetation) +{ + std::string const idf_objects = delimited_string({ + " Version,8.6;", + + " Material:RoofVegetation,", + " ThickSoil, !- Name", + " 0.5, !- Height of Plants {m}", + " 5, !- Leaf Area Index {dimensionless}", + " 0.2, !- Leaf Reflectivity {dimensionless}", + " 0.95, !- Leaf Emissivity", + " 180, !- Minimum Stomatal Resistance {s/m}", + " EcoRoofSoil, !- Soil Layer Name", + " MediumSmooth, !- Roughness", + " 0.36, !- Thickness {m}", + " 0.4, !- Conductivity of Dry Soil {W/m-K}", + " 641, !- Density of Dry Soil {kg/m3}", + " 1100, !- Specific Heat of Dry Soil {J/kg-K}", + " 0.95, !- Thermal Absorptance", + " 0.8, !- Solar Absorptance", + " 0.7, !- Visible Absorptance", + " 0.4, !- Saturation Volumetric Moisture Content of the Soil Layer", + " 0.01, !- Residual Volumetric Moisture Content of the Soil Layer", + " 0.45, !- Initial Volumetric Moisture Content of the Soil Layer", + " Advanced; !- Moisture Diffusion Calculation Method", + }); + + ASSERT_TRUE(process_idf(idf_objects)); + + bool ErrorsFound(false); + GetMaterialData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + + // check the "Material:RoofVegetation" names + EXPECT_EQ(Material(1).Name, "THICKSOIL"); + // check maximum (saturated) moisture content + EXPECT_EQ(0.4, Material(1).Porosity); + // check initial moisture Content was reset + EXPECT_EQ(0.4, Material(1).InitMoisture); // reset from 0.45 to 0.4 during get input +} + +TEST_F(EnergyPlusFixture, HeatBalanceManager_WarmUpConvergenceSmallLoadTest) +{ + + WarmupFlag = false; + DayOfSim = 7; + MinNumberOfWarmupDays = 25; + NumOfZones = 1; + WarmupConvergenceValues.allocate(NumOfZones); + TempConvergTol = 0.01; + LoadsConvergTol = 0.01; + MaxTempPrevDay.allocate(NumOfZones); + MaxTempPrevDay(1) = 23.0; + MaxTempZone.allocate(NumOfZones); + MaxTempZone(1) = 23.0; + MinTempPrevDay.allocate(NumOfZones); + MinTempPrevDay(1) = 23.0; + MinTempZone.allocate(NumOfZones); + MinTempZone(1) = 23.0; + MaxHeatLoadZone.allocate(NumOfZones); + MaxHeatLoadPrevDay.allocate(NumOfZones); + WarmupConvergenceValues(1).TestMaxHeatLoadValue = 0.0; + MaxCoolLoadZone.allocate(NumOfZones); + MaxCoolLoadPrevDay.allocate(NumOfZones); + WarmupConvergenceValues(1).TestMaxCoolLoadValue = 0.0; + + // Test 1: All Maxs both less than MinLoad (100.0) + MaxHeatLoadZone(1) = 50.0; + MaxHeatLoadPrevDay(1) = 90.0; + MaxCoolLoadZone(1) = 50.0; + MaxCoolLoadPrevDay(1) = 90.0; + CheckWarmupConvergence(); + EXPECT_EQ(WarmupConvergenceValues(1).PassFlag(3), 2); + EXPECT_EQ(WarmupConvergenceValues(1).PassFlag(4), 2); + EXPECT_NEAR(WarmupConvergenceValues(1).TestMaxHeatLoadValue, 0.0, 0.0001); + EXPECT_NEAR(WarmupConvergenceValues(1).TestMaxCoolLoadValue, 0.0, 0.0001); + + // Test 2: Max Previous Day both less than MinLoad + MaxHeatLoadZone(1) = 100.5; + MaxHeatLoadPrevDay(1) = 90.0; + MaxCoolLoadZone(1) = 100.5; + MaxCoolLoadPrevDay(1) = 90.0; + CheckWarmupConvergence(); + EXPECT_EQ(WarmupConvergenceValues(1).PassFlag(3), 2); + EXPECT_EQ(WarmupConvergenceValues(1).PassFlag(4), 2); + EXPECT_NEAR(WarmupConvergenceValues(1).TestMaxHeatLoadValue, 0.005, 0.0001); + EXPECT_NEAR(WarmupConvergenceValues(1).TestMaxCoolLoadValue, 0.005, 0.0001); + + // Test 3: Max Current Day both less than MinLoad + MaxHeatLoadZone(1) = 90.0; + MaxHeatLoadPrevDay(1) = 100.5; + MaxCoolLoadZone(1) = 90.0; + MaxCoolLoadPrevDay(1) = 100.5; + CheckWarmupConvergence(); + EXPECT_EQ(WarmupConvergenceValues(1).PassFlag(3), 2); + EXPECT_EQ(WarmupConvergenceValues(1).PassFlag(4), 2); + EXPECT_NEAR(WarmupConvergenceValues(1).TestMaxHeatLoadValue, 0.005, 0.0001); + EXPECT_NEAR(WarmupConvergenceValues(1).TestMaxCoolLoadValue, 0.005, 0.0001); + + // Test 4: Everything greater than MinLoad (pass convergence test) + MaxHeatLoadZone(1) = 201.0; + MaxHeatLoadPrevDay(1) = 200.0; + MaxCoolLoadZone(1) = 201.0; + MaxCoolLoadPrevDay(1) = 200.0; + CheckWarmupConvergence(); + EXPECT_EQ(WarmupConvergenceValues(1).PassFlag(3), 2); + EXPECT_EQ(WarmupConvergenceValues(1).PassFlag(4), 2); + EXPECT_NEAR(WarmupConvergenceValues(1).TestMaxHeatLoadValue, 0.005, 0.0001); + EXPECT_NEAR(WarmupConvergenceValues(1).TestMaxCoolLoadValue, 0.005, 0.0001); + + // Test 5: Everything greater than MinLoad (fail convergence test) + MaxHeatLoadZone(1) = 210.0; + MaxHeatLoadPrevDay(1) = 200.0; + MaxCoolLoadZone(1) = 210.0; + MaxCoolLoadPrevDay(1) = 200.0; + CheckWarmupConvergence(); + EXPECT_EQ(WarmupConvergenceValues(1).PassFlag(3), 1); + EXPECT_EQ(WarmupConvergenceValues(1).PassFlag(4), 1); + EXPECT_NEAR(WarmupConvergenceValues(1).TestMaxHeatLoadValue, 0.05, 0.005); + EXPECT_NEAR(WarmupConvergenceValues(1).TestMaxCoolLoadValue, 0.05, 0.005); +} + +TEST_F(EnergyPlusFixture, HeatBalanceManager_TestZonePropertyLocalEnv) +{ std::string const idf_objects = delimited_string({" Version,8.9;", - " Building,", - " House with Local Air Nodes, !- Name", - " 0, !- North Axis {deg}", - " Suburbs, !- Terrain", - " 0.001, !- Loads Convergence Tolerance Value", - " 0.0050000, !- Temperature Convergence Tolerance Value {deltaC}", - " FullInteriorAndExterior, !- Solar Distribution", - " 25, !- Maximum Number of Warmup Days", - " 6; !- Minimum Number of Warmup Days", - - " Timestep,6;", - - " SurfaceConvectionAlgorithm:Inside,TARP;", - - " SurfaceConvectionAlgorithm:Outside,DOE-2;", - - " HeatBalanceAlgorithm,ConductionTransferFunction;", - - " Output:DebuggingData,0,0;", - - " SimulationControl,", - " No, !- Do Zone Sizing Calculation", - " No, !- Do System Sizing Calculation", - " No, !- Do Plant Sizing Calculation", - " Yes, !- Run Simulation for Sizing Periods", - " Yes; !- Run Simulation for Weather File Run Periods", - - " RunPeriod,", - " , !- Name", - " 1, !- Begin Month", - " 14, !- Begin Day of Month", - " , !- Begin Year", - " 1, !- End Month", - " 14, !- End Day of Month", - " , !- End Year", - " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " Yes; !- Use Weather File Snow Indicators", - - " RunPeriod,", - " , !- Name", - " 7, !- Begin Month", - " 7, !- Begin Day of Month", - " , !- Begin Year", - " 7, !- End Month", - " 7, !- End Day of Month", - " , !- End Year", - " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " No; !- Use Weather File Snow Indicators", - - " Site:Location,", - " CHICAGO_IL_USA TMY2-94846, !- Name", - " 41.78, !- Latitude {deg}", - " -87.75, !- Longitude {deg}", - " -6.00, !- Time Zone {hr}", - " 190.00; !- Elevation {m}", - - " SizingPeriod:DesignDay,", - " CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, !- Name", - " 1, !- Month", - " 21, !- Day of Month", - " WinterDesignDay, !- Day Type", - " -17.3, !- Maximum Dry-Bulb Temperature {C}", - " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 4.9, !- Wind Speed {m/s}", - " 270, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 0.0; !- Sky Clearness", - - " SizingPeriod:DesignDay,", - " CHICAGO_IL_USA Annual Cooling 1% Design Conditions DB/MCWB, !- Name", - " 7, !- Month", - " 21, !- Day of Month", - " SummerDesignDay, !- Day Type", - " 31.5, !- Maximum Dry-Bulb Temperature {C}", - " 10.7, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " 23.0, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 5.3, !- Wind Speed {m/s}", - " 230, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 1.0; !- Sky Clearness", - - " Site:GroundTemperature:BuildingSurface,20.03,20.03,20.13,20.30,20.43,20.52,20.62,20.77,20.78,20.55,20.44,20.20;", - - " Material,", - " A1 - 1 IN STUCCO, !- Name", - " Smooth, !- Roughness", - " 2.5389841E-02, !- Thickness {m}", - " 0.6918309, !- Conductivity {W/m-K}", - " 1858.142, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.9200000, !- Solar Absorptance", - " 0.9200000; !- Visible Absorptance", - - " Material,", - " CB11, !- Name", - " MediumRough, !- Roughness", - " 0.2032000, !- Thickness {m}", - " 1.048000, !- Conductivity {W/m-K}", - " 1105.000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.2000000, !- Solar Absorptance", - " 0.2000000; !- Visible Absorptance", - - " Material,", - " GP01, !- Name", - " MediumSmooth, !- Roughness", - " 1.2700000E-02, !- Thickness {m}", - " 0.1600000, !- Conductivity {W/m-K}", - " 801.0000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " IN02, !- Name", - " Rough, !- Roughness", - " 9.0099998E-02, !- Thickness {m}", - " 4.3000001E-02, !- Conductivity {W/m-K}", - " 10.00000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " IN05, !- Name", - " Rough, !- Roughness", - " 0.2458000, !- Thickness {m}", - " 4.3000001E-02, !- Conductivity {W/m-K}", - " 10.00000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " PW03, !- Name", - " MediumSmooth, !- Roughness", - " 1.2700000E-02, !- Thickness {m}", - " 0.1150000, !- Conductivity {W/m-K}", - " 545.0000, !- Density {kg/m3}", - " 1213.000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7800000, !- Solar Absorptance", - " 0.7800000; !- Visible Absorptance", - - " Material,", - " CC03, !- Name", - " MediumRough, !- Roughness", - " 0.1016000, !- Thickness {m}", - " 1.310000, !- Conductivity {W/m-K}", - " 2243.000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - - " Material,", - " HF-A3, !- Name", - " Smooth, !- Roughness", - " 1.5000000E-03, !- Thickness {m}", - " 44.96960, !- Conductivity {W/m-K}", - " 7689.000, !- Density {kg/m3}", - " 418.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.2000000, !- Solar Absorptance", - " 0.2000000; !- Visible Absorptance", - - " Material:NoMass,", - " AR02, !- Name", - " VeryRough, !- Roughness", - " 7.8000002E-02, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7000000, !- Solar Absorptance", - " 0.7000000; !- Visible Absorptance", - - " Material:NoMass,", - " CP02, !- Name", - " Rough, !- Roughness", - " 0.2170000, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Construction,", - " EXTWALL:LIVING, !- Name", - " A1 - 1 IN STUCCO, !- Outside Layer", - " GP01; !- Layer 3", - - " Construction,", - " FLOOR:LIVING, !- Name", - " CC03, !- Outside Layer", - " CP02; !- Layer 2", - - " Construction,", - " ROOF, !- Name", - " AR02, !- Outside Layer", - " PW03; !- Layer 2", - - " Zone,", - " LIVING ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " CounterClockWise, !- Vertex Entry Direction", - " World; !- Coordinate System", - - " BuildingSurface:Detailed,", - " Living:North, !- Name", - " Wall, !- Surface Type", - " EXTWALL:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 1,1,1, !- X,Y,Z ==> Vertex 1 {m}", - " 1,1,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,1,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,1,1; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Living:East, !- Name", - " Wall, !- Surface Type", - " EXTWALL:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 1,0,1, !- X,Y,Z ==> Vertex 1 {m}", - " 1,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 1,1,0, !- X,Y,Z ==> Vertex 3 {m}", - " 1,1,1; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Living:South, !- Name", - " Wall, !- Surface Type", - " EXTWALL:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,1, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 1,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 1,0,1; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Living:West, !- Name", - " Wall, !- Surface Type", - " EXTWALL:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,1,1, !- X,Y,Z ==> Vertex 1 {m}", - " 0,1,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,0,1; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Living:Floor, !- Name", - " FLOOR, !- Surface Type", - " FLOOR:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Living:Floor, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,0, !- X,Y,Z ==> Vertex 1 {m}", - " 0,1,0, !- X,Y,Z ==> Vertex 2 {m}", - " 1,1,0, !- X,Y,Z ==> Vertex 3 {m}", - " 1,0,0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Living:Ceiling, !- Name", - " ROOF, !- Surface Type", - " ROOF, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,1,1, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,1, !- X,Y,Z ==> Vertex 2 {m}", - " 1,0,1, !- X,Y,Z ==> Vertex 3 {m}", - " 1,1,1; !- X,Y,Z ==> Vertex 4 {m}", - - " ZoneProperty:LocalEnvironment,", - " LocEnv:LIVING ZONE, !- Name", - " LIVING ZONE, !- Exterior Surface Name", - " OutdoorAirNode:0001; !- Outdoor Air Node Name", - - " OutdoorAir:Node,", - " OutdoorAirNode:0001, !- Name", - " , !- Height Above Ground", - " OutdoorAirNodeDryBulb:0001, !- Drybulb Temperature Schedule Name", - " OutdoorAirNodeWetBulb:0001, !- Wetbulb Schedule Name", - " OutdoorAirNodeWindSpeed:0001, !- Wind Speed Schedule Name", - " OutdoorAirNodeWindDir:0001; !- Wind Direction Schedule Name", - - " ScheduleTypeLimits,", - " Any Number; !- Name", - - " Schedule:Compact,", - " OutdoorAirNodeDryBulb:0001, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00, 15.0; !- Field 3", - - " Schedule:Compact,", - " OutdoorAirNodeWetBulb:0001, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00, 12.0; !- Field 3", - - " Schedule:Compact,", - " OutdoorAirNodeWindSpeed:0001, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00, 1.23; !- Field 3", - - " Schedule:Compact,", - " OutdoorAirNodeWindDir:0001, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", + " Building,", + " House with Local Air Nodes, !- Name", + " 0, !- North Axis {deg}", + " Suburbs, !- Terrain", + " 0.001, !- Loads Convergence Tolerance Value", + " 0.0050000, !- Temperature Convergence Tolerance Value {deltaC}", + " FullInteriorAndExterior, !- Solar Distribution", + " 25, !- Maximum Number of Warmup Days", + " 6; !- Minimum Number of Warmup Days", + + " Timestep,6;", + + " SurfaceConvectionAlgorithm:Inside,TARP;", + + " SurfaceConvectionAlgorithm:Outside,DOE-2;", + + " HeatBalanceAlgorithm,ConductionTransferFunction;", + + " Output:DebuggingData,0,0;", + + " SimulationControl,", + " No, !- Do Zone Sizing Calculation", + " No, !- Do System Sizing Calculation", + " No, !- Do Plant Sizing Calculation", + " Yes, !- Run Simulation for Sizing Periods", + " Yes; !- Run Simulation for Weather File Run Periods", + + " RunPeriod,", + " , !- Name", + " 1, !- Begin Month", + " 14, !- Begin Day of Month", + " , !- Begin Year", + " 1, !- End Month", + " 14, !- End Day of Month", + " , !- End Year", + " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " Yes; !- Use Weather File Snow Indicators", + + " RunPeriod,", + " , !- Name", + " 7, !- Begin Month", + " 7, !- Begin Day of Month", + " , !- Begin Year", + " 7, !- End Month", + " 7, !- End Day of Month", + " , !- End Year", + " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " No; !- Use Weather File Snow Indicators", + + " Site:Location,", + " CHICAGO_IL_USA TMY2-94846, !- Name", + " 41.78, !- Latitude {deg}", + " -87.75, !- Longitude {deg}", + " -6.00, !- Time Zone {hr}", + " 190.00; !- Elevation {m}", + + " SizingPeriod:DesignDay,", + " CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, !- Name", + " 1, !- Month", + " 21, !- Day of Month", + " WinterDesignDay, !- Day Type", + " -17.3, !- Maximum Dry-Bulb Temperature {C}", + " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 4.9, !- Wind Speed {m/s}", + " 270, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 0.0; !- Sky Clearness", + + " SizingPeriod:DesignDay,", + " CHICAGO_IL_USA Annual Cooling 1% Design Conditions DB/MCWB, !- Name", + " 7, !- Month", + " 21, !- Day of Month", + " SummerDesignDay, !- Day Type", + " 31.5, !- Maximum Dry-Bulb Temperature {C}", + " 10.7, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " 23.0, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 5.3, !- Wind Speed {m/s}", + " 230, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 1.0; !- Sky Clearness", + + " Site:GroundTemperature:BuildingSurface,20.03,20.03,20.13,20.30,20.43,20.52,20.62,20.77,20.78,20.55,20.44,20.20;", + + " Material,", + " A1 - 1 IN STUCCO, !- Name", + " Smooth, !- Roughness", + " 2.5389841E-02, !- Thickness {m}", + " 0.6918309, !- Conductivity {W/m-K}", + " 1858.142, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.9200000, !- Solar Absorptance", + " 0.9200000; !- Visible Absorptance", + + " Material,", + " CB11, !- Name", + " MediumRough, !- Roughness", + " 0.2032000, !- Thickness {m}", + " 1.048000, !- Conductivity {W/m-K}", + " 1105.000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.2000000, !- Solar Absorptance", + " 0.2000000; !- Visible Absorptance", + + " Material,", + " GP01, !- Name", + " MediumSmooth, !- Roughness", + " 1.2700000E-02, !- Thickness {m}", + " 0.1600000, !- Conductivity {W/m-K}", + " 801.0000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " IN02, !- Name", + " Rough, !- Roughness", + " 9.0099998E-02, !- Thickness {m}", + " 4.3000001E-02, !- Conductivity {W/m-K}", + " 10.00000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " IN05, !- Name", + " Rough, !- Roughness", + " 0.2458000, !- Thickness {m}", + " 4.3000001E-02, !- Conductivity {W/m-K}", + " 10.00000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " PW03, !- Name", + " MediumSmooth, !- Roughness", + " 1.2700000E-02, !- Thickness {m}", + " 0.1150000, !- Conductivity {W/m-K}", + " 545.0000, !- Density {kg/m3}", + " 1213.000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7800000, !- Solar Absorptance", + " 0.7800000; !- Visible Absorptance", + + " Material,", + " CC03, !- Name", + " MediumRough, !- Roughness", + " 0.1016000, !- Thickness {m}", + " 1.310000, !- Conductivity {W/m-K}", + " 2243.000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + + " Material,", + " HF-A3, !- Name", + " Smooth, !- Roughness", + " 1.5000000E-03, !- Thickness {m}", + " 44.96960, !- Conductivity {W/m-K}", + " 7689.000, !- Density {kg/m3}", + " 418.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.2000000, !- Solar Absorptance", + " 0.2000000; !- Visible Absorptance", + + " Material:NoMass,", + " AR02, !- Name", + " VeryRough, !- Roughness", + " 7.8000002E-02, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7000000, !- Solar Absorptance", + " 0.7000000; !- Visible Absorptance", + + " Material:NoMass,", + " CP02, !- Name", + " Rough, !- Roughness", + " 0.2170000, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Construction,", + " EXTWALL:LIVING, !- Name", + " A1 - 1 IN STUCCO, !- Outside Layer", + " GP01; !- Layer 3", + + " Construction,", + " FLOOR:LIVING, !- Name", + " CC03, !- Outside Layer", + " CP02; !- Layer 2", + + " Construction,", + " ROOF, !- Name", + " AR02, !- Outside Layer", + " PW03; !- Layer 2", + + " Zone,", + " LIVING ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " CounterClockWise, !- Vertex Entry Direction", + " World; !- Coordinate System", + + " BuildingSurface:Detailed,", + " Living:North, !- Name", + " Wall, !- Surface Type", + " EXTWALL:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 1,1,1, !- X,Y,Z ==> Vertex 1 {m}", + " 1,1,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,1,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,1,1; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Living:East, !- Name", + " Wall, !- Surface Type", + " EXTWALL:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 1,0,1, !- X,Y,Z ==> Vertex 1 {m}", + " 1,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 1,1,0, !- X,Y,Z ==> Vertex 3 {m}", + " 1,1,1; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Living:South, !- Name", + " Wall, !- Surface Type", + " EXTWALL:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,1, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 1,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 1,0,1; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Living:West, !- Name", + " Wall, !- Surface Type", + " EXTWALL:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,1,1, !- X,Y,Z ==> Vertex 1 {m}", + " 0,1,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,0,1; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Living:Floor, !- Name", + " FLOOR, !- Surface Type", + " FLOOR:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Living:Floor, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,0, !- X,Y,Z ==> Vertex 1 {m}", + " 0,1,0, !- X,Y,Z ==> Vertex 2 {m}", + " 1,1,0, !- X,Y,Z ==> Vertex 3 {m}", + " 1,0,0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Living:Ceiling, !- Name", + " ROOF, !- Surface Type", + " ROOF, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,1,1, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,1, !- X,Y,Z ==> Vertex 2 {m}", + " 1,0,1, !- X,Y,Z ==> Vertex 3 {m}", + " 1,1,1; !- X,Y,Z ==> Vertex 4 {m}", + + " ZoneProperty:LocalEnvironment,", + " LocEnv:LIVING ZONE, !- Name", + " LIVING ZONE, !- Exterior Surface Name", + " OutdoorAirNode:0001; !- Outdoor Air Node Name", + + " OutdoorAir:Node,", + " OutdoorAirNode:0001, !- Name", + " , !- Height Above Ground", + " OutdoorAirNodeDryBulb:0001, !- Drybulb Temperature Schedule Name", + " OutdoorAirNodeWetBulb:0001, !- Wetbulb Schedule Name", + " OutdoorAirNodeWindSpeed:0001, !- Wind Speed Schedule Name", + " OutdoorAirNodeWindDir:0001; !- Wind Direction Schedule Name", + + " ScheduleTypeLimits,", + " Any Number; !- Name", + + " Schedule:Compact,", + " OutdoorAirNodeDryBulb:0001, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00, 15.0; !- Field 3", + + " Schedule:Compact,", + " OutdoorAirNodeWetBulb:0001, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00, 12.0; !- Field 3", + + " Schedule:Compact,", + " OutdoorAirNodeWindSpeed:0001, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00, 1.23; !- Field 3", + + " Schedule:Compact,", + " OutdoorAirNodeWindDir:0001, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", " Until: 24:00, 90; !- Field 3"}); - ASSERT_TRUE( process_idf( idf_objects ) ); - bool ErrorsFound = false; - - ScheduleManager::ProcessScheduleInput(); - - HeatBalanceManager::GetProjectControlData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetZoneData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetMaterialData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetConstructData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - - EXPECT_TRUE( DataGlobals::AnyLocalEnvironmentsInModel ); - - DataZoneEquipment::ZoneEquipConfig.allocate(1); - DataZoneEquipment::ZoneEquipConfig(1).ZoneName = "LIVING ZONE"; - DataZoneEquipment::ZoneEquipConfig(1).ActualZoneNum = 1; - std::vector< int > controlledZoneEquipConfigNums; - controlledZoneEquipConfigNums.push_back(1); - DataHeatBalance::Zone(1).IsControlled = true; - - DataZoneEquipment::ZoneEquipConfig(1).NumInletNodes = 2; - DataZoneEquipment::ZoneEquipConfig(1).InletNode.allocate(2); - DataZoneEquipment::ZoneEquipConfig(1).InletNode(1) = 1; - DataZoneEquipment::ZoneEquipConfig(1).InletNode(2) = 2; - DataZoneEquipment::ZoneEquipConfig(1).NumExhaustNodes = 1; - DataZoneEquipment::ZoneEquipConfig(1).ExhaustNode.allocate(1); - DataZoneEquipment::ZoneEquipConfig(1).ExhaustNode(1) = 3; - DataZoneEquipment::ZoneEquipConfig( 1 ).NumReturnNodes = 1; - DataZoneEquipment::ZoneEquipConfig( 1 ).ReturnNode.allocate( 1 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).ReturnNode( 1 ) = 4; - - DataHeatBalance::TempEffBulkAir.allocate(6); - - DataHeatBalance::HConvIn.allocate(6); - DataHeatBalance::HConvIn(1) = 0.5; - DataHeatBalance::HConvIn(2) = 0.5; - DataHeatBalance::HConvIn(3) = 0.5; - DataHeatBalance::HConvIn(4) = 0.5; - DataHeatBalance::HConvIn(5) = 0.5; - DataHeatBalance::HConvIn(6) = 0.5; - - DataGlobals::KickOffSimulation = true; - DataHeatBalFanSys::ZoneLatentGain.allocate(1); - DataGlobals::TimeStepZoneSec = 900; - DataHeatBalance::ZoneWinHeatGain.allocate(1); - DataHeatBalance::ZoneWinHeatGainRep.allocate(1); - DataHeatBalance::ZoneWinHeatGainRepEnergy.allocate(1); - - // Set up - OutAirNodeManager::GetOutAirNodesInput(); - DataEnvironment::OutBaroPress = 101325; - ScheduleManager::Schedule( 1 ).CurrentValue = 25.0; - ScheduleManager::Schedule( 2 ).CurrentValue = 20.0; - ScheduleManager::Schedule( 3 ).CurrentValue = 1.5; - ScheduleManager::Schedule( 4 ).CurrentValue = 90.0; - - OutAirNodeManager::InitOutAirNodes(); - - // Test if local nodes data correctly overwritten - EXPECT_EQ( 25.0, DataLoopNode::Node( 1 ).OutAirDryBulb ); - EXPECT_EQ( 20.0, DataLoopNode::Node( 1 ).OutAirWetBulb); - EXPECT_EQ( 1.5, DataLoopNode::Node( 1 ).OutAirWindSpeed ); - EXPECT_EQ( 90.0, DataLoopNode::Node( 1 ).OutAirWindDir ); - EXPECT_DOUBLE_EQ( 0.012611481326656135, DataLoopNode::Node( 1 ).HumRat ); - EXPECT_DOUBLE_EQ( 57247.660939392081, DataLoopNode::Node( 1 ).Enthalpy ); - - InitHeatBalance(); - - // Test if local value correctly overwritten - EXPECT_EQ( 25.0, Zone( 1 ).OutDryBulbTemp ); - EXPECT_EQ( 20.0, Zone( 1 ).OutWetBulbTemp ); - EXPECT_EQ( 1.5, Zone( 1 ).WindSpeed ); - EXPECT_EQ( 90.0, Zone( 1 ).WindDir ); - } - - TEST_F( EnergyPlusFixture, HeatBalanceManager_HVACSystemRootFindingAlgorithmInputTest ) - { - // Test eio output for HVACSystemRootFindingAlgorithm - - std::string const idf_objects = delimited_string( { - "Version,8.9;", - "Building,", - "My Building, !- Name", - "30., !- North Axis{ deg }", - "City, !- Terrain", - "0.04, !- Loads Convergence Tolerance Value", - "0.4, !- Temperature Convergence Tolerance Value{ deltaC }", - "FullExterior, !- Solar Distribution", - "25, !- Maximum Number of Warmup Days", - "6; !- Minimum Number of Warmup Days", - "ZoneAirMassFlowConservation,", - "No, !- Adjust Zone Mixing For Zone Air Mass Flow Balance", - "None, !- Infiltration Balancing Method", - "; !- Infiltration Balancing Zones", - " HVACSystemRootFindingAlgorithm,", - " RegulaFalsiThenBisection,!- Algorithm", - " 5; !- Number of Iterations Before Algorithm Switch", - - } ); - - ASSERT_TRUE( process_idf( idf_objects ) ); - - bool ErrorsFound( false ); // If errors detected in input - ErrorsFound = false; - GetProjectControlData( ErrorsFound ); // returns ErrorsFound false - EXPECT_FALSE( ErrorsFound ); - EXPECT_EQ( DataHVACGlobals::HVACSystemRootFinding.Algorithm, "REGULAFALSITHENBISECTION" ); - } - - TEST_F( EnergyPlusFixture, HeatBalanceManager_HVACSystemRootFindingAlgorithmNoInputTest ) - { - // Test that root solver algorithm is RegulaFalsi when no HVACSystemRootFindingAlgorithm object exists - - std::string const idf_objects = delimited_string( { - "Version,8.9;", - "Building,", - "My Building, !- Name", - "30., !- North Axis{ deg }", - "City, !- Terrain", - "0.04, !- Loads Convergence Tolerance Value", - "0.4, !- Temperature Convergence Tolerance Value{ deltaC }", - "FullExterior, !- Solar Distribution", - "25, !- Maximum Number of Warmup Days", - "6; !- Minimum Number of Warmup Days", - "ZoneAirMassFlowConservation,", - "No, !- Adjust Zone Mixing For Zone Air Mass Flow Balance", - "None, !- Infiltration Balancing Method", - "; !- Infiltration Balancing Zones", - - } ); - - ASSERT_TRUE( process_idf( idf_objects ) ); - - bool ErrorsFound( false ); // If errors detected in input - ErrorsFound = false; - GetProjectControlData( ErrorsFound ); // returns ErrorsFound false - EXPECT_FALSE( ErrorsFound ); - EXPECT_EQ( DataHVACGlobals::HVACSystemRootFinding.Algorithm, "RegulaFalsi" ); - } + ASSERT_TRUE(process_idf(idf_objects)); + bool ErrorsFound = false; + + ScheduleManager::ProcessScheduleInput(); + + HeatBalanceManager::GetProjectControlData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetZoneData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetMaterialData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetConstructData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + + EXPECT_TRUE(DataGlobals::AnyLocalEnvironmentsInModel); + + DataZoneEquipment::ZoneEquipConfig.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).ZoneName = "LIVING ZONE"; + DataZoneEquipment::ZoneEquipConfig(1).ActualZoneNum = 1; + std::vector controlledZoneEquipConfigNums; + controlledZoneEquipConfigNums.push_back(1); + DataHeatBalance::Zone(1).IsControlled = true; + + DataZoneEquipment::ZoneEquipConfig(1).NumInletNodes = 2; + DataZoneEquipment::ZoneEquipConfig(1).InletNode.allocate(2); + DataZoneEquipment::ZoneEquipConfig(1).InletNode(1) = 1; + DataZoneEquipment::ZoneEquipConfig(1).InletNode(2) = 2; + DataZoneEquipment::ZoneEquipConfig(1).NumExhaustNodes = 1; + DataZoneEquipment::ZoneEquipConfig(1).ExhaustNode.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).ExhaustNode(1) = 3; + DataZoneEquipment::ZoneEquipConfig(1).NumReturnNodes = 1; + DataZoneEquipment::ZoneEquipConfig(1).ReturnNode.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).ReturnNode(1) = 4; + + DataHeatBalance::TempEffBulkAir.allocate(6); + + DataHeatBalance::HConvIn.allocate(6); + DataHeatBalance::HConvIn(1) = 0.5; + DataHeatBalance::HConvIn(2) = 0.5; + DataHeatBalance::HConvIn(3) = 0.5; + DataHeatBalance::HConvIn(4) = 0.5; + DataHeatBalance::HConvIn(5) = 0.5; + DataHeatBalance::HConvIn(6) = 0.5; + + DataGlobals::KickOffSimulation = true; + DataHeatBalFanSys::ZoneLatentGain.allocate(1); + DataGlobals::TimeStepZoneSec = 900; + DataHeatBalance::ZoneWinHeatGain.allocate(1); + DataHeatBalance::ZoneWinHeatGainRep.allocate(1); + DataHeatBalance::ZoneWinHeatGainRepEnergy.allocate(1); + + // Set up + OutAirNodeManager::GetOutAirNodesInput(); + DataEnvironment::OutBaroPress = 101325; + ScheduleManager::Schedule(1).CurrentValue = 25.0; + ScheduleManager::Schedule(2).CurrentValue = 20.0; + ScheduleManager::Schedule(3).CurrentValue = 1.5; + ScheduleManager::Schedule(4).CurrentValue = 90.0; + + OutAirNodeManager::InitOutAirNodes(); + + // Test if local nodes data correctly overwritten + EXPECT_EQ(25.0, DataLoopNode::Node(1).OutAirDryBulb); + EXPECT_EQ(20.0, DataLoopNode::Node(1).OutAirWetBulb); + EXPECT_EQ(1.5, DataLoopNode::Node(1).OutAirWindSpeed); + EXPECT_EQ(90.0, DataLoopNode::Node(1).OutAirWindDir); + EXPECT_DOUBLE_EQ(0.012611481326656135, DataLoopNode::Node(1).HumRat); + EXPECT_DOUBLE_EQ(57247.660939392081, DataLoopNode::Node(1).Enthalpy); + + InitHeatBalance(); + + // Test if local value correctly overwritten + EXPECT_EQ(25.0, Zone(1).OutDryBulbTemp); + EXPECT_EQ(20.0, Zone(1).OutWetBulbTemp); + EXPECT_EQ(1.5, Zone(1).WindSpeed); + EXPECT_EQ(90.0, Zone(1).WindDir); +} + +TEST_F(EnergyPlusFixture, HeatBalanceManager_HVACSystemRootFindingAlgorithmInputTest) +{ + // Test eio output for HVACSystemRootFindingAlgorithm + + std::string const idf_objects = delimited_string({ + "Version,8.9;", + "Building,", + "My Building, !- Name", + "30., !- North Axis{ deg }", + "City, !- Terrain", + "0.04, !- Loads Convergence Tolerance Value", + "0.4, !- Temperature Convergence Tolerance Value{ deltaC }", + "FullExterior, !- Solar Distribution", + "25, !- Maximum Number of Warmup Days", + "6; !- Minimum Number of Warmup Days", + "ZoneAirMassFlowConservation,", + "No, !- Adjust Zone Mixing For Zone Air Mass Flow Balance", + "None, !- Infiltration Balancing Method", + "; !- Infiltration Balancing Zones", + " HVACSystemRootFindingAlgorithm,", + " RegulaFalsiThenBisection,!- Algorithm", + " 5; !- Number of Iterations Before Algorithm Switch", + + }); + + ASSERT_TRUE(process_idf(idf_objects)); + + bool ErrorsFound(false); // If errors detected in input + ErrorsFound = false; + GetProjectControlData(ErrorsFound); // returns ErrorsFound false + EXPECT_FALSE(ErrorsFound); + EXPECT_EQ(DataHVACGlobals::HVACSystemRootFinding.Algorithm, "REGULAFALSITHENBISECTION"); +} + +TEST_F(EnergyPlusFixture, HeatBalanceManager_HVACSystemRootFindingAlgorithmNoInputTest) +{ + // Test that root solver algorithm is RegulaFalsi when no HVACSystemRootFindingAlgorithm object exists + + std::string const idf_objects = delimited_string({ + "Version,8.9;", + "Building,", + "My Building, !- Name", + "30., !- North Axis{ deg }", + "City, !- Terrain", + "0.04, !- Loads Convergence Tolerance Value", + "0.4, !- Temperature Convergence Tolerance Value{ deltaC }", + "FullExterior, !- Solar Distribution", + "25, !- Maximum Number of Warmup Days", + "6; !- Minimum Number of Warmup Days", + "ZoneAirMassFlowConservation,", + "No, !- Adjust Zone Mixing For Zone Air Mass Flow Balance", + "None, !- Infiltration Balancing Method", + "; !- Infiltration Balancing Zones", + + }); + + ASSERT_TRUE(process_idf(idf_objects)); + + bool ErrorsFound(false); // If errors detected in input + ErrorsFound = false; + GetProjectControlData(ErrorsFound); // returns ErrorsFound false + EXPECT_FALSE(ErrorsFound); + EXPECT_EQ(DataHVACGlobals::HVACSystemRootFinding.Algorithm, "RegulaFalsi"); +} } // namespace EnergyPlus diff --git a/tst/EnergyPlus/unit/HeatBalanceSurfaceManager.unit.cc b/tst/EnergyPlus/unit/HeatBalanceSurfaceManager.unit.cc index 59d087b00bc..2e47fb67aeb 100644 --- a/tst/EnergyPlus/unit/HeatBalanceSurfaceManager.unit.cc +++ b/tst/EnergyPlus/unit/HeatBalanceSurfaceManager.unit.cc @@ -77,2404 +77,2404 @@ using namespace EnergyPlus::HeatBalanceSurfaceManager; namespace EnergyPlus { - TEST_F( EnergyPlusFixture, HeatBalanceSurfaceManager_CalcOutsideSurfTemp ) - { - - int SurfNum; // Surface number DO loop counter - int ZoneNum; // Zone number the current surface is attached to - int ConstrNum; // Construction index for the current surface - Real64 HMovInsul; // "Convection" coefficient of movable insulation - Real64 TempExt; // Exterior temperature boundary condition - bool ErrorFlag; // Movable insulation error flag - - SurfNum = 1; - ZoneNum = 1; - ConstrNum = 1; - HMovInsul = 1.0; - TempExt = 23.0; - ErrorFlag = false; - - DataHeatBalance::Construct.allocate( ConstrNum ); - DataHeatBalance::Construct( ConstrNum ).Name = "TestConstruct"; - DataHeatBalance::Construct( ConstrNum ).CTFCross( 0 ) = 0.0; - DataHeatBalance::Construct( ConstrNum ).CTFOutside( 0 ) = 1.0; - DataHeatBalance::Construct( ConstrNum ).SourceSinkPresent = true; - DataHeatBalance::Material.allocate( 1 ); - DataHeatBalance::Material( 1 ).Name = "TestMaterial"; - - DataHeatBalSurface::HcExtSurf.allocate( SurfNum ); - DataHeatBalSurface::HcExtSurf( SurfNum ) = 1.0; - DataHeatBalSurface::HAirExtSurf.allocate( SurfNum ); - DataHeatBalSurface::HAirExtSurf( SurfNum ) = 1.0; - DataHeatBalSurface::HSkyExtSurf.allocate( SurfNum ); - DataHeatBalSurface::HSkyExtSurf( SurfNum ) = 1.0; - DataHeatBalSurface::HGrdExtSurf.allocate( SurfNum ); - DataHeatBalSurface::HGrdExtSurf( SurfNum ) = 1.0; - - DataHeatBalSurface::CTFConstOutPart.allocate( SurfNum ); - DataHeatBalSurface::CTFConstOutPart( SurfNum ) = 1.0; - DataHeatBalSurface::QRadSWOutAbs.allocate( SurfNum ); - DataHeatBalSurface::QRadSWOutAbs( SurfNum ) = 1.0; - DataHeatBalSurface::TempSurfIn.allocate( SurfNum ); - DataHeatBalSurface::TempSurfIn( SurfNum ) = 1.0; - DataHeatBalSurface::QRadSWOutMvIns.allocate( SurfNum ); - DataHeatBalSurface::QRadSWOutMvIns( SurfNum ) = 1.0; - DataHeatBalSurface::QRadLWOutSrdSurfs.allocate( SurfNum ); - DataHeatBalSurface::QRadLWOutSrdSurfs( SurfNum ) = 1.0; - DataHeatBalSurface::QAdditionalHeatSourceOutside.allocate( SurfNum ); - DataHeatBalSurface::QAdditionalHeatSourceOutside( SurfNum ) = 0.0; - - DataHeatBalSurface::TH.allocate( 2,2,1 ); - DataSurfaces::Surface.allocate( SurfNum ); - DataSurfaces::Surface( SurfNum ).Class = 1; - DataSurfaces::Surface( SurfNum ).Area = 10.0; - DataSurfaces::Surface( SurfNum ).MaterialMovInsulExt = 1; - - DataEnvironment::SkyTemp = 23.0; - DataEnvironment::OutDryBulbTemp = 23.0; - - DataHeatBalSurface::QdotRadOutRep.allocate( SurfNum ); - DataHeatBalSurface::QdotRadOutRepPerArea.allocate( SurfNum ); - DataHeatBalSurface::QRadOutReport.allocate( SurfNum ); - DataGlobals::TimeStepZoneSec = 900.0; - - CalcOutsideSurfTemp( SurfNum, ZoneNum, ConstrNum, HMovInsul, TempExt, ErrorFlag ); - - std::string const error_string = delimited_string( { - " ** Severe ** Exterior movable insulation is not valid with embedded sources/sinks", - " ** ~~~ ** Construction TestConstruct contains an internal source or sink but also uses", - " ** ~~~ ** exterior movable insulation TestMaterial for a surface with that construction.", - " ** ~~~ ** This is not currently allowed because the heat balance equations do not currently accommodate this combination.", - } ); - - EXPECT_TRUE( ErrorFlag ); - EXPECT_TRUE( compare_err_stream( error_string, true ) ); - } - - TEST_F( EnergyPlusFixture, HeatBalanceSurfaceManager_TestSurfTempCalcHeatBalanceInsideSurf ) - { - - Real64 surfTemp; - DataSurfaces::SurfaceData testSurface; - DataHeatBalance::ZoneData testZone; - int cntWarmupSurfTemp = 0; - testSurface.Name = "TestSurface"; - testZone.Name = "TestZone"; - testZone.InternalHeatGains = 2.5; - testZone.NominalInfilVent = 0.5; - testZone.NominalMixing = 0.7; - - // no error - surfTemp = 26; - DataGlobals::WarmupFlag = true; - testSurface.LowTempErrCount = 0; - testSurface.HighTempErrCount = 0; - testZone.TempOutOfBoundsReported = true; - testZone.FloorArea = 1000; - testZone.IsControlled = true; - TestSurfTempCalcHeatBalanceInsideSurf( surfTemp, testSurface, testZone, cntWarmupSurfTemp ); - EXPECT_TRUE( compare_err_stream( "", true ) ); - - // to hot - first time - surfTemp = 201; - DataGlobals::WarmupFlag = false; - testSurface.LowTempErrCount = 0; - testSurface.HighTempErrCount = 0; - testZone.TempOutOfBoundsReported = false; - testZone.FloorArea = 1000; - testZone.IsControlled = true; - TestSurfTempCalcHeatBalanceInsideSurf( surfTemp, testSurface, testZone, cntWarmupSurfTemp ); +TEST_F(EnergyPlusFixture, HeatBalanceSurfaceManager_CalcOutsideSurfTemp) +{ + + int SurfNum; // Surface number DO loop counter + int ZoneNum; // Zone number the current surface is attached to + int ConstrNum; // Construction index for the current surface + Real64 HMovInsul; // "Convection" coefficient of movable insulation + Real64 TempExt; // Exterior temperature boundary condition + bool ErrorFlag; // Movable insulation error flag + + SurfNum = 1; + ZoneNum = 1; + ConstrNum = 1; + HMovInsul = 1.0; + TempExt = 23.0; + ErrorFlag = false; + + DataHeatBalance::Construct.allocate(ConstrNum); + DataHeatBalance::Construct(ConstrNum).Name = "TestConstruct"; + DataHeatBalance::Construct(ConstrNum).CTFCross(0) = 0.0; + DataHeatBalance::Construct(ConstrNum).CTFOutside(0) = 1.0; + DataHeatBalance::Construct(ConstrNum).SourceSinkPresent = true; + DataHeatBalance::Material.allocate(1); + DataHeatBalance::Material(1).Name = "TestMaterial"; + + DataHeatBalSurface::HcExtSurf.allocate(SurfNum); + DataHeatBalSurface::HcExtSurf(SurfNum) = 1.0; + DataHeatBalSurface::HAirExtSurf.allocate(SurfNum); + DataHeatBalSurface::HAirExtSurf(SurfNum) = 1.0; + DataHeatBalSurface::HSkyExtSurf.allocate(SurfNum); + DataHeatBalSurface::HSkyExtSurf(SurfNum) = 1.0; + DataHeatBalSurface::HGrdExtSurf.allocate(SurfNum); + DataHeatBalSurface::HGrdExtSurf(SurfNum) = 1.0; + + DataHeatBalSurface::CTFConstOutPart.allocate(SurfNum); + DataHeatBalSurface::CTFConstOutPart(SurfNum) = 1.0; + DataHeatBalSurface::QRadSWOutAbs.allocate(SurfNum); + DataHeatBalSurface::QRadSWOutAbs(SurfNum) = 1.0; + DataHeatBalSurface::TempSurfIn.allocate(SurfNum); + DataHeatBalSurface::TempSurfIn(SurfNum) = 1.0; + DataHeatBalSurface::QRadSWOutMvIns.allocate(SurfNum); + DataHeatBalSurface::QRadSWOutMvIns(SurfNum) = 1.0; + DataHeatBalSurface::QRadLWOutSrdSurfs.allocate(SurfNum); + DataHeatBalSurface::QRadLWOutSrdSurfs(SurfNum) = 1.0; + DataHeatBalSurface::QAdditionalHeatSourceOutside.allocate(SurfNum); + DataHeatBalSurface::QAdditionalHeatSourceOutside(SurfNum) = 0.0; + + DataHeatBalSurface::TH.allocate(2, 2, 1); + DataSurfaces::Surface.allocate(SurfNum); + DataSurfaces::Surface(SurfNum).Class = 1; + DataSurfaces::Surface(SurfNum).Area = 10.0; + DataSurfaces::Surface(SurfNum).MaterialMovInsulExt = 1; + + DataEnvironment::SkyTemp = 23.0; + DataEnvironment::OutDryBulbTemp = 23.0; + + DataHeatBalSurface::QdotRadOutRep.allocate(SurfNum); + DataHeatBalSurface::QdotRadOutRepPerArea.allocate(SurfNum); + DataHeatBalSurface::QRadOutReport.allocate(SurfNum); + DataGlobals::TimeStepZoneSec = 900.0; + + CalcOutsideSurfTemp(SurfNum, ZoneNum, ConstrNum, HMovInsul, TempExt, ErrorFlag); + + std::string const error_string = delimited_string({ + " ** Severe ** Exterior movable insulation is not valid with embedded sources/sinks", + " ** ~~~ ** Construction TestConstruct contains an internal source or sink but also uses", + " ** ~~~ ** exterior movable insulation TestMaterial for a surface with that construction.", + " ** ~~~ ** This is not currently allowed because the heat balance equations do not currently accommodate this combination.", + }); + + EXPECT_TRUE(ErrorFlag); + EXPECT_TRUE(compare_err_stream(error_string, true)); +} + +TEST_F(EnergyPlusFixture, HeatBalanceSurfaceManager_TestSurfTempCalcHeatBalanceInsideSurf) +{ + + Real64 surfTemp; + DataSurfaces::SurfaceData testSurface; + DataHeatBalance::ZoneData testZone; + int cntWarmupSurfTemp = 0; + testSurface.Name = "TestSurface"; + testZone.Name = "TestZone"; + testZone.InternalHeatGains = 2.5; + testZone.NominalInfilVent = 0.5; + testZone.NominalMixing = 0.7; + + // no error + surfTemp = 26; + DataGlobals::WarmupFlag = true; + testSurface.LowTempErrCount = 0; + testSurface.HighTempErrCount = 0; + testZone.TempOutOfBoundsReported = true; + testZone.FloorArea = 1000; + testZone.IsControlled = true; + TestSurfTempCalcHeatBalanceInsideSurf(surfTemp, testSurface, testZone, cntWarmupSurfTemp); + EXPECT_TRUE(compare_err_stream("", true)); + + // to hot - first time + surfTemp = 201; + DataGlobals::WarmupFlag = false; + testSurface.LowTempErrCount = 0; + testSurface.HighTempErrCount = 0; + testZone.TempOutOfBoundsReported = false; + testZone.FloorArea = 1000; + testZone.IsControlled = true; + TestSurfTempCalcHeatBalanceInsideSurf(surfTemp, testSurface, testZone, cntWarmupSurfTemp); std::string const error_string01 = delimited_string({" ** Severe ** Temperature (high) out of bounds (201.00] for zone=\"TestZone\", for surface=\"TestSurface\"", - " ** ~~~ ** Environment=, at Simulation time= 00:00 - 00:00", + " ** ~~~ ** Environment=, at Simulation time= 00:00 - 00:00", " ** ~~~ ** Zone=\"TestZone\", Diagnostic Details:", " ** ~~~ ** ...Internal Heat Gain [2.500E-003] W/m2", " ** ~~~ ** ...Infiltration/Ventilation [0.500] m3/s", " ** ~~~ ** ...Mixing/Cross Mixing [0.700] m3/s", " ** ~~~ ** ...Zone is part of HVAC controlled system."}); - EXPECT_TRUE( compare_err_stream( error_string01, true ) ); - EXPECT_TRUE( testZone.TempOutOfBoundsReported ); - - // to hot - subsequent times - surfTemp = 201; - DataGlobals::WarmupFlag = false; - testSurface.LowTempErrCount = 0; - testSurface.HighTempErrCount = 0; - testZone.TempOutOfBoundsReported = true; - testZone.FloorArea = 1000; - testZone.IsControlled = true; - TestSurfTempCalcHeatBalanceInsideSurf( surfTemp, testSurface, testZone, cntWarmupSurfTemp ); - std::string const error_string02 = delimited_string( { - " ** Severe ** Temperature (high) out of bounds (201.00] for zone=\"TestZone\", for surface=\"TestSurface\"", - " ** ~~~ ** Environment=, at Simulation time= 00:00 - 00:00", - } ); - EXPECT_TRUE( compare_err_stream( error_string02, true ) ); - EXPECT_TRUE( testZone.TempOutOfBoundsReported ); - - // to cold - first time - surfTemp = -101; - DataGlobals::WarmupFlag = false; - testSurface.LowTempErrCount = 0; - testSurface.HighTempErrCount = 0; - testZone.TempOutOfBoundsReported = false; - testZone.FloorArea = 1000; - testZone.IsControlled = true; - TestSurfTempCalcHeatBalanceInsideSurf( surfTemp, testSurface, testZone, cntWarmupSurfTemp ); + EXPECT_TRUE(compare_err_stream(error_string01, true)); + EXPECT_TRUE(testZone.TempOutOfBoundsReported); + + // to hot - subsequent times + surfTemp = 201; + DataGlobals::WarmupFlag = false; + testSurface.LowTempErrCount = 0; + testSurface.HighTempErrCount = 0; + testZone.TempOutOfBoundsReported = true; + testZone.FloorArea = 1000; + testZone.IsControlled = true; + TestSurfTempCalcHeatBalanceInsideSurf(surfTemp, testSurface, testZone, cntWarmupSurfTemp); + std::string const error_string02 = delimited_string({ + " ** Severe ** Temperature (high) out of bounds (201.00] for zone=\"TestZone\", for surface=\"TestSurface\"", + " ** ~~~ ** Environment=, at Simulation time= 00:00 - 00:00", + }); + EXPECT_TRUE(compare_err_stream(error_string02, true)); + EXPECT_TRUE(testZone.TempOutOfBoundsReported); + + // to cold - first time + surfTemp = -101; + DataGlobals::WarmupFlag = false; + testSurface.LowTempErrCount = 0; + testSurface.HighTempErrCount = 0; + testZone.TempOutOfBoundsReported = false; + testZone.FloorArea = 1000; + testZone.IsControlled = true; + TestSurfTempCalcHeatBalanceInsideSurf(surfTemp, testSurface, testZone, cntWarmupSurfTemp); std::string const error_string03 = delimited_string({" ** Severe ** Temperature (low) out of bounds [-101.00] for zone=\"TestZone\", for surface=\"TestSurface\"", - " ** ~~~ ** Environment=, at Simulation time= 00:00 - 00:00", + " ** ~~~ ** Environment=, at Simulation time= 00:00 - 00:00", " ** ~~~ ** Zone=\"TestZone\", Diagnostic Details:", " ** ~~~ ** ...Internal Heat Gain [2.500E-003] W/m2", " ** ~~~ ** ...Infiltration/Ventilation [0.500] m3/s", " ** ~~~ ** ...Mixing/Cross Mixing [0.700] m3/s", " ** ~~~ ** ...Zone is part of HVAC controlled system."}); - EXPECT_TRUE( compare_err_stream( error_string03, true ) ); - EXPECT_TRUE( testZone.TempOutOfBoundsReported ); - - // to cold - subsequent times - surfTemp = -101; - DataGlobals::WarmupFlag = false; - testSurface.LowTempErrCount = 0; - testSurface.HighTempErrCount = 0; - testZone.TempOutOfBoundsReported = true; - testZone.FloorArea = 1000; - testZone.IsControlled = true; - TestSurfTempCalcHeatBalanceInsideSurf( surfTemp, testSurface, testZone, cntWarmupSurfTemp ); + EXPECT_TRUE(compare_err_stream(error_string03, true)); + EXPECT_TRUE(testZone.TempOutOfBoundsReported); + + // to cold - subsequent times + surfTemp = -101; + DataGlobals::WarmupFlag = false; + testSurface.LowTempErrCount = 0; + testSurface.HighTempErrCount = 0; + testZone.TempOutOfBoundsReported = true; + testZone.FloorArea = 1000; + testZone.IsControlled = true; + TestSurfTempCalcHeatBalanceInsideSurf(surfTemp, testSurface, testZone, cntWarmupSurfTemp); std::string const error_string04 = delimited_string({" ** Severe ** Temperature (low) out of bounds [-101.00] for zone=\"TestZone\", for surface=\"TestSurface\"", " ** ~~~ ** Environment=, at Simulation time= 00:00 - 00:00"}); - EXPECT_TRUE( compare_err_stream( error_string04, true ) ); - EXPECT_TRUE( testZone.TempOutOfBoundsReported ); - } + EXPECT_TRUE(compare_err_stream(error_string04, true)); + EXPECT_TRUE(testZone.TempOutOfBoundsReported); +} - TEST_F( EnergyPlusFixture, HeatBalanceSurfaceManager_ComputeIntThermalAbsorpFactors) - { +TEST_F(EnergyPlusFixture, HeatBalanceSurfaceManager_ComputeIntThermalAbsorpFactors) +{ - DataSurfaces::TotSurfaces = 1; - DataGlobals::NumOfZones = 1; - DataHeatBalance::TotMaterials = 1; - DataHeatBalance::TotConstructs = 1; + DataSurfaces::TotSurfaces = 1; + DataGlobals::NumOfZones = 1; + DataHeatBalance::TotMaterials = 1; + DataHeatBalance::TotConstructs = 1; - DataHeatBalance::Zone.allocate( DataGlobals::NumOfZones ); - DataSurfaces::Surface.allocate(DataSurfaces::TotSurfaces); - DataSurfaces::SurfaceWindow.allocate(DataSurfaces::TotSurfaces); - DataHeatBalance::Construct.allocate(DataHeatBalance::TotConstructs); - DataHeatBalance::Material.allocate(DataHeatBalance::TotMaterials); - - DataSurfaces::Surface( 1 ).HeatTransSurf = true; - DataSurfaces::Surface( 1 ).Construction = 1; - DataSurfaces::SurfaceWindow( 1 ).ShadingFlag = 0; - DataHeatBalance::Construct( 1 ).InsideAbsorpThermal = 0.9; - DataHeatBalance::Construct( 1 ).TransDiff = 0.0; - DataSurfaces::Surface( 1 ).MaterialMovInsulInt = 1; - DataHeatBalance::Material( 1 ).AbsorpThermal = 0.2; - DataHeatBalance::Material( 1 ).AbsorpSolar = 0.5; - - DataGlobals::NumOfZones = 0; // Reset this to skip part of the code in the unit tested routine - - DataSurfaces::Surface( 1 ).SchedMovInsulInt = -1; // According to schedule manager protocol, an index of -1 returns a 1.0 value for the schedule - DataHeatBalance::Material( 1 ).Resistance = 1.25; - - ComputeIntThermalAbsorpFactors(); - - EXPECT_EQ( 0.2, DataHeatBalance::ITABSF( 1 ) ); - } - - TEST_F( EnergyPlusFixture, HeatBalanceSurfaceManager_UpdateFinalThermalHistories) - { - DataSurfaces::TotSurfaces = 1; - DataGlobals::NumOfZones = 1; - DataHeatBalance::TotConstructs = 1; - DataHeatBalance::Zone.allocate( DataGlobals::NumOfZones ); - DataSurfaces::Surface.allocate(DataSurfaces::TotSurfaces); - DataSurfaces::SurfaceWindow.allocate(DataSurfaces::TotSurfaces); - DataHeatBalance::Construct.allocate(DataHeatBalance::TotConstructs); - DataHeatBalance::AnyConstructInternalSourceInInput = true; - - AllocateSurfaceHeatBalArrays(); // allocates a host of variables related to CTF calculations - - DataSurfaces::Surface( 1 ).Class = DataSurfaces::SurfaceClass_Wall; - DataSurfaces::Surface( 1 ).HeatTransSurf = true; - DataSurfaces::Surface( 1 ).HeatTransferAlgorithm = DataSurfaces::HeatTransferModel_CTF; - DataSurfaces::Surface( 1 ).ExtBoundCond = 1; - DataSurfaces::Surface( 1 ).Construction = 1; - - DataHeatBalance::Construct( 1 ).NumCTFTerms = 2; - DataHeatBalance::Construct( 1 ).SourceSinkPresent = true; - DataHeatBalance::Construct( 1 ).NumHistories = 1; - DataHeatBalance::Construct( 1 ).CTFTUserOut( 0 ) = 0.5; - DataHeatBalance::Construct( 1 ).CTFTUserIn( 0 ) = 0.25; - DataHeatBalance::Construct( 1 ).CTFTUserSource( 0 ) = 0.25; - - DataHeatBalSurface::SUMH( 1 ) = 0; - DataHeatBalSurface::TH( 1, 1, 1 ) = 20.0; - DataHeatBalSurface::TempSurfIn( 1 ) = 10.0; - - DataHeatBalFanSys::CTFTuserConstPart( 1 ) = 0.0; - - UpdateThermalHistories(); // First check to see if it is calculating the user location temperature properly - - EXPECT_EQ( 12.5, DataHeatBalSurface::TempUserLoc( 1 ) ); - EXPECT_EQ( 0.0, DataHeatBalSurface::TuserHist( 1, 3 ) ); - - UpdateThermalHistories(); - - EXPECT_EQ( 12.5, DataHeatBalSurface::TuserHist( 1, 3 ) ); // Now check to see that it is shifting the temperature history properly - } - - TEST_F( EnergyPlusFixture, HeatBalanceSurfaceManager_TestSurfTempCalcHeatBalanceInsideSurfAirRefT ) - { - - std::string const idf_objects = delimited_string( { - " Version,8.9;", - - " Building,", - " House with AirflowNetwork simulation, !- Name", - " 0, !- North Axis {deg}", - " Suburbs, !- Terrain", - " 0.001, !- Loads Convergence Tolerance Value", - " 0.0050000, !- Temperature Convergence Tolerance Value {deltaC}", - " FullInteriorAndExterior, !- Solar Distribution", - " 25, !- Maximum Number of Warmup Days", - " 6; !- Minimum Number of Warmup Days", - - " Timestep,6;", - - " SurfaceConvectionAlgorithm:Inside,TARP;", - - " SurfaceConvectionAlgorithm:Outside,DOE-2;", - - " HeatBalanceAlgorithm,ConductionTransferFunction;", - - " Output:DebuggingData,0,0;", - - " SimulationControl,", - " No, !- Do Zone Sizing Calculation", - " No, !- Do System Sizing Calculation", - " No, !- Do Plant Sizing Calculation", - " Yes, !- Run Simulation for Sizing Periods", - " No; !- Run Simulation for Weather File Run Periods", - - " RunPeriod,", - " , !- Name", - " 1, !- Begin Month", - " 14, !- Begin Day of Month", - " , !- Begin Year", - " 1, !- End Month", - " 14, !- End Day of Month", - " , !- End Year", - " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " Yes; !- Use Weather File Snow Indicators", - - " RunPeriod,", - " , !- Name", - " 7, !- Begin Month", - " 7, !- Begin Day of Month", - " , !- Begin Year", - " 7, !- End Month", - " 7, !- End Day of Month", - " , !- End Year", - " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " No; !- Use Weather File Snow Indicators", - - " Site:Location,", - " CHICAGO_IL_USA TMY2-94846, !- Name", - " 41.78, !- Latitude {deg}", - " -87.75, !- Longitude {deg}", - " -6.00, !- Time Zone {hr}", - " 190.00; !- Elevation {m}", - - " SizingPeriod:DesignDay,", - " CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, !- Name", - " 1, !- Month", - " 21, !- Day of Month", - " WinterDesignDay, !- Day Type", - " -17.3, !- Maximum Dry-Bulb Temperature {C}", - " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 4.9, !- Wind Speed {m/s}", - " 270, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 0.0; !- Sky Clearness", - - " SizingPeriod:DesignDay,", - " CHICAGO_IL_USA Annual Cooling 1% Design Conditions DB/MCWB, !- Name", - " 7, !- Month", - " 21, !- Day of Month", - " SummerDesignDay, !- Day Type", - " 31.5, !- Maximum Dry-Bulb Temperature {C}", - " 10.7, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " 23.0, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 5.3, !- Wind Speed {m/s}", - " 230, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 1.0; !- Sky Clearness", - - " Site:GroundTemperature:BuildingSurface,20.03,20.03,20.13,20.30,20.43,20.52,20.62,20.77,20.78,20.55,20.44,20.20;", - - " Material,", - " A1 - 1 IN STUCCO, !- Name", - " Smooth, !- Roughness", - " 2.5389841E-02, !- Thickness {m}", - " 0.6918309, !- Conductivity {W/m-K}", - " 1858.142, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.9200000, !- Solar Absorptance", - " 0.9200000; !- Visible Absorptance", - - " Material,", - " CB11, !- Name", - " MediumRough, !- Roughness", - " 0.2032000, !- Thickness {m}", - " 1.048000, !- Conductivity {W/m-K}", - " 1105.000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.2000000, !- Solar Absorptance", - " 0.2000000; !- Visible Absorptance", - - " Material,", - " GP01, !- Name", - " MediumSmooth, !- Roughness", - " 1.2700000E-02, !- Thickness {m}", - " 0.1600000, !- Conductivity {W/m-K}", - " 801.0000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " IN02, !- Name", - " Rough, !- Roughness", - " 9.0099998E-02, !- Thickness {m}", - " 4.3000001E-02, !- Conductivity {W/m-K}", - " 10.00000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " IN05, !- Name", - " Rough, !- Roughness", - " 0.2458000, !- Thickness {m}", - " 4.3000001E-02, !- Conductivity {W/m-K}", - " 10.00000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " PW03, !- Name", - " MediumSmooth, !- Roughness", - " 1.2700000E-02, !- Thickness {m}", - " 0.1150000, !- Conductivity {W/m-K}", - " 545.0000, !- Density {kg/m3}", - " 1213.000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7800000, !- Solar Absorptance", - " 0.7800000; !- Visible Absorptance", - - " Material,", - " CC03, !- Name", - " MediumRough, !- Roughness", - " 0.1016000, !- Thickness {m}", - " 1.310000, !- Conductivity {W/m-K}", - " 2243.000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - - " Material,", - " HF-A3, !- Name", - " Smooth, !- Roughness", - " 1.5000000E-03, !- Thickness {m}", - " 44.96960, !- Conductivity {W/m-K}", - " 7689.000, !- Density {kg/m3}", - " 418.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.2000000, !- Solar Absorptance", - " 0.2000000; !- Visible Absorptance", - - " Material:NoMass,", - " AR02, !- Name", - " VeryRough, !- Roughness", - " 7.8000002E-02, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7000000, !- Solar Absorptance", - " 0.7000000; !- Visible Absorptance", - - " Material:NoMass,", - " CP02, !- Name", - " Rough, !- Roughness", - " 0.2170000, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Construction,", - " EXTWALL:LIVING, !- Name", - " A1 - 1 IN STUCCO, !- Outside Layer", - " GP01; !- Layer 3", - - " Construction,", - " FLOOR:LIVING, !- Name", - " CC03, !- Outside Layer", - " CP02; !- Layer 2", - - " Construction,", - " ROOF, !- Name", - " AR02, !- Outside Layer", - " PW03; !- Layer 2", - - " Zone,", - " LIVING ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " CounterClockWise, !- Vertex Entry Direction", - " World; !- Coordinate System", - - " BuildingSurface:Detailed,", - " Living:North, !- Name", - " Wall, !- Surface Type", - " EXTWALL:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 1,1,1, !- X,Y,Z ==> Vertex 1 {m}", - " 1,1,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,1,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,1,1; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Living:East, !- Name", - " Wall, !- Surface Type", - " EXTWALL:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 1,0,1, !- X,Y,Z ==> Vertex 1 {m}", - " 1,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 1,1,0, !- X,Y,Z ==> Vertex 3 {m}", - " 1,1,1; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Living:South, !- Name", - " Wall, !- Surface Type", - " EXTWALL:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,1, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 1,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 1,0,1; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Living:West, !- Name", - " Wall, !- Surface Type", - " EXTWALL:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,1,1, !- X,Y,Z ==> Vertex 1 {m}", - " 0,1,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,0,1; !- X,Y,Z ==> Vertex 4 {m}", - " BuildingSurface:Detailed,", - " Living:Floor, !- Name", - " FLOOR, !- Surface Type", - " FLOOR:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Living:Floor, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,0, !- X,Y,Z ==> Vertex 1 {m}", - " 0,1,0, !- X,Y,Z ==> Vertex 2 {m}", - " 1,1,0, !- X,Y,Z ==> Vertex 3 {m}", - " 1,0,0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Living:Ceiling, !- Name", - " ROOF, !- Surface Type", - " ROOF, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,1,1, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,1, !- X,Y,Z ==> Vertex 2 {m}", - " 1,0,1, !- X,Y,Z ==> Vertex 3 {m}", - " 1,1,1; !- X,Y,Z ==> Vertex 4 {m}", - } ); - - ASSERT_TRUE( process_idf( idf_objects ) ); - bool ErrorsFound = false; - - HeatBalanceManager::GetProjectControlData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetZoneData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetMaterialData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetConstructData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - SurfaceGeometry::GetGeometryParameters( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - - SurfaceGeometry::CosBldgRotAppGonly = 1.0; - SurfaceGeometry::SinBldgRotAppGonly = 0.0; - SurfaceGeometry::GetSurfaceData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - - DataZoneEquipment::ZoneEquipConfig.allocate( 1 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).ZoneName = "LIVING ZONE"; - DataZoneEquipment::ZoneEquipConfig( 1 ).ActualZoneNum = 1; - DataHeatBalance::Zone( 1 ).IsControlled = true; - DataHeatBalance::Zone( 1 ).ZoneEqNum = 1; - DataZoneEquipment::ZoneEquipConfig( 1 ).NumInletNodes = 2; - DataZoneEquipment::ZoneEquipConfig( 1 ).InletNode.allocate( 2 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).InletNode( 1 ) = 1; - DataZoneEquipment::ZoneEquipConfig( 1 ).InletNode( 2 ) = 2; - DataZoneEquipment::ZoneEquipConfig( 1 ).NumExhaustNodes = 1; - DataZoneEquipment::ZoneEquipConfig( 1 ).ExhaustNode.allocate( 1 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).ExhaustNode( 1 ) = 3; - DataZoneEquipment::ZoneEquipConfig( 1 ).NumReturnNodes = 1; - DataZoneEquipment::ZoneEquipConfig( 1 ).ReturnNode.allocate( 1 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).ReturnNode( 1 ) = 4; - - DataSizing::ZoneEqSizing.allocate( 1 ); - DataHeatBalance::Zone( 1 ).SystemZoneNodeNumber = 5; - DataEnvironment::OutBaroPress = 101325.0; - DataHeatBalFanSys::MAT.allocate( 1 ); // Zone temperature C - DataHeatBalFanSys::MAT( 1 ) = 24.0; - DataHeatBalFanSys::ZoneAirHumRat.allocate( 1 ); - DataHeatBalFanSys::ZoneAirHumRat( 1 ) = 0.001; - - DataLoopNode::Node.allocate( 4 ); - DataSurfaces::Surface( 1 ).TAirRef = DataSurfaces::ZoneMeanAirTemp; - DataSurfaces::Surface( 2 ).TAirRef = DataSurfaces::AdjacentAirTemp; - DataSurfaces::Surface( 3 ).TAirRef = DataSurfaces::ZoneSupplyAirTemp; - - DataHeatBalSurface::TempSurfInTmp.allocate( 6 ); - DataHeatBalSurface::TempSurfInTmp( 1 ) = 15.0; - DataHeatBalSurface::TempSurfInTmp( 2 ) = 20.0; - DataHeatBalSurface::TempSurfInTmp( 3 ) = 25.0; - DataHeatBalSurface::TempSurfInTmp( 4 ) = 25.0; - DataHeatBalSurface::TempSurfInTmp( 5 ) = 25.0; - DataHeatBalSurface::TempSurfInTmp( 6 ) = 25.0; - DataHeatBalance::TempEffBulkAir.allocate( 6 ); - - DataLoopNode::Node( 1 ).Temp = 20.0; - DataLoopNode::Node( 2 ).Temp = 20.0; - DataLoopNode::Node( 3 ).Temp = 20.0; - DataLoopNode::Node( 4 ).Temp = 20.0; - DataLoopNode::Node( 1 ).MassFlowRate = 0.1; - DataLoopNode::Node( 2 ).MassFlowRate = 0.1; - DataLoopNode::Node( 3 ).MassFlowRate = 0.1; - DataLoopNode::Node( 4 ).MassFlowRate = 0.1; - - DataHeatBalSurface::TH.allocate( 2, 2, 6 ); - DataHeatBalSurface::TH( 1, 1, 1 ) = 20; - DataHeatBalSurface::TH( 1, 1, 2 ) = 20; - DataHeatBalSurface::TH( 1, 1, 3 ) = 20; - DataHeatBalSurface::TH( 1, 1, 4 ) = 20; - DataHeatBalSurface::TH( 1, 1, 5 ) = 20; - DataHeatBalSurface::TH( 1, 1, 6 ) = 20; - DataHeatBalance::HConvIn.allocate( 6 ); - DataHeatBalance::HConvIn( 1 ) = 0.5; - DataHeatBalance::HConvIn( 2 ) = 0.5; - DataHeatBalance::HConvIn( 3 ) = 0.5; - DataHeatBalance::HConvIn( 4 ) = 0.5; - DataHeatBalance::HConvIn( 5 ) = 0.5; - DataHeatBalance::HConvIn( 6 ) = 0.5; - DataMoistureBalance::HConvInFD.allocate( 6 ); - DataMoistureBalance::RhoVaporAirIn.allocate( 6 ); - DataMoistureBalance::HMassConvInFD.allocate( 6 ); - - DataGlobals::KickOffSimulation = true; - DataHeatBalFanSys::ZoneLatentGain.allocate( 1 ); - DataGlobals::TimeStepZoneSec = 900; - DataHeatBalance::ZoneWinHeatGain.allocate( 1 ); - DataHeatBalance::ZoneWinHeatGainRep.allocate( 1 ); - DataHeatBalance::ZoneWinHeatGainRepEnergy.allocate( 1 ); - - AllocateSurfaceHeatBalArrays( ); - createFacilityElectricPowerServiceObject( ); - // with supply air - CalcHeatBalanceInsideSurf( ); - EXPECT_EQ( 24.0, DataHeatBalance::TempEffBulkAir( 1 ) ); - EXPECT_EQ( 23.0, DataHeatBalance::TempEffBulkAir( 2 ) ); - EXPECT_EQ( 20.0, DataHeatBalance::TempEffBulkAir( 3 ) ); - - // Supply air flow rate = 0 - DataLoopNode::Node( 1 ).MassFlowRate = 0.0; - DataLoopNode::Node( 2 ).MassFlowRate = 0.0; - DataLoopNode::Node( 3 ).MassFlowRate = 0.0; - DataLoopNode::Node( 4 ).MassFlowRate = 0.0; - CalcHeatBalanceInsideSurf( ); - EXPECT_EQ( 24.0, DataHeatBalance::TempEffBulkAir( 1 ) ); - EXPECT_EQ( 23.0, DataHeatBalance::TempEffBulkAir( 2 ) ); - EXPECT_EQ( 24.0, DataHeatBalance::TempEffBulkAir( 3 ) ); - - DataZoneEquipment::ZoneEquipConfig.deallocate( ); - DataSizing::ZoneEqSizing.deallocate( ); - DataHeatBalFanSys::MAT.deallocate( ); // Zone temperature C - DataHeatBalFanSys::ZoneAirHumRat.deallocate( ); - DataLoopNode::Node.deallocate( ); - DataGlobals::KickOffSimulation = false; - DataHeatBalSurface::TempSurfInTmp.deallocate( ); - DataHeatBalance::TempEffBulkAir.deallocate( ); - DataHeatBalSurface::TH.deallocate( ); - DataHeatBalance::HConvIn.deallocate( ); - DataMoistureBalance::HConvInFD.deallocate( ); - DataMoistureBalance::RhoVaporAirIn.deallocate( ); - DataMoistureBalance::HMassConvInFD.deallocate( ); - DataHeatBalFanSys::ZoneLatentGain.deallocate( ); - DataHeatBalance::ZoneWinHeatGain.deallocate( ); - DataHeatBalance::ZoneWinHeatGainRep.deallocate( ); - DataHeatBalance::ZoneWinHeatGainRepEnergy.deallocate( ); - } - - TEST_F( EnergyPlusFixture, HeatBalanceSurfaceManager_TestSurfPropertyLocalEnv ) - { + DataHeatBalance::Zone.allocate(DataGlobals::NumOfZones); + DataSurfaces::Surface.allocate(DataSurfaces::TotSurfaces); + DataSurfaces::SurfaceWindow.allocate(DataSurfaces::TotSurfaces); + DataHeatBalance::Construct.allocate(DataHeatBalance::TotConstructs); + DataHeatBalance::Material.allocate(DataHeatBalance::TotMaterials); + + DataSurfaces::Surface(1).HeatTransSurf = true; + DataSurfaces::Surface(1).Construction = 1; + DataSurfaces::SurfaceWindow(1).ShadingFlag = 0; + DataHeatBalance::Construct(1).InsideAbsorpThermal = 0.9; + DataHeatBalance::Construct(1).TransDiff = 0.0; + DataSurfaces::Surface(1).MaterialMovInsulInt = 1; + DataHeatBalance::Material(1).AbsorpThermal = 0.2; + DataHeatBalance::Material(1).AbsorpSolar = 0.5; + + DataGlobals::NumOfZones = 0; // Reset this to skip part of the code in the unit tested routine + + DataSurfaces::Surface(1).SchedMovInsulInt = -1; // According to schedule manager protocol, an index of -1 returns a 1.0 value for the schedule + DataHeatBalance::Material(1).Resistance = 1.25; + + ComputeIntThermalAbsorpFactors(); + + EXPECT_EQ(0.2, DataHeatBalance::ITABSF(1)); +} + +TEST_F(EnergyPlusFixture, HeatBalanceSurfaceManager_UpdateFinalThermalHistories) +{ + DataSurfaces::TotSurfaces = 1; + DataGlobals::NumOfZones = 1; + DataHeatBalance::TotConstructs = 1; + DataHeatBalance::Zone.allocate(DataGlobals::NumOfZones); + DataSurfaces::Surface.allocate(DataSurfaces::TotSurfaces); + DataSurfaces::SurfaceWindow.allocate(DataSurfaces::TotSurfaces); + DataHeatBalance::Construct.allocate(DataHeatBalance::TotConstructs); + DataHeatBalance::AnyConstructInternalSourceInInput = true; + + AllocateSurfaceHeatBalArrays(); // allocates a host of variables related to CTF calculations + + DataSurfaces::Surface(1).Class = DataSurfaces::SurfaceClass_Wall; + DataSurfaces::Surface(1).HeatTransSurf = true; + DataSurfaces::Surface(1).HeatTransferAlgorithm = DataSurfaces::HeatTransferModel_CTF; + DataSurfaces::Surface(1).ExtBoundCond = 1; + DataSurfaces::Surface(1).Construction = 1; + + DataHeatBalance::Construct(1).NumCTFTerms = 2; + DataHeatBalance::Construct(1).SourceSinkPresent = true; + DataHeatBalance::Construct(1).NumHistories = 1; + DataHeatBalance::Construct(1).CTFTUserOut(0) = 0.5; + DataHeatBalance::Construct(1).CTFTUserIn(0) = 0.25; + DataHeatBalance::Construct(1).CTFTUserSource(0) = 0.25; + + DataHeatBalSurface::SUMH(1) = 0; + DataHeatBalSurface::TH(1, 1, 1) = 20.0; + DataHeatBalSurface::TempSurfIn(1) = 10.0; + + DataHeatBalFanSys::CTFTuserConstPart(1) = 0.0; + + UpdateThermalHistories(); // First check to see if it is calculating the user location temperature properly + + EXPECT_EQ(12.5, DataHeatBalSurface::TempUserLoc(1)); + EXPECT_EQ(0.0, DataHeatBalSurface::TuserHist(1, 3)); + + UpdateThermalHistories(); + + EXPECT_EQ(12.5, DataHeatBalSurface::TuserHist(1, 3)); // Now check to see that it is shifting the temperature history properly +} + +TEST_F(EnergyPlusFixture, HeatBalanceSurfaceManager_TestSurfTempCalcHeatBalanceInsideSurfAirRefT) +{ + + std::string const idf_objects = delimited_string({ + " Version,8.9;", + + " Building,", + " House with AirflowNetwork simulation, !- Name", + " 0, !- North Axis {deg}", + " Suburbs, !- Terrain", + " 0.001, !- Loads Convergence Tolerance Value", + " 0.0050000, !- Temperature Convergence Tolerance Value {deltaC}", + " FullInteriorAndExterior, !- Solar Distribution", + " 25, !- Maximum Number of Warmup Days", + " 6; !- Minimum Number of Warmup Days", + + " Timestep,6;", + + " SurfaceConvectionAlgorithm:Inside,TARP;", + + " SurfaceConvectionAlgorithm:Outside,DOE-2;", + + " HeatBalanceAlgorithm,ConductionTransferFunction;", + + " Output:DebuggingData,0,0;", + + " SimulationControl,", + " No, !- Do Zone Sizing Calculation", + " No, !- Do System Sizing Calculation", + " No, !- Do Plant Sizing Calculation", + " Yes, !- Run Simulation for Sizing Periods", + " No; !- Run Simulation for Weather File Run Periods", + + " RunPeriod,", + " , !- Name", + " 1, !- Begin Month", + " 14, !- Begin Day of Month", + " , !- Begin Year", + " 1, !- End Month", + " 14, !- End Day of Month", + " , !- End Year", + " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " Yes; !- Use Weather File Snow Indicators", + + " RunPeriod,", + " , !- Name", + " 7, !- Begin Month", + " 7, !- Begin Day of Month", + " , !- Begin Year", + " 7, !- End Month", + " 7, !- End Day of Month", + " , !- End Year", + " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " No; !- Use Weather File Snow Indicators", + + " Site:Location,", + " CHICAGO_IL_USA TMY2-94846, !- Name", + " 41.78, !- Latitude {deg}", + " -87.75, !- Longitude {deg}", + " -6.00, !- Time Zone {hr}", + " 190.00; !- Elevation {m}", + + " SizingPeriod:DesignDay,", + " CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, !- Name", + " 1, !- Month", + " 21, !- Day of Month", + " WinterDesignDay, !- Day Type", + " -17.3, !- Maximum Dry-Bulb Temperature {C}", + " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 4.9, !- Wind Speed {m/s}", + " 270, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 0.0; !- Sky Clearness", + + " SizingPeriod:DesignDay,", + " CHICAGO_IL_USA Annual Cooling 1% Design Conditions DB/MCWB, !- Name", + " 7, !- Month", + " 21, !- Day of Month", + " SummerDesignDay, !- Day Type", + " 31.5, !- Maximum Dry-Bulb Temperature {C}", + " 10.7, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " 23.0, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 5.3, !- Wind Speed {m/s}", + " 230, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 1.0; !- Sky Clearness", + + " Site:GroundTemperature:BuildingSurface,20.03,20.03,20.13,20.30,20.43,20.52,20.62,20.77,20.78,20.55,20.44,20.20;", + + " Material,", + " A1 - 1 IN STUCCO, !- Name", + " Smooth, !- Roughness", + " 2.5389841E-02, !- Thickness {m}", + " 0.6918309, !- Conductivity {W/m-K}", + " 1858.142, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.9200000, !- Solar Absorptance", + " 0.9200000; !- Visible Absorptance", + + " Material,", + " CB11, !- Name", + " MediumRough, !- Roughness", + " 0.2032000, !- Thickness {m}", + " 1.048000, !- Conductivity {W/m-K}", + " 1105.000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.2000000, !- Solar Absorptance", + " 0.2000000; !- Visible Absorptance", + + " Material,", + " GP01, !- Name", + " MediumSmooth, !- Roughness", + " 1.2700000E-02, !- Thickness {m}", + " 0.1600000, !- Conductivity {W/m-K}", + " 801.0000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " IN02, !- Name", + " Rough, !- Roughness", + " 9.0099998E-02, !- Thickness {m}", + " 4.3000001E-02, !- Conductivity {W/m-K}", + " 10.00000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " IN05, !- Name", + " Rough, !- Roughness", + " 0.2458000, !- Thickness {m}", + " 4.3000001E-02, !- Conductivity {W/m-K}", + " 10.00000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " PW03, !- Name", + " MediumSmooth, !- Roughness", + " 1.2700000E-02, !- Thickness {m}", + " 0.1150000, !- Conductivity {W/m-K}", + " 545.0000, !- Density {kg/m3}", + " 1213.000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7800000, !- Solar Absorptance", + " 0.7800000; !- Visible Absorptance", + + " Material,", + " CC03, !- Name", + " MediumRough, !- Roughness", + " 0.1016000, !- Thickness {m}", + " 1.310000, !- Conductivity {W/m-K}", + " 2243.000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + + " Material,", + " HF-A3, !- Name", + " Smooth, !- Roughness", + " 1.5000000E-03, !- Thickness {m}", + " 44.96960, !- Conductivity {W/m-K}", + " 7689.000, !- Density {kg/m3}", + " 418.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.2000000, !- Solar Absorptance", + " 0.2000000; !- Visible Absorptance", + + " Material:NoMass,", + " AR02, !- Name", + " VeryRough, !- Roughness", + " 7.8000002E-02, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7000000, !- Solar Absorptance", + " 0.7000000; !- Visible Absorptance", + + " Material:NoMass,", + " CP02, !- Name", + " Rough, !- Roughness", + " 0.2170000, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Construction,", + " EXTWALL:LIVING, !- Name", + " A1 - 1 IN STUCCO, !- Outside Layer", + " GP01; !- Layer 3", + + " Construction,", + " FLOOR:LIVING, !- Name", + " CC03, !- Outside Layer", + " CP02; !- Layer 2", + + " Construction,", + " ROOF, !- Name", + " AR02, !- Outside Layer", + " PW03; !- Layer 2", + + " Zone,", + " LIVING ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " CounterClockWise, !- Vertex Entry Direction", + " World; !- Coordinate System", + + " BuildingSurface:Detailed,", + " Living:North, !- Name", + " Wall, !- Surface Type", + " EXTWALL:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 1,1,1, !- X,Y,Z ==> Vertex 1 {m}", + " 1,1,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,1,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,1,1; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Living:East, !- Name", + " Wall, !- Surface Type", + " EXTWALL:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 1,0,1, !- X,Y,Z ==> Vertex 1 {m}", + " 1,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 1,1,0, !- X,Y,Z ==> Vertex 3 {m}", + " 1,1,1; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Living:South, !- Name", + " Wall, !- Surface Type", + " EXTWALL:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,1, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 1,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 1,0,1; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Living:West, !- Name", + " Wall, !- Surface Type", + " EXTWALL:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,1,1, !- X,Y,Z ==> Vertex 1 {m}", + " 0,1,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,0,1; !- X,Y,Z ==> Vertex 4 {m}", + " BuildingSurface:Detailed,", + " Living:Floor, !- Name", + " FLOOR, !- Surface Type", + " FLOOR:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Living:Floor, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,0, !- X,Y,Z ==> Vertex 1 {m}", + " 0,1,0, !- X,Y,Z ==> Vertex 2 {m}", + " 1,1,0, !- X,Y,Z ==> Vertex 3 {m}", + " 1,0,0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Living:Ceiling, !- Name", + " ROOF, !- Surface Type", + " ROOF, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,1,1, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,1, !- X,Y,Z ==> Vertex 2 {m}", + " 1,0,1, !- X,Y,Z ==> Vertex 3 {m}", + " 1,1,1; !- X,Y,Z ==> Vertex 4 {m}", + }); + + ASSERT_TRUE(process_idf(idf_objects)); + bool ErrorsFound = false; + + HeatBalanceManager::GetProjectControlData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetZoneData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetMaterialData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetConstructData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + SurfaceGeometry::GetGeometryParameters(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + + SurfaceGeometry::CosBldgRotAppGonly = 1.0; + SurfaceGeometry::SinBldgRotAppGonly = 0.0; + SurfaceGeometry::GetSurfaceData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + + DataZoneEquipment::ZoneEquipConfig.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).ZoneName = "LIVING ZONE"; + DataZoneEquipment::ZoneEquipConfig(1).ActualZoneNum = 1; + DataHeatBalance::Zone(1).IsControlled = true; + DataHeatBalance::Zone(1).ZoneEqNum = 1; + DataZoneEquipment::ZoneEquipConfig(1).NumInletNodes = 2; + DataZoneEquipment::ZoneEquipConfig(1).InletNode.allocate(2); + DataZoneEquipment::ZoneEquipConfig(1).InletNode(1) = 1; + DataZoneEquipment::ZoneEquipConfig(1).InletNode(2) = 2; + DataZoneEquipment::ZoneEquipConfig(1).NumExhaustNodes = 1; + DataZoneEquipment::ZoneEquipConfig(1).ExhaustNode.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).ExhaustNode(1) = 3; + DataZoneEquipment::ZoneEquipConfig(1).NumReturnNodes = 1; + DataZoneEquipment::ZoneEquipConfig(1).ReturnNode.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).ReturnNode(1) = 4; + + DataSizing::ZoneEqSizing.allocate(1); + DataHeatBalance::Zone(1).SystemZoneNodeNumber = 5; + DataEnvironment::OutBaroPress = 101325.0; + DataHeatBalFanSys::MAT.allocate(1); // Zone temperature C + DataHeatBalFanSys::MAT(1) = 24.0; + DataHeatBalFanSys::ZoneAirHumRat.allocate(1); + DataHeatBalFanSys::ZoneAirHumRat(1) = 0.001; + + DataLoopNode::Node.allocate(4); + DataSurfaces::Surface(1).TAirRef = DataSurfaces::ZoneMeanAirTemp; + DataSurfaces::Surface(2).TAirRef = DataSurfaces::AdjacentAirTemp; + DataSurfaces::Surface(3).TAirRef = DataSurfaces::ZoneSupplyAirTemp; + + DataHeatBalSurface::TempSurfInTmp.allocate(6); + DataHeatBalSurface::TempSurfInTmp(1) = 15.0; + DataHeatBalSurface::TempSurfInTmp(2) = 20.0; + DataHeatBalSurface::TempSurfInTmp(3) = 25.0; + DataHeatBalSurface::TempSurfInTmp(4) = 25.0; + DataHeatBalSurface::TempSurfInTmp(5) = 25.0; + DataHeatBalSurface::TempSurfInTmp(6) = 25.0; + DataHeatBalance::TempEffBulkAir.allocate(6); + + DataLoopNode::Node(1).Temp = 20.0; + DataLoopNode::Node(2).Temp = 20.0; + DataLoopNode::Node(3).Temp = 20.0; + DataLoopNode::Node(4).Temp = 20.0; + DataLoopNode::Node(1).MassFlowRate = 0.1; + DataLoopNode::Node(2).MassFlowRate = 0.1; + DataLoopNode::Node(3).MassFlowRate = 0.1; + DataLoopNode::Node(4).MassFlowRate = 0.1; + + DataHeatBalSurface::TH.allocate(2, 2, 6); + DataHeatBalSurface::TH(1, 1, 1) = 20; + DataHeatBalSurface::TH(1, 1, 2) = 20; + DataHeatBalSurface::TH(1, 1, 3) = 20; + DataHeatBalSurface::TH(1, 1, 4) = 20; + DataHeatBalSurface::TH(1, 1, 5) = 20; + DataHeatBalSurface::TH(1, 1, 6) = 20; + DataHeatBalance::HConvIn.allocate(6); + DataHeatBalance::HConvIn(1) = 0.5; + DataHeatBalance::HConvIn(2) = 0.5; + DataHeatBalance::HConvIn(3) = 0.5; + DataHeatBalance::HConvIn(4) = 0.5; + DataHeatBalance::HConvIn(5) = 0.5; + DataHeatBalance::HConvIn(6) = 0.5; + DataMoistureBalance::HConvInFD.allocate(6); + DataMoistureBalance::RhoVaporAirIn.allocate(6); + DataMoistureBalance::HMassConvInFD.allocate(6); + + DataGlobals::KickOffSimulation = true; + DataHeatBalFanSys::ZoneLatentGain.allocate(1); + DataGlobals::TimeStepZoneSec = 900; + DataHeatBalance::ZoneWinHeatGain.allocate(1); + DataHeatBalance::ZoneWinHeatGainRep.allocate(1); + DataHeatBalance::ZoneWinHeatGainRepEnergy.allocate(1); + + AllocateSurfaceHeatBalArrays(); + createFacilityElectricPowerServiceObject(); + // with supply air + CalcHeatBalanceInsideSurf(); + EXPECT_EQ(24.0, DataHeatBalance::TempEffBulkAir(1)); + EXPECT_EQ(23.0, DataHeatBalance::TempEffBulkAir(2)); + EXPECT_EQ(20.0, DataHeatBalance::TempEffBulkAir(3)); + + // Supply air flow rate = 0 + DataLoopNode::Node(1).MassFlowRate = 0.0; + DataLoopNode::Node(2).MassFlowRate = 0.0; + DataLoopNode::Node(3).MassFlowRate = 0.0; + DataLoopNode::Node(4).MassFlowRate = 0.0; + CalcHeatBalanceInsideSurf(); + EXPECT_EQ(24.0, DataHeatBalance::TempEffBulkAir(1)); + EXPECT_EQ(23.0, DataHeatBalance::TempEffBulkAir(2)); + EXPECT_EQ(24.0, DataHeatBalance::TempEffBulkAir(3)); + + DataZoneEquipment::ZoneEquipConfig.deallocate(); + DataSizing::ZoneEqSizing.deallocate(); + DataHeatBalFanSys::MAT.deallocate(); // Zone temperature C + DataHeatBalFanSys::ZoneAirHumRat.deallocate(); + DataLoopNode::Node.deallocate(); + DataGlobals::KickOffSimulation = false; + DataHeatBalSurface::TempSurfInTmp.deallocate(); + DataHeatBalance::TempEffBulkAir.deallocate(); + DataHeatBalSurface::TH.deallocate(); + DataHeatBalance::HConvIn.deallocate(); + DataMoistureBalance::HConvInFD.deallocate(); + DataMoistureBalance::RhoVaporAirIn.deallocate(); + DataMoistureBalance::HMassConvInFD.deallocate(); + DataHeatBalFanSys::ZoneLatentGain.deallocate(); + DataHeatBalance::ZoneWinHeatGain.deallocate(); + DataHeatBalance::ZoneWinHeatGainRep.deallocate(); + DataHeatBalance::ZoneWinHeatGainRepEnergy.deallocate(); +} + +TEST_F(EnergyPlusFixture, HeatBalanceSurfaceManager_TestSurfPropertyLocalEnv) +{ std::string const idf_objects = delimited_string({" Version,8.9;", - " Building,", - " House with Local Air Nodes, !- Name", - " 0, !- North Axis {deg}", - " Suburbs, !- Terrain", - " 0.001, !- Loads Convergence Tolerance Value", - " 0.0050000, !- Temperature Convergence Tolerance Value {deltaC}", - " FullInteriorAndExterior, !- Solar Distribution", - " 25, !- Maximum Number of Warmup Days", - " 6; !- Minimum Number of Warmup Days", - - " Timestep,6;", - - " SurfaceConvectionAlgorithm:Inside,TARP;", - - " SurfaceConvectionAlgorithm:Outside,DOE-2;", - - " HeatBalanceAlgorithm,ConductionTransferFunction;", - - " Output:DebuggingData,0,0;", - - " SimulationControl,", - " No, !- Do Zone Sizing Calculation", - " No, !- Do System Sizing Calculation", - " No, !- Do Plant Sizing Calculation", - " Yes, !- Run Simulation for Sizing Periods", - " Yes; !- Run Simulation for Weather File Run Periods", - - " RunPeriod,", - " , !- Name", - " 1, !- Begin Month", - " 14, !- Begin Day of Month", - " , !- Begin Year", - " 1, !- End Month", - " 14, !- End Day of Month", - " , !- End Year", - " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " Yes; !- Use Weather File Snow Indicators", - - " RunPeriod,", - " , !- Name", - " 7, !- Begin Month", - " 7, !- Begin Day of Month", - " , !- Begin Year", - " 7, !- End Month", - " 7, !- End Day of Month", - " , !- End Year", - " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " No; !- Use Weather File Snow Indicators", - - " Site:Location,", - " CHICAGO_IL_USA TMY2-94846, !- Name", - " 41.78, !- Latitude {deg}", - " -87.75, !- Longitude {deg}", - " -6.00, !- Time Zone {hr}", - " 190.00; !- Elevation {m}", - - " SizingPeriod:DesignDay,", - " CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, !- Name", - " 1, !- Month", - " 21, !- Day of Month", - " WinterDesignDay, !- Day Type", - " -17.3, !- Maximum Dry-Bulb Temperature {C}", - " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 4.9, !- Wind Speed {m/s}", - " 270, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 0.0; !- Sky Clearness", - - " SizingPeriod:DesignDay,", - " CHICAGO_IL_USA Annual Cooling 1% Design Conditions DB/MCWB, !- Name", - " 7, !- Month", - " 21, !- Day of Month", - " SummerDesignDay, !- Day Type", - " 31.5, !- Maximum Dry-Bulb Temperature {C}", - " 10.7, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " 23.0, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 5.3, !- Wind Speed {m/s}", - " 230, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 1.0; !- Sky Clearness", - - " Site:GroundTemperature:BuildingSurface,20.03,20.03,20.13,20.30,20.43,20.52,20.62,20.77,20.78,20.55,20.44,20.20;", - - " Material,", - " A1 - 1 IN STUCCO, !- Name", - " Smooth, !- Roughness", - " 2.5389841E-02, !- Thickness {m}", - " 0.6918309, !- Conductivity {W/m-K}", - " 1858.142, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.9200000, !- Solar Absorptance", - " 0.9200000; !- Visible Absorptance", - - " Material,", - " CB11, !- Name", - " MediumRough, !- Roughness", - " 0.2032000, !- Thickness {m}", - " 1.048000, !- Conductivity {W/m-K}", - " 1105.000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.2000000, !- Solar Absorptance", - " 0.2000000; !- Visible Absorptance", - - " Material,", - " GP01, !- Name", - " MediumSmooth, !- Roughness", - " 1.2700000E-02, !- Thickness {m}", - " 0.1600000, !- Conductivity {W/m-K}", - " 801.0000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " IN02, !- Name", - " Rough, !- Roughness", - " 9.0099998E-02, !- Thickness {m}", - " 4.3000001E-02, !- Conductivity {W/m-K}", - " 10.00000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " IN05, !- Name", - " Rough, !- Roughness", - " 0.2458000, !- Thickness {m}", - " 4.3000001E-02, !- Conductivity {W/m-K}", - " 10.00000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " PW03, !- Name", - " MediumSmooth, !- Roughness", - " 1.2700000E-02, !- Thickness {m}", - " 0.1150000, !- Conductivity {W/m-K}", - " 545.0000, !- Density {kg/m3}", - " 1213.000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7800000, !- Solar Absorptance", - " 0.7800000; !- Visible Absorptance", - - " Material,", - " CC03, !- Name", - " MediumRough, !- Roughness", - " 0.1016000, !- Thickness {m}", - " 1.310000, !- Conductivity {W/m-K}", - " 2243.000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - - " Material,", - " HF-A3, !- Name", - " Smooth, !- Roughness", - " 1.5000000E-03, !- Thickness {m}", - " 44.96960, !- Conductivity {W/m-K}", - " 7689.000, !- Density {kg/m3}", - " 418.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.2000000, !- Solar Absorptance", - " 0.2000000; !- Visible Absorptance", - - " Material:NoMass,", - " AR02, !- Name", - " VeryRough, !- Roughness", - " 7.8000002E-02, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7000000, !- Solar Absorptance", - " 0.7000000; !- Visible Absorptance", - - " Material:NoMass,", - " CP02, !- Name", - " Rough, !- Roughness", - " 0.2170000, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Construction,", - " EXTWALL:LIVING, !- Name", - " A1 - 1 IN STUCCO, !- Outside Layer", - " GP01; !- Layer 3", - - " Construction,", - " FLOOR:LIVING, !- Name", - " CC03, !- Outside Layer", - " CP02; !- Layer 2", - - " Construction,", - " ROOF, !- Name", - " AR02, !- Outside Layer", - " PW03; !- Layer 2", - - " Zone,", - " LIVING ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " CounterClockWise, !- Vertex Entry Direction", - " World; !- Coordinate System", - - " BuildingSurface:Detailed,", - " Living:North, !- Name", - " Wall, !- Surface Type", - " EXTWALL:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 1,1,1, !- X,Y,Z ==> Vertex 1 {m}", - " 1,1,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,1,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,1,1; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Living:East, !- Name", - " Wall, !- Surface Type", - " EXTWALL:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 1,0,1, !- X,Y,Z ==> Vertex 1 {m}", - " 1,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 1,1,0, !- X,Y,Z ==> Vertex 3 {m}", - " 1,1,1; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Living:South, !- Name", - " Wall, !- Surface Type", - " EXTWALL:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,1, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 1,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 1,0,1; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Living:West, !- Name", - " Wall, !- Surface Type", - " EXTWALL:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,1,1, !- X,Y,Z ==> Vertex 1 {m}", - " 0,1,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,0,1; !- X,Y,Z ==> Vertex 4 {m}", - " BuildingSurface:Detailed,", - " Living:Floor, !- Name", - " FLOOR, !- Surface Type", - " FLOOR:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Living:Floor, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,0, !- X,Y,Z ==> Vertex 1 {m}", - " 0,1,0, !- X,Y,Z ==> Vertex 2 {m}", - " 1,1,0, !- X,Y,Z ==> Vertex 3 {m}", - " 1,0,0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Living:Ceiling, !- Name", - " ROOF, !- Surface Type", - " ROOF, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,1,1, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,1, !- X,Y,Z ==> Vertex 2 {m}", - " 1,0,1, !- X,Y,Z ==> Vertex 3 {m}", - " 1,1,1; !- X,Y,Z ==> Vertex 4 {m}", - - " SurfaceProperty:LocalEnvironment,", - " LocEnv:Living:North, !- Name", - " Living:North, !- Exterior Surface Name", - " , !- External Shading Fraction Schedule Name", - " , !- Surrounding Surfaces Object Name", - " OutdoorAirNode:0001; !- Outdoor Air Node Name", - - " OutdoorAir:Node,", - " OutdoorAirNode:0001, !- Name", - " , !- Height Above Ground", - " OutdoorAirNodeDryBulb:0001, !- Drybulb Temperature Schedule Name", - " OutdoorAirNodeWetBulb:0001, !- Wetbulb Schedule Name", - " OutdoorAirNodeWindSpeed:0001, !- Wind Speed Schedule Name", - " OutdoorAirNodeWindDir:0001; !- Wind Direction Schedule Name", - - " ScheduleTypeLimits,", - " Any Number; !- Name", - - " Schedule:Compact,", - " OutdoorAirNodeDryBulb:0001, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00, 15.0; !- Field 3", - - " Schedule:Compact,", - " OutdoorAirNodeWetBulb:0001, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00, 12.0; !- Field 3", - - " Schedule:Compact,", - " OutdoorAirNodeWindSpeed:0001, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00, 1.23; !- Field 3", - - " Schedule:Compact,", - " OutdoorAirNodeWindDir:0001, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", + " Building,", + " House with Local Air Nodes, !- Name", + " 0, !- North Axis {deg}", + " Suburbs, !- Terrain", + " 0.001, !- Loads Convergence Tolerance Value", + " 0.0050000, !- Temperature Convergence Tolerance Value {deltaC}", + " FullInteriorAndExterior, !- Solar Distribution", + " 25, !- Maximum Number of Warmup Days", + " 6; !- Minimum Number of Warmup Days", + + " Timestep,6;", + + " SurfaceConvectionAlgorithm:Inside,TARP;", + + " SurfaceConvectionAlgorithm:Outside,DOE-2;", + + " HeatBalanceAlgorithm,ConductionTransferFunction;", + + " Output:DebuggingData,0,0;", + + " SimulationControl,", + " No, !- Do Zone Sizing Calculation", + " No, !- Do System Sizing Calculation", + " No, !- Do Plant Sizing Calculation", + " Yes, !- Run Simulation for Sizing Periods", + " Yes; !- Run Simulation for Weather File Run Periods", + + " RunPeriod,", + " , !- Name", + " 1, !- Begin Month", + " 14, !- Begin Day of Month", + " , !- Begin Year", + " 1, !- End Month", + " 14, !- End Day of Month", + " , !- End Year", + " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " Yes; !- Use Weather File Snow Indicators", + + " RunPeriod,", + " , !- Name", + " 7, !- Begin Month", + " 7, !- Begin Day of Month", + " , !- Begin Year", + " 7, !- End Month", + " 7, !- End Day of Month", + " , !- End Year", + " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " No; !- Use Weather File Snow Indicators", + + " Site:Location,", + " CHICAGO_IL_USA TMY2-94846, !- Name", + " 41.78, !- Latitude {deg}", + " -87.75, !- Longitude {deg}", + " -6.00, !- Time Zone {hr}", + " 190.00; !- Elevation {m}", + + " SizingPeriod:DesignDay,", + " CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, !- Name", + " 1, !- Month", + " 21, !- Day of Month", + " WinterDesignDay, !- Day Type", + " -17.3, !- Maximum Dry-Bulb Temperature {C}", + " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 4.9, !- Wind Speed {m/s}", + " 270, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 0.0; !- Sky Clearness", + + " SizingPeriod:DesignDay,", + " CHICAGO_IL_USA Annual Cooling 1% Design Conditions DB/MCWB, !- Name", + " 7, !- Month", + " 21, !- Day of Month", + " SummerDesignDay, !- Day Type", + " 31.5, !- Maximum Dry-Bulb Temperature {C}", + " 10.7, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " 23.0, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 5.3, !- Wind Speed {m/s}", + " 230, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 1.0; !- Sky Clearness", + + " Site:GroundTemperature:BuildingSurface,20.03,20.03,20.13,20.30,20.43,20.52,20.62,20.77,20.78,20.55,20.44,20.20;", + + " Material,", + " A1 - 1 IN STUCCO, !- Name", + " Smooth, !- Roughness", + " 2.5389841E-02, !- Thickness {m}", + " 0.6918309, !- Conductivity {W/m-K}", + " 1858.142, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.9200000, !- Solar Absorptance", + " 0.9200000; !- Visible Absorptance", + + " Material,", + " CB11, !- Name", + " MediumRough, !- Roughness", + " 0.2032000, !- Thickness {m}", + " 1.048000, !- Conductivity {W/m-K}", + " 1105.000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.2000000, !- Solar Absorptance", + " 0.2000000; !- Visible Absorptance", + + " Material,", + " GP01, !- Name", + " MediumSmooth, !- Roughness", + " 1.2700000E-02, !- Thickness {m}", + " 0.1600000, !- Conductivity {W/m-K}", + " 801.0000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " IN02, !- Name", + " Rough, !- Roughness", + " 9.0099998E-02, !- Thickness {m}", + " 4.3000001E-02, !- Conductivity {W/m-K}", + " 10.00000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " IN05, !- Name", + " Rough, !- Roughness", + " 0.2458000, !- Thickness {m}", + " 4.3000001E-02, !- Conductivity {W/m-K}", + " 10.00000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " PW03, !- Name", + " MediumSmooth, !- Roughness", + " 1.2700000E-02, !- Thickness {m}", + " 0.1150000, !- Conductivity {W/m-K}", + " 545.0000, !- Density {kg/m3}", + " 1213.000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7800000, !- Solar Absorptance", + " 0.7800000; !- Visible Absorptance", + + " Material,", + " CC03, !- Name", + " MediumRough, !- Roughness", + " 0.1016000, !- Thickness {m}", + " 1.310000, !- Conductivity {W/m-K}", + " 2243.000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + + " Material,", + " HF-A3, !- Name", + " Smooth, !- Roughness", + " 1.5000000E-03, !- Thickness {m}", + " 44.96960, !- Conductivity {W/m-K}", + " 7689.000, !- Density {kg/m3}", + " 418.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.2000000, !- Solar Absorptance", + " 0.2000000; !- Visible Absorptance", + + " Material:NoMass,", + " AR02, !- Name", + " VeryRough, !- Roughness", + " 7.8000002E-02, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7000000, !- Solar Absorptance", + " 0.7000000; !- Visible Absorptance", + + " Material:NoMass,", + " CP02, !- Name", + " Rough, !- Roughness", + " 0.2170000, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Construction,", + " EXTWALL:LIVING, !- Name", + " A1 - 1 IN STUCCO, !- Outside Layer", + " GP01; !- Layer 3", + + " Construction,", + " FLOOR:LIVING, !- Name", + " CC03, !- Outside Layer", + " CP02; !- Layer 2", + + " Construction,", + " ROOF, !- Name", + " AR02, !- Outside Layer", + " PW03; !- Layer 2", + + " Zone,", + " LIVING ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " CounterClockWise, !- Vertex Entry Direction", + " World; !- Coordinate System", + + " BuildingSurface:Detailed,", + " Living:North, !- Name", + " Wall, !- Surface Type", + " EXTWALL:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 1,1,1, !- X,Y,Z ==> Vertex 1 {m}", + " 1,1,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,1,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,1,1; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Living:East, !- Name", + " Wall, !- Surface Type", + " EXTWALL:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 1,0,1, !- X,Y,Z ==> Vertex 1 {m}", + " 1,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 1,1,0, !- X,Y,Z ==> Vertex 3 {m}", + " 1,1,1; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Living:South, !- Name", + " Wall, !- Surface Type", + " EXTWALL:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,1, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 1,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 1,0,1; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Living:West, !- Name", + " Wall, !- Surface Type", + " EXTWALL:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,1,1, !- X,Y,Z ==> Vertex 1 {m}", + " 0,1,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,0,1; !- X,Y,Z ==> Vertex 4 {m}", + " BuildingSurface:Detailed,", + " Living:Floor, !- Name", + " FLOOR, !- Surface Type", + " FLOOR:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Living:Floor, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,0, !- X,Y,Z ==> Vertex 1 {m}", + " 0,1,0, !- X,Y,Z ==> Vertex 2 {m}", + " 1,1,0, !- X,Y,Z ==> Vertex 3 {m}", + " 1,0,0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Living:Ceiling, !- Name", + " ROOF, !- Surface Type", + " ROOF, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,1,1, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,1, !- X,Y,Z ==> Vertex 2 {m}", + " 1,0,1, !- X,Y,Z ==> Vertex 3 {m}", + " 1,1,1; !- X,Y,Z ==> Vertex 4 {m}", + + " SurfaceProperty:LocalEnvironment,", + " LocEnv:Living:North, !- Name", + " Living:North, !- Exterior Surface Name", + " , !- External Shading Fraction Schedule Name", + " , !- Surrounding Surfaces Object Name", + " OutdoorAirNode:0001; !- Outdoor Air Node Name", + + " OutdoorAir:Node,", + " OutdoorAirNode:0001, !- Name", + " , !- Height Above Ground", + " OutdoorAirNodeDryBulb:0001, !- Drybulb Temperature Schedule Name", + " OutdoorAirNodeWetBulb:0001, !- Wetbulb Schedule Name", + " OutdoorAirNodeWindSpeed:0001, !- Wind Speed Schedule Name", + " OutdoorAirNodeWindDir:0001; !- Wind Direction Schedule Name", + + " ScheduleTypeLimits,", + " Any Number; !- Name", + + " Schedule:Compact,", + " OutdoorAirNodeDryBulb:0001, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00, 15.0; !- Field 3", + + " Schedule:Compact,", + " OutdoorAirNodeWetBulb:0001, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00, 12.0; !- Field 3", + + " Schedule:Compact,", + " OutdoorAirNodeWindSpeed:0001, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00, 1.23; !- Field 3", + + " Schedule:Compact,", + " OutdoorAirNodeWindDir:0001, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", " Until: 24:00, 90; !- Field 3"}); - ASSERT_TRUE( process_idf( idf_objects ) ); - bool ErrorsFound = false; - - ScheduleManager::ProcessScheduleInput(); - - HeatBalanceManager::GetProjectControlData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetZoneData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetMaterialData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetConstructData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - SurfaceGeometry::GetGeometryParameters( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - - SurfaceGeometry::CosBldgRotAppGonly = 1.0; - SurfaceGeometry::SinBldgRotAppGonly = 0.0; - SurfaceGeometry::GetSurfaceData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - - EXPECT_TRUE( DataGlobals::AnyLocalEnvironmentsInModel ); - - DataZoneEquipment::ZoneEquipConfig.allocate(1); - DataZoneEquipment::ZoneEquipConfig(1).ZoneName = "LIVING ZONE"; - DataZoneEquipment::ZoneEquipConfig(1).ActualZoneNum = 1; - std::vector< int > controlledZoneEquipConfigNums; - controlledZoneEquipConfigNums.push_back(1); - DataHeatBalance::Zone(1).IsControlled = true; - - DataZoneEquipment::ZoneEquipConfig(1).NumInletNodes = 2; - DataZoneEquipment::ZoneEquipConfig(1).InletNode.allocate(2); - DataZoneEquipment::ZoneEquipConfig(1).InletNode(1) = 1; - DataZoneEquipment::ZoneEquipConfig(1).InletNode(2) = 2; - DataZoneEquipment::ZoneEquipConfig(1).NumExhaustNodes = 1; - DataZoneEquipment::ZoneEquipConfig(1).ExhaustNode.allocate(1); - DataZoneEquipment::ZoneEquipConfig(1).ExhaustNode(1) = 3; - DataZoneEquipment::ZoneEquipConfig( 1 ).NumReturnNodes = 1; - DataZoneEquipment::ZoneEquipConfig( 1 ).ReturnNode.allocate( 1 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).ReturnNode( 1 ) = 4; - - DataSizing::ZoneEqSizing.allocate(1); - DataHeatBalance::Zone(1).SystemZoneNodeNumber = 5; - DataEnvironment::OutBaroPress = 101325.0; - DataHeatBalFanSys::MAT.allocate(1); // Zone temperature C - DataHeatBalFanSys::MAT(1) = 24.0; - DataHeatBalFanSys::ZoneAirHumRat.allocate(1); - DataHeatBalFanSys::ZoneAirHumRat(1) = 0.001; - - DataLoopNode::Node.allocate(4); - DataSurfaces::Surface(1).TAirRef = DataSurfaces::ZoneMeanAirTemp; - DataSurfaces::Surface(2).TAirRef = DataSurfaces::AdjacentAirTemp; - DataSurfaces::Surface(3).TAirRef = DataSurfaces::ZoneSupplyAirTemp; - - DataHeatBalSurface::TempSurfInTmp.allocate(6); - DataHeatBalSurface::TempSurfInTmp(1) = 15.0; - DataHeatBalSurface::TempSurfInTmp(2) = 20.0; - DataHeatBalSurface::TempSurfInTmp(3) = 25.0; - DataHeatBalSurface::TempSurfInTmp(4) = 25.0; - DataHeatBalSurface::TempSurfInTmp(5) = 25.0; - DataHeatBalSurface::TempSurfInTmp(6) = 25.0; - DataHeatBalance::TempEffBulkAir.allocate(6); - - DataLoopNode::Node(1).Temp = 20.0; - DataLoopNode::Node(2).Temp = 20.0; - DataLoopNode::Node(3).Temp = 20.0; - DataLoopNode::Node(4).Temp = 20.0; - DataLoopNode::Node(1).MassFlowRate = 0.1; - DataLoopNode::Node(2).MassFlowRate = 0.1; - DataLoopNode::Node(3).MassFlowRate = 0.1; - DataLoopNode::Node(4).MassFlowRate = 0.1; - - DataHeatBalSurface::TH.allocate(2, 2, 6); - DataHeatBalSurface::TH(1, 1, 1) = 20; - DataHeatBalSurface::TH(1, 1, 2) = 20; - DataHeatBalSurface::TH(1, 1, 3) = 20; - DataHeatBalSurface::TH(1, 1, 4) = 20; - DataHeatBalSurface::TH(1, 1, 5) = 20; - DataHeatBalSurface::TH(1, 1, 6) = 20; - DataHeatBalance::HConvIn.allocate(6); - DataHeatBalance::HConvIn(1) = 0.5; - DataHeatBalance::HConvIn(2) = 0.5; - DataHeatBalance::HConvIn(3) = 0.5; - DataHeatBalance::HConvIn(4) = 0.5; - DataHeatBalance::HConvIn(5) = 0.5; - DataHeatBalance::HConvIn(6) = 0.5; - DataMoistureBalance::HConvInFD.allocate(6); - DataMoistureBalance::RhoVaporAirIn.allocate(6); - DataMoistureBalance::HMassConvInFD.allocate(6); - - DataGlobals::KickOffSimulation = true; - DataHeatBalFanSys::ZoneLatentGain.allocate(1); - DataGlobals::TimeStepZoneSec = 900; - DataHeatBalance::ZoneWinHeatGain.allocate(1); - DataHeatBalance::ZoneWinHeatGainRep.allocate(1); - DataHeatBalance::ZoneWinHeatGainRepEnergy.allocate(1); - - // Set up - AllocateSurfaceHeatBalArrays(); - createFacilityElectricPowerServiceObject(); - SolarShading::AllocateModuleArrays(); - SolarShading::DetermineShadowingCombinations(); - OutAirNodeManager::GetOutAirNodesInput(); - ScheduleManager::Schedule( 1 ).CurrentValue = 25.0; - ScheduleManager::Schedule( 2 ).CurrentValue = 20.0; - ScheduleManager::Schedule( 3 ).CurrentValue = 1.5; - ScheduleManager::Schedule( 4 ).CurrentValue = 90.0; - - OutAirNodeManager::InitOutAirNodes(); - - // Test if local nodes data correctly overwritten - EXPECT_EQ( 25.0, DataLoopNode::Node( 1 ).OutAirDryBulb ); - EXPECT_EQ( 20.0, DataLoopNode::Node( 1 ).OutAirWetBulb); - EXPECT_EQ( 1.5, DataLoopNode::Node( 1 ).OutAirWindSpeed ); - EXPECT_EQ( 90.0, DataLoopNode::Node( 1 ).OutAirWindDir ); - EXPECT_DOUBLE_EQ( 0.012611481326656135, DataLoopNode::Node( 1 ).HumRat ); - EXPECT_DOUBLE_EQ( 57247.660939392081, DataLoopNode::Node( 1 ).Enthalpy ); - - InitSurfaceHeatBalance(); - - // Test if local value correctly overwritten - EXPECT_EQ( 25.0, DataSurfaces::Surface( 1 ).OutDryBulbTemp ); - EXPECT_EQ( 20.0, DataSurfaces::Surface( 1 ).OutWetBulbTemp ); - EXPECT_EQ( 1.5, DataSurfaces::Surface( 1 ).WindSpeed ); - EXPECT_EQ( 90.0, DataSurfaces::Surface( 1 ).WindDir ); - - // Test if local value used in surface hc calculation - // Surface(1) - local; Surface(2) - global; - for (int SurfNum = 1; SurfNum <= 6; SurfNum++ ) { - DataSurfaces::Surface( SurfNum ).ExtConvCoeff = -1; - } - CalcHeatBalanceOutsideSurf(); - Real64 HExt_Expect_Surf1 = ConvectionCoefficients::CalcASHRAESimpExtConvectCoeff( 5, 1.5 ); - Real64 HExt_Expect_Surf2 = ConvectionCoefficients::CalcASHRAESimpExtConvectCoeff( 5, 0.0 ); - EXPECT_EQ( HExt_Expect_Surf1, DataHeatBalSurface::HcExtSurf( 1 ) ); - EXPECT_EQ( HExt_Expect_Surf2, DataHeatBalSurface::HcExtSurf( 2 ) ); - } - - TEST_F( EnergyPlusFixture, HeatBalanceSurfaceManager_TestSurfPropertySrdSurfLWR ) - { - - std::string const idf_objects = delimited_string({ - " Version,8.9;", - - " Building,", - " House with Local Air Nodes, !- Name", - " 0, !- North Axis {deg}", - " Suburbs, !- Terrain", - " 0.001, !- Loads Convergence Tolerance Value", - " 0.0050000, !- Temperature Convergence Tolerance Value {deltaC}", - " FullInteriorAndExterior, !- Solar Distribution", - " 25, !- Maximum Number of Warmup Days", - " 6; !- Minimum Number of Warmup Days", - - " Timestep,6;", - - " SurfaceConvectionAlgorithm:Inside,TARP;", - - " SurfaceConvectionAlgorithm:Outside,DOE-2;", - - " HeatBalanceAlgorithm,ConductionTransferFunction;", - - " Output:DebuggingData,0,0;", - - " SimulationControl,", - " No, !- Do Zone Sizing Calculation", - " No, !- Do System Sizing Calculation", - " No, !- Do Plant Sizing Calculation", - " Yes, !- Run Simulation for Sizing Periods", - " Yes; !- Run Simulation for Weather File Run Periods", - - " RunPeriod,", - " , !- Name", - " 1, !- Begin Month", - " 14, !- Begin Day of Month", - " , !- Begin Year", - " 1, !- End Month", - " 14, !- End Day of Month", - " , !- End Year", - " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " Yes; !- Use Weather File Snow Indicators", - - " RunPeriod,", - " , !- Name", - " 7, !- Begin Month", - " 7, !- Begin Day of Month", - " , !- Begin Year", - " 7, !- End Month", - " 7, !- End Day of Month", - " , !- End Year", - " Tuesday, !- Day of Week for Start Day", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " No; !- Use Weather File Snow Indicators", - - " Site:Location,", - " CHICAGO_IL_USA TMY2-94846, !- Name", - " 41.78, !- Latitude {deg}", - " -87.75, !- Longitude {deg}", - " -6.00, !- Time Zone {hr}", - " 190.00; !- Elevation {m}", - - " SizingPeriod:DesignDay,", - " CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, !- Name", - " 1, !- Month", - " 21, !- Day of Month", - " WinterDesignDay, !- Day Type", - " -17.3, !- Maximum Dry-Bulb Temperature {C}", - " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 4.9, !- Wind Speed {m/s}", - " 270, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 0.0; !- Sky Clearness", - - " SizingPeriod:DesignDay,", - " CHICAGO_IL_USA Annual Cooling 1% Design Conditions DB/MCWB, !- Name", - " 7, !- Month", - " 21, !- Day of Month", - " SummerDesignDay, !- Day Type", - " 31.5, !- Maximum Dry-Bulb Temperature {C}", - " 10.7, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " 23.0, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 5.3, !- Wind Speed {m/s}", - " 230, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 1.0; !- Sky Clearness", - - " Site:GroundTemperature:BuildingSurface,20.03,20.03,20.13,20.30,20.43,20.52,20.62,20.77,20.78,20.55,20.44,20.20;", - - " Material,", - " A1 - 1 IN STUCCO, !- Name", - " Smooth, !- Roughness", - " 2.5389841E-02, !- Thickness {m}", - " 0.6918309, !- Conductivity {W/m-K}", - " 1858.142, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.9200000, !- Solar Absorptance", - " 0.9200000; !- Visible Absorptance", - - " Material,", - " CB11, !- Name", - " MediumRough, !- Roughness", - " 0.2032000, !- Thickness {m}", - " 1.048000, !- Conductivity {W/m-K}", - " 1105.000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.2000000, !- Solar Absorptance", - " 0.2000000; !- Visible Absorptance", - - " Material,", - " GP01, !- Name", - " MediumSmooth, !- Roughness", - " 1.2700000E-02, !- Thickness {m}", - " 0.1600000, !- Conductivity {W/m-K}", - " 801.0000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " IN02, !- Name", - " Rough, !- Roughness", - " 9.0099998E-02, !- Thickness {m}", - " 4.3000001E-02, !- Conductivity {W/m-K}", - " 10.00000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " IN05, !- Name", - " Rough, !- Roughness", - " 0.2458000, !- Thickness {m}", - " 4.3000001E-02, !- Conductivity {W/m-K}", - " 10.00000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " PW03, !- Name", - " MediumSmooth, !- Roughness", - " 1.2700000E-02, !- Thickness {m}", - " 0.1150000, !- Conductivity {W/m-K}", - " 545.0000, !- Density {kg/m3}", - " 1213.000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7800000, !- Solar Absorptance", - " 0.7800000; !- Visible Absorptance", - - " Material,", - " CC03, !- Name", - " MediumRough, !- Roughness", - " 0.1016000, !- Thickness {m}", - " 1.310000, !- Conductivity {W/m-K}", - " 2243.000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - - " Material,", - " HF-A3, !- Name", - " Smooth, !- Roughness", - " 1.5000000E-03, !- Thickness {m}", - " 44.96960, !- Conductivity {W/m-K}", - " 7689.000, !- Density {kg/m3}", - " 418.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.2000000, !- Solar Absorptance", - " 0.2000000; !- Visible Absorptance", - - " Material:NoMass,", - " AR02, !- Name", - " VeryRough, !- Roughness", - " 7.8000002E-02, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7000000, !- Solar Absorptance", - " 0.7000000; !- Visible Absorptance", - - " Material:NoMass,", - " CP02, !- Name", - " Rough, !- Roughness", - " 0.2170000, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Construction,", - " EXTWALL:LIVING, !- Name", - " A1 - 1 IN STUCCO, !- Outside Layer", - " GP01; !- Layer 3", - - " Construction,", - " FLOOR:LIVING, !- Name", - " CC03, !- Outside Layer", - " CP02; !- Layer 2", - - " Construction,", - " ROOF, !- Name", - " AR02, !- Outside Layer", - " PW03; !- Layer 2", - - " Zone,", - " LIVING ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " CounterClockWise, !- Vertex Entry Direction", - " World; !- Coordinate System", - - " BuildingSurface:Detailed,", - " Living:North, !- Name", - " Wall, !- Surface Type", - " EXTWALL:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 1,1,1, !- X,Y,Z ==> Vertex 1 {m}", - " 1,1,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,1,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,1,1; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Living:East, !- Name", - " Wall, !- Surface Type", - " EXTWALL:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 1,0,1, !- X,Y,Z ==> Vertex 1 {m}", - " 1,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 1,1,0, !- X,Y,Z ==> Vertex 3 {m}", - " 1,1,1; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Living:South, !- Name", - " Wall, !- Surface Type", - " EXTWALL:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,1, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 1,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 1,0,1; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Living:West, !- Name", - " Wall, !- Surface Type", - " EXTWALL:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,1,1, !- X,Y,Z ==> Vertex 1 {m}", - " 0,1,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,0,1; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Living:Floor, !- Name", - " FLOOR, !- Surface Type", - " FLOOR:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Living:Floor, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,0, !- X,Y,Z ==> Vertex 1 {m}", - " 0,1,0, !- X,Y,Z ==> Vertex 2 {m}", - " 1,1,0, !- X,Y,Z ==> Vertex 3 {m}", - " 1,0,0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Living:Ceiling, !- Name", - " ROOF, !- Surface Type", - " ROOF, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,1,1, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,1, !- X,Y,Z ==> Vertex 2 {m}", - " 1,0,1, !- X,Y,Z ==> Vertex 3 {m}", - " 1,1,1; !- X,Y,Z ==> Vertex 4 {m}", - - " SurfaceProperty:LocalEnvironment,", - " LocEnv:Living:North, !- Name", - " Living:North, !- Exterior Surface Name", - " , !- External Shading Fraction Schedule Name", - " SrdSurfs:Living:North, !- Surrounding Surfaces Object Name", - " ; !- Outdoor Air Node Name", - - " SurfaceProperty:LocalEnvironment,", - " LocEnv:Living:East, !- Name", - " Living:East, !- Exterior Surface Name", - " , !- External Shading Fraction Schedule Name", - " SrdSurfs:Living:East, !- Surrounding Surfaces Object Name", - " ; !- Outdoor Air Node Name", - - " SurfaceProperty:LocalEnvironment,", - " LocEnv:Living:South, !- Name", - " Living:South, !- Exterior Surface Name", - " , !- External Shading Fraction Schedule Name", - " SrdSurfs:Living:South, !- Surrounding Surfaces Object Name", - " ; !- Outdoor Air Node Name", - - " SurfaceProperty:SurroundingSurfaces,", - " SrdSurfs:Living:North, !- Name", - " 0.3,", - " Sky Temp Sch,", - " 0.1,", - " Ground Temp Sch,", - " SurroundingSurface1,", - " 0.6,", - " Surrounding Temp Sch 1;", - - " SurfaceProperty:SurroundingSurfaces,", - " SrdSurfs:Living:East, !- Name", - " 0.2,", - " ,", - " ,", - " ,", - " SurroundingSurface1,", - " 0.3,", - " Surrounding Temp Sch 1,", - " SurroundingSurface2,", - " 0.3,", - " Surrounding Temp Sch 1;", - - " SurfaceProperty:SurroundingSurfaces,", - " SrdSurfs:Living:South, !- Name", - " ,", - " ,", - " ,", - " ,", - " SurroundingSurface1,", - " 0.5,", - " Surrounding Temp Sch 1;", - - " ScheduleTypeLimits,", - " Any Number; !- Name", - - " Schedule:Compact,", - " Surrounding Temp Sch 1, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00, 15.0; !- Field 3", - - " Schedule:Compact,", - " Sky Temp Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00, 15.0; !- Field 3", - - " Schedule:Compact,", - " Ground Temp Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00, 15.0; !- Field 3", - - }); - - ASSERT_TRUE( process_idf( idf_objects ) ); - bool ErrorsFound = false; - - ScheduleManager::ProcessScheduleInput(); - - HeatBalanceManager::GetProjectControlData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetZoneData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetMaterialData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetConstructData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - SurfaceGeometry::GetGeometryParameters( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - - SurfaceGeometry::CosBldgRotAppGonly = 1.0; - SurfaceGeometry::SinBldgRotAppGonly = 0.0; - SurfaceGeometry::GetSurfaceData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - - EXPECT_TRUE( DataGlobals::AnyLocalEnvironmentsInModel ); - - DataZoneEquipment::ZoneEquipConfig.allocate( 1 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).ZoneName = "LIVING ZONE"; - DataZoneEquipment::ZoneEquipConfig( 1 ).ActualZoneNum = 1; - std::vector< int > controlledZoneEquipConfigNums; - controlledZoneEquipConfigNums.push_back( 1 ); - DataHeatBalance::Zone( 1 ).IsControlled = true; - - DataZoneEquipment::ZoneEquipConfig( 1 ).NumInletNodes = 2; - DataZoneEquipment::ZoneEquipConfig( 1 ).InletNode.allocate( 2 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).InletNode( 1 ) = 1; - DataZoneEquipment::ZoneEquipConfig( 1 ).InletNode( 2 ) = 2; - DataZoneEquipment::ZoneEquipConfig( 1 ).NumExhaustNodes = 1; - DataZoneEquipment::ZoneEquipConfig( 1 ).ExhaustNode.allocate( 1 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).ExhaustNode( 1 ) = 3; - DataZoneEquipment::ZoneEquipConfig( 1 ).NumReturnNodes = 1; - DataZoneEquipment::ZoneEquipConfig( 1 ).ReturnNode.allocate( 1 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).ReturnNode( 1 ) = 4; - - DataSizing::ZoneEqSizing.allocate( 1 ); - DataHeatBalance::Zone( 1 ).SystemZoneNodeNumber = 5; - DataEnvironment::OutBaroPress = 101325.0; - DataHeatBalFanSys::MAT.allocate( 1 ); // Zone temperature C - DataHeatBalFanSys::MAT( 1 ) = 24.0; - DataHeatBalFanSys::ZoneAirHumRat.allocate( 1 ); - DataHeatBalFanSys::ZoneAirHumRat( 1 ) = 0.001; - - DataLoopNode::Node.allocate(4); - DataSurfaces::Surface( 1 ).TAirRef = DataSurfaces::ZoneMeanAirTemp; - DataSurfaces::Surface( 2 ).TAirRef = DataSurfaces::AdjacentAirTemp; - DataSurfaces::Surface( 3 ).TAirRef = DataSurfaces::ZoneSupplyAirTemp; - - DataHeatBalSurface::TempSurfInTmp.allocate( 6 ); - DataHeatBalSurface::TempSurfInTmp( 1 ) = 15.0; - DataHeatBalSurface::TempSurfInTmp( 2 ) = 20.0; - DataHeatBalSurface::TempSurfInTmp( 3 ) = 25.0; - DataHeatBalSurface::TempSurfInTmp( 4 ) = 25.0; - DataHeatBalSurface::TempSurfInTmp( 5 ) = 25.0; - DataHeatBalSurface::TempSurfInTmp( 6 ) = 25.0; - DataHeatBalance::TempEffBulkAir.allocate( 6 ); - - DataLoopNode::Node( 1 ).Temp = 20.0; - DataLoopNode::Node( 2 ).Temp = 20.0; - DataLoopNode::Node( 3 ).Temp = 20.0; - DataLoopNode::Node( 4 ).Temp = 20.0; - DataLoopNode::Node( 1 ).MassFlowRate = 0.1; - DataLoopNode::Node( 2 ).MassFlowRate = 0.1; - DataLoopNode::Node( 3 ).MassFlowRate = 0.1; - DataLoopNode::Node(4).MassFlowRate = 0.1; - - DataHeatBalSurface::TH.allocate( 2, 2, 6 ); - DataHeatBalance::HConvIn.allocate( 6 ); - DataHeatBalance::HConvIn( 1 ) = 0.5; - DataHeatBalance::HConvIn( 2 ) = 0.5; - DataHeatBalance::HConvIn( 3 ) = 0.5; - DataHeatBalance::HConvIn( 4 ) = 0.5; - DataHeatBalance::HConvIn( 5 ) = 0.5; - DataHeatBalance::HConvIn( 6 ) = 0.5; - DataMoistureBalance::HConvInFD.allocate( 6 ); - DataMoistureBalance::RhoVaporAirIn.allocate( 6 ); - DataMoistureBalance::HMassConvInFD.allocate( 6 ); - - DataGlobals::KickOffSimulation = true; - DataHeatBalFanSys::ZoneLatentGain.allocate( 1 ); - DataGlobals::TimeStepZoneSec = 900; - DataHeatBalance::ZoneWinHeatGain.allocate( 1 ); - DataHeatBalance::ZoneWinHeatGainRep.allocate(1); - DataHeatBalance::ZoneWinHeatGainRepEnergy.allocate(1); - - // Set up - AllocateSurfaceHeatBalArrays(); - createFacilityElectricPowerServiceObject(); - SolarShading::AllocateModuleArrays(); - SolarShading::DetermineShadowingCombinations(); - - InitSurfaceHeatBalance(); - - DataSurfaces::AirSkyRadSplit.allocate( 6 ); - ScheduleManager::Schedule( 1 ).CurrentValue = 25.0; // Srd Srfs Temp - ScheduleManager::Schedule( 2 ).CurrentValue = 15.0; // Sky temp - ScheduleManager::Schedule( 3 ).CurrentValue = 22.0; // Grd temp - - int SurfNum; - Real64 const StefanBoltzmann( 5.6697E-8 ); - Real64 const KelvinConv( 273.15 ); - for ( SurfNum = 1; SurfNum <= 6; SurfNum++ ) { - DataHeatBalSurface::TH( 1, 1, SurfNum ) = 20; // Surf temp - DataSurfaces::Surface( SurfNum ).OutDryBulbTemp = 22; // Air temp - DataSurfaces::Surface( SurfNum ).ExtConvCoeff = -6; - DataSurfaces::AirSkyRadSplit( SurfNum ) = 1.0; - } - CalcHeatBalanceOutsideSurf(); - - // Test if local value correctly overwritten - // Surface(1-3) - local; Surface(4-6) - global; - EXPECT_DOUBLE_EQ( 0.3, DataSurfaces::Surface( 1 ).ViewFactorSkyIR ); - EXPECT_DOUBLE_EQ( 0.1, DataSurfaces::Surface( 1 ).ViewFactorGroundIR ); - EXPECT_DOUBLE_EQ( 0.2, DataSurfaces::Surface( 2 ).ViewFactorSkyIR ); - EXPECT_DOUBLE_EQ( 0.2, DataSurfaces::Surface( 2 ).ViewFactorGroundIR ); - EXPECT_DOUBLE_EQ( 0.25, DataSurfaces::Surface( 3 ).ViewFactorSkyIR ); - EXPECT_DOUBLE_EQ( 0.25, DataSurfaces::Surface( 3 ).ViewFactorGroundIR ); - // Test if sky and grd view factor and temperature correctly overwritten - EXPECT_DOUBLE_EQ( ( StefanBoltzmann * 0.9 * 0.3 * ( pow_4( 20.0 + KelvinConv ) - pow_4( 15.0 + KelvinConv ) ) / ( 20.0 - 15.0 ) ), - DataHeatBalSurface::HSkyExtSurf( 1 ) ); - EXPECT_DOUBLE_EQ( ( StefanBoltzmann * 0.9 * 0.1 * ( pow_4( 20.0 + KelvinConv ) - pow_4( 22.0 + KelvinConv ) ) / ( 20.0 - 22.0 ) ), - DataHeatBalSurface::HGrdExtSurf( 1 ) ); - - // Test if LWR from surrounding surfaces correctly calculated + ASSERT_TRUE(process_idf(idf_objects)); + bool ErrorsFound = false; + + ScheduleManager::ProcessScheduleInput(); + + HeatBalanceManager::GetProjectControlData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetZoneData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetMaterialData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetConstructData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + SurfaceGeometry::GetGeometryParameters(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + + SurfaceGeometry::CosBldgRotAppGonly = 1.0; + SurfaceGeometry::SinBldgRotAppGonly = 0.0; + SurfaceGeometry::GetSurfaceData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + + EXPECT_TRUE(DataGlobals::AnyLocalEnvironmentsInModel); + + DataZoneEquipment::ZoneEquipConfig.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).ZoneName = "LIVING ZONE"; + DataZoneEquipment::ZoneEquipConfig(1).ActualZoneNum = 1; + std::vector controlledZoneEquipConfigNums; + controlledZoneEquipConfigNums.push_back(1); + DataHeatBalance::Zone(1).IsControlled = true; + + DataZoneEquipment::ZoneEquipConfig(1).NumInletNodes = 2; + DataZoneEquipment::ZoneEquipConfig(1).InletNode.allocate(2); + DataZoneEquipment::ZoneEquipConfig(1).InletNode(1) = 1; + DataZoneEquipment::ZoneEquipConfig(1).InletNode(2) = 2; + DataZoneEquipment::ZoneEquipConfig(1).NumExhaustNodes = 1; + DataZoneEquipment::ZoneEquipConfig(1).ExhaustNode.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).ExhaustNode(1) = 3; + DataZoneEquipment::ZoneEquipConfig(1).NumReturnNodes = 1; + DataZoneEquipment::ZoneEquipConfig(1).ReturnNode.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).ReturnNode(1) = 4; + + DataSizing::ZoneEqSizing.allocate(1); + DataHeatBalance::Zone(1).SystemZoneNodeNumber = 5; + DataEnvironment::OutBaroPress = 101325.0; + DataHeatBalFanSys::MAT.allocate(1); // Zone temperature C + DataHeatBalFanSys::MAT(1) = 24.0; + DataHeatBalFanSys::ZoneAirHumRat.allocate(1); + DataHeatBalFanSys::ZoneAirHumRat(1) = 0.001; + + DataLoopNode::Node.allocate(4); + DataSurfaces::Surface(1).TAirRef = DataSurfaces::ZoneMeanAirTemp; + DataSurfaces::Surface(2).TAirRef = DataSurfaces::AdjacentAirTemp; + DataSurfaces::Surface(3).TAirRef = DataSurfaces::ZoneSupplyAirTemp; + + DataHeatBalSurface::TempSurfInTmp.allocate(6); + DataHeatBalSurface::TempSurfInTmp(1) = 15.0; + DataHeatBalSurface::TempSurfInTmp(2) = 20.0; + DataHeatBalSurface::TempSurfInTmp(3) = 25.0; + DataHeatBalSurface::TempSurfInTmp(4) = 25.0; + DataHeatBalSurface::TempSurfInTmp(5) = 25.0; + DataHeatBalSurface::TempSurfInTmp(6) = 25.0; + DataHeatBalance::TempEffBulkAir.allocate(6); + + DataLoopNode::Node(1).Temp = 20.0; + DataLoopNode::Node(2).Temp = 20.0; + DataLoopNode::Node(3).Temp = 20.0; + DataLoopNode::Node(4).Temp = 20.0; + DataLoopNode::Node(1).MassFlowRate = 0.1; + DataLoopNode::Node(2).MassFlowRate = 0.1; + DataLoopNode::Node(3).MassFlowRate = 0.1; + DataLoopNode::Node(4).MassFlowRate = 0.1; + + DataHeatBalSurface::TH.allocate(2, 2, 6); + DataHeatBalSurface::TH(1, 1, 1) = 20; + DataHeatBalSurface::TH(1, 1, 2) = 20; + DataHeatBalSurface::TH(1, 1, 3) = 20; + DataHeatBalSurface::TH(1, 1, 4) = 20; + DataHeatBalSurface::TH(1, 1, 5) = 20; + DataHeatBalSurface::TH(1, 1, 6) = 20; + DataHeatBalance::HConvIn.allocate(6); + DataHeatBalance::HConvIn(1) = 0.5; + DataHeatBalance::HConvIn(2) = 0.5; + DataHeatBalance::HConvIn(3) = 0.5; + DataHeatBalance::HConvIn(4) = 0.5; + DataHeatBalance::HConvIn(5) = 0.5; + DataHeatBalance::HConvIn(6) = 0.5; + DataMoistureBalance::HConvInFD.allocate(6); + DataMoistureBalance::RhoVaporAirIn.allocate(6); + DataMoistureBalance::HMassConvInFD.allocate(6); + + DataGlobals::KickOffSimulation = true; + DataHeatBalFanSys::ZoneLatentGain.allocate(1); + DataGlobals::TimeStepZoneSec = 900; + DataHeatBalance::ZoneWinHeatGain.allocate(1); + DataHeatBalance::ZoneWinHeatGainRep.allocate(1); + DataHeatBalance::ZoneWinHeatGainRepEnergy.allocate(1); + + // Set up + AllocateSurfaceHeatBalArrays(); + createFacilityElectricPowerServiceObject(); + SolarShading::AllocateModuleArrays(); + SolarShading::DetermineShadowingCombinations(); + OutAirNodeManager::GetOutAirNodesInput(); + ScheduleManager::Schedule(1).CurrentValue = 25.0; + ScheduleManager::Schedule(2).CurrentValue = 20.0; + ScheduleManager::Schedule(3).CurrentValue = 1.5; + ScheduleManager::Schedule(4).CurrentValue = 90.0; + + OutAirNodeManager::InitOutAirNodes(); + + // Test if local nodes data correctly overwritten + EXPECT_EQ(25.0, DataLoopNode::Node(1).OutAirDryBulb); + EXPECT_EQ(20.0, DataLoopNode::Node(1).OutAirWetBulb); + EXPECT_EQ(1.5, DataLoopNode::Node(1).OutAirWindSpeed); + EXPECT_EQ(90.0, DataLoopNode::Node(1).OutAirWindDir); + EXPECT_DOUBLE_EQ(0.012611481326656135, DataLoopNode::Node(1).HumRat); + EXPECT_DOUBLE_EQ(57247.660939392081, DataLoopNode::Node(1).Enthalpy); + + InitSurfaceHeatBalance(); + + // Test if local value correctly overwritten + EXPECT_EQ(25.0, DataSurfaces::Surface(1).OutDryBulbTemp); + EXPECT_EQ(20.0, DataSurfaces::Surface(1).OutWetBulbTemp); + EXPECT_EQ(1.5, DataSurfaces::Surface(1).WindSpeed); + EXPECT_EQ(90.0, DataSurfaces::Surface(1).WindDir); + + // Test if local value used in surface hc calculation + // Surface(1) - local; Surface(2) - global; + for (int SurfNum = 1; SurfNum <= 6; SurfNum++) { + DataSurfaces::Surface(SurfNum).ExtConvCoeff = -1; + } + CalcHeatBalanceOutsideSurf(); + Real64 HExt_Expect_Surf1 = ConvectionCoefficients::CalcASHRAESimpExtConvectCoeff(5, 1.5); + Real64 HExt_Expect_Surf2 = ConvectionCoefficients::CalcASHRAESimpExtConvectCoeff(5, 0.0); + EXPECT_EQ(HExt_Expect_Surf1, DataHeatBalSurface::HcExtSurf(1)); + EXPECT_EQ(HExt_Expect_Surf2, DataHeatBalSurface::HcExtSurf(2)); +} + +TEST_F(EnergyPlusFixture, HeatBalanceSurfaceManager_TestSurfPropertySrdSurfLWR) +{ + + std::string const idf_objects = delimited_string({ + " Version,8.9;", + + " Building,", + " House with Local Air Nodes, !- Name", + " 0, !- North Axis {deg}", + " Suburbs, !- Terrain", + " 0.001, !- Loads Convergence Tolerance Value", + " 0.0050000, !- Temperature Convergence Tolerance Value {deltaC}", + " FullInteriorAndExterior, !- Solar Distribution", + " 25, !- Maximum Number of Warmup Days", + " 6; !- Minimum Number of Warmup Days", + + " Timestep,6;", + + " SurfaceConvectionAlgorithm:Inside,TARP;", + + " SurfaceConvectionAlgorithm:Outside,DOE-2;", + + " HeatBalanceAlgorithm,ConductionTransferFunction;", + + " Output:DebuggingData,0,0;", + + " SimulationControl,", + " No, !- Do Zone Sizing Calculation", + " No, !- Do System Sizing Calculation", + " No, !- Do Plant Sizing Calculation", + " Yes, !- Run Simulation for Sizing Periods", + " Yes; !- Run Simulation for Weather File Run Periods", + + " RunPeriod,", + " , !- Name", + " 1, !- Begin Month", + " 14, !- Begin Day of Month", + " , !- Begin Year", + " 1, !- End Month", + " 14, !- End Day of Month", + " , !- End Year", + " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " Yes; !- Use Weather File Snow Indicators", + + " RunPeriod,", + " , !- Name", + " 7, !- Begin Month", + " 7, !- Begin Day of Month", + " , !- Begin Year", + " 7, !- End Month", + " 7, !- End Day of Month", + " , !- End Year", + " Tuesday, !- Day of Week for Start Day", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " No; !- Use Weather File Snow Indicators", + + " Site:Location,", + " CHICAGO_IL_USA TMY2-94846, !- Name", + " 41.78, !- Latitude {deg}", + " -87.75, !- Longitude {deg}", + " -6.00, !- Time Zone {hr}", + " 190.00; !- Elevation {m}", + + " SizingPeriod:DesignDay,", + " CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, !- Name", + " 1, !- Month", + " 21, !- Day of Month", + " WinterDesignDay, !- Day Type", + " -17.3, !- Maximum Dry-Bulb Temperature {C}", + " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 4.9, !- Wind Speed {m/s}", + " 270, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 0.0; !- Sky Clearness", + + " SizingPeriod:DesignDay,", + " CHICAGO_IL_USA Annual Cooling 1% Design Conditions DB/MCWB, !- Name", + " 7, !- Month", + " 21, !- Day of Month", + " SummerDesignDay, !- Day Type", + " 31.5, !- Maximum Dry-Bulb Temperature {C}", + " 10.7, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " 23.0, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 5.3, !- Wind Speed {m/s}", + " 230, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 1.0; !- Sky Clearness", + + " Site:GroundTemperature:BuildingSurface,20.03,20.03,20.13,20.30,20.43,20.52,20.62,20.77,20.78,20.55,20.44,20.20;", + + " Material,", + " A1 - 1 IN STUCCO, !- Name", + " Smooth, !- Roughness", + " 2.5389841E-02, !- Thickness {m}", + " 0.6918309, !- Conductivity {W/m-K}", + " 1858.142, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.9200000, !- Solar Absorptance", + " 0.9200000; !- Visible Absorptance", + + " Material,", + " CB11, !- Name", + " MediumRough, !- Roughness", + " 0.2032000, !- Thickness {m}", + " 1.048000, !- Conductivity {W/m-K}", + " 1105.000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.2000000, !- Solar Absorptance", + " 0.2000000; !- Visible Absorptance", + + " Material,", + " GP01, !- Name", + " MediumSmooth, !- Roughness", + " 1.2700000E-02, !- Thickness {m}", + " 0.1600000, !- Conductivity {W/m-K}", + " 801.0000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " IN02, !- Name", + " Rough, !- Roughness", + " 9.0099998E-02, !- Thickness {m}", + " 4.3000001E-02, !- Conductivity {W/m-K}", + " 10.00000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " IN05, !- Name", + " Rough, !- Roughness", + " 0.2458000, !- Thickness {m}", + " 4.3000001E-02, !- Conductivity {W/m-K}", + " 10.00000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " PW03, !- Name", + " MediumSmooth, !- Roughness", + " 1.2700000E-02, !- Thickness {m}", + " 0.1150000, !- Conductivity {W/m-K}", + " 545.0000, !- Density {kg/m3}", + " 1213.000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7800000, !- Solar Absorptance", + " 0.7800000; !- Visible Absorptance", + + " Material,", + " CC03, !- Name", + " MediumRough, !- Roughness", + " 0.1016000, !- Thickness {m}", + " 1.310000, !- Conductivity {W/m-K}", + " 2243.000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + + " Material,", + " HF-A3, !- Name", + " Smooth, !- Roughness", + " 1.5000000E-03, !- Thickness {m}", + " 44.96960, !- Conductivity {W/m-K}", + " 7689.000, !- Density {kg/m3}", + " 418.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.2000000, !- Solar Absorptance", + " 0.2000000; !- Visible Absorptance", + + " Material:NoMass,", + " AR02, !- Name", + " VeryRough, !- Roughness", + " 7.8000002E-02, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7000000, !- Solar Absorptance", + " 0.7000000; !- Visible Absorptance", + + " Material:NoMass,", + " CP02, !- Name", + " Rough, !- Roughness", + " 0.2170000, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Construction,", + " EXTWALL:LIVING, !- Name", + " A1 - 1 IN STUCCO, !- Outside Layer", + " GP01; !- Layer 3", + + " Construction,", + " FLOOR:LIVING, !- Name", + " CC03, !- Outside Layer", + " CP02; !- Layer 2", + + " Construction,", + " ROOF, !- Name", + " AR02, !- Outside Layer", + " PW03; !- Layer 2", + + " Zone,", + " LIVING ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " CounterClockWise, !- Vertex Entry Direction", + " World; !- Coordinate System", + + " BuildingSurface:Detailed,", + " Living:North, !- Name", + " Wall, !- Surface Type", + " EXTWALL:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 1,1,1, !- X,Y,Z ==> Vertex 1 {m}", + " 1,1,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,1,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,1,1; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Living:East, !- Name", + " Wall, !- Surface Type", + " EXTWALL:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 1,0,1, !- X,Y,Z ==> Vertex 1 {m}", + " 1,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 1,1,0, !- X,Y,Z ==> Vertex 3 {m}", + " 1,1,1; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Living:South, !- Name", + " Wall, !- Surface Type", + " EXTWALL:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,1, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 1,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 1,0,1; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Living:West, !- Name", + " Wall, !- Surface Type", + " EXTWALL:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,1,1, !- X,Y,Z ==> Vertex 1 {m}", + " 0,1,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,0,1; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Living:Floor, !- Name", + " FLOOR, !- Surface Type", + " FLOOR:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Living:Floor, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,0, !- X,Y,Z ==> Vertex 1 {m}", + " 0,1,0, !- X,Y,Z ==> Vertex 2 {m}", + " 1,1,0, !- X,Y,Z ==> Vertex 3 {m}", + " 1,0,0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Living:Ceiling, !- Name", + " ROOF, !- Surface Type", + " ROOF, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,1,1, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,1, !- X,Y,Z ==> Vertex 2 {m}", + " 1,0,1, !- X,Y,Z ==> Vertex 3 {m}", + " 1,1,1; !- X,Y,Z ==> Vertex 4 {m}", + + " SurfaceProperty:LocalEnvironment,", + " LocEnv:Living:North, !- Name", + " Living:North, !- Exterior Surface Name", + " , !- External Shading Fraction Schedule Name", + " SrdSurfs:Living:North, !- Surrounding Surfaces Object Name", + " ; !- Outdoor Air Node Name", + + " SurfaceProperty:LocalEnvironment,", + " LocEnv:Living:East, !- Name", + " Living:East, !- Exterior Surface Name", + " , !- External Shading Fraction Schedule Name", + " SrdSurfs:Living:East, !- Surrounding Surfaces Object Name", + " ; !- Outdoor Air Node Name", + + " SurfaceProperty:LocalEnvironment,", + " LocEnv:Living:South, !- Name", + " Living:South, !- Exterior Surface Name", + " , !- External Shading Fraction Schedule Name", + " SrdSurfs:Living:South, !- Surrounding Surfaces Object Name", + " ; !- Outdoor Air Node Name", + + " SurfaceProperty:SurroundingSurfaces,", + " SrdSurfs:Living:North, !- Name", + " 0.3,", + " Sky Temp Sch,", + " 0.1,", + " Ground Temp Sch,", + " SurroundingSurface1,", + " 0.6,", + " Surrounding Temp Sch 1;", + + " SurfaceProperty:SurroundingSurfaces,", + " SrdSurfs:Living:East, !- Name", + " 0.2,", + " ,", + " ,", + " ,", + " SurroundingSurface1,", + " 0.3,", + " Surrounding Temp Sch 1,", + " SurroundingSurface2,", + " 0.3,", + " Surrounding Temp Sch 1;", + + " SurfaceProperty:SurroundingSurfaces,", + " SrdSurfs:Living:South, !- Name", + " ,", + " ,", + " ,", + " ,", + " SurroundingSurface1,", + " 0.5,", + " Surrounding Temp Sch 1;", + + " ScheduleTypeLimits,", + " Any Number; !- Name", + + " Schedule:Compact,", + " Surrounding Temp Sch 1, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00, 15.0; !- Field 3", + + " Schedule:Compact,", + " Sky Temp Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00, 15.0; !- Field 3", + + " Schedule:Compact,", + " Ground Temp Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00, 15.0; !- Field 3", + + }); + + ASSERT_TRUE(process_idf(idf_objects)); + bool ErrorsFound = false; + + ScheduleManager::ProcessScheduleInput(); + + HeatBalanceManager::GetProjectControlData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetZoneData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetMaterialData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetConstructData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + SurfaceGeometry::GetGeometryParameters(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + + SurfaceGeometry::CosBldgRotAppGonly = 1.0; + SurfaceGeometry::SinBldgRotAppGonly = 0.0; + SurfaceGeometry::GetSurfaceData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + + EXPECT_TRUE(DataGlobals::AnyLocalEnvironmentsInModel); + + DataZoneEquipment::ZoneEquipConfig.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).ZoneName = "LIVING ZONE"; + DataZoneEquipment::ZoneEquipConfig(1).ActualZoneNum = 1; + std::vector controlledZoneEquipConfigNums; + controlledZoneEquipConfigNums.push_back(1); + DataHeatBalance::Zone(1).IsControlled = true; + + DataZoneEquipment::ZoneEquipConfig(1).NumInletNodes = 2; + DataZoneEquipment::ZoneEquipConfig(1).InletNode.allocate(2); + DataZoneEquipment::ZoneEquipConfig(1).InletNode(1) = 1; + DataZoneEquipment::ZoneEquipConfig(1).InletNode(2) = 2; + DataZoneEquipment::ZoneEquipConfig(1).NumExhaustNodes = 1; + DataZoneEquipment::ZoneEquipConfig(1).ExhaustNode.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).ExhaustNode(1) = 3; + DataZoneEquipment::ZoneEquipConfig(1).NumReturnNodes = 1; + DataZoneEquipment::ZoneEquipConfig(1).ReturnNode.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).ReturnNode(1) = 4; + + DataSizing::ZoneEqSizing.allocate(1); + DataHeatBalance::Zone(1).SystemZoneNodeNumber = 5; + DataEnvironment::OutBaroPress = 101325.0; + DataHeatBalFanSys::MAT.allocate(1); // Zone temperature C + DataHeatBalFanSys::MAT(1) = 24.0; + DataHeatBalFanSys::ZoneAirHumRat.allocate(1); + DataHeatBalFanSys::ZoneAirHumRat(1) = 0.001; + + DataLoopNode::Node.allocate(4); + DataSurfaces::Surface(1).TAirRef = DataSurfaces::ZoneMeanAirTemp; + DataSurfaces::Surface(2).TAirRef = DataSurfaces::AdjacentAirTemp; + DataSurfaces::Surface(3).TAirRef = DataSurfaces::ZoneSupplyAirTemp; + + DataHeatBalSurface::TempSurfInTmp.allocate(6); + DataHeatBalSurface::TempSurfInTmp(1) = 15.0; + DataHeatBalSurface::TempSurfInTmp(2) = 20.0; + DataHeatBalSurface::TempSurfInTmp(3) = 25.0; + DataHeatBalSurface::TempSurfInTmp(4) = 25.0; + DataHeatBalSurface::TempSurfInTmp(5) = 25.0; + DataHeatBalSurface::TempSurfInTmp(6) = 25.0; + DataHeatBalance::TempEffBulkAir.allocate(6); + + DataLoopNode::Node(1).Temp = 20.0; + DataLoopNode::Node(2).Temp = 20.0; + DataLoopNode::Node(3).Temp = 20.0; + DataLoopNode::Node(4).Temp = 20.0; + DataLoopNode::Node(1).MassFlowRate = 0.1; + DataLoopNode::Node(2).MassFlowRate = 0.1; + DataLoopNode::Node(3).MassFlowRate = 0.1; + DataLoopNode::Node(4).MassFlowRate = 0.1; + + DataHeatBalSurface::TH.allocate(2, 2, 6); + DataHeatBalance::HConvIn.allocate(6); + DataHeatBalance::HConvIn(1) = 0.5; + DataHeatBalance::HConvIn(2) = 0.5; + DataHeatBalance::HConvIn(3) = 0.5; + DataHeatBalance::HConvIn(4) = 0.5; + DataHeatBalance::HConvIn(5) = 0.5; + DataHeatBalance::HConvIn(6) = 0.5; + DataMoistureBalance::HConvInFD.allocate(6); + DataMoistureBalance::RhoVaporAirIn.allocate(6); + DataMoistureBalance::HMassConvInFD.allocate(6); + + DataGlobals::KickOffSimulation = true; + DataHeatBalFanSys::ZoneLatentGain.allocate(1); + DataGlobals::TimeStepZoneSec = 900; + DataHeatBalance::ZoneWinHeatGain.allocate(1); + DataHeatBalance::ZoneWinHeatGainRep.allocate(1); + DataHeatBalance::ZoneWinHeatGainRepEnergy.allocate(1); + + // Set up + AllocateSurfaceHeatBalArrays(); + createFacilityElectricPowerServiceObject(); + SolarShading::AllocateModuleArrays(); + SolarShading::DetermineShadowingCombinations(); + + InitSurfaceHeatBalance(); + + DataSurfaces::AirSkyRadSplit.allocate(6); + ScheduleManager::Schedule(1).CurrentValue = 25.0; // Srd Srfs Temp + ScheduleManager::Schedule(2).CurrentValue = 15.0; // Sky temp + ScheduleManager::Schedule(3).CurrentValue = 22.0; // Grd temp + + int SurfNum; + Real64 const StefanBoltzmann(5.6697E-8); + Real64 const KelvinConv(273.15); + for (SurfNum = 1; SurfNum <= 6; SurfNum++) { + DataHeatBalSurface::TH(1, 1, SurfNum) = 20; // Surf temp + DataSurfaces::Surface(SurfNum).OutDryBulbTemp = 22; // Air temp + DataSurfaces::Surface(SurfNum).ExtConvCoeff = -6; + DataSurfaces::AirSkyRadSplit(SurfNum) = 1.0; + } + CalcHeatBalanceOutsideSurf(); + + // Test if local value correctly overwritten + // Surface(1-3) - local; Surface(4-6) - global; + EXPECT_DOUBLE_EQ(0.3, DataSurfaces::Surface(1).ViewFactorSkyIR); + EXPECT_DOUBLE_EQ(0.1, DataSurfaces::Surface(1).ViewFactorGroundIR); + EXPECT_DOUBLE_EQ(0.2, DataSurfaces::Surface(2).ViewFactorSkyIR); + EXPECT_DOUBLE_EQ(0.2, DataSurfaces::Surface(2).ViewFactorGroundIR); + EXPECT_DOUBLE_EQ(0.25, DataSurfaces::Surface(3).ViewFactorSkyIR); + EXPECT_DOUBLE_EQ(0.25, DataSurfaces::Surface(3).ViewFactorGroundIR); + // Test if sky and grd view factor and temperature correctly overwritten + EXPECT_DOUBLE_EQ((StefanBoltzmann * 0.9 * 0.3 * (pow_4(20.0 + KelvinConv) - pow_4(15.0 + KelvinConv)) / (20.0 - 15.0)), + DataHeatBalSurface::HSkyExtSurf(1)); + EXPECT_DOUBLE_EQ((StefanBoltzmann * 0.9 * 0.1 * (pow_4(20.0 + KelvinConv) - pow_4(22.0 + KelvinConv)) / (20.0 - 22.0)), + DataHeatBalSurface::HGrdExtSurf(1)); + + // Test if LWR from surrounding surfaces correctly calculated EXPECT_DOUBLE_EQ(StefanBoltzmann * 0.9 * 0.6 * (pow_4(25.0 + KelvinConv) - pow_4(20.0 + KelvinConv)), DataHeatBalSurface::QRadLWOutSrdSurfs(1)); EXPECT_DOUBLE_EQ(StefanBoltzmann * 0.9 * (0.3 * (pow_4(25.0 + KelvinConv) - pow_4(20.0 + KelvinConv)) + 0.3 * (pow_4(25.0 + KelvinConv) - pow_4(20.0 + KelvinConv))), - DataHeatBalSurface::QRadLWOutSrdSurfs( 2 ) ); + DataHeatBalSurface::QRadLWOutSrdSurfs(2)); EXPECT_DOUBLE_EQ(StefanBoltzmann * 0.9 * 0.5 * (pow_4(25.0 + KelvinConv) - pow_4(20.0 + KelvinConv)), DataHeatBalSurface::QRadLWOutSrdSurfs(3)); - EXPECT_DOUBLE_EQ( 0.0, DataHeatBalSurface::QRadLWOutSrdSurfs( 4 ) ); - } - - TEST_F( EnergyPlusFixture, HeatBalanceSurfaceManager_SurfaceCOnstructionIndexTest ) - { - - std::string const idf_objects = delimited_string( { - " Version,8.7;", - " Output:Variable,Perimeter_ZN_1_wall_south_Window_1,Surface Window Transmitted Solar Radiation Rate,timestep;", - " Output:Variable,*,SURFACE CONSTRUCTION INDEX,timestep;", - " Output:Diagnostics, DisplayAdvancedReportVariables;", - } ); - - ASSERT_TRUE( process_idf( idf_objects ) ); - - DataGlobals::DisplayAdvancedReportVariables = true; - - DataSurfaces::TotSurfaces = 1; - DataGlobals::NumOfZones = 1; - DataHeatBalance::TotConstructs = 1; - DataHeatBalance::Zone.allocate( DataGlobals::NumOfZones ); - DataSurfaces::Surface.allocate( DataSurfaces::TotSurfaces ); - DataSurfaces::SurfaceWindow.allocate( DataSurfaces::TotSurfaces ); - DataHeatBalance::Construct.allocate( DataHeatBalance::TotConstructs ); - DataHeatBalance::AnyConstructInternalSourceInInput = true; - - DataSurfaces::Surface( 1 ).Class = DataSurfaces::SurfaceClass_Wall; - DataSurfaces::Surface( 1 ).HeatTransSurf = true; - DataSurfaces::Surface( 1 ).HeatTransferAlgorithm = DataSurfaces::HeatTransferModel_CTF; - DataSurfaces::Surface( 1 ).ExtBoundCond = 1; - DataSurfaces::Surface( 1 ).Construction = 1; - - DataHeatBalance::Construct( 1 ).NumCTFTerms = 2; - DataHeatBalance::Construct( 1 ).SourceSinkPresent = true; - DataHeatBalance::Construct( 1 ).NumHistories = 1; - DataHeatBalance::Construct( 1 ).CTFTUserOut( 0 ) = 0.5; - DataHeatBalance::Construct( 1 ).CTFTUserIn( 0 ) = 0.25; - DataHeatBalance::Construct( 1 ).CTFTUserSource( 0 ) = 0.25; - - AllocateSurfaceHeatBalArrays( ); // allocates a host of variables related to CTF calculations - OutputProcessor::GetReportVariableInput( ); - - EXPECT_EQ( OutputProcessor::ReqRepVars( 2 ).VarName, "SURFACE CONSTRUCTION INDEX" ); - } - - TEST_F( EnergyPlusFixture, HeatBalanceSurfaceManager_TestSurfTempCalcHeatBalanceAddSourceTerm ) - { + EXPECT_DOUBLE_EQ(0.0, DataHeatBalSurface::QRadLWOutSrdSurfs(4)); +} + +TEST_F(EnergyPlusFixture, HeatBalanceSurfaceManager_SurfaceCOnstructionIndexTest) +{ + + std::string const idf_objects = delimited_string({ + " Version,8.7;", + " Output:Variable,Perimeter_ZN_1_wall_south_Window_1,Surface Window Transmitted Solar Radiation Rate,timestep;", + " Output:Variable,*,SURFACE CONSTRUCTION INDEX,timestep;", + " Output:Diagnostics, DisplayAdvancedReportVariables;", + }); + + ASSERT_TRUE(process_idf(idf_objects)); + + DataGlobals::DisplayAdvancedReportVariables = true; + + DataSurfaces::TotSurfaces = 1; + DataGlobals::NumOfZones = 1; + DataHeatBalance::TotConstructs = 1; + DataHeatBalance::Zone.allocate(DataGlobals::NumOfZones); + DataSurfaces::Surface.allocate(DataSurfaces::TotSurfaces); + DataSurfaces::SurfaceWindow.allocate(DataSurfaces::TotSurfaces); + DataHeatBalance::Construct.allocate(DataHeatBalance::TotConstructs); + DataHeatBalance::AnyConstructInternalSourceInInput = true; + + DataSurfaces::Surface(1).Class = DataSurfaces::SurfaceClass_Wall; + DataSurfaces::Surface(1).HeatTransSurf = true; + DataSurfaces::Surface(1).HeatTransferAlgorithm = DataSurfaces::HeatTransferModel_CTF; + DataSurfaces::Surface(1).ExtBoundCond = 1; + DataSurfaces::Surface(1).Construction = 1; + + DataHeatBalance::Construct(1).NumCTFTerms = 2; + DataHeatBalance::Construct(1).SourceSinkPresent = true; + DataHeatBalance::Construct(1).NumHistories = 1; + DataHeatBalance::Construct(1).CTFTUserOut(0) = 0.5; + DataHeatBalance::Construct(1).CTFTUserIn(0) = 0.25; + DataHeatBalance::Construct(1).CTFTUserSource(0) = 0.25; + + AllocateSurfaceHeatBalArrays(); // allocates a host of variables related to CTF calculations + OutputProcessor::GetReportVariableInput(); + + EXPECT_EQ(OutputProcessor::ReqRepVars(2).VarName, "SURFACE CONSTRUCTION INDEX"); +} + +TEST_F(EnergyPlusFixture, HeatBalanceSurfaceManager_TestSurfTempCalcHeatBalanceAddSourceTerm) +{ std::string const idf_objects = delimited_string({" Version,8.9;", - " Building,", - " House with AirflowNetwork simulation, !- Name", - " 0, !- North Axis {deg}", - " Suburbs, !- Terrain", - " 0.001, !- Loads Convergence Tolerance Value", - " 0.0050000, !- Temperature Convergence Tolerance Value {deltaC}", - " FullInteriorAndExterior, !- Solar Distribution", - " 25, !- Maximum Number of Warmup Days", - " 6; !- Minimum Number of Warmup Days", - - " Timestep,6;", - - " SurfaceConvectionAlgorithm:Inside,TARP;", - - " SurfaceConvectionAlgorithm:Outside,DOE-2;", - - " HeatBalanceAlgorithm,ConductionTransferFunction;", - - " Output:DebuggingData,0,0;", - - " SimulationControl,", - " No, !- Do Zone Sizing Calculation", - " No, !- Do System Sizing Calculation", - " No, !- Do Plant Sizing Calculation", - " Yes, !- Run Simulation for Sizing Periods", - " No; !- Run Simulation for Weather File Run Periods", - - " RunPeriod,", - " , !- Name", - " 1, !- Begin Month", - " 14, !- Begin Day of Month", - " , !- Begin Year", - " 1, !- End Month", - " 14, !- End Day of Month", - " , !- End Year", - " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " Yes; !- Use Weather File Snow Indicators", - - " RunPeriod,", - " , !- Name", - " 7, !- Begin Month", - " 7, !- Begin Day of Month", - " , !- Begin Year", - " 7, !- End Month", - " 7, !- End Day of Month", - " , !- End Year", - " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " No; !- Use Weather File Snow Indicators", - - " Site:Location,", - " CHICAGO_IL_USA TMY2-94846, !- Name", - " 41.78, !- Latitude {deg}", - " -87.75, !- Longitude {deg}", - " -6.00, !- Time Zone {hr}", - " 190.00; !- Elevation {m}", - - " SizingPeriod:DesignDay,", - " CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, !- Name", - " 1, !- Month", - " 21, !- Day of Month", - " WinterDesignDay, !- Day Type", - " -17.3, !- Maximum Dry-Bulb Temperature {C}", - " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 4.9, !- Wind Speed {m/s}", - " 270, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 0.0; !- Sky Clearness", - - " SizingPeriod:DesignDay,", - " CHICAGO_IL_USA Annual Cooling 1% Design Conditions DB/MCWB, !- Name", - " 7, !- Month", - " 21, !- Day of Month", - " SummerDesignDay, !- Day Type", - " 31.5, !- Maximum Dry-Bulb Temperature {C}", - " 10.7, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " 23.0, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 5.3, !- Wind Speed {m/s}", - " 230, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 1.0; !- Sky Clearness", - - " Site:GroundTemperature:BuildingSurface,20.03,20.03,20.13,20.30,20.43,20.52,20.62,20.77,20.78,20.55,20.44,20.20;", - - " Material,", - " A1 - 1 IN STUCCO, !- Name", - " Smooth, !- Roughness", - " 2.5389841E-02, !- Thickness {m}", - " 0.6918309, !- Conductivity {W/m-K}", - " 1858.142, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.9200000, !- Solar Absorptance", - " 0.9200000; !- Visible Absorptance", - - " Material,", - " CB11, !- Name", - " MediumRough, !- Roughness", - " 0.2032000, !- Thickness {m}", - " 1.048000, !- Conductivity {W/m-K}", - " 1105.000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.2000000, !- Solar Absorptance", - " 0.2000000; !- Visible Absorptance", - - " Material,", - " GP01, !- Name", - " MediumSmooth, !- Roughness", - " 1.2700000E-02, !- Thickness {m}", - " 0.1600000, !- Conductivity {W/m-K}", - " 801.0000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " IN02, !- Name", - " Rough, !- Roughness", - " 9.0099998E-02, !- Thickness {m}", - " 4.3000001E-02, !- Conductivity {W/m-K}", - " 10.00000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " IN05, !- Name", - " Rough, !- Roughness", - " 0.2458000, !- Thickness {m}", - " 4.3000001E-02, !- Conductivity {W/m-K}", - " 10.00000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " PW03, !- Name", - " MediumSmooth, !- Roughness", - " 1.2700000E-02, !- Thickness {m}", - " 0.1150000, !- Conductivity {W/m-K}", - " 545.0000, !- Density {kg/m3}", - " 1213.000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7800000, !- Solar Absorptance", - " 0.7800000; !- Visible Absorptance", - - " Material,", - " CC03, !- Name", - " MediumRough, !- Roughness", - " 0.1016000, !- Thickness {m}", - " 1.310000, !- Conductivity {W/m-K}", - " 2243.000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - - " Material,", - " HF-A3, !- Name", - " Smooth, !- Roughness", - " 1.5000000E-03, !- Thickness {m}", - " 44.96960, !- Conductivity {W/m-K}", - " 7689.000, !- Density {kg/m3}", - " 418.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.2000000, !- Solar Absorptance", - " 0.2000000; !- Visible Absorptance", - - " Material:NoMass,", - " AR02, !- Name", - " VeryRough, !- Roughness", - " 7.8000002E-02, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7000000, !- Solar Absorptance", - " 0.7000000; !- Visible Absorptance", - - " Material:NoMass,", - " CP02, !- Name", - " Rough, !- Roughness", - " 0.2170000, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Construction,", - " EXTWALL:LIVING, !- Name", - " A1 - 1 IN STUCCO, !- Outside Layer", - " GP01; !- Layer 3", - - " Construction,", - " FLOOR:LIVING, !- Name", - " CC03, !- Outside Layer", - " CP02; !- Layer 2", - - " Construction,", - " ROOF, !- Name", - " AR02, !- Outside Layer", - " PW03; !- Layer 2", - - " Zone,", - " LIVING ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " CounterClockWise, !- Vertex Entry Direction", - " World; !- Coordinate System", - - " BuildingSurface:Detailed,", - " Living:North, !- Name", - " Wall, !- Surface Type", - " EXTWALL:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 1,1,1, !- X,Y,Z ==> Vertex 1 {m}", - " 1,1,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,1,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,1,1; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Living:East, !- Name", - " Wall, !- Surface Type", - " EXTWALL:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 1,0,1, !- X,Y,Z ==> Vertex 1 {m}", - " 1,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 1,1,0, !- X,Y,Z ==> Vertex 3 {m}", - " 1,1,1; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Living:South, !- Name", - " Wall, !- Surface Type", - " EXTWALL:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,1, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 1,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 1,0,1; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Living:West, !- Name", - " Wall, !- Surface Type", - " EXTWALL:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,1,1, !- X,Y,Z ==> Vertex 1 {m}", - " 0,1,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,0,1; !- X,Y,Z ==> Vertex 4 {m}", - " BuildingSurface:Detailed,", - " Living:Floor, !- Name", - " FLOOR, !- Surface Type", - " FLOOR:LIVING, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Living:Floor, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,0, !- X,Y,Z ==> Vertex 1 {m}", - " 0,1,0, !- X,Y,Z ==> Vertex 2 {m}", - " 1,1,0, !- X,Y,Z ==> Vertex 3 {m}", - " 1,0,0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Living:Ceiling, !- Name", - " ROOF, !- Surface Type", - " ROOF, !- Construction Name", - " LIVING ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,1,1, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,1, !- X,Y,Z ==> Vertex 2 {m}", - " 1,0,1, !- X,Y,Z ==> Vertex 3 {m}", - " 1,1,1; !- X,Y,Z ==> Vertex 4 {m}", - "", - " Schedule:Compact,", - " Sche_Q_Evap_Cool, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31,", - " For: AllDays,", - " Until: 24:00, -0.1;", - "", - " Schedule:Compact,", - " Sche_Q_Add_Heat, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31,", - " For: AllDays,", - " Until: 24:00, 0.1;", - "", - " SurfaceProperty:HeatBalanceSourceTerm,", - " Living:North, !- Surface Name", - " , !- Inside Face Heat Source Term Schedule Name", - " Sche_Q_Evap_Cool; !- Outside Face Heat Source Term Schedule Name", - "", - " SurfaceProperty:HeatBalanceSourceTerm,", - " Living:Ceiling, !- Surface Name", - " Sche_Q_Add_Heat, !- Inside Face Heat Source Term Schedule Name", + " Building,", + " House with AirflowNetwork simulation, !- Name", + " 0, !- North Axis {deg}", + " Suburbs, !- Terrain", + " 0.001, !- Loads Convergence Tolerance Value", + " 0.0050000, !- Temperature Convergence Tolerance Value {deltaC}", + " FullInteriorAndExterior, !- Solar Distribution", + " 25, !- Maximum Number of Warmup Days", + " 6; !- Minimum Number of Warmup Days", + + " Timestep,6;", + + " SurfaceConvectionAlgorithm:Inside,TARP;", + + " SurfaceConvectionAlgorithm:Outside,DOE-2;", + + " HeatBalanceAlgorithm,ConductionTransferFunction;", + + " Output:DebuggingData,0,0;", + + " SimulationControl,", + " No, !- Do Zone Sizing Calculation", + " No, !- Do System Sizing Calculation", + " No, !- Do Plant Sizing Calculation", + " Yes, !- Run Simulation for Sizing Periods", + " No; !- Run Simulation for Weather File Run Periods", + + " RunPeriod,", + " , !- Name", + " 1, !- Begin Month", + " 14, !- Begin Day of Month", + " , !- Begin Year", + " 1, !- End Month", + " 14, !- End Day of Month", + " , !- End Year", + " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " Yes; !- Use Weather File Snow Indicators", + + " RunPeriod,", + " , !- Name", + " 7, !- Begin Month", + " 7, !- Begin Day of Month", + " , !- Begin Year", + " 7, !- End Month", + " 7, !- End Day of Month", + " , !- End Year", + " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " No; !- Use Weather File Snow Indicators", + + " Site:Location,", + " CHICAGO_IL_USA TMY2-94846, !- Name", + " 41.78, !- Latitude {deg}", + " -87.75, !- Longitude {deg}", + " -6.00, !- Time Zone {hr}", + " 190.00; !- Elevation {m}", + + " SizingPeriod:DesignDay,", + " CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, !- Name", + " 1, !- Month", + " 21, !- Day of Month", + " WinterDesignDay, !- Day Type", + " -17.3, !- Maximum Dry-Bulb Temperature {C}", + " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 4.9, !- Wind Speed {m/s}", + " 270, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 0.0; !- Sky Clearness", + + " SizingPeriod:DesignDay,", + " CHICAGO_IL_USA Annual Cooling 1% Design Conditions DB/MCWB, !- Name", + " 7, !- Month", + " 21, !- Day of Month", + " SummerDesignDay, !- Day Type", + " 31.5, !- Maximum Dry-Bulb Temperature {C}", + " 10.7, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " 23.0, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 5.3, !- Wind Speed {m/s}", + " 230, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 1.0; !- Sky Clearness", + + " Site:GroundTemperature:BuildingSurface,20.03,20.03,20.13,20.30,20.43,20.52,20.62,20.77,20.78,20.55,20.44,20.20;", + + " Material,", + " A1 - 1 IN STUCCO, !- Name", + " Smooth, !- Roughness", + " 2.5389841E-02, !- Thickness {m}", + " 0.6918309, !- Conductivity {W/m-K}", + " 1858.142, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.9200000, !- Solar Absorptance", + " 0.9200000; !- Visible Absorptance", + + " Material,", + " CB11, !- Name", + " MediumRough, !- Roughness", + " 0.2032000, !- Thickness {m}", + " 1.048000, !- Conductivity {W/m-K}", + " 1105.000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.2000000, !- Solar Absorptance", + " 0.2000000; !- Visible Absorptance", + + " Material,", + " GP01, !- Name", + " MediumSmooth, !- Roughness", + " 1.2700000E-02, !- Thickness {m}", + " 0.1600000, !- Conductivity {W/m-K}", + " 801.0000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " IN02, !- Name", + " Rough, !- Roughness", + " 9.0099998E-02, !- Thickness {m}", + " 4.3000001E-02, !- Conductivity {W/m-K}", + " 10.00000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " IN05, !- Name", + " Rough, !- Roughness", + " 0.2458000, !- Thickness {m}", + " 4.3000001E-02, !- Conductivity {W/m-K}", + " 10.00000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " PW03, !- Name", + " MediumSmooth, !- Roughness", + " 1.2700000E-02, !- Thickness {m}", + " 0.1150000, !- Conductivity {W/m-K}", + " 545.0000, !- Density {kg/m3}", + " 1213.000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7800000, !- Solar Absorptance", + " 0.7800000; !- Visible Absorptance", + + " Material,", + " CC03, !- Name", + " MediumRough, !- Roughness", + " 0.1016000, !- Thickness {m}", + " 1.310000, !- Conductivity {W/m-K}", + " 2243.000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + + " Material,", + " HF-A3, !- Name", + " Smooth, !- Roughness", + " 1.5000000E-03, !- Thickness {m}", + " 44.96960, !- Conductivity {W/m-K}", + " 7689.000, !- Density {kg/m3}", + " 418.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.2000000, !- Solar Absorptance", + " 0.2000000; !- Visible Absorptance", + + " Material:NoMass,", + " AR02, !- Name", + " VeryRough, !- Roughness", + " 7.8000002E-02, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7000000, !- Solar Absorptance", + " 0.7000000; !- Visible Absorptance", + + " Material:NoMass,", + " CP02, !- Name", + " Rough, !- Roughness", + " 0.2170000, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Construction,", + " EXTWALL:LIVING, !- Name", + " A1 - 1 IN STUCCO, !- Outside Layer", + " GP01; !- Layer 3", + + " Construction,", + " FLOOR:LIVING, !- Name", + " CC03, !- Outside Layer", + " CP02; !- Layer 2", + + " Construction,", + " ROOF, !- Name", + " AR02, !- Outside Layer", + " PW03; !- Layer 2", + + " Zone,", + " LIVING ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " CounterClockWise, !- Vertex Entry Direction", + " World; !- Coordinate System", + + " BuildingSurface:Detailed,", + " Living:North, !- Name", + " Wall, !- Surface Type", + " EXTWALL:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 1,1,1, !- X,Y,Z ==> Vertex 1 {m}", + " 1,1,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,1,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,1,1; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Living:East, !- Name", + " Wall, !- Surface Type", + " EXTWALL:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 1,0,1, !- X,Y,Z ==> Vertex 1 {m}", + " 1,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 1,1,0, !- X,Y,Z ==> Vertex 3 {m}", + " 1,1,1; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Living:South, !- Name", + " Wall, !- Surface Type", + " EXTWALL:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,1, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 1,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 1,0,1; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Living:West, !- Name", + " Wall, !- Surface Type", + " EXTWALL:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,1,1, !- X,Y,Z ==> Vertex 1 {m}", + " 0,1,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,0,1; !- X,Y,Z ==> Vertex 4 {m}", + " BuildingSurface:Detailed,", + " Living:Floor, !- Name", + " FLOOR, !- Surface Type", + " FLOOR:LIVING, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Living:Floor, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,0, !- X,Y,Z ==> Vertex 1 {m}", + " 0,1,0, !- X,Y,Z ==> Vertex 2 {m}", + " 1,1,0, !- X,Y,Z ==> Vertex 3 {m}", + " 1,0,0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Living:Ceiling, !- Name", + " ROOF, !- Surface Type", + " ROOF, !- Construction Name", + " LIVING ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,1,1, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,1, !- X,Y,Z ==> Vertex 2 {m}", + " 1,0,1, !- X,Y,Z ==> Vertex 3 {m}", + " 1,1,1; !- X,Y,Z ==> Vertex 4 {m}", + "", + " Schedule:Compact,", + " Sche_Q_Evap_Cool, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31,", + " For: AllDays,", + " Until: 24:00, -0.1;", + "", + " Schedule:Compact,", + " Sche_Q_Add_Heat, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31,", + " For: AllDays,", + " Until: 24:00, 0.1;", + "", + " SurfaceProperty:HeatBalanceSourceTerm,", + " Living:North, !- Surface Name", + " , !- Inside Face Heat Source Term Schedule Name", + " Sche_Q_Evap_Cool; !- Outside Face Heat Source Term Schedule Name", + "", + " SurfaceProperty:HeatBalanceSourceTerm,", + " Living:Ceiling, !- Surface Name", + " Sche_Q_Add_Heat, !- Inside Face Heat Source Term Schedule Name", " ; !- Outside Face Heat Source Term Schedule Name"}); - ASSERT_TRUE( process_idf( idf_objects ) ); - bool ErrorsFound = false; - - HeatBalanceManager::GetProjectControlData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetZoneData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetMaterialData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - HeatBalanceManager::GetConstructData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - SurfaceGeometry::GetGeometryParameters( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - - SurfaceGeometry::CosBldgRotAppGonly = 1.0; - SurfaceGeometry::SinBldgRotAppGonly = 0.0; - SurfaceGeometry::GetSurfaceData( ErrorsFound ); - EXPECT_FALSE( ErrorsFound ); - - DataZoneEquipment::ZoneEquipConfig.allocate( 1 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).ZoneName = "LIVING ZONE"; - DataZoneEquipment::ZoneEquipConfig( 1 ).ActualZoneNum = 1; - std::vector< int > controlledZoneEquipConfigNums; - controlledZoneEquipConfigNums.push_back( 1 ); - DataHeatBalance::Zone( 1 ).IsControlled = true; - DataHeatBalance::Zone( 1 ).ZoneEqNum = 1; - DataZoneEquipment::ZoneEquipConfig( 1 ).NumInletNodes = 2; - DataZoneEquipment::ZoneEquipConfig( 1 ).InletNode.allocate( 2 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).InletNode( 1 ) = 1; - DataZoneEquipment::ZoneEquipConfig( 1 ).InletNode( 2 ) = 2; - DataZoneEquipment::ZoneEquipConfig( 1 ).NumExhaustNodes = 1; - DataZoneEquipment::ZoneEquipConfig( 1 ).ExhaustNode.allocate( 1 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).ExhaustNode( 1 ) = 3; - DataZoneEquipment::ZoneEquipConfig( 1 ).NumReturnNodes = 1; - DataZoneEquipment::ZoneEquipConfig( 1 ).ReturnNode.allocate( 1 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).ReturnNode( 1 ) = 4; - - DataSizing::ZoneEqSizing.allocate( 1 ); - DataHeatBalance::Zone( 1 ).SystemZoneNodeNumber = 5; - DataEnvironment::OutBaroPress = 101325.0; - DataHeatBalFanSys::MAT.allocate( 1 ); // Zone temperature C - DataHeatBalFanSys::MAT( 1 ) = 24.0; - DataHeatBalFanSys::ZoneAirHumRat.allocate( 1 ); - DataHeatBalFanSys::ZoneAirHumRat( 1 ) = 0.001; - - DataLoopNode::Node.allocate( 4 ); - DataSurfaces::Surface( 1 ).TAirRef = DataSurfaces::ZoneMeanAirTemp; - DataSurfaces::Surface( 2 ).TAirRef = DataSurfaces::AdjacentAirTemp; - DataSurfaces::Surface( 3 ).TAirRef = DataSurfaces::ZoneSupplyAirTemp; - - DataHeatBalSurface::TempSurfInTmp.allocate( 6 ); - DataHeatBalSurface::TempSurfInTmp( 1 ) = 15.0; - DataHeatBalSurface::TempSurfInTmp( 2 ) = 20.0; - DataHeatBalSurface::TempSurfInTmp( 3 ) = 25.0; - DataHeatBalSurface::TempSurfInTmp( 4 ) = 25.0; - DataHeatBalSurface::TempSurfInTmp( 5 ) = 25.0; - DataHeatBalSurface::TempSurfInTmp( 6 ) = 25.0; - DataHeatBalance::TempEffBulkAir.allocate( 6 ); - - DataLoopNode::Node( 1 ).Temp = 20.0; - DataLoopNode::Node( 2 ).Temp = 20.0; - DataLoopNode::Node( 3 ).Temp = 20.0; - DataLoopNode::Node( 4 ).Temp = 20.0; - DataLoopNode::Node( 1 ).MassFlowRate = 0.1; - DataLoopNode::Node( 2 ).MassFlowRate = 0.1; - DataLoopNode::Node( 3 ).MassFlowRate = 0.1; - DataLoopNode::Node( 4 ).MassFlowRate = 0.1; - - DataHeatBalSurface::TH.allocate( 2, 2, 6 ); - DataHeatBalSurface::TH( 1, 1, 1 ) = 20; - DataHeatBalSurface::TH( 1, 1, 2 ) = 20; - DataHeatBalSurface::TH( 1, 1, 3 ) = 20; - DataHeatBalSurface::TH( 1, 1, 4 ) = 20; - DataHeatBalSurface::TH( 1, 1, 5 ) = 20; - DataHeatBalSurface::TH( 1, 1, 6 ) = 20; - DataHeatBalance::HConvIn.allocate( 6 ); - DataHeatBalance::HConvIn( 1 ) = 0.5; - DataHeatBalance::HConvIn( 2 ) = 0.5; - DataHeatBalance::HConvIn( 3 ) = 0.5; - DataHeatBalance::HConvIn( 4 ) = 0.5; - DataHeatBalance::HConvIn( 5 ) = 0.5; - DataHeatBalance::HConvIn( 6 ) = 0.5; - DataMoistureBalance::HConvInFD.allocate( 6 ); - DataMoistureBalance::RhoVaporAirIn.allocate( 6 ); - DataMoistureBalance::HMassConvInFD.allocate( 6 ); - - DataGlobals::KickOffSimulation = true; - DataHeatBalFanSys::ZoneLatentGain.allocate( 1 ); - DataGlobals::TimeStepZoneSec = 900; - DataHeatBalance::ZoneWinHeatGain.allocate( 1 ); - DataHeatBalance::ZoneWinHeatGainRep.allocate( 1 ); - DataHeatBalance::ZoneWinHeatGainRepEnergy.allocate( 1 ); - - ScheduleManager::Schedule( 1 ).CurrentValue = -0.1; - ScheduleManager::Schedule( 2 ).CurrentValue = 0.1; - - AllocateSurfaceHeatBalArrays( ); - createFacilityElectricPowerServiceObject( ); - SolarShading::AllocateModuleArrays(); - SolarShading::DetermineShadowingCombinations(); - InitSurfaceHeatBalance(); - for (int SurfNum = 1; SurfNum <= 6; SurfNum++ ) { - DataSurfaces::Surface( SurfNum ).ExtConvCoeff = -1; - } - - // Test Additional Heat Source Calculation - CalcHeatBalanceOutsideSurf(); - EXPECT_EQ( -0.1, DataHeatBalSurface::QAdditionalHeatSourceOutside( 1 ) ); - - CalcHeatBalanceInsideSurf( ); - EXPECT_EQ( 0.1, DataHeatBalSurface::QAdditionalHeatSourceInside( 6 ) ); - - DataZoneEquipment::ZoneEquipConfig.deallocate( ); - DataSizing::ZoneEqSizing.deallocate( ); - DataHeatBalFanSys::MAT.deallocate( ); // Zone temperature C - DataHeatBalFanSys::ZoneAirHumRat.deallocate( ); - DataLoopNode::Node.deallocate( ); - DataGlobals::KickOffSimulation = false; - DataHeatBalSurface::TempSurfInTmp.deallocate( ); - DataHeatBalance::TempEffBulkAir.deallocate( ); - DataHeatBalSurface::TH.deallocate( ); - DataHeatBalance::HConvIn.deallocate( ); - DataMoistureBalance::HConvInFD.deallocate( ); - DataMoistureBalance::RhoVaporAirIn.deallocate( ); - DataMoistureBalance::HMassConvInFD.deallocate( ); - DataHeatBalFanSys::ZoneLatentGain.deallocate( ); - DataHeatBalance::ZoneWinHeatGain.deallocate( ); - DataHeatBalance::ZoneWinHeatGainRep.deallocate( ); - DataHeatBalance::ZoneWinHeatGainRepEnergy.deallocate( ); - } + ASSERT_TRUE(process_idf(idf_objects)); + bool ErrorsFound = false; + + HeatBalanceManager::GetProjectControlData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetZoneData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetMaterialData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + HeatBalanceManager::GetConstructData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + SurfaceGeometry::GetGeometryParameters(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + + SurfaceGeometry::CosBldgRotAppGonly = 1.0; + SurfaceGeometry::SinBldgRotAppGonly = 0.0; + SurfaceGeometry::GetSurfaceData(ErrorsFound); + EXPECT_FALSE(ErrorsFound); + + DataZoneEquipment::ZoneEquipConfig.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).ZoneName = "LIVING ZONE"; + DataZoneEquipment::ZoneEquipConfig(1).ActualZoneNum = 1; + std::vector controlledZoneEquipConfigNums; + controlledZoneEquipConfigNums.push_back(1); + DataHeatBalance::Zone(1).IsControlled = true; + DataHeatBalance::Zone(1).ZoneEqNum = 1; + DataZoneEquipment::ZoneEquipConfig(1).NumInletNodes = 2; + DataZoneEquipment::ZoneEquipConfig(1).InletNode.allocate(2); + DataZoneEquipment::ZoneEquipConfig(1).InletNode(1) = 1; + DataZoneEquipment::ZoneEquipConfig(1).InletNode(2) = 2; + DataZoneEquipment::ZoneEquipConfig(1).NumExhaustNodes = 1; + DataZoneEquipment::ZoneEquipConfig(1).ExhaustNode.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).ExhaustNode(1) = 3; + DataZoneEquipment::ZoneEquipConfig(1).NumReturnNodes = 1; + DataZoneEquipment::ZoneEquipConfig(1).ReturnNode.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).ReturnNode(1) = 4; + + DataSizing::ZoneEqSizing.allocate(1); + DataHeatBalance::Zone(1).SystemZoneNodeNumber = 5; + DataEnvironment::OutBaroPress = 101325.0; + DataHeatBalFanSys::MAT.allocate(1); // Zone temperature C + DataHeatBalFanSys::MAT(1) = 24.0; + DataHeatBalFanSys::ZoneAirHumRat.allocate(1); + DataHeatBalFanSys::ZoneAirHumRat(1) = 0.001; + + DataLoopNode::Node.allocate(4); + DataSurfaces::Surface(1).TAirRef = DataSurfaces::ZoneMeanAirTemp; + DataSurfaces::Surface(2).TAirRef = DataSurfaces::AdjacentAirTemp; + DataSurfaces::Surface(3).TAirRef = DataSurfaces::ZoneSupplyAirTemp; + + DataHeatBalSurface::TempSurfInTmp.allocate(6); + DataHeatBalSurface::TempSurfInTmp(1) = 15.0; + DataHeatBalSurface::TempSurfInTmp(2) = 20.0; + DataHeatBalSurface::TempSurfInTmp(3) = 25.0; + DataHeatBalSurface::TempSurfInTmp(4) = 25.0; + DataHeatBalSurface::TempSurfInTmp(5) = 25.0; + DataHeatBalSurface::TempSurfInTmp(6) = 25.0; + DataHeatBalance::TempEffBulkAir.allocate(6); + + DataLoopNode::Node(1).Temp = 20.0; + DataLoopNode::Node(2).Temp = 20.0; + DataLoopNode::Node(3).Temp = 20.0; + DataLoopNode::Node(4).Temp = 20.0; + DataLoopNode::Node(1).MassFlowRate = 0.1; + DataLoopNode::Node(2).MassFlowRate = 0.1; + DataLoopNode::Node(3).MassFlowRate = 0.1; + DataLoopNode::Node(4).MassFlowRate = 0.1; + + DataHeatBalSurface::TH.allocate(2, 2, 6); + DataHeatBalSurface::TH(1, 1, 1) = 20; + DataHeatBalSurface::TH(1, 1, 2) = 20; + DataHeatBalSurface::TH(1, 1, 3) = 20; + DataHeatBalSurface::TH(1, 1, 4) = 20; + DataHeatBalSurface::TH(1, 1, 5) = 20; + DataHeatBalSurface::TH(1, 1, 6) = 20; + DataHeatBalance::HConvIn.allocate(6); + DataHeatBalance::HConvIn(1) = 0.5; + DataHeatBalance::HConvIn(2) = 0.5; + DataHeatBalance::HConvIn(3) = 0.5; + DataHeatBalance::HConvIn(4) = 0.5; + DataHeatBalance::HConvIn(5) = 0.5; + DataHeatBalance::HConvIn(6) = 0.5; + DataMoistureBalance::HConvInFD.allocate(6); + DataMoistureBalance::RhoVaporAirIn.allocate(6); + DataMoistureBalance::HMassConvInFD.allocate(6); + + DataGlobals::KickOffSimulation = true; + DataHeatBalFanSys::ZoneLatentGain.allocate(1); + DataGlobals::TimeStepZoneSec = 900; + DataHeatBalance::ZoneWinHeatGain.allocate(1); + DataHeatBalance::ZoneWinHeatGainRep.allocate(1); + DataHeatBalance::ZoneWinHeatGainRepEnergy.allocate(1); + + ScheduleManager::Schedule(1).CurrentValue = -0.1; + ScheduleManager::Schedule(2).CurrentValue = 0.1; + + AllocateSurfaceHeatBalArrays(); + createFacilityElectricPowerServiceObject(); + SolarShading::AllocateModuleArrays(); + SolarShading::DetermineShadowingCombinations(); + InitSurfaceHeatBalance(); + for (int SurfNum = 1; SurfNum <= 6; SurfNum++) { + DataSurfaces::Surface(SurfNum).ExtConvCoeff = -1; + } + + // Test Additional Heat Source Calculation + CalcHeatBalanceOutsideSurf(); + EXPECT_EQ(-0.1, DataHeatBalSurface::QAdditionalHeatSourceOutside(1)); + + CalcHeatBalanceInsideSurf(); + EXPECT_EQ(0.1, DataHeatBalSurface::QAdditionalHeatSourceInside(6)); + + DataZoneEquipment::ZoneEquipConfig.deallocate(); + DataSizing::ZoneEqSizing.deallocate(); + DataHeatBalFanSys::MAT.deallocate(); // Zone temperature C + DataHeatBalFanSys::ZoneAirHumRat.deallocate(); + DataLoopNode::Node.deallocate(); + DataGlobals::KickOffSimulation = false; + DataHeatBalSurface::TempSurfInTmp.deallocate(); + DataHeatBalance::TempEffBulkAir.deallocate(); + DataHeatBalSurface::TH.deallocate(); + DataHeatBalance::HConvIn.deallocate(); + DataMoistureBalance::HConvInFD.deallocate(); + DataMoistureBalance::RhoVaporAirIn.deallocate(); + DataMoistureBalance::HMassConvInFD.deallocate(); + DataHeatBalFanSys::ZoneLatentGain.deallocate(); + DataHeatBalance::ZoneWinHeatGain.deallocate(); + DataHeatBalance::ZoneWinHeatGainRep.deallocate(); + DataHeatBalance::ZoneWinHeatGainRepEnergy.deallocate(); +} } // namespace EnergyPlus diff --git a/tst/EnergyPlus/unit/OASystemHWPreheatCoil.unit.cc b/tst/EnergyPlus/unit/OASystemHWPreheatCoil.unit.cc index 6748a02fe6f..2e9fd3d236c 100644 --- a/tst/EnergyPlus/unit/OASystemHWPreheatCoil.unit.cc +++ b/tst/EnergyPlus/unit/OASystemHWPreheatCoil.unit.cc @@ -78,1977 +78,1977 @@ namespace EnergyPlus { TEST_F(EnergyPlusFixture, OASystem_HotWaterPreheatCoilScheduledOffSim) { - int AirLoopNum( 1 ); - int OASysNum( 1 ); - - std::string const idf_objects = delimited_string( { - " Version, 8.6;", - - " Timestep, 4;", - - " SimulationControl,", - " Yes, !- Do Zone Sizing Calculation", - " Yes, !- Do System Sizing Calculation", - " No, !- Do Plant Sizing Calculation", - " Yes, !- Run Simulation for Sizing Periods", - " No; !- Run Simulation for Weather File Run Periods", - - " RunPeriod,", - " , !- Name", - " 1, !- Begin Month", - " 1, !- Begin Day of Month", - " , !- Begin Year", - " 12, !- End Month", - " 31, !- End Day of Month", - " , !- End Year", - " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " Yes; !- Use Weather File Snow Indicators", - - " Site:Location,", - " CHICAGO_IL_USA TMY2-94846, !- Name", - " 41.78, !- Latitude {deg}", - " -87.75, !- Longitude {deg}", - " -6.00, !- Time Zone {hr}", - " 190.00; !- Elevation {m}", - - " SizingPeriod:DesignDay,", - " CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, !- Name", - " 1, !- Month", - " 21, !- Day of Month", - " WinterDesignDay, !- Day Type", - " -17.3, !- Maximum Dry-Bulb Temperature {C}", - " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 4.9, !- Wind Speed {m/s}", - " 270, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 0.0; !- Sky Clearness", - - " BranchList,", - " Air Loop Branches, !- Name", - " Air Loop Main Branch; !- Branch 1 Name", - - " Branch,", - " Air Loop Main Branch, !- Name", - " , !- Pressure Drop Curve Name", - " AirLoopHVAC:OutdoorAirSystem, !- Component 1 Object Type", - " OA Sys 1, !- Component 1 Name", - " Outdoor Air Mixer Inlet Node, !- Component 1 Inlet Node Name", - " Mixed Air Node, !- Component 1 Outlet Node Name", - " Fan:ConstantVolume, !- Component 2 Object Type", - " Supply Fan 1, !- Component 2 Name", - " Mixed Air Node, !- Component 2 Inlet Node Name", - " Air Loop Outlet Node; !- Component 2 Outlet Node Name", - - " AirLoopHVAC,", - " DOAS, !- Name", - " , !- Controller List Name", - " Outdoor Air 1 Avail List,!- Availability Manager List Name", - " 0.0625, !- Design Supply Air Flow Rate {m3/s}", - " Air Loop Branches, !- Branch List Name", - " , !- Connector List Name", - " Outdoor Air Mixer Inlet Node, !- Supply Side Inlet Node Name", - " Return Air Mixer Outlet, !- Demand Side Outlet Node Name", - " Zone Equipment Inlet Node, !- Demand Side Inlet Node Names", - " Air Loop Outlet Node; !- Supply Side Outlet Node Names", - - " AirLoopHVAC:SupplyPath,", - " OASysSupplyPath, !- Name", - " Zone Equipment Inlet Node, !- Supply Air Path Inlet Node Name", - " AirLoopHVAC:ZoneSplitter,!- Component 1 Object Type", - " Zone Supply Air Splitter;!- Component 1 Name", - - " AirLoopHVAC:ReturnPath,", - " OASysReturnPath, !- Name", - " Return Air Mixer Outlet, !- Return Air Path Outlet Node Name", - " AirLoopHVAC:ZoneMixer, !- Component 1 Object Type", - " Zone Return Air Mixer; !- Component 1 Name", - - " AirLoopHVAC:ZoneSplitter,", - " Zone Supply Air Splitter,!- Name", - " Zone Equipment Inlet Node, !- Inlet Node Name", - " Zone 1 OA Inlet Node 2AT; !- Outlet 1 Node Name", - - " AirLoopHVAC:ZoneMixer,", - " Zone Return Air Mixer, !- Name", - " Return Air Mixer Outlet, !- Outlet Node Name", - " Zone 1 Return Node; !- Inlet 1 Node Name", - - " AirLoopHVAC:ControllerList,", - " OA Sys 1 Controllers, !- Name", - " Controller:OutdoorAir, !- Controller 1 Object Type", - " OA Controller 1, !- Controller 1 Name", - " Controller:WaterCoil, !- Controller 2 Object Type", - " Preheat Coil Controller; !- Controller 2 Name", - - " Controller:WaterCoil,", - " Preheat Coil Controller, !- Name", - " Temperature, !- Control Variable", - " Normal, !- Action", - " Flow, !- Actuator Variable", - " HW Coil Air OutletNode, !- Sensor Node Name", - " HWCoil Water InletNode, !- Actuator Node Name", - " Autosize, !- Controller Convergence Tolerance {deltaC}", - " Autosize, !- Maximum Actuated Flow {m3/s}", - " 0; !- Minimum Actuated Flow {m3/s}", - - " AirLoopHVAC:OutdoorAirSystem:EquipmentList,", - " OA Sys 1 Equipment, !- Name", - " Coil:Heating:Water, !- Component 1 Object Type", - " OA Preheat HW Coil, !- Component 1 Name", - " OutdoorAir:Mixer, !- Component 1 Object Type", - " OA Mixing Box; !- Component 1 Name", - - " AirLoopHVAC:OutdoorAirSystem,", - " OA Sys 1, !- Name", - " OA Sys 1 Controllers, !- Controller List Name", - " OA Sys 1 Equipment, !- Outdoor Air Equipment List Name", - " Outdoor Air 1 Avail List;!- Availability Manager List Name", - - " OutdoorAir:NodeList,", - " OUTSIDE AIR INLET NODE; !- Node or NodeList Name 1", - - " OutdoorAir:Mixer,", - " OA Mixing Box, !- Name", - " Mixed Air Node, !- Mixed Air Node Name", - " HW Coil Air OutletNode, !- Outdoor Air Stream Node Name", - " Relief Air Outlet Node, !- Relief Air Stream Node Name", - " Outdoor Air Mixer Inlet Node; !- Return Air Stream Node Name", - - " AvailabilityManagerAssignmentList,", - " Outdoor Air 1 Avail List,!- Name", - " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", - " Outdoor Air 1 Avail; !- Availability Manager 1 Name", - - " AvailabilityManager:Scheduled,", - " Outdoor Air 1 Avail, !- Name", - " FanAndCoilAvailSched; !- Schedule Name", - - " SetpointManager:MixedAir,", - " Mixed Air Temp Manager 1,!- Name", - " Temperature, !- Control Variable", - " Air Loop Outlet Node, !- Reference Setpoint Node Name", - " Mixed Air Node, !- Fan Inlet Node Name", - " Air Loop Outlet Node, !- Fan Outlet Node Name", - " Mixed Air Node; !- Setpoint Node or NodeList Name", - - " SetpointManager:Scheduled,", - " HW Coil Air Temp Manager,!- Name", - " Temperature, !- Control Variable", - " Schedule_Constant_11.6, !- Schedule Name", - " HW Coil Air OutletNode; !- Setpoint Node or NodeList Name", - - " Schedule:Constant,Schedule_Constant_11.6,Temperature,11.6;", - - " Controller:OutdoorAir,", - " OA Controller 1, !- Name", - " Relief Air Outlet Node, !- Relief Air Outlet Node Name", - " Outdoor Air Mixer Inlet Node, !- Return Air Node Name", - " Mixed Air Node, !- Mixed Air Node Name", - " Outside Air Inlet Node, !- Actuator Node Name", - " 0.0625, !- Minimum Outdoor Air Flow Rate {m3/s}", - " 0.0625, !- Maximum Outdoor Air Flow Rate {m3/s}", - " DifferentialDrybulb, !- Economizer Control Type", - " ModulateFlow, !- Economizer Control Action Type", - " 23., !- Economizer Maximum Limit Dry-Bulb Temperature {C}", - " , !- Economizer Maximum Limit Enthalpy {J/kg}", - " 13.5, !- Economizer Maximum Limit Dewpoint Temperature {C}", - " , !- Electronic Enthalpy Limit Curve Name", - " 14., !- Economizer Minimum Limit Dry-Bulb Temperature {C}", - " NoLockout, !- Lockout Type", - " FixedMinimum, !- Minimum Limit Type", - " OAFractionSched, !- Minimum Outdoor Air Schedule Name", - " , !- Minimum Fraction of Outdoor Air Schedule Name", - " , !- Maximum Fraction of Outdoor Air Schedule Name", - " ; !- Mechanical Ventilation Controller Name", - - " Fan:ConstantVolume,", - " Supply Fan 1, !- Name", - " FanAndCoilAvailSched, !- Availability Schedule Name", - " 0.7, !- Fan Total Efficiency", - " 600.0, !- Pressure Rise {Pa}", - " 0.0625, !- Maximum Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1.0, !- Motor In Airstream Fraction", - " Mixed Air Node, !- Air Inlet Node Name", - " Air Loop Outlet Node; !- Air Outlet Node Name", - - " AirTerminal:SingleDuct:ConstantVolume:NoReheat,", - " Zone1DirectAir, !- Name", - " FanAndCoilAvailSched, !- Availability Schedule Name", - " Zone 1 OA Inlet Node 2AT,!- Air Inlet Node Name", - " Zone 1 OA Inlet Node, !- Air Outlet Node Name", - " 0.0625; !- Maximum Air Flow Rate {m3/s}", - - " Schedule:Compact,", - " OAFractionSched, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,0.5; !- Field 3", - - " SetpointManager:SingleZone:Reheat,", - " Supply Air Temp Manager, !- Name", - " Temperature, !- Control Variable", - " 14.0, !- Minimum Supply Air Temperature {C}", - " 40.0, !- Maximum Supply Air Temperature {C}", - " SPACE1-1, !- Control Zone Name", - " Zone 1 Node, !- Zone Node Name", - " Zone 1 OA Inlet Node, !- Zone Inlet Node Name", - " Air Loop Outlet Node; !- Setpoint Node or NodeList Name", - - " Sizing:System,", - " DOAS, !- AirLoop Name", - " Sensible, !- Type of Load to Size On", - " autosize, !- Design Outdoor Air Flow Rate {m3/s}", - " 1.0, !- Central Heating Maximum System Air Flow Ratio", - " 40.0, !- Preheat Design Temperature {C}", - " 0.008, !- Preheat Design Humidity Ratio {kgWater/kgDryAir}", - " 15.56, !- Precool Design Temperature {C}", - " 0.008, !- Precool Design Humidity Ratio {kgWater/kgDryAir}", - " 12.78, !- Central Cooling Design Supply Air Temperature {C}", - " 12.78, !- Central Heating Design Supply Air Temperature {C}", - " NonCoincident, !- Type of Zone Sum to Use", - " No, !- 100% Outdoor Air in Cooling", - " No, !- 100% Outdoor Air in Heating", - " 0.0085, !- Central Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " 0.008, !- Central Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " Flow/System, !- Cooling Supply Air Flow Rate Method", - " 8.287, !- Cooling Supply Air Flow Rate {m3/s}", - " 0.0099676501, !- Cooling Supply Air Flow Rate Per Floor Area {m3/s-m2}", - " 1, !- Cooling Fraction of Autosized Cooling Supply Air Flow Rate", - " 3.9475456e-005, !- Cooling Supply Air Flow Rate Per Unit Cooling Capacity {m3/s-W}", - " Flow/System, !- Heating Supply Air Flow Rate Method", - " 0.338942175, !- Heating Supply Air Flow Rate {m3/s}", - " 0.0099676501, !- Heating Supply Air Flow Rate Per Floor Area {m3/s-m2}", - " 1, !- Heating Fraction of Autosized Heating Supply Air Flow Rate", - " 1, !- Heating Fraction of Autosized Cooling Supply Air Flow Rate", - " 3.1588213e-005, !- Heating Supply Air Flow Rate Per Unit Heating Capacity {m3/s-W}", - " ZoneSum, !- System Outdoor Air Method", - " 1, !- Zone Maximum Outdoor Air Fraction {dimensionless}", - " CoolingDesignCapacity, !- Cooling Design Capacity Method", - " Autosize, !- Cooling Design Capacity {W}", - " 234.7, !- Cooling Design Capacity Per Floor Area {W/m2}", - " 1, !- Fraction of Autosized Cooling Design Capacity", - " HeatingDesignCapacity, !- Heating Design Capacity Method", - " Autosize, !- Heating Design Capacity {W}", - " 157, !- Heating Design Capacity Per Floor Area {W/m2}", - " 1, !- Fraction of Autosized Heating Design Capacity", - " VAV; !- Central Cooling Capacity Control Method", - " ", - - " Site:GroundTemperature:Deep,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5;", - - " Sizing:Parameters,", - " 1.3, !- Heating Sizing Factor", - " 1.3, !- Cooling Sizing Factor", - " ; !- Timesteps in Averaging Window", - - " Sizing:Zone,", - " SPACE1-1, !- Zone or ZoneList Name", - " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", - " 13., !- Zone Cooling Design Supply Air Temperature {C}", - " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", - " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", - " 30., !- Zone Heating Design Supply Air Temperature {C}", - " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", - " 0.0075, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " SZ DSOA SPACE1-1, !- Design Specification Outdoor Air Object Name", - " 0.0, !- Zone Heating Sizing Factor", - " 0.0, !- Zone Cooling Sizing Factor", - " DesignDay, !- Cooling Design Air Flow Method", - " 0, !- Cooling Design Air Flow Rate {m3/s}", - " , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", - " , !- Cooling Minimum Air Flow {m3/s}", - " , !- Cooling Minimum Air Flow Fraction", - " DesignDay, !- Heating Design Air Flow Method", - " 0, !- Heating Design Air Flow Rate {m3/s}", - " , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", - " , !- Heating Maximum Air Flow {m3/s}", - " ; !- Heating Maximum Air Flow Fraction", - - " DesignSpecification:OutdoorAir,", - " SZ DSOA SPACE1-1, !- Name", - " flow/person, !- Outdoor Air Method", - " 0.0125, !- Outdoor Air Flow per Person {m3/s-person}", - " 0.0, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}", - " 0.0; !- Outdoor Air Flow per Zone {m3/s}", - - " People,", - " SPACE1-1 PEOPLE, !- Name", - " SPACE1-1, !- Zone or ZoneList Name", - " OFFICE OCCUPANCY, !- Number of People Schedule Name", - " people, !- Number of People Calculation Method", - " 5.000000, !- Number of People", - " , !- People per Zone Floor Area {person/m2}", - " , !- Zone Floor Area per Person {m2/person}", - " 0.3000000, !- Fraction Radiant", - " , !- Sensible Heat Fraction", - " Activity Sch, !- Activity Level Schedule Name", - " 3.82E-8, !- Carbon Dioxide Generation Rate {m3/s-W}", - " , !- Enable ASHRAE 55 Comfort Warnings", - " zoneaveraged, !- Mean Radiant Temperature Calculation Type", - " , !- Surface Name/Angle Factor List Name", - " Work Eff Sch, !- Work Efficiency Schedule Name", - " ClothingInsulationSchedule, !- Clothing Insulation Calculation Method", - " , !- Clothing Insulation Calculation Method Schedule Name", - " Clothing Sch, !- Clothing Insulation Schedule Name", - " Air Velo Sch, !- Air Velocity Schedule Name", - " FANGER; !- Thermal Comfort Model 1 Type", - - " Schedule:Compact,", - " OFFICE OCCUPANCY, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 21", - " Until: 24:00,1.0; !- Field 22", - - " Schedule:Compact,", - " Activity Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,131.8; !- Field 3", - - " Schedule:Compact,", - " Work Eff Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,0.0; !- Field 3", - - " Schedule:Compact,", - " Clothing Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0; !- Field 3", - - " Schedule:Compact,", - " Air Velo Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,0.137; !- Field 3", - - " Schedule:Compact,", - " BLDG_EQUIP_SCH, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0; !- Field 3", - - " ScheduleTypeLimits,", - " Any Number; !- Name", - - " Lights,", - " SPACE1-1 Lights, !- Name", - " SPACE1-1, !- Zone or ZoneList Name", - " LIGHTS-1, !- Schedule Name", - " LightingLevel, !- Design Level Calculation Method", - " 284, !- Lighting Level {W}", - " , !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.0, !- Return Air Fraction", - " 0.59, !- Fraction Radiant", - " 0.2, !- Fraction Visible", - " 0, !- Fraction Replaceable", - " GeneralLights; !- End-Use Subcategory", - - " ElectricEquipment,", - " SPACE1-1_MiscPlug_Equip, !- Name", - " SPACE1-1, !- Zone or ZoneList Name", - " BLDG_EQUIP_SCH, !- Schedule Name", - " EquipmentLevel, !- Design Level Calculation Method", - " 207.7352, !- Design Level {W}", - " , !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.0000, !- Fraction Latent", - " 0.5000, !- Fraction Radiant", - " 0.0000, !- Fraction Lost", - " MiscPlug; !- End-Use Subcategory", - - " Schedule:Compact,", - " LIGHTS-1, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0; !- Field 3", - - " ZoneControl:Thermostat,", - " Zone 1 Thermostat, !- Name", - " SPACE1-1, !- Zone or ZoneList Name", - " Zone Control Type Sched, !- Control Type Schedule Name", - " ThermostatSetpoint:DualSetpoint, !- Control 1 Object Type", - " Temperature Setpoints; !- Control 1 Name", - - " ThermostatSetpoint:DualSetpoint,", - " Temperature Setpoints, !- Name", - " Heating Setpoints, !- Heating Setpoint Temperature Schedule Name", - " Cooling Setpoints; !- Cooling Setpoint Temperature Schedule Name", - - " Schedule:Compact,", - " Zone Control Type Sched, !- Name", - " Control Type, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,4; !- Field 3", - - " ScheduleTypeLimits,", - " Control Type, !- Name", - " 0, !- Lower Limit Value", - " 4, !- Upper Limit Value", - " DISCRETE; !- Numeric Type", - - " ScheduleTypeLimits,", - " Temperature, !- Name", - " -60, !- Lower Limit Value", - " 200, !- Upper Limit Value", - " CONTINUOUS, !- Numeric Type", - " Temperature; !- Unit Type", - - " ScheduleTypeLimits,", - " Fraction, !- Name", - " 0.0, !- Lower Limit Value", - " 1.0, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - " Schedule:Compact,", - " On, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0; !- Field 3", - - " Schedule:Compact,", - " Heating Setpoints, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,21.0; !- Field 3", - - " Schedule:Compact,", - " Cooling Setpoints, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,24.0; !- Field 3", - - " Schedule:Compact,", - " FanAndCoilAvailSched, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0; !- Field 3", - - " ZoneHVAC:EquipmentConnections,", - " SPACE1-1, !- Zone Name", - " Zone1Equipment, !- Zone Conditioning Equipment List Name", - " Zone1Inlets, !- Zone Air Inlet Node or NodeList Name", - " , !- Zone Air Exhaust Node or NodeList Name", - " Zone 1 Node, !- Zone Air Node Name", - " Zone 1 Return Node; !- Zone Return Air Node Name", - - " ZoneHVAC:EquipmentList,", - " Zone1Equipment, !- Name", - " SequentialLoad, !- Load Distribution Scheme", - " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", - " Zone1DirectAirADU, !- Zone Equipment 1 Name", - " 1, !- Zone Equipment 1 Cooling Sequence", - " 1; !- Zone Equipment 1 Heating or No-Load Sequence", - - " ZoneHVAC:AirDistributionUnit,", - " Zone1DirectAirADU, !- Name", - " Zone 1 OA Inlet Node, !- Air Distribution Unit Outlet Node Name", - " AirTerminal:SingleDuct:ConstantVolume:NoReheat, !- Air Terminal Object Type", - " Zone1DirectAir; !- Air Terminal Name", - - " NodeList,", - " Zone1Inlets, !- Name", - " Zone 1 OA Inlet Node; !- Node 1 Name", - - " Schedule:Compact,", - " CyclingFanSch, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,0.0; !- Field 3", - - " Material:NoMass,", - " R19LAYER, !- Name", - " Rough, !- Roughness", - " 3.344, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " C5 - 4 IN HW CONCRETE, !- Name", - " MediumRough, !- Roughness", - " 0.1014984, !- Thickness {m}", - " 1.729577, !- Conductivity {W/m-K}", - " 2242.585, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - - " Material,", - " 1IN Stucco, !- Name", - " Smooth, !- Roughness", - " 0.0253, !- Thickness {m}", - " 0.6918, !- Conductivity {W/m-K}", - " 1858.0000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000, !- Thermal Absorptance", - " 0.9200, !- Solar Absorptance", - " 0.9200; !- Visible Absorptance", - - " Material,", - " 8IN Concrete HW, !- Name", - " MediumRough, !- Roughness", - " 0.2033, !- Thickness {m}", - " 1.7296, !- Conductivity {W/m-K}", - " 2243.0000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000, !- Thermal Absorptance", - " 0.6500, !- Solar Absorptance", - " 0.6500; !- Visible Absorptance", - - " Material,", - " Wall Insulation [5], !- Name", - " MediumRough, !- Roughness", - " 0.0453, !- Thickness {m}", - " 0.0432, !- Conductivity {W/m-K}", - " 91.0000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000, !- Thermal Absorptance", - " 0.5000, !- Solar Absorptance", - " 0.5000; !- Visible Absorptance", - - " Material,", - " 1/2IN Gypsum, !- Name", - " Smooth, !- Roughness", - " 0.0127, !- Thickness {m}", - " 0.1600, !- Conductivity {W/m-K}", - " 784.9000, !- Density {kg/m3}", - " 830.0000, !- Specific Heat {J/kg-K}", - " 0.9000, !- Thermal Absorptance", - " 0.9200, !- Solar Absorptance", - " 0.9200; !- Visible Absorptance", - - " Construction,", - " ext-walls, !- Name", - " 1IN Stucco, !- Outside Layer", - " 8IN Concrete HW, !- Layer 2", - " Wall Insulation [5], !- Layer 3", - " 1/2IN Gypsum; !- Layer 4", - - " Construction,", - " FLOOR, !- Name", - " C5 - 4 IN HW CONCRETE; !- Outside Layer", - - " Construction,", - " ROOF19, !- Name", - " R19LAYER; !- Outside Layer", - - " Site:GroundTemperature:BuildingSurface,18.89,18.92,19.02,19.12,19.21,19.23,19.07,19.32,19.09,19.21,19.13,18.96;", - - " Zone,", - " SPACE1-1, !- Name", - " 0.0000000E+00, !- Direction of Relative North {deg}", - " 0.0000000E+00, !- X Origin {m}", - " 0.0000000E+00, !- Y Origin {m}", - " 0.0000000E+00, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " CounterClockWise, !- Vertex Entry Direction", - " World; !- Coordinate System", - - " BuildingSurface:Detailed,", - " Zn001:Wall001, !- Name", - " Wall, !- Surface Type", - " ext-walls, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.0000000E+00,0.0000000E+00,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0000000E+00,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", - " 15.24000,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,0.0000000E+00,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall002, !- Name", - " Wall, !- Surface Type", - " ext-walls, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000,0.0000000E+00,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 15.24000,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", - " 15.24000,15.24000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall003, !- Name", - " Wall, !- Surface Type", - " ext-walls, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 15.24000,15.24000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0000000E+00,15.24000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", - " 0.0000000E+00,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall004, !- Name", - " Wall, !- Surface Type", - " ext-walls, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.0000000E+00,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0000000E+00,15.24000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0000000E+00,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", - " 0.0000000E+00,0.0000000E+00,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Flr001, !- Name", - " Floor, !- Surface Type", - " FLOOR, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Ground, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000,0.000000,0.0, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000,0.000000,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 0.000000,15.24000,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,15.24000,0.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Roof001, !- Name", - " Roof, !- Surface Type", - " ROOF19, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.0000000E+00, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.000000,15.24000,4.572, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000,0.000000,4.572, !- X,Y,Z ==> Vertex 2 {m}", - " 15.24000,0.000000,4.572, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,15.24000,4.572; !- X,Y,Z ==> Vertex 4 {m}", - - " Sizing:Plant,", - " Hot Water Loop, !- Plant or Condenser Loop Name", - " heating, !- Loop Type", - " 82., !- Design Loop Exit Temperature {C}", - " 11; !- Loop Design Temperature Difference {deltaC}", - - " PlantLoop,", - " Hot Water Loop, !- Name", - " Water, !- Fluid Type", - " , !- User Defined Fluid Type", - " Hot Loop Operation, !- Plant Equipment Operation Scheme Name", - " HW Supply Outlet Node, !- Loop Temperature Setpoint Node Name", - " 100, !- Maximum Loop Temperature {C}", - " 10, !- Minimum Loop Temperature {C}", - " Autosize, !- Maximum Loop Flow Rate {m3/s}", - " 0.0, !- Minimum Loop Flow Rate {m3/s}", - " autocalculate, !- Plant Loop Volume {m3}", - " HW Supply Inlet Node, !- Plant Side Inlet Node Name", - " HW Supply Outlet Node, !- Plant Side Outlet Node Name", - " Heating Supply Side Branches, !- Plant Side Branch List Name", - " Heating Supply Side Connectors, !- Plant Side Connector List Name", - " HW Demand Inlet Node, !- Demand Side Inlet Node Name", - " HW Demand Outlet Node, !- Demand Side Outlet Node Name", - " Heating Demand Side Branches, !- Demand Side Branch List Name", - " Heating Demand Side Connectors, !- Demand Side Connector List Name", - " Optimal, !- Load Distribution Scheme", - " , !- Availability Manager List Name", - " , !- Plant Loop Demand Calculation Scheme", - " , !- Common Pipe Simulation", - " , !- Pressure Simulation Type", - " ; !- Loop Circulation Time", - - " SetpointManager:Scheduled,", - " Hot Water Loop Setpoint Manager, !- Name", - " Temperature, !- Control Variable", - " HW Loop Temp Schedule, !- Schedule Name", - " Hot Water Loop Setpoint Node List; !- Setpoint Node or NodeList Name", - - " Schedule:Compact,", - " HW LOOP TEMP SCHEDULE, !- Name", - " TEMPERATURE, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Alldays, !- Field 2", - " Until: 24:00,82.0; !- Field 3", - - " NodeList,", - " Hot Water Loop Setpoint Node List, !- Name", - " HW Supply Outlet Node; !- Node 1 Name", - - " BranchList,", - " Heating Supply Side Branches, !- Name", - " Heating Supply Inlet Branch, !- Branch 1 Name", - " Heating Purchased Hot Water Branch, !- Branch 2 Name", - " Heating Supply Bypass Branch, !- Branch 3 Name", - " Heating Supply Outlet Branch; !- Branch 4 Name", - - " ConnectorList,", - " Heating Supply Side Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " Heating Supply Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " Heating Supply Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " Heating Supply Splitter, !- Name", - " Heating Supply Inlet Branch, !- Inlet Branch Name", - " Heating Purchased Hot Water Branch, !- Outlet Branch 1 Name", - " Heating Supply Bypass Branch; !- Outlet Branch 2 Name", - - " Connector:Mixer,", - " Heating Supply Mixer, !- Name", - " Heating Supply Outlet Branch, !- Outlet Branch Name", - " Heating Purchased Hot Water Branch, !- Inlet Branch 1 Name", - " Heating Supply Bypass Branch; !- Inlet Branch 2 Name", - - " Branch,", - " Heating Supply Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pump:VariableSpeed, !- Component 1 Object Type", - " HW Circ Pump, !- Component 1 Name", - " HW Supply Inlet Node, !- Component 1 Inlet Node Name", - " HW Pump Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " Heating Purchased Hot Water Branch, !- Name", - " , !- Pressure Drop Curve Name", - " DistrictHeating, !- Component 1 Object Type", - " Purchased Heating, !- Component 1 Name", - " Purchased Heat Inlet Node, !- Component 1 Inlet Node Name", - " Purchased Heat Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " Heating Supply Bypass Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " Heating Supply Side Bypass, !- Component 1 Name", - " Heating Supply Bypass Inlet Node, !- Component 1 Inlet Node Name", - " Heating Supply Bypass Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " Heating Supply Side Bypass, !- Name", - " Heating Supply Bypass Inlet Node, !- Inlet Node Name", - " Heating Supply Bypass Outlet Node; !- Outlet Node Name", - - " Branch,", - " Heating Supply Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " Heating Supply Outlet, !- Component 1 Name", - " Heating Supply Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", - " HW Supply Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " Heating Supply Outlet, !- Name", - " Heating Supply Exit Pipe Inlet Node, !- Inlet Node Name", - " HW Supply Outlet Node; !- Outlet Node Name", - - " Pump:VariableSpeed,", - " HW Circ Pump, !- Name", - " HW Supply Inlet Node, !- Inlet Node Name", - " HW Pump Outlet Node, !- Outlet Node Name", - " autosize, !- Design Maximum Flow Rate {m3/s}", - " 179352, !- Design Pump Head {Pa}", - " autosize, !- Design Power Consumption {W}", - " 0.9, !- Motor Efficiency", - " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", - " 0, !- Coefficient 1 of the Part Load Performance Curve", - " 1, !- Coefficient 2 of the Part Load Performance Curve", - " 0, !- Coefficient 3 of the Part Load Performance Curve", - " 0, !- Coefficient 4 of the Part Load Performance Curve", - " 0, !- Design Minimum Flow Rate {m3/s}", - " INTERMITTENT; !- Pump Control Type", - - " BranchList,", - " Heating Demand Side Branches, !- Name", - " ZonesHWInletBranch, !- Branch 1 Name", - " Zone1HWBranch, !- Branch 2 Name", - " ZonesHWBypassBranch, !- Branch 5 Name", - " ZonesHWOutletBranch; !- Branch 6 Name", - - " ConnectorList,", - " Heating Demand Side Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " Zones HW Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " Zones HW Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " Zones HW Splitter, !- Name", - " ZonesHWInletBranch, !- Inlet Branch Name", - " Zone1HWBranch, !- Outlet Branch 1 Name", - " ZonesHWBypassBranch; !- Outlet Branch 4 Name", - - " Connector:Mixer,", - " Zones HW Mixer, !- Name", - " ZonesHWOutletBranch, !- Outlet Branch Name", - " Zone1HWBranch, !- Inlet Branch 1 Name", - " ZonesHWBypassBranch; !- Inlet Branch 4 Name", - - " Branch,", - " ZonesHWInletBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " ZonesHWInletPipe, !- Component 1 Name", - " HW Demand Inlet Node, !- Component 1 Inlet Node Name", - " HW Demand Entrance Pipe Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " ZonesHWInletPipe, !- Name", - " HW Demand Inlet Node, !- Inlet Node Name", - " HW Demand Entrance Pipe Outlet Node; !- Outlet Node Name", - - " Branch,", - " ZonesHWOutletBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " ZonesHWOutletPipe, !- Component 1 Name", - " HW Demand Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", - " HW Demand Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " ZonesHWOutletPipe, !- Name", - " HW Demand Exit Pipe Inlet Node, !- Inlet Node Name", - " HW Demand Outlet Node; !- Outlet Node Name", - - " Branch,", - " Zone1HWBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Coil:Heating:Water, !- Component 1 Object Type", - " OA Preheat HW Coil, !- Component 1 Name", - " HWCoil Water InletNode, !- Component 1 Inlet Node Name", - " HWCoil Water OutletNode; !- Zone1UnitHeatHWOutletNode; !- Component 1 Outlet Node Name", - - " Branch,", - " ZonesHWBypassBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " ZonesHWBypassPipe, !- Component 1 Name", - " ZonesHWBypassInletNode, !- Component 1 Inlet Node Name", - " ZonesHWBypassOutletNode; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " ZonesHWBypassPipe, !- Name", - " ZonesHWBypassInletNode, !- Inlet Node Name", - " ZonesHWBypassOutletNode; !- Outlet Node Name", - - " PlantEquipmentOperationSchemes,", - " Hot Loop Operation, !- Name", - " PlantEquipmentOperation:HeatingLoad, !- Control Scheme 1 Object Type", - " Purchased Heating Only, !- Control Scheme 1 Name", - " ON; !- Control Scheme 1 Schedule Name", - - " PlantEquipmentOperation:HeatingLoad,", - " Purchased Heating Only, !- Name", - " 0, !- Load Range 1 Lower Limit {W}", - " 1000000, !- Load Range 1 Upper Limit {W}", - " heating plant; !- Range 1 Equipment List Name", - - " PlantEquipmentList,", - " heating plant, !- Name", - " DistrictHeating, !- Equipment 1 Object Type", - " Purchased Heating; !- Equipment 1 Name", - - " DistrictHeating,", - " Purchased Heating, !- Name", - " Purchased Heat Inlet Node, !- Hot Water Inlet Node Name", - " Purchased Heat Outlet Node, !- Hot Water Outlet Node Name", - " 1000000; !- Nominal Capacity {W}", - - " Coil:Heating:Water,", - " OA Preheat HW Coil, !- Name", - " CoilSchedOff, !- Availability Schedule Name", - " autosize, !- U-Factor Times Area Value {W/K}", - " autosize, !- Maximum Water Flow Rate {m3/s}", - " HWCoil Water InletNode, !- Zone1UnitHeatHWInletNode,!- Water Inlet Node Name", - " HWCoil Water OutletNode, !- Water Outlet Node Name", - " Outside Air Inlet Node, !- Air Inlet Node Name", - " HW Coil Air OutletNode, !- Air Outlet Node Name", - " UFactorTimesAreaAndDesignWaterFlowRate, !- Performance Input Method", - " autosize, !- Rated Capacity {W}", - " 82.2, !- Rated Inlet Water Temperature {C}", - " 16.6, !- Rated Inlet Air Temperature {C}", - " 71.1, !- Rated Outlet Water Temperature {C}", - " 32.2, !- Rated Outlet Air Temperature {C}", - " ; !- Rated Ratio for Air and Water Convection", - - " Schedule:Compact,", - " CoilSchedOff, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,0.0; !- Field 3", - } ); - ASSERT_TRUE( process_idf( idf_objects ) ); - - OutputProcessor::TimeValue.allocate( 2 ); - SimulationManager::ManageSimulation(); - - EXPECT_EQ( 1, NumOASystems ); - EXPECT_EQ( "OA SYS 1", OutsideAirSys( OASysNum ).Name ); - EXPECT_EQ( 2, OutsideAirSys( OASysNum ).NumComponents ); // there are two components in OA system - EXPECT_EQ( "OA PREHEAT HW COIL", OutsideAirSys( OASysNum ).ComponentName( 1 ) ); // pre heat hot water coil - EXPECT_EQ( WaterCoil( 1 ).Name, OutsideAirSys( OASysNum ).ComponentName( 1 ) ); // pre heat hot water coil - EXPECT_EQ( "OA MIXING BOX", OutsideAirSys( OASysNum ).ComponentName( 2 ) ); // OA mixer - - // simulate the outdoor air system - ManageOutsideAirSystem( OutsideAirSys( OASysNum ).Name, false, AirLoopNum, OASysNum ); - - // Hot water coil is scheduled off, inlet and outlet conditions are the same - EXPECT_DOUBLE_EQ( WaterCoil( 1 ).InletAirTemp, -17.3 ); // preheat Hot Water coil air inlet temp is the heating design day outdoor air temp - EXPECT_DOUBLE_EQ( WaterCoil( 1 ).OutletAirTemp, -17.3 ); // preheat Hot Water coil is scheduled off - EXPECT_DOUBLE_EQ( 0.0, WaterCoil( 1 ).TotWaterHeatingCoilRate ); // preheat Hot Water coil is scheduled off - } + int AirLoopNum(1); + int OASysNum(1); + + std::string const idf_objects = delimited_string({ + " Version, 8.6;", + + " Timestep, 4;", + + " SimulationControl,", + " Yes, !- Do Zone Sizing Calculation", + " Yes, !- Do System Sizing Calculation", + " No, !- Do Plant Sizing Calculation", + " Yes, !- Run Simulation for Sizing Periods", + " No; !- Run Simulation for Weather File Run Periods", + + " RunPeriod,", + " , !- Name", + " 1, !- Begin Month", + " 1, !- Begin Day of Month", + " , !- Begin Year", + " 12, !- End Month", + " 31, !- End Day of Month", + " , !- End Year", + " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " Yes; !- Use Weather File Snow Indicators", + + " Site:Location,", + " CHICAGO_IL_USA TMY2-94846, !- Name", + " 41.78, !- Latitude {deg}", + " -87.75, !- Longitude {deg}", + " -6.00, !- Time Zone {hr}", + " 190.00; !- Elevation {m}", + + " SizingPeriod:DesignDay,", + " CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, !- Name", + " 1, !- Month", + " 21, !- Day of Month", + " WinterDesignDay, !- Day Type", + " -17.3, !- Maximum Dry-Bulb Temperature {C}", + " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 4.9, !- Wind Speed {m/s}", + " 270, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 0.0; !- Sky Clearness", + + " BranchList,", + " Air Loop Branches, !- Name", + " Air Loop Main Branch; !- Branch 1 Name", + + " Branch,", + " Air Loop Main Branch, !- Name", + " , !- Pressure Drop Curve Name", + " AirLoopHVAC:OutdoorAirSystem, !- Component 1 Object Type", + " OA Sys 1, !- Component 1 Name", + " Outdoor Air Mixer Inlet Node, !- Component 1 Inlet Node Name", + " Mixed Air Node, !- Component 1 Outlet Node Name", + " Fan:ConstantVolume, !- Component 2 Object Type", + " Supply Fan 1, !- Component 2 Name", + " Mixed Air Node, !- Component 2 Inlet Node Name", + " Air Loop Outlet Node; !- Component 2 Outlet Node Name", + + " AirLoopHVAC,", + " DOAS, !- Name", + " , !- Controller List Name", + " Outdoor Air 1 Avail List,!- Availability Manager List Name", + " 0.0625, !- Design Supply Air Flow Rate {m3/s}", + " Air Loop Branches, !- Branch List Name", + " , !- Connector List Name", + " Outdoor Air Mixer Inlet Node, !- Supply Side Inlet Node Name", + " Return Air Mixer Outlet, !- Demand Side Outlet Node Name", + " Zone Equipment Inlet Node, !- Demand Side Inlet Node Names", + " Air Loop Outlet Node; !- Supply Side Outlet Node Names", + + " AirLoopHVAC:SupplyPath,", + " OASysSupplyPath, !- Name", + " Zone Equipment Inlet Node, !- Supply Air Path Inlet Node Name", + " AirLoopHVAC:ZoneSplitter,!- Component 1 Object Type", + " Zone Supply Air Splitter;!- Component 1 Name", + + " AirLoopHVAC:ReturnPath,", + " OASysReturnPath, !- Name", + " Return Air Mixer Outlet, !- Return Air Path Outlet Node Name", + " AirLoopHVAC:ZoneMixer, !- Component 1 Object Type", + " Zone Return Air Mixer; !- Component 1 Name", + + " AirLoopHVAC:ZoneSplitter,", + " Zone Supply Air Splitter,!- Name", + " Zone Equipment Inlet Node, !- Inlet Node Name", + " Zone 1 OA Inlet Node 2AT; !- Outlet 1 Node Name", + + " AirLoopHVAC:ZoneMixer,", + " Zone Return Air Mixer, !- Name", + " Return Air Mixer Outlet, !- Outlet Node Name", + " Zone 1 Return Node; !- Inlet 1 Node Name", + + " AirLoopHVAC:ControllerList,", + " OA Sys 1 Controllers, !- Name", + " Controller:OutdoorAir, !- Controller 1 Object Type", + " OA Controller 1, !- Controller 1 Name", + " Controller:WaterCoil, !- Controller 2 Object Type", + " Preheat Coil Controller; !- Controller 2 Name", + + " Controller:WaterCoil,", + " Preheat Coil Controller, !- Name", + " Temperature, !- Control Variable", + " Normal, !- Action", + " Flow, !- Actuator Variable", + " HW Coil Air OutletNode, !- Sensor Node Name", + " HWCoil Water InletNode, !- Actuator Node Name", + " Autosize, !- Controller Convergence Tolerance {deltaC}", + " Autosize, !- Maximum Actuated Flow {m3/s}", + " 0; !- Minimum Actuated Flow {m3/s}", + + " AirLoopHVAC:OutdoorAirSystem:EquipmentList,", + " OA Sys 1 Equipment, !- Name", + " Coil:Heating:Water, !- Component 1 Object Type", + " OA Preheat HW Coil, !- Component 1 Name", + " OutdoorAir:Mixer, !- Component 1 Object Type", + " OA Mixing Box; !- Component 1 Name", + + " AirLoopHVAC:OutdoorAirSystem,", + " OA Sys 1, !- Name", + " OA Sys 1 Controllers, !- Controller List Name", + " OA Sys 1 Equipment, !- Outdoor Air Equipment List Name", + " Outdoor Air 1 Avail List;!- Availability Manager List Name", + + " OutdoorAir:NodeList,", + " OUTSIDE AIR INLET NODE; !- Node or NodeList Name 1", + + " OutdoorAir:Mixer,", + " OA Mixing Box, !- Name", + " Mixed Air Node, !- Mixed Air Node Name", + " HW Coil Air OutletNode, !- Outdoor Air Stream Node Name", + " Relief Air Outlet Node, !- Relief Air Stream Node Name", + " Outdoor Air Mixer Inlet Node; !- Return Air Stream Node Name", + + " AvailabilityManagerAssignmentList,", + " Outdoor Air 1 Avail List,!- Name", + " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", + " Outdoor Air 1 Avail; !- Availability Manager 1 Name", + + " AvailabilityManager:Scheduled,", + " Outdoor Air 1 Avail, !- Name", + " FanAndCoilAvailSched; !- Schedule Name", + + " SetpointManager:MixedAir,", + " Mixed Air Temp Manager 1,!- Name", + " Temperature, !- Control Variable", + " Air Loop Outlet Node, !- Reference Setpoint Node Name", + " Mixed Air Node, !- Fan Inlet Node Name", + " Air Loop Outlet Node, !- Fan Outlet Node Name", + " Mixed Air Node; !- Setpoint Node or NodeList Name", + + " SetpointManager:Scheduled,", + " HW Coil Air Temp Manager,!- Name", + " Temperature, !- Control Variable", + " Schedule_Constant_11.6, !- Schedule Name", + " HW Coil Air OutletNode; !- Setpoint Node or NodeList Name", + + " Schedule:Constant,Schedule_Constant_11.6,Temperature,11.6;", + + " Controller:OutdoorAir,", + " OA Controller 1, !- Name", + " Relief Air Outlet Node, !- Relief Air Outlet Node Name", + " Outdoor Air Mixer Inlet Node, !- Return Air Node Name", + " Mixed Air Node, !- Mixed Air Node Name", + " Outside Air Inlet Node, !- Actuator Node Name", + " 0.0625, !- Minimum Outdoor Air Flow Rate {m3/s}", + " 0.0625, !- Maximum Outdoor Air Flow Rate {m3/s}", + " DifferentialDrybulb, !- Economizer Control Type", + " ModulateFlow, !- Economizer Control Action Type", + " 23., !- Economizer Maximum Limit Dry-Bulb Temperature {C}", + " , !- Economizer Maximum Limit Enthalpy {J/kg}", + " 13.5, !- Economizer Maximum Limit Dewpoint Temperature {C}", + " , !- Electronic Enthalpy Limit Curve Name", + " 14., !- Economizer Minimum Limit Dry-Bulb Temperature {C}", + " NoLockout, !- Lockout Type", + " FixedMinimum, !- Minimum Limit Type", + " OAFractionSched, !- Minimum Outdoor Air Schedule Name", + " , !- Minimum Fraction of Outdoor Air Schedule Name", + " , !- Maximum Fraction of Outdoor Air Schedule Name", + " ; !- Mechanical Ventilation Controller Name", + + " Fan:ConstantVolume,", + " Supply Fan 1, !- Name", + " FanAndCoilAvailSched, !- Availability Schedule Name", + " 0.7, !- Fan Total Efficiency", + " 600.0, !- Pressure Rise {Pa}", + " 0.0625, !- Maximum Flow Rate {m3/s}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Airstream Fraction", + " Mixed Air Node, !- Air Inlet Node Name", + " Air Loop Outlet Node; !- Air Outlet Node Name", + + " AirTerminal:SingleDuct:ConstantVolume:NoReheat,", + " Zone1DirectAir, !- Name", + " FanAndCoilAvailSched, !- Availability Schedule Name", + " Zone 1 OA Inlet Node 2AT,!- Air Inlet Node Name", + " Zone 1 OA Inlet Node, !- Air Outlet Node Name", + " 0.0625; !- Maximum Air Flow Rate {m3/s}", + + " Schedule:Compact,", + " OAFractionSched, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,0.5; !- Field 3", + + " SetpointManager:SingleZone:Reheat,", + " Supply Air Temp Manager, !- Name", + " Temperature, !- Control Variable", + " 14.0, !- Minimum Supply Air Temperature {C}", + " 40.0, !- Maximum Supply Air Temperature {C}", + " SPACE1-1, !- Control Zone Name", + " Zone 1 Node, !- Zone Node Name", + " Zone 1 OA Inlet Node, !- Zone Inlet Node Name", + " Air Loop Outlet Node; !- Setpoint Node or NodeList Name", + + " Sizing:System,", + " DOAS, !- AirLoop Name", + " Sensible, !- Type of Load to Size On", + " autosize, !- Design Outdoor Air Flow Rate {m3/s}", + " 1.0, !- Central Heating Maximum System Air Flow Ratio", + " 40.0, !- Preheat Design Temperature {C}", + " 0.008, !- Preheat Design Humidity Ratio {kgWater/kgDryAir}", + " 15.56, !- Precool Design Temperature {C}", + " 0.008, !- Precool Design Humidity Ratio {kgWater/kgDryAir}", + " 12.78, !- Central Cooling Design Supply Air Temperature {C}", + " 12.78, !- Central Heating Design Supply Air Temperature {C}", + " NonCoincident, !- Type of Zone Sum to Use", + " No, !- 100% Outdoor Air in Cooling", + " No, !- 100% Outdoor Air in Heating", + " 0.0085, !- Central Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " 0.008, !- Central Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " Flow/System, !- Cooling Supply Air Flow Rate Method", + " 8.287, !- Cooling Supply Air Flow Rate {m3/s}", + " 0.0099676501, !- Cooling Supply Air Flow Rate Per Floor Area {m3/s-m2}", + " 1, !- Cooling Fraction of Autosized Cooling Supply Air Flow Rate", + " 3.9475456e-005, !- Cooling Supply Air Flow Rate Per Unit Cooling Capacity {m3/s-W}", + " Flow/System, !- Heating Supply Air Flow Rate Method", + " 0.338942175, !- Heating Supply Air Flow Rate {m3/s}", + " 0.0099676501, !- Heating Supply Air Flow Rate Per Floor Area {m3/s-m2}", + " 1, !- Heating Fraction of Autosized Heating Supply Air Flow Rate", + " 1, !- Heating Fraction of Autosized Cooling Supply Air Flow Rate", + " 3.1588213e-005, !- Heating Supply Air Flow Rate Per Unit Heating Capacity {m3/s-W}", + " ZoneSum, !- System Outdoor Air Method", + " 1, !- Zone Maximum Outdoor Air Fraction {dimensionless}", + " CoolingDesignCapacity, !- Cooling Design Capacity Method", + " Autosize, !- Cooling Design Capacity {W}", + " 234.7, !- Cooling Design Capacity Per Floor Area {W/m2}", + " 1, !- Fraction of Autosized Cooling Design Capacity", + " HeatingDesignCapacity, !- Heating Design Capacity Method", + " Autosize, !- Heating Design Capacity {W}", + " 157, !- Heating Design Capacity Per Floor Area {W/m2}", + " 1, !- Fraction of Autosized Heating Design Capacity", + " VAV; !- Central Cooling Capacity Control Method", + " ", + + " Site:GroundTemperature:Deep,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5;", + + " Sizing:Parameters,", + " 1.3, !- Heating Sizing Factor", + " 1.3, !- Cooling Sizing Factor", + " ; !- Timesteps in Averaging Window", + + " Sizing:Zone,", + " SPACE1-1, !- Zone or ZoneList Name", + " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", + " 13., !- Zone Cooling Design Supply Air Temperature {C}", + " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", + " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", + " 30., !- Zone Heating Design Supply Air Temperature {C}", + " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", + " 0.0075, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " SZ DSOA SPACE1-1, !- Design Specification Outdoor Air Object Name", + " 0.0, !- Zone Heating Sizing Factor", + " 0.0, !- Zone Cooling Sizing Factor", + " DesignDay, !- Cooling Design Air Flow Method", + " 0, !- Cooling Design Air Flow Rate {m3/s}", + " , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", + " , !- Cooling Minimum Air Flow {m3/s}", + " , !- Cooling Minimum Air Flow Fraction", + " DesignDay, !- Heating Design Air Flow Method", + " 0, !- Heating Design Air Flow Rate {m3/s}", + " , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", + " , !- Heating Maximum Air Flow {m3/s}", + " ; !- Heating Maximum Air Flow Fraction", + + " DesignSpecification:OutdoorAir,", + " SZ DSOA SPACE1-1, !- Name", + " flow/person, !- Outdoor Air Method", + " 0.0125, !- Outdoor Air Flow per Person {m3/s-person}", + " 0.0, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}", + " 0.0; !- Outdoor Air Flow per Zone {m3/s}", + + " People,", + " SPACE1-1 PEOPLE, !- Name", + " SPACE1-1, !- Zone or ZoneList Name", + " OFFICE OCCUPANCY, !- Number of People Schedule Name", + " people, !- Number of People Calculation Method", + " 5.000000, !- Number of People", + " , !- People per Zone Floor Area {person/m2}", + " , !- Zone Floor Area per Person {m2/person}", + " 0.3000000, !- Fraction Radiant", + " , !- Sensible Heat Fraction", + " Activity Sch, !- Activity Level Schedule Name", + " 3.82E-8, !- Carbon Dioxide Generation Rate {m3/s-W}", + " , !- Enable ASHRAE 55 Comfort Warnings", + " zoneaveraged, !- Mean Radiant Temperature Calculation Type", + " , !- Surface Name/Angle Factor List Name", + " Work Eff Sch, !- Work Efficiency Schedule Name", + " ClothingInsulationSchedule, !- Clothing Insulation Calculation Method", + " , !- Clothing Insulation Calculation Method Schedule Name", + " Clothing Sch, !- Clothing Insulation Schedule Name", + " Air Velo Sch, !- Air Velocity Schedule Name", + " FANGER; !- Thermal Comfort Model 1 Type", + + " Schedule:Compact,", + " OFFICE OCCUPANCY, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 21", + " Until: 24:00,1.0; !- Field 22", + + " Schedule:Compact,", + " Activity Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,131.8; !- Field 3", + + " Schedule:Compact,", + " Work Eff Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,0.0; !- Field 3", + + " Schedule:Compact,", + " Clothing Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0; !- Field 3", + + " Schedule:Compact,", + " Air Velo Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,0.137; !- Field 3", + + " Schedule:Compact,", + " BLDG_EQUIP_SCH, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0; !- Field 3", + + " ScheduleTypeLimits,", + " Any Number; !- Name", + + " Lights,", + " SPACE1-1 Lights, !- Name", + " SPACE1-1, !- Zone or ZoneList Name", + " LIGHTS-1, !- Schedule Name", + " LightingLevel, !- Design Level Calculation Method", + " 284, !- Lighting Level {W}", + " , !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.0, !- Return Air Fraction", + " 0.59, !- Fraction Radiant", + " 0.2, !- Fraction Visible", + " 0, !- Fraction Replaceable", + " GeneralLights; !- End-Use Subcategory", + + " ElectricEquipment,", + " SPACE1-1_MiscPlug_Equip, !- Name", + " SPACE1-1, !- Zone or ZoneList Name", + " BLDG_EQUIP_SCH, !- Schedule Name", + " EquipmentLevel, !- Design Level Calculation Method", + " 207.7352, !- Design Level {W}", + " , !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.0000, !- Fraction Latent", + " 0.5000, !- Fraction Radiant", + " 0.0000, !- Fraction Lost", + " MiscPlug; !- End-Use Subcategory", + + " Schedule:Compact,", + " LIGHTS-1, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0; !- Field 3", + + " ZoneControl:Thermostat,", + " Zone 1 Thermostat, !- Name", + " SPACE1-1, !- Zone or ZoneList Name", + " Zone Control Type Sched, !- Control Type Schedule Name", + " ThermostatSetpoint:DualSetpoint, !- Control 1 Object Type", + " Temperature Setpoints; !- Control 1 Name", + + " ThermostatSetpoint:DualSetpoint,", + " Temperature Setpoints, !- Name", + " Heating Setpoints, !- Heating Setpoint Temperature Schedule Name", + " Cooling Setpoints; !- Cooling Setpoint Temperature Schedule Name", + + " Schedule:Compact,", + " Zone Control Type Sched, !- Name", + " Control Type, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,4; !- Field 3", + + " ScheduleTypeLimits,", + " Control Type, !- Name", + " 0, !- Lower Limit Value", + " 4, !- Upper Limit Value", + " DISCRETE; !- Numeric Type", + + " ScheduleTypeLimits,", + " Temperature, !- Name", + " -60, !- Lower Limit Value", + " 200, !- Upper Limit Value", + " CONTINUOUS, !- Numeric Type", + " Temperature; !- Unit Type", + + " ScheduleTypeLimits,", + " Fraction, !- Name", + " 0.0, !- Lower Limit Value", + " 1.0, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + " Schedule:Compact,", + " On, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0; !- Field 3", + + " Schedule:Compact,", + " Heating Setpoints, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,21.0; !- Field 3", + + " Schedule:Compact,", + " Cooling Setpoints, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,24.0; !- Field 3", + + " Schedule:Compact,", + " FanAndCoilAvailSched, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0; !- Field 3", + + " ZoneHVAC:EquipmentConnections,", + " SPACE1-1, !- Zone Name", + " Zone1Equipment, !- Zone Conditioning Equipment List Name", + " Zone1Inlets, !- Zone Air Inlet Node or NodeList Name", + " , !- Zone Air Exhaust Node or NodeList Name", + " Zone 1 Node, !- Zone Air Node Name", + " Zone 1 Return Node; !- Zone Return Air Node Name", + + " ZoneHVAC:EquipmentList,", + " Zone1Equipment, !- Name", + " SequentialLoad, !- Load Distribution Scheme", + " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", + " Zone1DirectAirADU, !- Zone Equipment 1 Name", + " 1, !- Zone Equipment 1 Cooling Sequence", + " 1; !- Zone Equipment 1 Heating or No-Load Sequence", + + " ZoneHVAC:AirDistributionUnit,", + " Zone1DirectAirADU, !- Name", + " Zone 1 OA Inlet Node, !- Air Distribution Unit Outlet Node Name", + " AirTerminal:SingleDuct:ConstantVolume:NoReheat, !- Air Terminal Object Type", + " Zone1DirectAir; !- Air Terminal Name", + + " NodeList,", + " Zone1Inlets, !- Name", + " Zone 1 OA Inlet Node; !- Node 1 Name", + + " Schedule:Compact,", + " CyclingFanSch, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,0.0; !- Field 3", + + " Material:NoMass,", + " R19LAYER, !- Name", + " Rough, !- Roughness", + " 3.344, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " C5 - 4 IN HW CONCRETE, !- Name", + " MediumRough, !- Roughness", + " 0.1014984, !- Thickness {m}", + " 1.729577, !- Conductivity {W/m-K}", + " 2242.585, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + + " Material,", + " 1IN Stucco, !- Name", + " Smooth, !- Roughness", + " 0.0253, !- Thickness {m}", + " 0.6918, !- Conductivity {W/m-K}", + " 1858.0000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000, !- Thermal Absorptance", + " 0.9200, !- Solar Absorptance", + " 0.9200; !- Visible Absorptance", + + " Material,", + " 8IN Concrete HW, !- Name", + " MediumRough, !- Roughness", + " 0.2033, !- Thickness {m}", + " 1.7296, !- Conductivity {W/m-K}", + " 2243.0000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000, !- Thermal Absorptance", + " 0.6500, !- Solar Absorptance", + " 0.6500; !- Visible Absorptance", + + " Material,", + " Wall Insulation [5], !- Name", + " MediumRough, !- Roughness", + " 0.0453, !- Thickness {m}", + " 0.0432, !- Conductivity {W/m-K}", + " 91.0000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000, !- Thermal Absorptance", + " 0.5000, !- Solar Absorptance", + " 0.5000; !- Visible Absorptance", + + " Material,", + " 1/2IN Gypsum, !- Name", + " Smooth, !- Roughness", + " 0.0127, !- Thickness {m}", + " 0.1600, !- Conductivity {W/m-K}", + " 784.9000, !- Density {kg/m3}", + " 830.0000, !- Specific Heat {J/kg-K}", + " 0.9000, !- Thermal Absorptance", + " 0.9200, !- Solar Absorptance", + " 0.9200; !- Visible Absorptance", + + " Construction,", + " ext-walls, !- Name", + " 1IN Stucco, !- Outside Layer", + " 8IN Concrete HW, !- Layer 2", + " Wall Insulation [5], !- Layer 3", + " 1/2IN Gypsum; !- Layer 4", + + " Construction,", + " FLOOR, !- Name", + " C5 - 4 IN HW CONCRETE; !- Outside Layer", + + " Construction,", + " ROOF19, !- Name", + " R19LAYER; !- Outside Layer", + + " Site:GroundTemperature:BuildingSurface,18.89,18.92,19.02,19.12,19.21,19.23,19.07,19.32,19.09,19.21,19.13,18.96;", + + " Zone,", + " SPACE1-1, !- Name", + " 0.0000000E+00, !- Direction of Relative North {deg}", + " 0.0000000E+00, !- X Origin {m}", + " 0.0000000E+00, !- Y Origin {m}", + " 0.0000000E+00, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " CounterClockWise, !- Vertex Entry Direction", + " World; !- Coordinate System", + + " BuildingSurface:Detailed,", + " Zn001:Wall001, !- Name", + " Wall, !- Surface Type", + " ext-walls, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.0000000E+00,0.0000000E+00,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0000000E+00,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", + " 15.24000,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,0.0000000E+00,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall002, !- Name", + " Wall, !- Surface Type", + " ext-walls, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000,0.0000000E+00,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 15.24000,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", + " 15.24000,15.24000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall003, !- Name", + " Wall, !- Surface Type", + " ext-walls, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 15.24000,15.24000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0000000E+00,15.24000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", + " 0.0000000E+00,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall004, !- Name", + " Wall, !- Surface Type", + " ext-walls, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.0000000E+00,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0000000E+00,15.24000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0000000E+00,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", + " 0.0000000E+00,0.0000000E+00,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Flr001, !- Name", + " Floor, !- Surface Type", + " FLOOR, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Ground, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000,0.000000,0.0, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000,0.000000,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 0.000000,15.24000,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,15.24000,0.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Roof001, !- Name", + " Roof, !- Surface Type", + " ROOF19, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.0000000E+00, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.000000,15.24000,4.572, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000,0.000000,4.572, !- X,Y,Z ==> Vertex 2 {m}", + " 15.24000,0.000000,4.572, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,15.24000,4.572; !- X,Y,Z ==> Vertex 4 {m}", + + " Sizing:Plant,", + " Hot Water Loop, !- Plant or Condenser Loop Name", + " heating, !- Loop Type", + " 82., !- Design Loop Exit Temperature {C}", + " 11; !- Loop Design Temperature Difference {deltaC}", + + " PlantLoop,", + " Hot Water Loop, !- Name", + " Water, !- Fluid Type", + " , !- User Defined Fluid Type", + " Hot Loop Operation, !- Plant Equipment Operation Scheme Name", + " HW Supply Outlet Node, !- Loop Temperature Setpoint Node Name", + " 100, !- Maximum Loop Temperature {C}", + " 10, !- Minimum Loop Temperature {C}", + " Autosize, !- Maximum Loop Flow Rate {m3/s}", + " 0.0, !- Minimum Loop Flow Rate {m3/s}", + " autocalculate, !- Plant Loop Volume {m3}", + " HW Supply Inlet Node, !- Plant Side Inlet Node Name", + " HW Supply Outlet Node, !- Plant Side Outlet Node Name", + " Heating Supply Side Branches, !- Plant Side Branch List Name", + " Heating Supply Side Connectors, !- Plant Side Connector List Name", + " HW Demand Inlet Node, !- Demand Side Inlet Node Name", + " HW Demand Outlet Node, !- Demand Side Outlet Node Name", + " Heating Demand Side Branches, !- Demand Side Branch List Name", + " Heating Demand Side Connectors, !- Demand Side Connector List Name", + " Optimal, !- Load Distribution Scheme", + " , !- Availability Manager List Name", + " , !- Plant Loop Demand Calculation Scheme", + " , !- Common Pipe Simulation", + " , !- Pressure Simulation Type", + " ; !- Loop Circulation Time", + + " SetpointManager:Scheduled,", + " Hot Water Loop Setpoint Manager, !- Name", + " Temperature, !- Control Variable", + " HW Loop Temp Schedule, !- Schedule Name", + " Hot Water Loop Setpoint Node List; !- Setpoint Node or NodeList Name", + + " Schedule:Compact,", + " HW LOOP TEMP SCHEDULE, !- Name", + " TEMPERATURE, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Alldays, !- Field 2", + " Until: 24:00,82.0; !- Field 3", + + " NodeList,", + " Hot Water Loop Setpoint Node List, !- Name", + " HW Supply Outlet Node; !- Node 1 Name", + + " BranchList,", + " Heating Supply Side Branches, !- Name", + " Heating Supply Inlet Branch, !- Branch 1 Name", + " Heating Purchased Hot Water Branch, !- Branch 2 Name", + " Heating Supply Bypass Branch, !- Branch 3 Name", + " Heating Supply Outlet Branch; !- Branch 4 Name", + + " ConnectorList,", + " Heating Supply Side Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " Heating Supply Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " Heating Supply Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " Heating Supply Splitter, !- Name", + " Heating Supply Inlet Branch, !- Inlet Branch Name", + " Heating Purchased Hot Water Branch, !- Outlet Branch 1 Name", + " Heating Supply Bypass Branch; !- Outlet Branch 2 Name", + + " Connector:Mixer,", + " Heating Supply Mixer, !- Name", + " Heating Supply Outlet Branch, !- Outlet Branch Name", + " Heating Purchased Hot Water Branch, !- Inlet Branch 1 Name", + " Heating Supply Bypass Branch; !- Inlet Branch 2 Name", + + " Branch,", + " Heating Supply Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pump:VariableSpeed, !- Component 1 Object Type", + " HW Circ Pump, !- Component 1 Name", + " HW Supply Inlet Node, !- Component 1 Inlet Node Name", + " HW Pump Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " Heating Purchased Hot Water Branch, !- Name", + " , !- Pressure Drop Curve Name", + " DistrictHeating, !- Component 1 Object Type", + " Purchased Heating, !- Component 1 Name", + " Purchased Heat Inlet Node, !- Component 1 Inlet Node Name", + " Purchased Heat Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " Heating Supply Bypass Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " Heating Supply Side Bypass, !- Component 1 Name", + " Heating Supply Bypass Inlet Node, !- Component 1 Inlet Node Name", + " Heating Supply Bypass Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " Heating Supply Side Bypass, !- Name", + " Heating Supply Bypass Inlet Node, !- Inlet Node Name", + " Heating Supply Bypass Outlet Node; !- Outlet Node Name", + + " Branch,", + " Heating Supply Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " Heating Supply Outlet, !- Component 1 Name", + " Heating Supply Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", + " HW Supply Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " Heating Supply Outlet, !- Name", + " Heating Supply Exit Pipe Inlet Node, !- Inlet Node Name", + " HW Supply Outlet Node; !- Outlet Node Name", + + " Pump:VariableSpeed,", + " HW Circ Pump, !- Name", + " HW Supply Inlet Node, !- Inlet Node Name", + " HW Pump Outlet Node, !- Outlet Node Name", + " autosize, !- Design Maximum Flow Rate {m3/s}", + " 179352, !- Design Pump Head {Pa}", + " autosize, !- Design Power Consumption {W}", + " 0.9, !- Motor Efficiency", + " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", + " 0, !- Coefficient 1 of the Part Load Performance Curve", + " 1, !- Coefficient 2 of the Part Load Performance Curve", + " 0, !- Coefficient 3 of the Part Load Performance Curve", + " 0, !- Coefficient 4 of the Part Load Performance Curve", + " 0, !- Design Minimum Flow Rate {m3/s}", + " INTERMITTENT; !- Pump Control Type", + + " BranchList,", + " Heating Demand Side Branches, !- Name", + " ZonesHWInletBranch, !- Branch 1 Name", + " Zone1HWBranch, !- Branch 2 Name", + " ZonesHWBypassBranch, !- Branch 5 Name", + " ZonesHWOutletBranch; !- Branch 6 Name", + + " ConnectorList,", + " Heating Demand Side Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " Zones HW Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " Zones HW Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " Zones HW Splitter, !- Name", + " ZonesHWInletBranch, !- Inlet Branch Name", + " Zone1HWBranch, !- Outlet Branch 1 Name", + " ZonesHWBypassBranch; !- Outlet Branch 4 Name", + + " Connector:Mixer,", + " Zones HW Mixer, !- Name", + " ZonesHWOutletBranch, !- Outlet Branch Name", + " Zone1HWBranch, !- Inlet Branch 1 Name", + " ZonesHWBypassBranch; !- Inlet Branch 4 Name", + + " Branch,", + " ZonesHWInletBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " ZonesHWInletPipe, !- Component 1 Name", + " HW Demand Inlet Node, !- Component 1 Inlet Node Name", + " HW Demand Entrance Pipe Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " ZonesHWInletPipe, !- Name", + " HW Demand Inlet Node, !- Inlet Node Name", + " HW Demand Entrance Pipe Outlet Node; !- Outlet Node Name", + + " Branch,", + " ZonesHWOutletBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " ZonesHWOutletPipe, !- Component 1 Name", + " HW Demand Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", + " HW Demand Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " ZonesHWOutletPipe, !- Name", + " HW Demand Exit Pipe Inlet Node, !- Inlet Node Name", + " HW Demand Outlet Node; !- Outlet Node Name", + + " Branch,", + " Zone1HWBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Coil:Heating:Water, !- Component 1 Object Type", + " OA Preheat HW Coil, !- Component 1 Name", + " HWCoil Water InletNode, !- Component 1 Inlet Node Name", + " HWCoil Water OutletNode; !- Zone1UnitHeatHWOutletNode; !- Component 1 Outlet Node Name", + + " Branch,", + " ZonesHWBypassBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " ZonesHWBypassPipe, !- Component 1 Name", + " ZonesHWBypassInletNode, !- Component 1 Inlet Node Name", + " ZonesHWBypassOutletNode; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " ZonesHWBypassPipe, !- Name", + " ZonesHWBypassInletNode, !- Inlet Node Name", + " ZonesHWBypassOutletNode; !- Outlet Node Name", + + " PlantEquipmentOperationSchemes,", + " Hot Loop Operation, !- Name", + " PlantEquipmentOperation:HeatingLoad, !- Control Scheme 1 Object Type", + " Purchased Heating Only, !- Control Scheme 1 Name", + " ON; !- Control Scheme 1 Schedule Name", + + " PlantEquipmentOperation:HeatingLoad,", + " Purchased Heating Only, !- Name", + " 0, !- Load Range 1 Lower Limit {W}", + " 1000000, !- Load Range 1 Upper Limit {W}", + " heating plant; !- Range 1 Equipment List Name", + + " PlantEquipmentList,", + " heating plant, !- Name", + " DistrictHeating, !- Equipment 1 Object Type", + " Purchased Heating; !- Equipment 1 Name", + + " DistrictHeating,", + " Purchased Heating, !- Name", + " Purchased Heat Inlet Node, !- Hot Water Inlet Node Name", + " Purchased Heat Outlet Node, !- Hot Water Outlet Node Name", + " 1000000; !- Nominal Capacity {W}", + + " Coil:Heating:Water,", + " OA Preheat HW Coil, !- Name", + " CoilSchedOff, !- Availability Schedule Name", + " autosize, !- U-Factor Times Area Value {W/K}", + " autosize, !- Maximum Water Flow Rate {m3/s}", + " HWCoil Water InletNode, !- Zone1UnitHeatHWInletNode,!- Water Inlet Node Name", + " HWCoil Water OutletNode, !- Water Outlet Node Name", + " Outside Air Inlet Node, !- Air Inlet Node Name", + " HW Coil Air OutletNode, !- Air Outlet Node Name", + " UFactorTimesAreaAndDesignWaterFlowRate, !- Performance Input Method", + " autosize, !- Rated Capacity {W}", + " 82.2, !- Rated Inlet Water Temperature {C}", + " 16.6, !- Rated Inlet Air Temperature {C}", + " 71.1, !- Rated Outlet Water Temperature {C}", + " 32.2, !- Rated Outlet Air Temperature {C}", + " ; !- Rated Ratio for Air and Water Convection", + + " Schedule:Compact,", + " CoilSchedOff, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,0.0; !- Field 3", + }); + ASSERT_TRUE(process_idf(idf_objects)); + + OutputProcessor::TimeValue.allocate(2); + SimulationManager::ManageSimulation(); + + EXPECT_EQ(1, NumOASystems); + EXPECT_EQ("OA SYS 1", OutsideAirSys(OASysNum).Name); + EXPECT_EQ(2, OutsideAirSys(OASysNum).NumComponents); // there are two components in OA system + EXPECT_EQ("OA PREHEAT HW COIL", OutsideAirSys(OASysNum).ComponentName(1)); // pre heat hot water coil + EXPECT_EQ(WaterCoil(1).Name, OutsideAirSys(OASysNum).ComponentName(1)); // pre heat hot water coil + EXPECT_EQ("OA MIXING BOX", OutsideAirSys(OASysNum).ComponentName(2)); // OA mixer + + // simulate the outdoor air system + ManageOutsideAirSystem(OutsideAirSys(OASysNum).Name, false, AirLoopNum, OASysNum); + + // Hot water coil is scheduled off, inlet and outlet conditions are the same + EXPECT_DOUBLE_EQ(WaterCoil(1).InletAirTemp, -17.3); // preheat Hot Water coil air inlet temp is the heating design day outdoor air temp + EXPECT_DOUBLE_EQ(WaterCoil(1).OutletAirTemp, -17.3); // preheat Hot Water coil is scheduled off + EXPECT_DOUBLE_EQ(0.0, WaterCoil(1).TotWaterHeatingCoilRate); // preheat Hot Water coil is scheduled off +} TEST_F(EnergyPlusFixture, OASystem_HotWaterPreheatCoilScheduledOnSim) { - int AirLoopNum( 1 ); - int OASysNum( 1 ); - int AirInletNodeNum( 0 ); - Real64 CpAir( 0.0 ); - - std::string const idf_objects = delimited_string( { - " Version, 8.6;", - - " Timestep, 4;", - - " SimulationControl,", - " Yes, !- Do Zone Sizing Calculation", - " Yes, !- Do System Sizing Calculation", - " No, !- Do Plant Sizing Calculation", - " Yes, !- Run Simulation for Sizing Periods", - " No; !- Run Simulation for Weather File Run Periods", - - " RunPeriod,", - " , !- Name", - " 1, !- Begin Month", - " 1, !- Begin Day of Month", - " , !- Begin Year", - " 12, !- End Month", - " 31, !- End Day of Month", - " , !- End Year", - " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " Yes; !- Use Weather File Snow Indicators", - - " Site:Location,", - " CHICAGO_IL_USA TMY2-94846, !- Name", - " 41.78, !- Latitude {deg}", - " -87.75, !- Longitude {deg}", - " -6.00, !- Time Zone {hr}", - " 190.00; !- Elevation {m}", - - " SizingPeriod:DesignDay,", - " CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, !- Name", - " 1, !- Month", - " 21, !- Day of Month", - " WinterDesignDay, !- Day Type", - " -17.3, !- Maximum Dry-Bulb Temperature {C}", - " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 4.9, !- Wind Speed {m/s}", - " 270, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 0.0; !- Sky Clearness", - - " BranchList,", - " Air Loop Branches, !- Name", - " Air Loop Main Branch; !- Branch 1 Name", - - " Branch,", - " Air Loop Main Branch, !- Name", - " , !- Pressure Drop Curve Name", - " AirLoopHVAC:OutdoorAirSystem, !- Component 1 Object Type", - " OA Sys 1, !- Component 1 Name", - " Outdoor Air Mixer Inlet Node, !- Component 1 Inlet Node Name", - " Mixed Air Node, !- Component 1 Outlet Node Name", - " Fan:ConstantVolume, !- Component 2 Object Type", - " Supply Fan 1, !- Component 2 Name", - " Mixed Air Node, !- Component 2 Inlet Node Name", - " Air Loop Outlet Node; !- Component 2 Outlet Node Name", - - " AirLoopHVAC,", - " DOAS, !- Name", - " , !- Controller List Name", - " Outdoor Air 1 Avail List,!- Availability Manager List Name", - " 0.0625, !- Design Supply Air Flow Rate {m3/s}", - " Air Loop Branches, !- Branch List Name", - " , !- Connector List Name", - " Outdoor Air Mixer Inlet Node, !- Supply Side Inlet Node Name", - " Return Air Mixer Outlet, !- Demand Side Outlet Node Name", - " Zone Equipment Inlet Node, !- Demand Side Inlet Node Names", - " Air Loop Outlet Node; !- Supply Side Outlet Node Names", - - " AirLoopHVAC:SupplyPath,", - " OASysSupplyPath, !- Name", - " Zone Equipment Inlet Node, !- Supply Air Path Inlet Node Name", - " AirLoopHVAC:ZoneSplitter,!- Component 1 Object Type", - " Zone Supply Air Splitter;!- Component 1 Name", - - " AirLoopHVAC:ReturnPath,", - " OASysReturnPath, !- Name", - " Return Air Mixer Outlet, !- Return Air Path Outlet Node Name", - " AirLoopHVAC:ZoneMixer, !- Component 1 Object Type", - " Zone Return Air Mixer; !- Component 1 Name", - - " AirLoopHVAC:ZoneSplitter,", - " Zone Supply Air Splitter,!- Name", - " Zone Equipment Inlet Node, !- Inlet Node Name", - " Zone 1 OA Inlet Node 2AT; !- Outlet 1 Node Name", - - " AirLoopHVAC:ZoneMixer,", - " Zone Return Air Mixer, !- Name", - " Return Air Mixer Outlet, !- Outlet Node Name", - " Zone 1 Return Node; !- Inlet 1 Node Name", - - " AirLoopHVAC:ControllerList,", - " OA Sys 1 Controllers, !- Name", - " Controller:OutdoorAir, !- Controller 1 Object Type", - " OA Controller 1, !- Controller 1 Name", - " Controller:WaterCoil, !- Controller 2 Object Type", - " Preheat Coil Controller; !- Controller 2 Name", - - " Controller:WaterCoil,", - " Preheat Coil Controller, !- Name", - " Temperature, !- Control Variable", - " Normal, !- Action", - " Flow, !- Actuator Variable", - " HW Coil Air OutletNode, !- Sensor Node Name", - " HWCoil Water InletNode, !- Actuator Node Name", - " Autosize, !- Controller Convergence Tolerance {deltaC}", - " Autosize, !- Maximum Actuated Flow {m3/s}", - " 0; !- Minimum Actuated Flow {m3/s}", - - " AirLoopHVAC:OutdoorAirSystem:EquipmentList,", - " OA Sys 1 Equipment, !- Name", - " Coil:Heating:Water, !- Component 1 Object Type", - " OA Preheat HW Coil, !- Component 1 Name", - " OutdoorAir:Mixer, !- Component 1 Object Type", - " OA Mixing Box; !- Component 1 Name", - - " AirLoopHVAC:OutdoorAirSystem,", - " OA Sys 1, !- Name", - " OA Sys 1 Controllers, !- Controller List Name", - " OA Sys 1 Equipment, !- Outdoor Air Equipment List Name", - " Outdoor Air 1 Avail List;!- Availability Manager List Name", - - " OutdoorAir:NodeList,", - " OUTSIDE AIR INLET NODE; !- Node or NodeList Name 1", - - " OutdoorAir:Mixer,", - " OA Mixing Box, !- Name", - " Mixed Air Node, !- Mixed Air Node Name", - " HW Coil Air OutletNode, !- Outdoor Air Stream Node Name", - " Relief Air Outlet Node, !- Relief Air Stream Node Name", - " Outdoor Air Mixer Inlet Node; !- Return Air Stream Node Name", - - " AvailabilityManagerAssignmentList,", - " Outdoor Air 1 Avail List,!- Name", - " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", - " Outdoor Air 1 Avail; !- Availability Manager 1 Name", - - " AvailabilityManager:Scheduled,", - " Outdoor Air 1 Avail, !- Name", - " FanAndCoilAvailSched; !- Schedule Name", - - " SetpointManager:MixedAir,", - " Mixed Air Temp Manager 1,!- Name", - " Temperature, !- Control Variable", - " Air Loop Outlet Node, !- Reference Setpoint Node Name", - " Mixed Air Node, !- Fan Inlet Node Name", - " Air Loop Outlet Node, !- Fan Outlet Node Name", - " Mixed Air Node; !- Setpoint Node or NodeList Name", - - " SetpointManager:Scheduled,", - " HW Coil Air Temp Manager,!- Name", - " Temperature, !- Control Variable", - " Schedule_Constant_11.6, !- Schedule Name", - " HW Coil Air OutletNode; !- Setpoint Node or NodeList Name", - - " Schedule:Constant,Schedule_Constant_11.6, Temperature, 11.6;", - - " Controller:OutdoorAir,", - " OA Controller 1, !- Name", - " Relief Air Outlet Node, !- Relief Air Outlet Node Name", - " Outdoor Air Mixer Inlet Node, !- Return Air Node Name", - " Mixed Air Node, !- Mixed Air Node Name", - " Outside Air Inlet Node, !- Actuator Node Name", - " 0.0625, !- Minimum Outdoor Air Flow Rate {m3/s}", - " 0.0625, !- Maximum Outdoor Air Flow Rate {m3/s}", - " DifferentialDrybulb, !- Economizer Control Type", - " ModulateFlow, !- Economizer Control Action Type", - " 23., !- Economizer Maximum Limit Dry-Bulb Temperature {C}", - " , !- Economizer Maximum Limit Enthalpy {J/kg}", - " 13.5, !- Economizer Maximum Limit Dewpoint Temperature {C}", - " , !- Electronic Enthalpy Limit Curve Name", - " 14., !- Economizer Minimum Limit Dry-Bulb Temperature {C}", - " NoLockout, !- Lockout Type", - " FixedMinimum, !- Minimum Limit Type", - " OAFractionSched, !- Minimum Outdoor Air Schedule Name", - " , !- Minimum Fraction of Outdoor Air Schedule Name", - " , !- Maximum Fraction of Outdoor Air Schedule Name", - " ; !- Mechanical Ventilation Controller Name", - - " Fan:ConstantVolume,", - " Supply Fan 1, !- Name", - " FanAndCoilAvailSched, !- Availability Schedule Name", - " 0.7, !- Fan Total Efficiency", - " 600.0, !- Pressure Rise {Pa}", - " 0.0625, !- Maximum Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1.0, !- Motor In Airstream Fraction", - " Mixed Air Node, !- Air Inlet Node Name", - " Air Loop Outlet Node; !- Air Outlet Node Name", - - " AirTerminal:SingleDuct:ConstantVolume:NoReheat,", - " Zone1DirectAir, !- Name", - " FanAndCoilAvailSched, !- Availability Schedule Name", - " Zone 1 OA Inlet Node 2AT, !- Air Inlet Node Name", - " Zone 1 OA Inlet Node, !- Air Outlet Node Name", - " 0.0625; !- Maximum Air Flow Rate {m3/s}", - - " Schedule:Compact,", - " OAFractionSched, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,0.5; !- Field 3", - - " SetpointManager:SingleZone:Reheat,", - " Supply Air Temp Manager, !- Name", - " Temperature, !- Control Variable", - " 14.0, !- Minimum Supply Air Temperature {C}", - " 40.0, !- Maximum Supply Air Temperature {C}", - " SPACE1-1, !- Control Zone Name", - " Zone 1 Node, !- Zone Node Name", - " Zone 1 OA Inlet Node, !- Zone Inlet Node Name", - " Air Loop Outlet Node; !- Setpoint Node or NodeList Name", - - " Sizing:System,", - " DOAS, !- AirLoop Name", - " Sensible, !- Type of Load to Size On", - " autosize, !- Design Outdoor Air Flow Rate {m3/s}", - " 1.0, !- Central Heating Maximum System Air Flow Ratio", - " 40.0, !- Preheat Design Temperature {C}", - " 0.008, !- Preheat Design Humidity Ratio {kgWater/kgDryAir}", - " 15.56, !- Precool Design Temperature {C}", - " 0.008, !- Precool Design Humidity Ratio {kgWater/kgDryAir}", - " 12.78, !- Central Cooling Design Supply Air Temperature {C}", - " 12.78, !- Central Heating Design Supply Air Temperature {C}", - " NonCoincident, !- Type of Zone Sum to Use", - " No, !- 100% Outdoor Air in Cooling", - " No, !- 100% Outdoor Air in Heating", - " 0.0085, !- Central Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " 0.008, !- Central Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " Flow/System, !- Cooling Supply Air Flow Rate Method", - " 8.287, !- Cooling Supply Air Flow Rate {m3/s}", - " 0.0099676501, !- Cooling Supply Air Flow Rate Per Floor Area {m3/s-m2}", - " 1, !- Cooling Fraction of Autosized Cooling Supply Air Flow Rate", - " 3.9475456e-005, !- Cooling Supply Air Flow Rate Per Unit Cooling Capacity {m3/s-W}", - " Flow/System, !- Heating Supply Air Flow Rate Method", - " 0.338942175, !- Heating Supply Air Flow Rate {m3/s}", - " 0.0099676501, !- Heating Supply Air Flow Rate Per Floor Area {m3/s-m2}", - " 1, !- Heating Fraction of Autosized Heating Supply Air Flow Rate", - " 1, !- Heating Fraction of Autosized Cooling Supply Air Flow Rate", - " 3.1588213e-005, !- Heating Supply Air Flow Rate Per Unit Heating Capacity {m3/s-W}", - " ZoneSum, !- System Outdoor Air Method", - " 1, !- Zone Maximum Outdoor Air Fraction {dimensionless}", - " CoolingDesignCapacity, !- Cooling Design Capacity Method", - " Autosize, !- Cooling Design Capacity {W}", - " 234.7, !- Cooling Design Capacity Per Floor Area {W/m2}", - " 1, !- Fraction of Autosized Cooling Design Capacity", - " HeatingDesignCapacity, !- Heating Design Capacity Method", - " Autosize, !- Heating Design Capacity {W}", - " 157, !- Heating Design Capacity Per Floor Area {W/m2}", - " 1, !- Fraction of Autosized Heating Design Capacity", - " VAV; !- Central Cooling Capacity Control Method", - " ", - - " Site:GroundTemperature:Deep,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5;", - - " Sizing:Parameters,", - " 1.3, !- Heating Sizing Factor", - " 1.3, !- Cooling Sizing Factor", - " ; !- Timesteps in Averaging Window", - - " Sizing:Zone,", - " SPACE1-1, !- Zone or ZoneList Name", - " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", - " 13., !- Zone Cooling Design Supply Air Temperature {C}", - " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", - " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", - " 30., !- Zone Heating Design Supply Air Temperature {C}", - " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", - " 0.0075, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " SZ DSOA SPACE1-1, !- Design Specification Outdoor Air Object Name", - " 0.0, !- Zone Heating Sizing Factor", - " 0.0, !- Zone Cooling Sizing Factor", - " DesignDay, !- Cooling Design Air Flow Method", - " 0, !- Cooling Design Air Flow Rate {m3/s}", - " , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", - " , !- Cooling Minimum Air Flow {m3/s}", - " , !- Cooling Minimum Air Flow Fraction", - " DesignDay, !- Heating Design Air Flow Method", - " 0, !- Heating Design Air Flow Rate {m3/s}", - " , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", - " , !- Heating Maximum Air Flow {m3/s}", - " ; !- Heating Maximum Air Flow Fraction", - - " DesignSpecification:OutdoorAir,", - " SZ DSOA SPACE1-1, !- Name", - " flow/person, !- Outdoor Air Method", - " 0.0125, !- Outdoor Air Flow per Person {m3/s-person}", - " 0.0, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}", - " 0.0; !- Outdoor Air Flow per Zone {m3/s}", - - " People,", - " SPACE1-1 PEOPLE, !- Name", - " SPACE1-1, !- Zone or ZoneList Name", - " OFFICE OCCUPANCY, !- Number of People Schedule Name", - " people, !- Number of People Calculation Method", - " 5.000000, !- Number of People", - " , !- People per Zone Floor Area {person/m2}", - " , !- Zone Floor Area per Person {m2/person}", - " 0.3000000, !- Fraction Radiant", - " , !- Sensible Heat Fraction", - " Activity Sch, !- Activity Level Schedule Name", - " 3.82E-8, !- Carbon Dioxide Generation Rate {m3/s-W}", - " , !- Enable ASHRAE 55 Comfort Warnings", - " zoneaveraged, !- Mean Radiant Temperature Calculation Type", - " , !- Surface Name/Angle Factor List Name", - " Work Eff Sch, !- Work Efficiency Schedule Name", - " ClothingInsulationSchedule, !- Clothing Insulation Calculation Method", - " , !- Clothing Insulation Calculation Method Schedule Name", - " Clothing Sch, !- Clothing Insulation Schedule Name", - " Air Velo Sch, !- Air Velocity Schedule Name", - " FANGER; !- Thermal Comfort Model 1 Type", - - " Schedule:Compact,", - " OFFICE OCCUPANCY, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 21", - " Until: 24:00,1.0; !- Field 22", - - " Schedule:Compact,", - " Activity Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,131.8; !- Field 3", - - " Schedule:Compact,", - " Work Eff Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,0.0; !- Field 3", - - " Schedule:Compact,", - " Clothing Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0; !- Field 3", - - " Schedule:Compact,", - " Air Velo Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,0.137; !- Field 3", - - " Schedule:Compact,", - " BLDG_EQUIP_SCH, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0; !- Field 3", - - " ScheduleTypeLimits,", - " Any Number; !- Name", - - " Lights,", - " SPACE1-1 Lights, !- Name", - " SPACE1-1, !- Zone or ZoneList Name", - " LIGHTS-1, !- Schedule Name", - " LightingLevel, !- Design Level Calculation Method", - " 284, !- Lighting Level {W}", - " , !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.0, !- Return Air Fraction", - " 0.59, !- Fraction Radiant", - " 0.2, !- Fraction Visible", - " 0, !- Fraction Replaceable", - " GeneralLights; !- End-Use Subcategory", - - " ElectricEquipment,", - " SPACE1-1_MiscPlug_Equip, !- Name", - " SPACE1-1, !- Zone or ZoneList Name", - " BLDG_EQUIP_SCH, !- Schedule Name", - " EquipmentLevel, !- Design Level Calculation Method", - " 207.7352, !- Design Level {W}", - " , !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.0000, !- Fraction Latent", - " 0.5000, !- Fraction Radiant", - " 0.0000, !- Fraction Lost", - " MiscPlug; !- End-Use Subcategory", - - " Schedule:Compact,", - " LIGHTS-1, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0; !- Field 3", - - " ZoneControl:Thermostat,", - " Zone 1 Thermostat, !- Name", - " SPACE1-1, !- Zone or ZoneList Name", - " Zone Control Type Sched, !- Control Type Schedule Name", - " ThermostatSetpoint:DualSetpoint, !- Control 1 Object Type", - " Temperature Setpoints; !- Control 1 Name", - - " ThermostatSetpoint:DualSetpoint,", - " Temperature Setpoints, !- Name", - " Heating Setpoints, !- Heating Setpoint Temperature Schedule Name", - " Cooling Setpoints; !- Cooling Setpoint Temperature Schedule Name", - - " Schedule:Compact,", - " Zone Control Type Sched, !- Name", - " Control Type, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,4; !- Field 3", - - " ScheduleTypeLimits,", - " Control Type, !- Name", - " 0, !- Lower Limit Value", - " 4, !- Upper Limit Value", - " DISCRETE; !- Numeric Type", - - " ScheduleTypeLimits,", - " Temperature, !- Name", - " -60, !- Lower Limit Value", - " 200, !- Upper Limit Value", - " CONTINUOUS, !- Numeric Type", - " Temperature; !- Unit Type", - - " ScheduleTypeLimits,", - " Fraction, !- Name", - " 0.0, !- Lower Limit Value", - " 1.0, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - " Schedule:Compact,", - " On, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0; !- Field 3", - - " Schedule:Compact,", - " Heating Setpoints, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,21.0; !- Field 3", - - " Schedule:Compact,", - " Cooling Setpoints, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,24.0; !- Field 3", - - " Schedule:Compact,", - " FanAndCoilAvailSched, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0; !- Field 3", - - " ZoneHVAC:EquipmentConnections,", - " SPACE1-1, !- Zone Name", - " Zone1Equipment, !- Zone Conditioning Equipment List Name", - " Zone1Inlets, !- Zone Air Inlet Node or NodeList Name", - " , !- Zone Air Exhaust Node or NodeList Name", - " Zone 1 Node, !- Zone Air Node Name", - " Zone 1 Return Node; !- Zone Return Air Node Name", - - " ZoneHVAC:EquipmentList,", - " Zone1Equipment, !- Name", - " SequentialLoad, !- Load Distribution Scheme", - " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", - " Zone1DirectAirADU, !- Zone Equipment 1 Name", - " 1, !- Zone Equipment 1 Cooling Sequence", - " 1; !- Zone Equipment 1 Heating or No-Load Sequence", - - " ZoneHVAC:AirDistributionUnit,", - " Zone1DirectAirADU, !- Name", - " Zone 1 OA Inlet Node, !- Air Distribution Unit Outlet Node Name", - " AirTerminal:SingleDuct:ConstantVolume:NoReheat, !- Air Terminal Object Type", - " Zone1DirectAir; !- Air Terminal Name", - - " NodeList,", - " Zone1Inlets, !- Name", - " Zone 1 OA Inlet Node; !- Node 1 Name", - - " Schedule:Compact,", - " CyclingFanSch, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,0.0; !- Field 3", - - " Material:NoMass,", - " R19LAYER, !- Name", - " Rough, !- Roughness", - " 3.344, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " C5 - 4 IN HW CONCRETE, !- Name", - " MediumRough, !- Roughness", - " 0.1014984, !- Thickness {m}", - " 1.729577, !- Conductivity {W/m-K}", - " 2242.585, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - - " Material,", - " 1IN Stucco, !- Name", - " Smooth, !- Roughness", - " 0.0253, !- Thickness {m}", - " 0.6918, !- Conductivity {W/m-K}", - " 1858.0000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000, !- Thermal Absorptance", - " 0.9200, !- Solar Absorptance", - " 0.9200; !- Visible Absorptance", - - " Material,", - " 8IN Concrete HW, !- Name", - " MediumRough, !- Roughness", - " 0.2033, !- Thickness {m}", - " 1.7296, !- Conductivity {W/m-K}", - " 2243.0000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000, !- Thermal Absorptance", - " 0.6500, !- Solar Absorptance", - " 0.6500; !- Visible Absorptance", - - " Material,", - " Wall Insulation [5], !- Name", - " MediumRough, !- Roughness", - " 0.0453, !- Thickness {m}", - " 0.0432, !- Conductivity {W/m-K}", - " 91.0000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000, !- Thermal Absorptance", - " 0.5000, !- Solar Absorptance", - " 0.5000; !- Visible Absorptance", - - " Material,", - " 1/2IN Gypsum, !- Name", - " Smooth, !- Roughness", - " 0.0127, !- Thickness {m}", - " 0.1600, !- Conductivity {W/m-K}", - " 784.9000, !- Density {kg/m3}", - " 830.0000, !- Specific Heat {J/kg-K}", - " 0.9000, !- Thermal Absorptance", - " 0.9200, !- Solar Absorptance", - " 0.9200; !- Visible Absorptance", - - " Construction,", - " ext-walls, !- Name", - " 1IN Stucco, !- Outside Layer", - " 8IN Concrete HW, !- Layer 2", - " Wall Insulation [5], !- Layer 3", - " 1/2IN Gypsum; !- Layer 4", - - " Construction,", - " FLOOR, !- Name", - " C5 - 4 IN HW CONCRETE; !- Outside Layer", - - " Construction,", - " ROOF19, !- Name", - " R19LAYER; !- Outside Layer", - - " Site:GroundTemperature:BuildingSurface,18.89,18.92,19.02,19.12,19.21,19.23,19.07,19.32,19.09,19.21,19.13,18.96;", - - " Zone,", - " SPACE1-1, !- Name", - " 0.0000000E+00, !- Direction of Relative North {deg}", - " 0.0000000E+00, !- X Origin {m}", - " 0.0000000E+00, !- Y Origin {m}", - " 0.0000000E+00, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " CounterClockWise, !- Vertex Entry Direction", - " World; !- Coordinate System", - - " BuildingSurface:Detailed,", - " Zn001:Wall001, !- Name", - " Wall, !- Surface Type", - " ext-walls, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.0000000E+00,0.0000000E+00,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0000000E+00,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", - " 15.24000,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,0.0000000E+00,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall002, !- Name", - " Wall, !- Surface Type", - " ext-walls, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000,0.0000000E+00,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 15.24000,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", - " 15.24000,15.24000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall003, !- Name", - " Wall, !- Surface Type", - " ext-walls, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 15.24000,15.24000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0000000E+00,15.24000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", - " 0.0000000E+00,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall004, !- Name", - " Wall, !- Surface Type", - " ext-walls, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.0000000E+00,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0000000E+00,15.24000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0000000E+00,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", - " 0.0000000E+00,0.0000000E+00,4.572000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Flr001, !- Name", - " Floor, !- Surface Type", - " FLOOR, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Ground, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000,0.000000,0.0, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000,0.000000,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 0.000000,15.24000,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,15.24000,0.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Roof001, !- Name", - " Roof, !- Surface Type", - " ROOF19, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.0000000E+00, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.000000,15.24000,4.572, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000,0.000000,4.572, !- X,Y,Z ==> Vertex 2 {m}", - " 15.24000,0.000000,4.572, !- X,Y,Z ==> Vertex 3 {m}", - " 15.24000,15.24000,4.572; !- X,Y,Z ==> Vertex 4 {m}", - - " Sizing:Plant,", - " Hot Water Loop, !- Plant or Condenser Loop Name", - " heating, !- Loop Type", - " 82., !- Design Loop Exit Temperature {C}", - " 11; !- Loop Design Temperature Difference {deltaC}", - - " PlantLoop,", - " Hot Water Loop, !- Name", - " Water, !- Fluid Type", - " , !- User Defined Fluid Type", - " Hot Loop Operation, !- Plant Equipment Operation Scheme Name", - " HW Supply Outlet Node, !- Loop Temperature Setpoint Node Name", - " 100, !- Maximum Loop Temperature {C}", - " 10, !- Minimum Loop Temperature {C}", - " Autosize, !- Maximum Loop Flow Rate {m3/s}", - " 0.0, !- Minimum Loop Flow Rate {m3/s}", - " autocalculate, !- Plant Loop Volume {m3}", - " HW Supply Inlet Node, !- Plant Side Inlet Node Name", - " HW Supply Outlet Node, !- Plant Side Outlet Node Name", - " Heating Supply Side Branches, !- Plant Side Branch List Name", - " Heating Supply Side Connectors, !- Plant Side Connector List Name", - " HW Demand Inlet Node, !- Demand Side Inlet Node Name", - " HW Demand Outlet Node, !- Demand Side Outlet Node Name", - " Heating Demand Side Branches, !- Demand Side Branch List Name", - " Heating Demand Side Connectors, !- Demand Side Connector List Name", - " Optimal, !- Load Distribution Scheme", - " , !- Availability Manager List Name", - " , !- Plant Loop Demand Calculation Scheme", - " , !- Common Pipe Simulation", - " , !- Pressure Simulation Type", - " ; !- Loop Circulation Time", - - " SetpointManager:Scheduled,", - " Hot Water Loop Setpoint Manager, !- Name", - " Temperature, !- Control Variable", - " HW Loop Temp Schedule, !- Schedule Name", - " Hot Water Loop Setpoint Node List; !- Setpoint Node or NodeList Name", - - " Schedule:Compact,", - " HW LOOP TEMP SCHEDULE, !- Name", - " TEMPERATURE, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Alldays, !- Field 2", - " Until: 24:00,82.0; !- Field 3", - - " NodeList,", - " Hot Water Loop Setpoint Node List, !- Name", - " HW Supply Outlet Node; !- Node 1 Name", - - " BranchList,", - " Heating Supply Side Branches, !- Name", - " Heating Supply Inlet Branch, !- Branch 1 Name", - " Heating Purchased Hot Water Branch, !- Branch 2 Name", - " Heating Supply Bypass Branch, !- Branch 3 Name", - " Heating Supply Outlet Branch; !- Branch 4 Name", - - " ConnectorList,", - " Heating Supply Side Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " Heating Supply Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " Heating Supply Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " Heating Supply Splitter, !- Name", - " Heating Supply Inlet Branch, !- Inlet Branch Name", - " Heating Purchased Hot Water Branch, !- Outlet Branch 1 Name", - " Heating Supply Bypass Branch; !- Outlet Branch 2 Name", - - " Connector:Mixer,", - " Heating Supply Mixer, !- Name", - " Heating Supply Outlet Branch, !- Outlet Branch Name", - " Heating Purchased Hot Water Branch, !- Inlet Branch 1 Name", - " Heating Supply Bypass Branch; !- Inlet Branch 2 Name", - - " Branch,", - " Heating Supply Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pump:VariableSpeed, !- Component 1 Object Type", - " HW Circ Pump, !- Component 1 Name", - " HW Supply Inlet Node, !- Component 1 Inlet Node Name", - " HW Pump Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " Heating Purchased Hot Water Branch, !- Name", - " , !- Pressure Drop Curve Name", - " DistrictHeating, !- Component 1 Object Type", - " Purchased Heating, !- Component 1 Name", - " Purchased Heat Inlet Node, !- Component 1 Inlet Node Name", - " Purchased Heat Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " Heating Supply Bypass Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " Heating Supply Side Bypass, !- Component 1 Name", - " Heating Supply Bypass Inlet Node, !- Component 1 Inlet Node Name", - " Heating Supply Bypass Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " Heating Supply Side Bypass, !- Name", - " Heating Supply Bypass Inlet Node, !- Inlet Node Name", - " Heating Supply Bypass Outlet Node; !- Outlet Node Name", - - " Branch,", - " Heating Supply Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " Heating Supply Outlet, !- Component 1 Name", - " Heating Supply Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", - " HW Supply Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " Heating Supply Outlet, !- Name", - " Heating Supply Exit Pipe Inlet Node, !- Inlet Node Name", - " HW Supply Outlet Node; !- Outlet Node Name", - - " Pump:VariableSpeed,", - " HW Circ Pump, !- Name", - " HW Supply Inlet Node, !- Inlet Node Name", - " HW Pump Outlet Node, !- Outlet Node Name", - " autosize, !- Design Maximum Flow Rate {m3/s}", - " 179352, !- Design Pump Head {Pa}", - " autosize, !- Design Power Consumption {W}", - " 0.9, !- Motor Efficiency", - " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", - " 0, !- Coefficient 1 of the Part Load Performance Curve", - " 1, !- Coefficient 2 of the Part Load Performance Curve", - " 0, !- Coefficient 3 of the Part Load Performance Curve", - " 0, !- Coefficient 4 of the Part Load Performance Curve", - " 0, !- Design Minimum Flow Rate {m3/s}", - " INTERMITTENT; !- Pump Control Type", - - " BranchList,", - " Heating Demand Side Branches, !- Name", - " ZonesHWInletBranch, !- Branch 1 Name", - " Zone1HWBranch, !- Branch 2 Name", - " ZonesHWBypassBranch, !- Branch 5 Name", - " ZonesHWOutletBranch; !- Branch 6 Name", - - " ConnectorList,", - " Heating Demand Side Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " Zones HW Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " Zones HW Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " Zones HW Splitter, !- Name", - " ZonesHWInletBranch, !- Inlet Branch Name", - " Zone1HWBranch, !- Outlet Branch 1 Name", - " ZonesHWBypassBranch; !- Outlet Branch 4 Name", - - " Connector:Mixer,", - " Zones HW Mixer, !- Name", - " ZonesHWOutletBranch, !- Outlet Branch Name", - " Zone1HWBranch, !- Inlet Branch 1 Name", - " ZonesHWBypassBranch; !- Inlet Branch 4 Name", - - " Branch,", - " ZonesHWInletBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " ZonesHWInletPipe, !- Component 1 Name", - " HW Demand Inlet Node, !- Component 1 Inlet Node Name", - " HW Demand Entrance Pipe Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " ZonesHWInletPipe, !- Name", - " HW Demand Inlet Node, !- Inlet Node Name", - " HW Demand Entrance Pipe Outlet Node; !- Outlet Node Name", - - " Branch,", - " ZonesHWOutletBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " ZonesHWOutletPipe, !- Component 1 Name", - " HW Demand Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", - " HW Demand Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " ZonesHWOutletPipe, !- Name", - " HW Demand Exit Pipe Inlet Node, !- Inlet Node Name", - " HW Demand Outlet Node; !- Outlet Node Name", - - " Branch,", - " Zone1HWBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Coil:Heating:Water, !- Component 1 Object Type", - " OA Preheat HW Coil, !- Component 1 Name", - " HWCoil Water InletNode, !- Component 1 Inlet Node Name", - " HWCoil Water OutletNode; !- Zone1UnitHeatHWOutletNode; !- Component 1 Outlet Node Name", - - " Branch,", - " ZonesHWBypassBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " ZonesHWBypassPipe, !- Component 1 Name", - " ZonesHWBypassInletNode, !- Component 1 Inlet Node Name", - " ZonesHWBypassOutletNode; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " ZonesHWBypassPipe, !- Name", - " ZonesHWBypassInletNode, !- Inlet Node Name", - " ZonesHWBypassOutletNode; !- Outlet Node Name", - - " PlantEquipmentOperationSchemes,", - " Hot Loop Operation, !- Name", - " PlantEquipmentOperation:HeatingLoad, !- Control Scheme 1 Object Type", - " Purchased Heating Only, !- Control Scheme 1 Name", - " ON; !- Control Scheme 1 Schedule Name", - - " PlantEquipmentOperation:HeatingLoad,", - " Purchased Heating Only, !- Name", - " 0, !- Load Range 1 Lower Limit {W}", - " 1000000, !- Load Range 1 Upper Limit {W}", - " heating plant; !- Range 1 Equipment List Name", - - " PlantEquipmentList,", - " heating plant, !- Name", - " DistrictHeating, !- Equipment 1 Object Type", - " Purchased Heating; !- Equipment 1 Name", - - " DistrictHeating,", - " Purchased Heating, !- Name", - " Purchased Heat Inlet Node, !- Hot Water Inlet Node Name", - " Purchased Heat Outlet Node, !- Hot Water Outlet Node Name", - " 1000000; !- Nominal Capacity {W}", - - " Coil:Heating:Water,", - " OA Preheat HW Coil, !- Name", - " FanAndCoilAvailSched, !- Availability Schedule Name", - " autosize, !- U-Factor Times Area Value {W/K}", - " autosize, !- Maximum Water Flow Rate {m3/s}", - " HWCoil Water InletNode, !- Zone1UnitHeatHWInletNode,!- Water Inlet Node Name", - " HWCoil Water OutletNode, !- Water Outlet Node Name", - " Outside Air Inlet Node, !- Air Inlet Node Name", - " HW Coil Air OutletNode, !- Air Outlet Node Name", - " UFactorTimesAreaAndDesignWaterFlowRate, !- Performance Input Method", - " autosize, !- Rated Capacity {W}", - " 82.2, !- Rated Inlet Water Temperature {C}", - " 16.6, !- Rated Inlet Air Temperature {C}", - " 71.1, !- Rated Outlet Water Temperature {C}", - " 32.2, !- Rated Outlet Air Temperature {C}", - " ; !- Rated Ratio for Air and Water Convection", - } ); - ASSERT_TRUE( process_idf( idf_objects ) ); - - OutputProcessor::TimeValue.allocate( 2 ); - SimulationManager::ManageSimulation(); - - EXPECT_EQ( 1, NumOASystems ); - EXPECT_EQ( "OA SYS 1", OutsideAirSys( OASysNum ).Name ); - EXPECT_EQ( 2, OutsideAirSys( OASysNum ).NumComponents ); // there are two components in OA system - EXPECT_EQ( "OA PREHEAT HW COIL", OutsideAirSys( OASysNum ).ComponentName( 1 ) ); // pre heat hot water coil - EXPECT_EQ( WaterCoil( 1 ).Name, OutsideAirSys( OASysNum ).ComponentName( 1 ) ); // pre heat hot water coil - EXPECT_EQ( "OA MIXING BOX", OutsideAirSys( OASysNum ).ComponentName( 2 ) ); // OA mixer - - // simulate the outdoor air system - ManageOutsideAirSystem( OutsideAirSys( OASysNum ).Name, false, AirLoopNum, OASysNum ); - - EXPECT_DOUBLE_EQ( WaterCoil( 1 ).InletAirTemp, -17.3 ); // preheat Hot Water coil air inlet temp is the heating design day outdoor air temp - - EXPECT_DOUBLE_EQ( 11.6, Node( WaterCoil( 1 ).AirOutletNodeNum ).TempSetPoint ); // check the setpoint at the preheat Hot Water coil air outlet node - EXPECT_NEAR( 11.6, WaterCoil( 1 ).OutletAirTemp, 0.01 ); // preheat hot water coil is on and is heating the OA air stream - - AirInletNodeNum = WaterCoil( 1 ).AirInletNodeNum; - CpAir = PsyCpAirFnWTdb( Node( AirInletNodeNum ).HumRat, Node( AirInletNodeNum ).Temp ); + int AirLoopNum(1); + int OASysNum(1); + int AirInletNodeNum(0); + Real64 CpAir(0.0); + + std::string const idf_objects = delimited_string({ + " Version, 8.6;", + + " Timestep, 4;", + + " SimulationControl,", + " Yes, !- Do Zone Sizing Calculation", + " Yes, !- Do System Sizing Calculation", + " No, !- Do Plant Sizing Calculation", + " Yes, !- Run Simulation for Sizing Periods", + " No; !- Run Simulation for Weather File Run Periods", + + " RunPeriod,", + " , !- Name", + " 1, !- Begin Month", + " 1, !- Begin Day of Month", + " , !- Begin Year", + " 12, !- End Month", + " 31, !- End Day of Month", + " , !- End Year", + " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " Yes; !- Use Weather File Snow Indicators", + + " Site:Location,", + " CHICAGO_IL_USA TMY2-94846, !- Name", + " 41.78, !- Latitude {deg}", + " -87.75, !- Longitude {deg}", + " -6.00, !- Time Zone {hr}", + " 190.00; !- Elevation {m}", + + " SizingPeriod:DesignDay,", + " CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, !- Name", + " 1, !- Month", + " 21, !- Day of Month", + " WinterDesignDay, !- Day Type", + " -17.3, !- Maximum Dry-Bulb Temperature {C}", + " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 4.9, !- Wind Speed {m/s}", + " 270, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 0.0; !- Sky Clearness", + + " BranchList,", + " Air Loop Branches, !- Name", + " Air Loop Main Branch; !- Branch 1 Name", + + " Branch,", + " Air Loop Main Branch, !- Name", + " , !- Pressure Drop Curve Name", + " AirLoopHVAC:OutdoorAirSystem, !- Component 1 Object Type", + " OA Sys 1, !- Component 1 Name", + " Outdoor Air Mixer Inlet Node, !- Component 1 Inlet Node Name", + " Mixed Air Node, !- Component 1 Outlet Node Name", + " Fan:ConstantVolume, !- Component 2 Object Type", + " Supply Fan 1, !- Component 2 Name", + " Mixed Air Node, !- Component 2 Inlet Node Name", + " Air Loop Outlet Node; !- Component 2 Outlet Node Name", + + " AirLoopHVAC,", + " DOAS, !- Name", + " , !- Controller List Name", + " Outdoor Air 1 Avail List,!- Availability Manager List Name", + " 0.0625, !- Design Supply Air Flow Rate {m3/s}", + " Air Loop Branches, !- Branch List Name", + " , !- Connector List Name", + " Outdoor Air Mixer Inlet Node, !- Supply Side Inlet Node Name", + " Return Air Mixer Outlet, !- Demand Side Outlet Node Name", + " Zone Equipment Inlet Node, !- Demand Side Inlet Node Names", + " Air Loop Outlet Node; !- Supply Side Outlet Node Names", + + " AirLoopHVAC:SupplyPath,", + " OASysSupplyPath, !- Name", + " Zone Equipment Inlet Node, !- Supply Air Path Inlet Node Name", + " AirLoopHVAC:ZoneSplitter,!- Component 1 Object Type", + " Zone Supply Air Splitter;!- Component 1 Name", + + " AirLoopHVAC:ReturnPath,", + " OASysReturnPath, !- Name", + " Return Air Mixer Outlet, !- Return Air Path Outlet Node Name", + " AirLoopHVAC:ZoneMixer, !- Component 1 Object Type", + " Zone Return Air Mixer; !- Component 1 Name", + + " AirLoopHVAC:ZoneSplitter,", + " Zone Supply Air Splitter,!- Name", + " Zone Equipment Inlet Node, !- Inlet Node Name", + " Zone 1 OA Inlet Node 2AT; !- Outlet 1 Node Name", + + " AirLoopHVAC:ZoneMixer,", + " Zone Return Air Mixer, !- Name", + " Return Air Mixer Outlet, !- Outlet Node Name", + " Zone 1 Return Node; !- Inlet 1 Node Name", + + " AirLoopHVAC:ControllerList,", + " OA Sys 1 Controllers, !- Name", + " Controller:OutdoorAir, !- Controller 1 Object Type", + " OA Controller 1, !- Controller 1 Name", + " Controller:WaterCoil, !- Controller 2 Object Type", + " Preheat Coil Controller; !- Controller 2 Name", + + " Controller:WaterCoil,", + " Preheat Coil Controller, !- Name", + " Temperature, !- Control Variable", + " Normal, !- Action", + " Flow, !- Actuator Variable", + " HW Coil Air OutletNode, !- Sensor Node Name", + " HWCoil Water InletNode, !- Actuator Node Name", + " Autosize, !- Controller Convergence Tolerance {deltaC}", + " Autosize, !- Maximum Actuated Flow {m3/s}", + " 0; !- Minimum Actuated Flow {m3/s}", + + " AirLoopHVAC:OutdoorAirSystem:EquipmentList,", + " OA Sys 1 Equipment, !- Name", + " Coil:Heating:Water, !- Component 1 Object Type", + " OA Preheat HW Coil, !- Component 1 Name", + " OutdoorAir:Mixer, !- Component 1 Object Type", + " OA Mixing Box; !- Component 1 Name", + + " AirLoopHVAC:OutdoorAirSystem,", + " OA Sys 1, !- Name", + " OA Sys 1 Controllers, !- Controller List Name", + " OA Sys 1 Equipment, !- Outdoor Air Equipment List Name", + " Outdoor Air 1 Avail List;!- Availability Manager List Name", + + " OutdoorAir:NodeList,", + " OUTSIDE AIR INLET NODE; !- Node or NodeList Name 1", + + " OutdoorAir:Mixer,", + " OA Mixing Box, !- Name", + " Mixed Air Node, !- Mixed Air Node Name", + " HW Coil Air OutletNode, !- Outdoor Air Stream Node Name", + " Relief Air Outlet Node, !- Relief Air Stream Node Name", + " Outdoor Air Mixer Inlet Node; !- Return Air Stream Node Name", + + " AvailabilityManagerAssignmentList,", + " Outdoor Air 1 Avail List,!- Name", + " AvailabilityManager:Scheduled, !- Availability Manager 1 Object Type", + " Outdoor Air 1 Avail; !- Availability Manager 1 Name", + + " AvailabilityManager:Scheduled,", + " Outdoor Air 1 Avail, !- Name", + " FanAndCoilAvailSched; !- Schedule Name", + + " SetpointManager:MixedAir,", + " Mixed Air Temp Manager 1,!- Name", + " Temperature, !- Control Variable", + " Air Loop Outlet Node, !- Reference Setpoint Node Name", + " Mixed Air Node, !- Fan Inlet Node Name", + " Air Loop Outlet Node, !- Fan Outlet Node Name", + " Mixed Air Node; !- Setpoint Node or NodeList Name", + + " SetpointManager:Scheduled,", + " HW Coil Air Temp Manager,!- Name", + " Temperature, !- Control Variable", + " Schedule_Constant_11.6, !- Schedule Name", + " HW Coil Air OutletNode; !- Setpoint Node or NodeList Name", + + " Schedule:Constant,Schedule_Constant_11.6, Temperature, 11.6;", + + " Controller:OutdoorAir,", + " OA Controller 1, !- Name", + " Relief Air Outlet Node, !- Relief Air Outlet Node Name", + " Outdoor Air Mixer Inlet Node, !- Return Air Node Name", + " Mixed Air Node, !- Mixed Air Node Name", + " Outside Air Inlet Node, !- Actuator Node Name", + " 0.0625, !- Minimum Outdoor Air Flow Rate {m3/s}", + " 0.0625, !- Maximum Outdoor Air Flow Rate {m3/s}", + " DifferentialDrybulb, !- Economizer Control Type", + " ModulateFlow, !- Economizer Control Action Type", + " 23., !- Economizer Maximum Limit Dry-Bulb Temperature {C}", + " , !- Economizer Maximum Limit Enthalpy {J/kg}", + " 13.5, !- Economizer Maximum Limit Dewpoint Temperature {C}", + " , !- Electronic Enthalpy Limit Curve Name", + " 14., !- Economizer Minimum Limit Dry-Bulb Temperature {C}", + " NoLockout, !- Lockout Type", + " FixedMinimum, !- Minimum Limit Type", + " OAFractionSched, !- Minimum Outdoor Air Schedule Name", + " , !- Minimum Fraction of Outdoor Air Schedule Name", + " , !- Maximum Fraction of Outdoor Air Schedule Name", + " ; !- Mechanical Ventilation Controller Name", + + " Fan:ConstantVolume,", + " Supply Fan 1, !- Name", + " FanAndCoilAvailSched, !- Availability Schedule Name", + " 0.7, !- Fan Total Efficiency", + " 600.0, !- Pressure Rise {Pa}", + " 0.0625, !- Maximum Flow Rate {m3/s}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Airstream Fraction", + " Mixed Air Node, !- Air Inlet Node Name", + " Air Loop Outlet Node; !- Air Outlet Node Name", + + " AirTerminal:SingleDuct:ConstantVolume:NoReheat,", + " Zone1DirectAir, !- Name", + " FanAndCoilAvailSched, !- Availability Schedule Name", + " Zone 1 OA Inlet Node 2AT, !- Air Inlet Node Name", + " Zone 1 OA Inlet Node, !- Air Outlet Node Name", + " 0.0625; !- Maximum Air Flow Rate {m3/s}", + + " Schedule:Compact,", + " OAFractionSched, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,0.5; !- Field 3", + + " SetpointManager:SingleZone:Reheat,", + " Supply Air Temp Manager, !- Name", + " Temperature, !- Control Variable", + " 14.0, !- Minimum Supply Air Temperature {C}", + " 40.0, !- Maximum Supply Air Temperature {C}", + " SPACE1-1, !- Control Zone Name", + " Zone 1 Node, !- Zone Node Name", + " Zone 1 OA Inlet Node, !- Zone Inlet Node Name", + " Air Loop Outlet Node; !- Setpoint Node or NodeList Name", + + " Sizing:System,", + " DOAS, !- AirLoop Name", + " Sensible, !- Type of Load to Size On", + " autosize, !- Design Outdoor Air Flow Rate {m3/s}", + " 1.0, !- Central Heating Maximum System Air Flow Ratio", + " 40.0, !- Preheat Design Temperature {C}", + " 0.008, !- Preheat Design Humidity Ratio {kgWater/kgDryAir}", + " 15.56, !- Precool Design Temperature {C}", + " 0.008, !- Precool Design Humidity Ratio {kgWater/kgDryAir}", + " 12.78, !- Central Cooling Design Supply Air Temperature {C}", + " 12.78, !- Central Heating Design Supply Air Temperature {C}", + " NonCoincident, !- Type of Zone Sum to Use", + " No, !- 100% Outdoor Air in Cooling", + " No, !- 100% Outdoor Air in Heating", + " 0.0085, !- Central Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " 0.008, !- Central Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " Flow/System, !- Cooling Supply Air Flow Rate Method", + " 8.287, !- Cooling Supply Air Flow Rate {m3/s}", + " 0.0099676501, !- Cooling Supply Air Flow Rate Per Floor Area {m3/s-m2}", + " 1, !- Cooling Fraction of Autosized Cooling Supply Air Flow Rate", + " 3.9475456e-005, !- Cooling Supply Air Flow Rate Per Unit Cooling Capacity {m3/s-W}", + " Flow/System, !- Heating Supply Air Flow Rate Method", + " 0.338942175, !- Heating Supply Air Flow Rate {m3/s}", + " 0.0099676501, !- Heating Supply Air Flow Rate Per Floor Area {m3/s-m2}", + " 1, !- Heating Fraction of Autosized Heating Supply Air Flow Rate", + " 1, !- Heating Fraction of Autosized Cooling Supply Air Flow Rate", + " 3.1588213e-005, !- Heating Supply Air Flow Rate Per Unit Heating Capacity {m3/s-W}", + " ZoneSum, !- System Outdoor Air Method", + " 1, !- Zone Maximum Outdoor Air Fraction {dimensionless}", + " CoolingDesignCapacity, !- Cooling Design Capacity Method", + " Autosize, !- Cooling Design Capacity {W}", + " 234.7, !- Cooling Design Capacity Per Floor Area {W/m2}", + " 1, !- Fraction of Autosized Cooling Design Capacity", + " HeatingDesignCapacity, !- Heating Design Capacity Method", + " Autosize, !- Heating Design Capacity {W}", + " 157, !- Heating Design Capacity Per Floor Area {W/m2}", + " 1, !- Fraction of Autosized Heating Design Capacity", + " VAV; !- Central Cooling Capacity Control Method", + " ", + + " Site:GroundTemperature:Deep,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5;", + + " Sizing:Parameters,", + " 1.3, !- Heating Sizing Factor", + " 1.3, !- Cooling Sizing Factor", + " ; !- Timesteps in Averaging Window", + + " Sizing:Zone,", + " SPACE1-1, !- Zone or ZoneList Name", + " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", + " 13., !- Zone Cooling Design Supply Air Temperature {C}", + " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", + " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", + " 30., !- Zone Heating Design Supply Air Temperature {C}", + " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", + " 0.0075, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " SZ DSOA SPACE1-1, !- Design Specification Outdoor Air Object Name", + " 0.0, !- Zone Heating Sizing Factor", + " 0.0, !- Zone Cooling Sizing Factor", + " DesignDay, !- Cooling Design Air Flow Method", + " 0, !- Cooling Design Air Flow Rate {m3/s}", + " , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", + " , !- Cooling Minimum Air Flow {m3/s}", + " , !- Cooling Minimum Air Flow Fraction", + " DesignDay, !- Heating Design Air Flow Method", + " 0, !- Heating Design Air Flow Rate {m3/s}", + " , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", + " , !- Heating Maximum Air Flow {m3/s}", + " ; !- Heating Maximum Air Flow Fraction", + + " DesignSpecification:OutdoorAir,", + " SZ DSOA SPACE1-1, !- Name", + " flow/person, !- Outdoor Air Method", + " 0.0125, !- Outdoor Air Flow per Person {m3/s-person}", + " 0.0, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}", + " 0.0; !- Outdoor Air Flow per Zone {m3/s}", + + " People,", + " SPACE1-1 PEOPLE, !- Name", + " SPACE1-1, !- Zone or ZoneList Name", + " OFFICE OCCUPANCY, !- Number of People Schedule Name", + " people, !- Number of People Calculation Method", + " 5.000000, !- Number of People", + " , !- People per Zone Floor Area {person/m2}", + " , !- Zone Floor Area per Person {m2/person}", + " 0.3000000, !- Fraction Radiant", + " , !- Sensible Heat Fraction", + " Activity Sch, !- Activity Level Schedule Name", + " 3.82E-8, !- Carbon Dioxide Generation Rate {m3/s-W}", + " , !- Enable ASHRAE 55 Comfort Warnings", + " zoneaveraged, !- Mean Radiant Temperature Calculation Type", + " , !- Surface Name/Angle Factor List Name", + " Work Eff Sch, !- Work Efficiency Schedule Name", + " ClothingInsulationSchedule, !- Clothing Insulation Calculation Method", + " , !- Clothing Insulation Calculation Method Schedule Name", + " Clothing Sch, !- Clothing Insulation Schedule Name", + " Air Velo Sch, !- Air Velocity Schedule Name", + " FANGER; !- Thermal Comfort Model 1 Type", + + " Schedule:Compact,", + " OFFICE OCCUPANCY, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 21", + " Until: 24:00,1.0; !- Field 22", + + " Schedule:Compact,", + " Activity Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,131.8; !- Field 3", + + " Schedule:Compact,", + " Work Eff Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,0.0; !- Field 3", + + " Schedule:Compact,", + " Clothing Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0; !- Field 3", + + " Schedule:Compact,", + " Air Velo Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,0.137; !- Field 3", + + " Schedule:Compact,", + " BLDG_EQUIP_SCH, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0; !- Field 3", + + " ScheduleTypeLimits,", + " Any Number; !- Name", + + " Lights,", + " SPACE1-1 Lights, !- Name", + " SPACE1-1, !- Zone or ZoneList Name", + " LIGHTS-1, !- Schedule Name", + " LightingLevel, !- Design Level Calculation Method", + " 284, !- Lighting Level {W}", + " , !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.0, !- Return Air Fraction", + " 0.59, !- Fraction Radiant", + " 0.2, !- Fraction Visible", + " 0, !- Fraction Replaceable", + " GeneralLights; !- End-Use Subcategory", + + " ElectricEquipment,", + " SPACE1-1_MiscPlug_Equip, !- Name", + " SPACE1-1, !- Zone or ZoneList Name", + " BLDG_EQUIP_SCH, !- Schedule Name", + " EquipmentLevel, !- Design Level Calculation Method", + " 207.7352, !- Design Level {W}", + " , !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.0000, !- Fraction Latent", + " 0.5000, !- Fraction Radiant", + " 0.0000, !- Fraction Lost", + " MiscPlug; !- End-Use Subcategory", + + " Schedule:Compact,", + " LIGHTS-1, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0; !- Field 3", + + " ZoneControl:Thermostat,", + " Zone 1 Thermostat, !- Name", + " SPACE1-1, !- Zone or ZoneList Name", + " Zone Control Type Sched, !- Control Type Schedule Name", + " ThermostatSetpoint:DualSetpoint, !- Control 1 Object Type", + " Temperature Setpoints; !- Control 1 Name", + + " ThermostatSetpoint:DualSetpoint,", + " Temperature Setpoints, !- Name", + " Heating Setpoints, !- Heating Setpoint Temperature Schedule Name", + " Cooling Setpoints; !- Cooling Setpoint Temperature Schedule Name", + + " Schedule:Compact,", + " Zone Control Type Sched, !- Name", + " Control Type, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,4; !- Field 3", + + " ScheduleTypeLimits,", + " Control Type, !- Name", + " 0, !- Lower Limit Value", + " 4, !- Upper Limit Value", + " DISCRETE; !- Numeric Type", + + " ScheduleTypeLimits,", + " Temperature, !- Name", + " -60, !- Lower Limit Value", + " 200, !- Upper Limit Value", + " CONTINUOUS, !- Numeric Type", + " Temperature; !- Unit Type", + + " ScheduleTypeLimits,", + " Fraction, !- Name", + " 0.0, !- Lower Limit Value", + " 1.0, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + " Schedule:Compact,", + " On, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0; !- Field 3", + + " Schedule:Compact,", + " Heating Setpoints, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,21.0; !- Field 3", + + " Schedule:Compact,", + " Cooling Setpoints, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,24.0; !- Field 3", + + " Schedule:Compact,", + " FanAndCoilAvailSched, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0; !- Field 3", + + " ZoneHVAC:EquipmentConnections,", + " SPACE1-1, !- Zone Name", + " Zone1Equipment, !- Zone Conditioning Equipment List Name", + " Zone1Inlets, !- Zone Air Inlet Node or NodeList Name", + " , !- Zone Air Exhaust Node or NodeList Name", + " Zone 1 Node, !- Zone Air Node Name", + " Zone 1 Return Node; !- Zone Return Air Node Name", + + " ZoneHVAC:EquipmentList,", + " Zone1Equipment, !- Name", + " SequentialLoad, !- Load Distribution Scheme", + " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", + " Zone1DirectAirADU, !- Zone Equipment 1 Name", + " 1, !- Zone Equipment 1 Cooling Sequence", + " 1; !- Zone Equipment 1 Heating or No-Load Sequence", + + " ZoneHVAC:AirDistributionUnit,", + " Zone1DirectAirADU, !- Name", + " Zone 1 OA Inlet Node, !- Air Distribution Unit Outlet Node Name", + " AirTerminal:SingleDuct:ConstantVolume:NoReheat, !- Air Terminal Object Type", + " Zone1DirectAir; !- Air Terminal Name", + + " NodeList,", + " Zone1Inlets, !- Name", + " Zone 1 OA Inlet Node; !- Node 1 Name", + + " Schedule:Compact,", + " CyclingFanSch, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,0.0; !- Field 3", + + " Material:NoMass,", + " R19LAYER, !- Name", + " Rough, !- Roughness", + " 3.344, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " C5 - 4 IN HW CONCRETE, !- Name", + " MediumRough, !- Roughness", + " 0.1014984, !- Thickness {m}", + " 1.729577, !- Conductivity {W/m-K}", + " 2242.585, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + + " Material,", + " 1IN Stucco, !- Name", + " Smooth, !- Roughness", + " 0.0253, !- Thickness {m}", + " 0.6918, !- Conductivity {W/m-K}", + " 1858.0000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000, !- Thermal Absorptance", + " 0.9200, !- Solar Absorptance", + " 0.9200; !- Visible Absorptance", + + " Material,", + " 8IN Concrete HW, !- Name", + " MediumRough, !- Roughness", + " 0.2033, !- Thickness {m}", + " 1.7296, !- Conductivity {W/m-K}", + " 2243.0000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000, !- Thermal Absorptance", + " 0.6500, !- Solar Absorptance", + " 0.6500; !- Visible Absorptance", + + " Material,", + " Wall Insulation [5], !- Name", + " MediumRough, !- Roughness", + " 0.0453, !- Thickness {m}", + " 0.0432, !- Conductivity {W/m-K}", + " 91.0000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000, !- Thermal Absorptance", + " 0.5000, !- Solar Absorptance", + " 0.5000; !- Visible Absorptance", + + " Material,", + " 1/2IN Gypsum, !- Name", + " Smooth, !- Roughness", + " 0.0127, !- Thickness {m}", + " 0.1600, !- Conductivity {W/m-K}", + " 784.9000, !- Density {kg/m3}", + " 830.0000, !- Specific Heat {J/kg-K}", + " 0.9000, !- Thermal Absorptance", + " 0.9200, !- Solar Absorptance", + " 0.9200; !- Visible Absorptance", + + " Construction,", + " ext-walls, !- Name", + " 1IN Stucco, !- Outside Layer", + " 8IN Concrete HW, !- Layer 2", + " Wall Insulation [5], !- Layer 3", + " 1/2IN Gypsum; !- Layer 4", + + " Construction,", + " FLOOR, !- Name", + " C5 - 4 IN HW CONCRETE; !- Outside Layer", + + " Construction,", + " ROOF19, !- Name", + " R19LAYER; !- Outside Layer", + + " Site:GroundTemperature:BuildingSurface,18.89,18.92,19.02,19.12,19.21,19.23,19.07,19.32,19.09,19.21,19.13,18.96;", + + " Zone,", + " SPACE1-1, !- Name", + " 0.0000000E+00, !- Direction of Relative North {deg}", + " 0.0000000E+00, !- X Origin {m}", + " 0.0000000E+00, !- Y Origin {m}", + " 0.0000000E+00, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " CounterClockWise, !- Vertex Entry Direction", + " World; !- Coordinate System", + + " BuildingSurface:Detailed,", + " Zn001:Wall001, !- Name", + " Wall, !- Surface Type", + " ext-walls, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.0000000E+00,0.0000000E+00,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0000000E+00,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", + " 15.24000,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,0.0000000E+00,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall002, !- Name", + " Wall, !- Surface Type", + " ext-walls, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000,0.0000000E+00,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 15.24000,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", + " 15.24000,15.24000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall003, !- Name", + " Wall, !- Surface Type", + " ext-walls, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 15.24000,15.24000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0000000E+00,15.24000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", + " 0.0000000E+00,15.24000,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall004, !- Name", + " Wall, !- Surface Type", + " ext-walls, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.0000000E+00,15.24000,4.572000, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0000000E+00,15.24000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0000000E+00,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", + " 0.0000000E+00,0.0000000E+00,4.572000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Flr001, !- Name", + " Floor, !- Surface Type", + " FLOOR, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Ground, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000,0.000000,0.0, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000,0.000000,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 0.000000,15.24000,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,15.24000,0.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Roof001, !- Name", + " Roof, !- Surface Type", + " ROOF19, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.0000000E+00, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.000000,15.24000,4.572, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000,0.000000,4.572, !- X,Y,Z ==> Vertex 2 {m}", + " 15.24000,0.000000,4.572, !- X,Y,Z ==> Vertex 3 {m}", + " 15.24000,15.24000,4.572; !- X,Y,Z ==> Vertex 4 {m}", + + " Sizing:Plant,", + " Hot Water Loop, !- Plant or Condenser Loop Name", + " heating, !- Loop Type", + " 82., !- Design Loop Exit Temperature {C}", + " 11; !- Loop Design Temperature Difference {deltaC}", + + " PlantLoop,", + " Hot Water Loop, !- Name", + " Water, !- Fluid Type", + " , !- User Defined Fluid Type", + " Hot Loop Operation, !- Plant Equipment Operation Scheme Name", + " HW Supply Outlet Node, !- Loop Temperature Setpoint Node Name", + " 100, !- Maximum Loop Temperature {C}", + " 10, !- Minimum Loop Temperature {C}", + " Autosize, !- Maximum Loop Flow Rate {m3/s}", + " 0.0, !- Minimum Loop Flow Rate {m3/s}", + " autocalculate, !- Plant Loop Volume {m3}", + " HW Supply Inlet Node, !- Plant Side Inlet Node Name", + " HW Supply Outlet Node, !- Plant Side Outlet Node Name", + " Heating Supply Side Branches, !- Plant Side Branch List Name", + " Heating Supply Side Connectors, !- Plant Side Connector List Name", + " HW Demand Inlet Node, !- Demand Side Inlet Node Name", + " HW Demand Outlet Node, !- Demand Side Outlet Node Name", + " Heating Demand Side Branches, !- Demand Side Branch List Name", + " Heating Demand Side Connectors, !- Demand Side Connector List Name", + " Optimal, !- Load Distribution Scheme", + " , !- Availability Manager List Name", + " , !- Plant Loop Demand Calculation Scheme", + " , !- Common Pipe Simulation", + " , !- Pressure Simulation Type", + " ; !- Loop Circulation Time", + + " SetpointManager:Scheduled,", + " Hot Water Loop Setpoint Manager, !- Name", + " Temperature, !- Control Variable", + " HW Loop Temp Schedule, !- Schedule Name", + " Hot Water Loop Setpoint Node List; !- Setpoint Node or NodeList Name", + + " Schedule:Compact,", + " HW LOOP TEMP SCHEDULE, !- Name", + " TEMPERATURE, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Alldays, !- Field 2", + " Until: 24:00,82.0; !- Field 3", + + " NodeList,", + " Hot Water Loop Setpoint Node List, !- Name", + " HW Supply Outlet Node; !- Node 1 Name", + + " BranchList,", + " Heating Supply Side Branches, !- Name", + " Heating Supply Inlet Branch, !- Branch 1 Name", + " Heating Purchased Hot Water Branch, !- Branch 2 Name", + " Heating Supply Bypass Branch, !- Branch 3 Name", + " Heating Supply Outlet Branch; !- Branch 4 Name", + + " ConnectorList,", + " Heating Supply Side Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " Heating Supply Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " Heating Supply Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " Heating Supply Splitter, !- Name", + " Heating Supply Inlet Branch, !- Inlet Branch Name", + " Heating Purchased Hot Water Branch, !- Outlet Branch 1 Name", + " Heating Supply Bypass Branch; !- Outlet Branch 2 Name", + + " Connector:Mixer,", + " Heating Supply Mixer, !- Name", + " Heating Supply Outlet Branch, !- Outlet Branch Name", + " Heating Purchased Hot Water Branch, !- Inlet Branch 1 Name", + " Heating Supply Bypass Branch; !- Inlet Branch 2 Name", + + " Branch,", + " Heating Supply Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pump:VariableSpeed, !- Component 1 Object Type", + " HW Circ Pump, !- Component 1 Name", + " HW Supply Inlet Node, !- Component 1 Inlet Node Name", + " HW Pump Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " Heating Purchased Hot Water Branch, !- Name", + " , !- Pressure Drop Curve Name", + " DistrictHeating, !- Component 1 Object Type", + " Purchased Heating, !- Component 1 Name", + " Purchased Heat Inlet Node, !- Component 1 Inlet Node Name", + " Purchased Heat Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " Heating Supply Bypass Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " Heating Supply Side Bypass, !- Component 1 Name", + " Heating Supply Bypass Inlet Node, !- Component 1 Inlet Node Name", + " Heating Supply Bypass Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " Heating Supply Side Bypass, !- Name", + " Heating Supply Bypass Inlet Node, !- Inlet Node Name", + " Heating Supply Bypass Outlet Node; !- Outlet Node Name", + + " Branch,", + " Heating Supply Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " Heating Supply Outlet, !- Component 1 Name", + " Heating Supply Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", + " HW Supply Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " Heating Supply Outlet, !- Name", + " Heating Supply Exit Pipe Inlet Node, !- Inlet Node Name", + " HW Supply Outlet Node; !- Outlet Node Name", + + " Pump:VariableSpeed,", + " HW Circ Pump, !- Name", + " HW Supply Inlet Node, !- Inlet Node Name", + " HW Pump Outlet Node, !- Outlet Node Name", + " autosize, !- Design Maximum Flow Rate {m3/s}", + " 179352, !- Design Pump Head {Pa}", + " autosize, !- Design Power Consumption {W}", + " 0.9, !- Motor Efficiency", + " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", + " 0, !- Coefficient 1 of the Part Load Performance Curve", + " 1, !- Coefficient 2 of the Part Load Performance Curve", + " 0, !- Coefficient 3 of the Part Load Performance Curve", + " 0, !- Coefficient 4 of the Part Load Performance Curve", + " 0, !- Design Minimum Flow Rate {m3/s}", + " INTERMITTENT; !- Pump Control Type", + + " BranchList,", + " Heating Demand Side Branches, !- Name", + " ZonesHWInletBranch, !- Branch 1 Name", + " Zone1HWBranch, !- Branch 2 Name", + " ZonesHWBypassBranch, !- Branch 5 Name", + " ZonesHWOutletBranch; !- Branch 6 Name", + + " ConnectorList,", + " Heating Demand Side Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " Zones HW Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " Zones HW Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " Zones HW Splitter, !- Name", + " ZonesHWInletBranch, !- Inlet Branch Name", + " Zone1HWBranch, !- Outlet Branch 1 Name", + " ZonesHWBypassBranch; !- Outlet Branch 4 Name", + + " Connector:Mixer,", + " Zones HW Mixer, !- Name", + " ZonesHWOutletBranch, !- Outlet Branch Name", + " Zone1HWBranch, !- Inlet Branch 1 Name", + " ZonesHWBypassBranch; !- Inlet Branch 4 Name", + + " Branch,", + " ZonesHWInletBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " ZonesHWInletPipe, !- Component 1 Name", + " HW Demand Inlet Node, !- Component 1 Inlet Node Name", + " HW Demand Entrance Pipe Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " ZonesHWInletPipe, !- Name", + " HW Demand Inlet Node, !- Inlet Node Name", + " HW Demand Entrance Pipe Outlet Node; !- Outlet Node Name", + + " Branch,", + " ZonesHWOutletBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " ZonesHWOutletPipe, !- Component 1 Name", + " HW Demand Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", + " HW Demand Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " ZonesHWOutletPipe, !- Name", + " HW Demand Exit Pipe Inlet Node, !- Inlet Node Name", + " HW Demand Outlet Node; !- Outlet Node Name", + + " Branch,", + " Zone1HWBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Coil:Heating:Water, !- Component 1 Object Type", + " OA Preheat HW Coil, !- Component 1 Name", + " HWCoil Water InletNode, !- Component 1 Inlet Node Name", + " HWCoil Water OutletNode; !- Zone1UnitHeatHWOutletNode; !- Component 1 Outlet Node Name", + + " Branch,", + " ZonesHWBypassBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " ZonesHWBypassPipe, !- Component 1 Name", + " ZonesHWBypassInletNode, !- Component 1 Inlet Node Name", + " ZonesHWBypassOutletNode; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " ZonesHWBypassPipe, !- Name", + " ZonesHWBypassInletNode, !- Inlet Node Name", + " ZonesHWBypassOutletNode; !- Outlet Node Name", + + " PlantEquipmentOperationSchemes,", + " Hot Loop Operation, !- Name", + " PlantEquipmentOperation:HeatingLoad, !- Control Scheme 1 Object Type", + " Purchased Heating Only, !- Control Scheme 1 Name", + " ON; !- Control Scheme 1 Schedule Name", + + " PlantEquipmentOperation:HeatingLoad,", + " Purchased Heating Only, !- Name", + " 0, !- Load Range 1 Lower Limit {W}", + " 1000000, !- Load Range 1 Upper Limit {W}", + " heating plant; !- Range 1 Equipment List Name", + + " PlantEquipmentList,", + " heating plant, !- Name", + " DistrictHeating, !- Equipment 1 Object Type", + " Purchased Heating; !- Equipment 1 Name", + + " DistrictHeating,", + " Purchased Heating, !- Name", + " Purchased Heat Inlet Node, !- Hot Water Inlet Node Name", + " Purchased Heat Outlet Node, !- Hot Water Outlet Node Name", + " 1000000; !- Nominal Capacity {W}", + + " Coil:Heating:Water,", + " OA Preheat HW Coil, !- Name", + " FanAndCoilAvailSched, !- Availability Schedule Name", + " autosize, !- U-Factor Times Area Value {W/K}", + " autosize, !- Maximum Water Flow Rate {m3/s}", + " HWCoil Water InletNode, !- Zone1UnitHeatHWInletNode,!- Water Inlet Node Name", + " HWCoil Water OutletNode, !- Water Outlet Node Name", + " Outside Air Inlet Node, !- Air Inlet Node Name", + " HW Coil Air OutletNode, !- Air Outlet Node Name", + " UFactorTimesAreaAndDesignWaterFlowRate, !- Performance Input Method", + " autosize, !- Rated Capacity {W}", + " 82.2, !- Rated Inlet Water Temperature {C}", + " 16.6, !- Rated Inlet Air Temperature {C}", + " 71.1, !- Rated Outlet Water Temperature {C}", + " 32.2, !- Rated Outlet Air Temperature {C}", + " ; !- Rated Ratio for Air and Water Convection", + }); + ASSERT_TRUE(process_idf(idf_objects)); + + OutputProcessor::TimeValue.allocate(2); + SimulationManager::ManageSimulation(); + + EXPECT_EQ(1, NumOASystems); + EXPECT_EQ("OA SYS 1", OutsideAirSys(OASysNum).Name); + EXPECT_EQ(2, OutsideAirSys(OASysNum).NumComponents); // there are two components in OA system + EXPECT_EQ("OA PREHEAT HW COIL", OutsideAirSys(OASysNum).ComponentName(1)); // pre heat hot water coil + EXPECT_EQ(WaterCoil(1).Name, OutsideAirSys(OASysNum).ComponentName(1)); // pre heat hot water coil + EXPECT_EQ("OA MIXING BOX", OutsideAirSys(OASysNum).ComponentName(2)); // OA mixer + + // simulate the outdoor air system + ManageOutsideAirSystem(OutsideAirSys(OASysNum).Name, false, AirLoopNum, OASysNum); + + EXPECT_DOUBLE_EQ(WaterCoil(1).InletAirTemp, -17.3); // preheat Hot Water coil air inlet temp is the heating design day outdoor air temp + + EXPECT_DOUBLE_EQ(11.6, Node(WaterCoil(1).AirOutletNodeNum).TempSetPoint); // check the setpoint at the preheat Hot Water coil air outlet node + EXPECT_NEAR(11.6, WaterCoil(1).OutletAirTemp, 0.01); // preheat hot water coil is on and is heating the OA air stream + + AirInletNodeNum = WaterCoil(1).AirInletNodeNum; + CpAir = PsyCpAirFnWTdb(Node(AirInletNodeNum).HumRat, Node(AirInletNodeNum).Temp); EXPECT_NEAR(WaterCoil(1).TotWaterHeatingCoilRate, WaterCoil(1).InletAirMassFlowRate * CpAir * (WaterCoil(1).OutletAirTemp - WaterCoil(1).InletAirTemp), 1.0); - // test that OA sys water coil bypasses normal controller calls before air loop simulation - EXPECT_EQ( "PREHEAT COIL CONTROLLER", HVACControllers::ControllerProps( 1 ).ControllerName ); - EXPECT_TRUE( HVACControllers::ControllerProps( 1 ).BypassControllerCalc ); - // test that water coil knows which controller controls the HW coil - EXPECT_EQ( WaterCoil( 1 ).ControllerIndex, 1 ); - } + // test that OA sys water coil bypasses normal controller calls before air loop simulation + EXPECT_EQ("PREHEAT COIL CONTROLLER", HVACControllers::ControllerProps(1).ControllerName); + EXPECT_TRUE(HVACControllers::ControllerProps(1).BypassControllerCalc); + // test that water coil knows which controller controls the HW coil + EXPECT_EQ(WaterCoil(1).ControllerIndex, 1); +} } // namespace EnergyPlus diff --git a/tst/EnergyPlus/unit/PlantHeatExchangerFluidToFluid.unit.cc b/tst/EnergyPlus/unit/PlantHeatExchangerFluidToFluid.unit.cc index 60edb77dea0..7352a38bcd8 100644 --- a/tst/EnergyPlus/unit/PlantHeatExchangerFluidToFluid.unit.cc +++ b/tst/EnergyPlus/unit/PlantHeatExchangerFluidToFluid.unit.cc @@ -79,1090 +79,1090 @@ TEST_F(EnergyPlusFixture, PlantHXModulatedDualDeadDefectFileHi) // that the HX will attempt to meet setpoint of 19 when the conditioniong fluid is 20 and cannot really make it to 19. The HX still cools to down // to 20. - std::string const idf_objects = delimited_string( { - "Version,8.4;", - - "Building,", - "Plant Load Profile Example, !- Name", - " 0.0, !- North Axis {deg}", - " Suburbs, !- Terrain", - " 0.04, !- Loads Convergence Tolerance Value", - " 0.04, !- Temperature Convergence Tolerance Value {deltaC}", - " FullInteriorAndExterior, !- Solar Distribution", - " 25, !- Maximum Number of Warmup Days", - " 6; !- Minimum Number of Warmup Days", - - " Timestep,6;", - - " GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " CounterClockWise, !- Vertex Entry Direction", - " Relative; !- Coordinate System", - - " Site:Location,", - " CHICAGO_IL_USA_WMO_725300, !- Name", - " 42.00, !- Latitude {deg}", - " -87.88, !- Longitude {deg}", - " -6.00, !- Time Zone {hr}", - " 190.00; !- Elevation {m}", - - " SizingPeriod:DesignDay,", - " CHICAGO Ann Htg 99% Condns DB, !- Name", - " 1, !- Month", - " 21, !- Day of Month", - " WinterDesignDay, !- Day Type", - " -17.3, !- Maximum Dry-Bulb Temperature {C}", - " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 4.9, !- Wind Speed {m/s}", - " 270, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 0.00; !- Sky Clearness", - - " RunPeriod,", - " Jan, !- Name", - " 1, !- Begin Month", - " 1, !- Begin Day of Month", - " , !- Begin Year", - " 1, !- End Month", - " 2, !- End Day of Month", - " , !- End Year", - " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " Yes; !- Use Weather File Snow Indicators", - - " SimulationControl,", - " NO, !- Do Zone Sizing Calculation", - " NO, !- Do System Sizing Calculation", - " NO, !- Do Plant Sizing Calculation", - " Yes, !- Run Simulation for Sizing Periods", - " No; !- Run Simulation for Weather File Run Periods", - - " PlantLoop,", - " Use Heat Loop, !- Name", - " WATER, !- Fluid Type", - " , !- User Defined Fluid Type", - " Use Heat Loop Operation, !- Plant Equipment Operation Scheme Name", - " Use Heat Supply Outlet Node, !- Loop Temperature Setpoint Node Name", - " 100, !- Maximum Loop Temperature {C}", - " 3, !- Minimum Loop Temperature {C}", - " 0.003, !- Maximum Loop Flow Rate {m3/s}", - " 0, !- Minimum Loop Flow Rate {m3/s}", - " 1.0, !- Plant Loop Volume {m3}", - " Use Heat Supply Inlet Node, !- Plant Side Inlet Node Name", - " Use Heat Supply Outlet Node, !- Plant Side Outlet Node Name", - " Use Heat Supply Branches,!- Plant Side Branch List Name", - " Use Heat Supply Connectors, !- Plant Side Connector List Name", - " Use Heat Demand Inlet Node, !- Demand Side Inlet Node Name", - " Use Heat Demand Outlet Node, !- Demand Side Outlet Node Name", - " Use Heat Demand Branches,!- Demand Side Branch List Name", - " Use Heat Demand Connectors, !- Demand Side Connector List Name", - " Optimal, !- Load Distribution Scheme", - " , !- Availability Manager List Name", - " , !- Plant Loop Demand Calculation Scheme", - " , !- Common Pipe Simulation", - " , !- Pressure Simulation Type", - " 2.0; !- Loop Circulation Time {minutes}", - - " SetpointManager:Scheduled,", - " Use Heat Loop Setpoint Manager, !- Name", - " Temperature, !- Control Variable", - " Use Heat Loop Temp Sch, !- Schedule Name", - " Use Heat Loop Setpoint Node List; !- Setpoint Node or NodeList Name", - - " NodeList,", - " Use Heat Loop Setpoint Node List, !- Name", - " Use Heat Supply Outlet Node; !- Node 1 Name", - - " PlantEquipmentOperationSchemes,", - " Use Heat Loop Operation, !- Name", - " PlantEquipmentOperation:Uncontrolled, !- Control Scheme 1 Object Type", - " USE Heat operation, !- Control Scheme 1 Name", - " AlwaysOnSchedule; !- Control Scheme 1 Schedule Name", - - " PlantEquipmentOperation:Uncontrolled,", - " USE Heat operation, !- Name", - " TRANSFER to USE Heat HX equip; !- Equipment List Name", - - " PlantEquipmentList,", - " TRANSFER to USE Heat HX equip, !- Name", - " HeatExchanger:FluidToFluid, !- Equipment 1 Object Type", - " TRANSFER to USE Heat HX; !- Equipment 1 Name", - - " BranchList,", - " USE Heat Supply Branches,!- Name", - " USE Heat Supply Inlet Branch, !- Branch 1 Name", - " USE Heat Heating Branch, !- Branch 2 Name", - " USE Heat Supply Outlet Branch; !- Branch 3 Name", - - " ConnectorList,", - " USE Heat Supply Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " USE Heat Supply Splitter,!- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " USE Heat Supply Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " USE Heat Supply Splitter,!- Name", - " USE Heat Supply Inlet Branch, !- Inlet Branch Name", - " USE Heat Heating Branch; !- Outlet Branch 1 Name", - - " Connector:Mixer,", - " USE Heat Supply Mixer, !- Name", - " USE Heat Supply Outlet Branch, !- Outlet Branch Name", - " USE Heat Heating Branch; !- Inlet Branch 1 Name", - - " Branch,", - " USE Heat Supply Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pump:VariableSpeed, !- Component 1 Object Type", - " USE Heat Pump, !- Component 1 Name", - " USE Heat Supply Inlet Node, !- Component 1 Inlet Node Name", - " USE Heat Supply Pump-Heating Node; !- Component 1 Outlet Node Name", - - " Pump:VariableSpeed,", - " USE Heat Pump, !- Name", - " USE Heat Supply Inlet Node, !- Inlet Node Name", - " USE Heat Supply Pump-Heating Node, !- Outlet Node Name", - " 0.005, !- Rated Flow Rate {m3/s}", - " 1, !- Rated Pump Head {Pa}", - " 0.01, !- Rated Power Consumption {W}", - " 0.87, !- Motor Efficiency", - " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", - " 0, !- Coefficient 1 of the Part Load Performance Curve", - " 1, !- Coefficient 2 of the Part Load Performance Curve", - " 0, !- Coefficient 3 of the Part Load Performance Curve", - " 0, !- Coefficient 4 of the Part Load Performance Curve", - " 0, !- Minimum Flow Rate {m3/s}", - " INTERMITTENT; !- Pump Control Type", - - " Branch,", - " USE Heat Heating Branch, !- Name", - " , !- Pressure Drop Curve Name", - " HeatExchanger:FluidToFluid, !- Component 1 Object Type", - " TRANSFER to USE Heat HX, !- Component 1 Name", - " USE Heat Supply Heating Inlet Node, !- Component 1 Inlet Node Name", - " USE Heat Supply Heating Outlet Node; !- Component 1 Outlet Node Name", - - " HeatExchanger:FluidToFluid,", - " TRANSFER to USE Heat HX, !- Name", - " AlwaysOnSchedule, !- Availability Schedule Name", - " TRANSFER Heat Demand HX Inlet Node, !- Loop Demand Side Inlet Node Name", - " TRANSFER Heat Demand HX Outlet Node, !- Loop Demand Side Outlet Node Name", - " 0.003, !- Loop Demand Side Design Flow Rate {m3/s}", - " USE Heat Supply Heating Inlet Node, !- Loop Supply Side Inlet Node Name", - " USE Heat Supply Heating Outlet Node, !- Loop Supply Side Outlet Node Name", - " 0.003, !- Loop Supply Side Design Flow Rate {m3/s}", - " CrossFlowBothUnMixed, !- Heat Exchange Model Type", - " 15000, !- Heat Exchanger U-Factor Times Area Value {W/k}", - " HeatingSetpointModulated,!- Control Type", - " Use heat Supply Outlet Node, !- Heat Exchanger Setpoint Node Name", - " 0.2, !- Minimum Temperature Difference to Activate Heat Exchanger {deltaC}", - " LoopToLoop; !- Heat Transfer Metering End Use Type", - - " Branch,", - " USE Heat Supply Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " USE Heat Supply Outlet Pipe, !- Component 1 Name", - " USE Heat Supply Heating-Pipe Node, !- Component 1 Inlet Node Name", - " USE Heat Supply Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " USE Heat Supply Outlet Pipe, !- Name", - " USE Heat Supply Heating-Pipe Node, !- Inlet Node Name", - " USE Heat Supply Outlet Node; !- Outlet Node Name", - - " BranchList,", - " USE Heat Demand Branches,!- Name", - " USE Heat Demand Inlet Branch, !- Branch 1 Name", - " USE Heat Load Profile Branch 1, !- Branch 2 Name", - " USE Heat Demand Outlet Branch; !- Branch 3 Name", - - " ConnectorList,", - " USE Heat Demand Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " USE Heat Demand Splitter,!- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " USE Heat Demand Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " USE Heat Demand Splitter,!- ", - " USE Heat Demand Inlet Branch, !- Inlet Branch Name", - " USE Heat Load Profile Branch 1; !- Outlet Branch 1 Name", - - " Connector:Mixer,", - " USE Heat Demand Mixer, !- Name", - " USE Heat Demand Outlet Branch, !- Outlet Branch Name", - " USE Heat Load Profile Branch 1; !- Inlet Branch 1 Name", - - " Branch,", - " USE Heat Demand Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " USE Heat Demand Inlet Pipe, !- Component 1 Name", - " USE Heat Demand Inlet Node, !- Component 1 Inlet Node Name", - " USE Heat Demand Pipe-Load Profile Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " USE Heat Demand Inlet Pipe, !- Name", - " USE Heat Demand Inlet Node, !- Inlet Node Name", - " USE Heat Demand Pipe-Load Profile Node; !- Outlet Node Name", - - " Branch,", - " USE Heat Load Profile Branch 1, !- Name", - " , !- Pressure Drop Curve Name", - " LoadProfile:Plant, !- Component 1 Object Type", - " Heat Load Profile 1, !- Component 1 Name", - " Heat Demand Load Profile 1 Inlet Node, !- Component 1 Inlet Node Name", - " Heat Demand Load Profile 1 Outlet Node; !- Component 1 Outlet Node Name", - - " LoadProfile:Plant,", - " Heat Load Profile 1, !- Name", - " Heat Demand Load Profile 1 Inlet Node, !- Inlet Node Name", - " Heat Demand Load Profile 1 Outlet Node, !- Outlet Node Name", - " Heat Load Profile 1 Load Schedule, !- Load Schedule Name", - " 0.002, !- Peak Flow Rate {m3/s}", - " Heat Load Profile 1 Flow Frac Schedule; !- Flow Rate Fraction Schedule Name", - - " Branch,", - " USE Heat Demand Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " USE Heat Demand Outlet Pipe, !- Component 1 Name", - " USE Heat Demand Load Profile-Pipe Node, !- Component 1 Inlet Node Name", - " USE Heat Demand Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " USE Heat Demand Outlet Pipe, !- Name", - " USE Heat Demand Load Profile-Pipe Node, !- Inlet Node Name", - " USE Heat Demand Outlet Node; !- Outlet Node Name", - - " PlantLoop,", - " Use Cool Loop, !- Name", - " WATER, !- Fluid Type", - " , !- User Defined Fluid Type", - " Use Cool Loop Operation, !- Plant Equipment Operation Scheme Name", - " Use Cool Supply Outlet Node, !- Loop Temperature Setpoint Node Name", - " 100, !- Maximum Loop Temperature {C}", - " 3, !- Minimum Loop Temperature {C}", - " 0.003, !- Maximum Loop Flow Rate {m3/s}", - " 0, !- Minimum Loop Flow Rate {m3/s}", - " 1.0, !- Plant Loop Volume {m3}", - " Use Cool Supply Inlet Node, !- Plant Side Inlet Node Name", - " Use Cool Supply Outlet Node, !- Plant Side Outlet Node Name", - " Use Cool Supply Branches,!- Plant Side Branch List Name", - " Use Cool Supply Connectors, !- Plant Side Connector List Name", - " Use Cool Demand Inlet Node, !- Demand Side Inlet Node Name", - " Use Cool Demand Outlet Node, !- Demand Side Outlet Node Name", - " Use Cool Demand Branches,!- Demand Side Branch List Name", - " Use Cool Demand Connectors, !- Demand Side Connector List Name", - " Optimal, !- Load Distribution Scheme", - " , !- Availability Manager List Name", - " , !- Plant Loop Demand Calculation Scheme", - " , !- Common Pipe Simulation", - " , !- Pressure Simulation Type", - " 2.0; !- Loop Circulation Time {minutes}", - - " SetpointManager:Scheduled,", - " Use Cool Loop Setpoint Manager, !- Name", - " Temperature, !- Control Variable", - " Use Cool Loop Temp Sch, !- Schedule Name", - " Use Cool Loop Setpoint Node List; !- Setpoint Node or NodeList Name", - - " NodeList,", - " Use Cool Loop Setpoint Node List, !- Name", - " Use Cool Supply Outlet Node; !- Node 1 Name", - - " PlantEquipmentOperationSchemes,", - " Use Cool Loop Operation, !- Name", - " PlantEquipmentOperation:Uncontrolled, !- Control Scheme 1 Object Type", - " USE Cool operation, !- Control Scheme 1 Name", - " AlwaysOnSchedule; !- Control Scheme 1 Schedule Name", - - " PlantEquipmentOperation:Uncontrolled,", - " USE Cool operation, !- Name", - " TRANSFER to USE Cool HX equip; !- Equipment List Name", - - " PlantEquipmentList,", - " TRANSFER to USE Cool HX equip, !- Name", - " HeatExchanger:FluidToFluid, !- Equipment 1 Object Type", - " TRANSFER to USE Cool HX; !- Equipment 1 Name", - - " BranchList,", - " USE Cool Supply Branches,!- Name", - " USE Cool Supply Inlet Branch, !- Branch 1 Name", - " USE Cooling Branch, !- Branch 2 Name", - " USE Cool Supply Outlet Branch; !- Branch 3 Name", - - " ConnectorList,", - " USE Cool Supply Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " USE Cool Supply Splitter,!- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " USE Cool Supply Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " USE Cool Supply Splitter,!- Name", - " USE Cool Supply Inlet Branch, !- Inlet Branch Name", - " USE Cooling Branch; !- Outlet Branch 1 Name", - - " Connector:Mixer,", - " USE Cool Supply Mixer, !- Name", - " USE Cool Supply Outlet Branch, !- Outlet Branch Name", - " USE Cooling Branch; !- Inlet Branch 1 Name", - - " Branch,", - " USE Cool Supply Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pump:VariableSpeed, !- Component 1 Object Type", - " USE Cool Pump, !- Component 1 Name", - " USE Cool Supply Inlet Node, !- Component 1 Inlet Node Name", - " USE Cool Supply Pump-Heating Node; !- Component 1 Outlet Node Name", - - " Pump:VariableSpeed,", - " USE Cool Pump, !- Name", - " USE Cool Supply Inlet Node, !- Inlet Node Name", - " USE Cool Supply Pump-Heating Node, !- Outlet Node Name", - " 0.005, !- Rated Flow Rate {m3/s}", - " 1, !- Rated Pump Head {Pa}", - " 0.01, !- Rated Power Consumption {W}", - " 0.87, !- Motor Efficiency", - " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", - " 0, !- Coefficient 1 of the Part Load Performance Curve", - " 1, !- Coefficient 2 of the Part Load Performance Curve", - " 0, !- Coefficient 3 of the Part Load Performance Curve", - " 0, !- Coefficient 4 of the Part Load Performance Curve", - " 0, !- Minimum Flow Rate {m3/s}", - " INTERMITTENT; !- Pump Control Type", - - " Branch,", - " USE Cooling Branch, !- Name", - " , !- Pressure Drop Curve Name", - " HeatExchanger:FluidToFluid, !- Component 1 Object Type", - " TRANSFER to USE Cool HX, !- Component 1 Name", - " USE Cool Supply Cooling Inlet Node, !- Component 1 Inlet Node Name", - " USE Cool Supply Cooling Outlet Node; !- Component 1 Outlet Node Name", - - " HeatExchanger:FluidToFluid,", - " TRANSFER to USE Cool HX, !- Name", - " AlwaysOnSchedule, !- Availability Schedule Name", - " TRANSFER Demand HX Cool Inlet Node, !- Loop Demand Side Inlet Node Name", - " TRANSFER Demand HX Cool Outlet Node, !- Loop Demand Side Outlet Node Name", - " 0.003, !- Loop Demand Side Design Flow Rate {m3/s}", - " USE Cool Supply Cooling Inlet Node, !- Loop Supply Side Inlet Node Name", - " USE Cool Supply Cooling Outlet Node, !- Loop Supply Side Outlet Node Name", - " 0.003, !- Loop Supply Side Design Flow Rate {m3/s}", - " CrossFlowBothUnMixed, !- Heat Exchange Model Type", - " 15000, !- Heat Exchanger U-Factor Times Area Value {W/k}", - " CoolingSetpointModulated,!- Control Type", - " Use Cool Supply Outlet Node, !- Heat Exchanger Setpoint Node Name", - " 0.2, !- Minimum Temperature Difference to Activate Heat Exchanger {deltaC}", - " LoopToLoop; !- Heat Transfer Metering End Use Type", - - " Branch,", - " USE Cool Supply Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " USE Cool Supply Outlet Pipe, !- Component 1 Name", - " USE Cool Supply Heating-Pipe Node, !- Component 1 Inlet Node Name", - " USE Cool Supply Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " USE Cool Supply Outlet Pipe, !- Name", - " USE Cool Supply Heating-Pipe Node, !- Inlet Node Name", - " USE Cool Supply Outlet Node; !- Outlet Node Name", - - " BranchList,", - " USE Cool Demand Branches,!- Name", - " USE Cool Demand Inlet Branch, !- Branch 1 Name", - " USE Cool Load Profile Branch 1, !- Branch 2 Name", - " USE Cool Demand Outlet Branch; !- Branch 3 Name", - - " ConnectorList,", - " USE Cool Demand Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " USE Cool Demand Splitter,!- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " USE Cool Demand Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " USE Cool Demand Splitter,!- Name", - " USE Cool Demand Inlet Branch, !- Inlet Branch Name", - " USE Cool Load Profile Branch 1; !- Outlet Branch 1 Name", - - " Connector:Mixer,", - " USE Cool Demand Mixer, !- Name", - " USE Cool Demand Outlet Branch, !- Outlet Branch Name", - " USE Cool Load Profile Branch 1; !- Inlet Branch 1 Name", - - " Branch,", - " USE Cool Demand Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " USE Cool Demand Inlet Pipe, !- Component 1 Name", - " USE Cool Demand Inlet Node, !- Component 1 Inlet Node Name", - " USE Cool Demand Pipe-Load Profile Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " USE Cool Demand Inlet Pipe, !- Name", - " USE Cool Demand Inlet Node, !- Inlet Node Name", - " USE Cool Demand Pipe-Load Profile Node; !- Outlet Node Name", - - " Branch,", - " USE Cool Load Profile Branch 1, !- Name", - " , !- Pressure Drop Curve Name", - " LoadProfile:Plant, !- Component 1 Object Type", - " Cool Load Profile 1, !- Component 1 Name", - " Demand Cool Load Profile 1 Inlet Node, !- Component 1 Inlet Node Name", - " Demand Cool Load Profile 1 Outlet Node; !- Component 1 Outlet Node Name", - - " LoadProfile:Plant,", - " Cool Load Profile 1, !- Name", - " Demand Cool Load Profile 1 Inlet Node, !- Inlet Node Name", - " Demand Cool Load Profile 1 Outlet Node, !- Outlet Node Name", - " Cool Load Profile 1 Load Schedule, !- Load Schedule Name", - " 0.002, !- Peak Flow Rate {m3/s}", - " Cool Load Profile 1 Flow Frac Schedule; !- Flow Rate Fraction Schedule Name", - - " Branch,", - " USE Cool Demand Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " USE Cool Demand Outlet Pipe, !- Component 1 Name", - " USE Cool Demand Load Profile-Pipe Node, !- Component 1 Inlet Node Name", - " USE Cool Demand Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " USE Cool Demand Outlet Pipe, !- Name", - " USE Cool Demand Load Profile-Pipe Node, !- Inlet Node Name", - " USE Cool Demand Outlet Node; !- Outlet Node Name", - - " PlantLoop,", - " TRANSFER Loop, !- Name", - " WATER, !- Fluid Type", - " , !- User Defined Fluid Type", - " TRANSFER Loop Operation, !- Plant Equipment Operation Scheme Name", - " TRANSFER Supply Outlet Node, !- Loop Temperature Setpoint Node Name", - " 100, !- Maximum Loop Temperature {C}", - " 3, !- Minimum Loop Temperature {C}", - " 0.003, !- Maximum Loop Flow Rate {m3/s}", - " 0, !- Minimum Loop Flow Rate {m3/s}", - " 1.0, !- Plant Loop Volume {m3}", - " TRANSFER Supply Inlet Node, !- Plant Side Inlet Node Name", - " TRANSFER Supply Outlet Node, !- Plant Side Outlet Node Name", - " TRANSFER Supply Branches,!- Plant Side Branch List Name", - " TRANSFER Supply Connectors, !- Plant Side Connector List Name", - " TRANSFER Demand Inlet Node, !- Demand Side Inlet Node Name", - " TRANSFER Demand Outlet Node, !- Demand Side Outlet Node Name", - " TRANSFER Demand Branches,!- Demand Side Branch List Name", - " TRANSFER Demand Connectors, !- Demand Side Connector List Name", - " OPTIMAL, !- Load Distribution Scheme", - " , !- Availability Manager List Name", - " DualSetpointDeadband, !- Plant Loop Demand Calculation Scheme", - " , !- Common Pipe Simulation", - " , !- Pressure Simulation Type", - " 2.0; !- Loop Circulation Time {minutes}", - - " SetpointManager:Scheduled:dualSetpoint,", - " TRANSFER Loop Dual Setpoint Manager, !- Name", - " Temperature, !- Control Variable", - " TRANSFER Dual Loop Hi Temp Sch, !- High Setpoint Schedule Name", - " TRANSFER Dual Loop Lo Temp Sch, !- Low Setpoint Schedule Name", - " TRANSFER Loop Setpoint Node List; !- Setpoint Node or NodeList Name", - - " NodeList,", - " TRANSFER Loop Setpoint Node List, !- Name", - " TRANSFER Supply Outlet Node; !- Node 1 Name", - - " PlantEquipmentOperationSchemes,", - " TRANSFER Loop Operation, !- Name", - " PlantEquipmentOperation:Uncontrolled, !- Control Scheme 1 Object Type", - " TRANSFER HX, !- Control Scheme 1 Name", - " AlwaysOnSchedule; !- Control Scheme 1 Schedule Name", - - " PlantEquipmentOperation:Uncontrolled,", - " TRANSFER HX, !- Name", - " TRANSFER Plant; !- Equipment List Name", - - " PlantEquipmentList,", - " TRANSFER Plant, !- Name", - " HeatExchanger:FluidToFluid, !- Equipment 1 Object Type", - " SOURCE to TRANSFER HX; !- Equipment 1 Name", - - " BranchList,", - " TRANSFER Supply Branches,!- Name", - " TRANSFER Supply Inlet Branch, !- Branch 1 Name", - " TRANSFER HX Branch, !- Branch 2 Name", - " TRANSFER Supply Outlet Branch; !- Branch 3 Name", - - " ConnectorList,", - " TRANSFER Supply Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " TRANSFER Supply Splitter,!- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " TRANSFER Supply Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " TRANSFER Supply Splitter,!- Name", - " TRANSFER Supply Inlet Branch, !- Inlet Branch Name", - " TRANSFER HX Branch; !- Outlet Branch 1 Name", - - " Connector:Mixer,", - " TRANSFER Supply Mixer, !- Name", - " TRANSFER Supply Outlet Branch, !- Outlet Branch Name", - " TRANSFER HX Branch; !- Inlet Branch 1 Name", - - " Branch,", - " TRANSFER Supply Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pump:VariableSpeed, !- Component 1 Object Type", - " TRANSFER Pump, !- Component 1 Name", - " TRANSFER Supply Inlet Node, !- Component 1 Inlet Node Name", - " TRANSFER Supply Pump-Heating Node; !- Component 1 Outlet Node Name", - - " Pump:VariableSpeed,", - " TRANSFER Pump, !- Name", - " TRANSFER Supply Inlet Node, !- Inlet Node Name", - " TRANSFER Supply Pump-Heating Node, !- Outlet Node Name", - " 0.005, !- Rated Flow Rate {m3/s}", - " 1, !- Rated Pump Head {Pa}", - " 0.01, !- Rated Power Consumption {W}", - " 0.87, !- Motor Efficiency", - " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", - " 0, !- Coefficient 1 of the Part Load Performance Curve", - " 1, !- Coefficient 2 of the Part Load Performance Curve", - " 0, !- Coefficient 3 of the Part Load Performance Curve", - " 0, !- Coefficient 4 of the Part Load Performance Curve", - " 0, !- Minimum Flow Rate {m3/s}", - " INTERMITTENT; !- Pump Control Type", - - " Branch,", - " TRANSFER HX Branch, !- Name", - " , !- Pressure Drop Curve Name", - " HeatExchanger:FluidToFluid, !- Component 1 Object Type", - " SOURCE to TRANSFER HX, !- Component 1 Name", - " TRANSFER HX Supply Inlet Node, !- Component 1 Inlet Node Name", - " TRANSFER HX Supply Outlet Node; !- Component 1 Outlet Node Name", - - " HeatExchanger:FluidToFluid,", - " SOURCE to TRANSFER HX, !- Name", - " AlwaysOnSchedule, !- Availability Schedule Name", - " SOURCE Demand HX Inlet Node, !- Loop Demand Side Inlet Node Name", - " SOURCE Demand HX Outlet Node, !- Loop Demand Side Outlet Node Name", - " 0.003, !- Loop Demand Side Design Flow Rate {m3/s}", - " TRANSFER HX Supply Inlet Node, !- Loop Supply Side Inlet Node Name", - " TRANSFER HX Supply Outlet Node, !- Loop Supply Side Outlet Node Name", - " 0.003, !- Loop Supply Side Design Flow Rate {m3/s}", - " CrossFlowBothUnMixed, !- Heat Exchange Model Type", - " 15000, !- Heat Exchanger U-Factor Times Area Value {W/k}", - " DualDeadbandSetpointModulated, !- Control Type", - " TRANSFER Supply Outlet Node, !- Heat Exchanger Setpoint Node Name", - " 0.2, !- Minimum Temperature Difference to Activate Heat Exchanger {deltaC}", - " LoopToLoop; !- Heat Transfer Metering End Use Type", - - " Branch,", - " TRANSFER Supply Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " TRANSFER Supply Outlet Pipe, !- Component 1 Name", - " TRANSFER Supply HX-Pipe Node, !- Component 1 Inlet Node Name", - " TRANSFER Supply Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " TRANSFER Supply Outlet Pipe, !- Name", - " TRANSFER Supply HX-Pipe Node, !- Inlet Node Name", - " TRANSFER Supply Outlet Node; !- Outlet Node Name", - - " BranchList,", - " TRANSFER Demand Branches,!- Name", - " TRANSFER Demand Inlet Branch, !- Branch 1 Name", - " TRANSFER Demand HX Branch 1, !- Branch 2 Name", - " TRANSFER Demand HX Branch 2, !- Branch 3 Name", - " TRANSFER Demand Outlet Branch; !- Branch 4 Name", - - " ConnectorList,", - " TRANSFER Demand Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " TRANSFER Demand Splitter,!- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " TRANSFER Demand Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " TRANSFER Demand Splitter,!- Name", - " TRANSFER Demand Inlet Branch, !- Inlet Branch Name", - " TRANSFER Demand HX Branch 1, !- Outlet Branch 1 Name", - " TRANSFER Demand HX Branch 2; !- Outlet Branch 2 Name", - - " Connector:Mixer,", - " TRANSFER Demand Mixer, !- Name", - " TRANSFER Demand Outlet Branch, !- Outlet Branch Name", - " TRANSFER Demand HX Branch 1, !- Inlet Branch 1 Name", - " TRANSFER Demand HX Branch 2; !- Inlet Branch 2 Name", - - " Branch,", - " TRANSFER Demand Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " TRANSFER Demand Inlet Pipe, !- Component 1 Name", - " TRANSFER Demand Inlet Node, !- Component 1 Inlet Node Name", - " TRANSFER Demand Pipe-Load Profile Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " TRANSFER Demand Inlet Pipe, !- Name", - " TRANSFER Demand Inlet Node, !- Inlet Node Name", - " TRANSFER Demand Pipe-Load Profile Node; !- Outlet Node Name", - - " Branch,", - " TRANSFER Demand HX Branch 1, !- Name", - " , !- Pressure Drop Curve Name", - " HeatExchanger:FluidToFluid, !- Component 1 Object Type", - " TRANSFER to USE Heat HX, !- Component 1 Name", - " TRANSFER heat Demand HX Inlet Node, !- Component 1 Inlet Node Name", - " TRANSFER heat Demand HX Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " TRANSFER Demand HX Branch 2, !- Name", - " , !- Pressure Drop Curve ", - " HeatExchanger:FluidToFluid, !- Component 1 Object Type", - " TRANSFER to USE cool HX, !- Component 1 Name", - " TRANSFER Demand HX Cool Inlet Node, !- Component 1 Inlet Node Name", - " TRANSFER Demand HX cool Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " TRANSFER Demand Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " TRANSFER Demand Outlet Pipe, !- Component 1 Name", - " TRANSFER Demand Load Profile-Pipe Node, !- Component 1 Inlet Node Name", - " TRANSFER Demand Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " TRANSFER Demand Outlet Pipe, !- Name", - " TRANSFER Demand Load Profile-Pipe Node, !- Inlet Node Name", - " TRANSFER Demand Outlet Node; !- Outlet Node Name", - - " PlantLoop,", - " SOURCE Loop, !- Name", - " WATER, !- Fluid Type", - " , !- User Defined Fluid Type", - " SOURCE Loop Operation, !- Plant Equipment Operation Scheme Name", - " SOURCE Supply Outlet Node, !- Loop Temperature Setpoint Node Name", - " 100, !- Maximum Loop Temperature {C}", - " 3, !- Minimum Loop Temperature {C}", - " 0.003, !- Maximum Loop Flow Rate {m3/s}", - " 0, !- Minimum Loop Flow Rate {m3/s}", - " 1.0, !- Plant Loop Volume {m3}", - " SOURCE Supply Inlet Node,!- Plant Side Inlet Node Name", - " SOURCE Supply Outlet Node, !- Plant Side Outlet Node Name", - " SOURCE Supply Branches, !- Plant Side Branch List Name", - " SOURCE Supply Connectors,!- Plant Side Connector List Name", - " SOURCE Demand Inlet Node,!- Demand Side Inlet Node Name", - " SOURCE Demand Outlet Node, !- Demand Side Outlet Node Name", - " SOURCE Demand Branches, !- Demand Side Branch List Name", - " SOURCE Demand Connectors,!- Demand Side Connector List Name", - " Optimal, !- Load Distribution Scheme", - " , !- Availability Manager List Name", - " , !- Plant Loop Demand Calculation Scheme", - " , !- Common Pipe Simulation", - " , !- Pressure Simulation Type", - " 2.0; !- Loop Circulation Time {minutes}", - - " SetpointManager:Scheduled,", - " SOURCE Loop Setpoint Manager, !- Name", - " Temperature, !- Control Variable", - " SOURCE Loop Temp Sch, !- Schedule Name", - " SOURCE Loop Setpoint Node List; !- Setpoint Node or NodeList Name", - - " NodeList,", - " SOURCE Loop Setpoint Node List, !- Name", - " SOURCE Supply Outlet Node, !- Node 1 Name", - " SOURCE Supply Heating Outlet Node, !- Node 2 Name", - " SOURCE Supply Cooling Outlet Node; !- Node 3 Name", - - " PlantEquipmentOperationSchemes,", - " SOURCE Loop Operation, !- Name", - " PlantEquipmentOperation:ComponentSetpoint, !- Control Scheme 1 Object Type", - " SOURCE Purchased Only, !- Control Scheme 1 Name", - " AlwaysOnSchedule; !- Control Scheme 1 Schedule Name", - - " PlantEquipmentOperation:ComponentSetpoint,", - " SOURCE Purchased Only, !- Name", - " DistrictCooling, !- Equipment 1 Object Type", - " SOURCE Purchased Cooling,!- Equipment 1 Name", - " SOURCE Supply Cooling Inlet Node, !- Demand Calculation 1 Node Name", - " SOURCE Supply Cooling Outlet Node, !- Setpoint 1 Node Name", - " 0.003, !- Component 1 Flow Rate {m3/s}", - " Cooling, !- Operation 1 Type", - " DistrictHeating, !- Equipment 2 Object Type", - " SOURCE Purchased Heating,!- Equipment 2 Name", - " SOURCE Supply Heating Inlet Node, !- Demand Calculation 2 Node Name", - " SOURCE Supply Heating Outlet Node, !- Setpoint 2 Node Name", - " 0.003, !- Component 2 Flow Rate {m3/s}", - " HEATINg; !- Operation 2 Type", - - " PlantEquipmentList,", - " SOURCE cooling Plant, !- Name", - " DistrictCooling, !- Equipment 1 Object Type", - " SOURCE Purchased Cooling;!- Equipment 1 Name", - - " BranchList,", - " SOURCE Supply Branches, !- Name", - " SOURCE Supply Inlet Branch, !- Branch 1 Name", - " SOURCE Cooling Branch, !- Branch 2 Name", - " SOURCE Heating Branch, !- Branch 3 Name", - " SOURCE Supply Outlet Branch; !- Branch 4 Name", - - " ConnectorList,", - " SOURCE Supply Connectors,!- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " SOURCE Supply Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " SOURCE Supply Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " SOURCE Supply Splitter, !- Name", - " SOURCE Supply Inlet Branch, !- Inlet Branch Name", - " SOURCE Cooling Branch, !- Outlet Branch 1 Name", - " SOURCE Heating Branch; !- Outlet Branch 2 Name", - - " Connector:Mixer,", - " SOURCE Supply Mixer, !- Name", - " SOURCE Supply Outlet Branch, !- Outlet Branch Name", - " SOURCE Cooling Branch, !- Inlet Branch 1 Name", - " SOURCE Heating Branch; !- Inlet Branch 2 Name", - - " Branch,", - " SOURCE Supply Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pump:VariableSpeed, !- Component 1 Object Type", - " SOURCE Pump, !- Component 1 Name", - " SOURCE Supply Inlet Node,!- Component 1 Inlet Node Name", - " SOURCE Supply Pump-district Node; !- Component 1 Outlet Node Name", - - " Pump:VariableSpeed,", - " SOURCE Pump, !- Name", - " SOURCE Supply Inlet Node,!- Inlet Node Name", - " SOURCE Supply Pump-district Node, !- Outlet Node Name", - " 0.005, !- Rated Flow Rate {m3/s}", - " 1, !- Rated Pump Head {Pa}", - " 0.01, !- Rated Power Consumption {W}", - " 0.87, !- Motor Efficiency", - " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", - " 0, !- Coefficient 1 of the Part Load Performance Curve", - " 1, !- Coefficient 2 of the Part Load Performance Curve", - " 0, !- Coefficient 3 of the Part Load Performance Curve", - " 0, !- Coefficient 4 of the Part Load Performance ", - " 0, !- Minimum Flow Rate {m3/s}", - " INTERMITTENT; !- Pump Control Type", - - " Branch,", - " SOURCE Cooling Branch, !- Name", - " , !- Pressure Drop Curve Name", - " DistrictCooling, !- Component 1 Object Type", - " SOURCE Purchased Cooling,!- Component 1 Name", - " SOURCE Supply Cooling Inlet Node, !- Component 1 Inlet Node Name", - " SOURCE Supply Cooling Outlet Node; !- Component 1 Outlet Node Name", - - " DistrictCooling,", - " SOURCE Purchased Cooling,!- Name", - " SOURCE Supply Cooling Inlet Node, !- Chilled Water Inlet Node Name", - " SOURCE Supply Cooling Outlet Node, !- Chilled Water Outlet Node Name", - " 1000000; !- Nominal Capacity {W}", - - " Branch,", - " SOURCE Heating Branch, !- Name", - " , !- Pressure Drop Curve Name", - " DistrictHeating, !- Component 1 Object Type", - " SOURCE Purchased Heating,!- Component 1 Name", - " SOURCE Supply Heating Inlet Node, !- Component 1 Inlet Node Name", - " SOURCE Supply Heating Outlet Node; !- Component 1 Outlet Node Name", - - " DistrictHeating,", - " SOURCE Purchased Heating,!- Name", - " SOURCE Supply Heating Inlet Node, !- Hot Water Inlet Node Name", - " SOURCE Supply Heating Outlet Node, !- Hot Water Outlet Node Name", - " 1000000; !- Nominal Capacity {W}", - - " Branch,", - " SOURCE Supply Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " SOURCE Supply Outlet Pipe, !- Component 1 Name", - " SOURCE Supply Heating-Pipe Node, !- Component 1 Inlet Node Name", - " SOURCE Supply Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " SOURCE Supply Outlet Pipe, !- Name", - " SOURCE Supply Heating-Pipe Node, !- Inlet Node Name", - " SOURCE Supply Outlet Node; !- Outlet Node Name", - - " BranchList,", - " SOURCE Demand Branches, !- Name", - " SOURCE Demand Inlet Branch, !- Branch 1 Name", - " SOURCE Demand HX Branch, !- Branch 2 Name", - " SOURCE Demand Outlet Branch; !- Branch 3 Name", - - " ConnectorList,", - " SOURCE Demand Connectors,!- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " SOURCE Demand Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " SOURCE Demand Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " SOURCE Demand Splitter, !- Nam", - " SOURCE Demand Inlet Branch, !- Inlet Branch Name", - " SOURCE Demand HX Branch; !- Outlet Branch 1 Name", - - " Connector:Mixer,", - " SOURCE Demand Mixer, !- Name", - " SOURCE Demand Outlet Branch, !- Outlet Branch Name", - " SOURCE Demand HX Branch; !- Inlet Branch 1 Name", - - " Branch,", - " SOURCE Demand Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " SOURCE Demand Inlet Pipe,!- Component 1 Name", - " SOURCE Demand Inlet Node,!- Component 1 Inlet Node Name", - " SOURCE Demand Pipe-HX Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " SOURCE Demand Inlet Pipe,!- Name", - " SOURCE Demand Inlet Node,!- Inlet Node Name", - " SOURCE Demand Pipe-HX Node; !- Outlet Node Name", - - " Branch,", - " SOURCE Demand HX Branch, !- Name", - " , !- Pressure Drop Curve Name", - " HeatExchanger:FluidToFluid, !- Component 1 Object Type", - " SOURCE to TRANSFER HX, !- Component 1 Name", - " SOURCE Demand HX Inlet Node, !- Component 1 Inlet Node Name", - " SOURCE Demand HX Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " SOURCE Demand Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " SOURCE Demand Outlet Pipe, !- Component 1 Name", - " SOURCE Demand Load Profile-Pipe Node, !- Component 1 Inlet Node Name", - " SOURCE Demand Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " SOURCE Demand Outlet Pipe, !- Name", - " SOURCE Demand Load Profile-Pipe Node, !- Inlet Node Name", - " SOURCE Demand Outlet Node; !- Outlet Node Name", - - " ScheduleTypeLimits,", - " Any Number; !- Name", - - " ScheduleTypeLimits,", - " On/Off, !- Name", - " 0, !- Lower Limit Value", - " 1, !- Upper Limit Value", - " DISCRETE; !- Numeric Type", - - " Schedule:Compact,", - " Use Cool Loop Temp Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " THROUGH: 12/31, !- Field 1", - " FOR: AllDays, !- Field 2", - " UNTIL: 24:00,25.0; !- Field 3", - - " Schedule:Compact,", - " Use Heat Loop Temp Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " THROUGH: 12/31, !- Field 1", - " FOR: AllDays, !- Field 2", - " UNTIL: 24:00,15.0; !- Field 3", - - " Schedule:Compact,", - " TRANSFER Dual Loop Hi Temp Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " THROUGH: 12/31, !- Field 1", - " FOR: AllDays, !- Field 2", - " UNTIL: 24:00,19.0; !- Field 3", - - " Schedule:Compact,", - " TRANSFER Dual Loop Lo Temp Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " THROUGH: 12/31, !- Field 1", - " FOR: AllDays, !- Field 2", - " UNTIL: 24:00,17.5; !- Field 3", - - " Schedule:Compact,", - " SOURCE Loop Temp Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " THROUGH: 12/31, !- Field 1", - " FOR: AllDays, !- Field 2", - " UNTIL: 24:00,20.0; !- Field 3", - - " Schedule:Compact,", - " AlwaysOnSchedule, !- Name", - " On/Off, !- Schedule Type Limits Name", - " THROUGH: 12/31, !- Field 1", - " FOR: AllDays, !- Field 2", - " UNTIL: 24:00,1; !- Field 3", - - " Schedule:Compact,", - " Heat Load Profile 1 Load Schedule, !- Name", - " Any Number, !- Schedule Type Limits Name", - " THROUGH: 12/31, !- Field 1", - " FOR: AllDays, !- Field 2", - " UNTIL: 12:00,0, !- Field 3", - " UNTIL: 14:00,0, !- Field 5", - " UNTIL: 16:00,0, !- Field 7", - " UNTIL: 17:00,0, !- Field 9", - " UNTIL: 20:00,0, !- Field 11", - " UNTIL: 24:00,0; !- Field 13", - - " Schedule:Compact,", - " Heat Load Profile 1 Flow Frac Schedule, !- Name", - " Any Number, !- Schedule Type Limits Name", - " THROUGH: 12/31, !- Field 1", - " FOR: AllDays, !- Field 2", - " UNTIL: 24:00,0.0; !- Field 3", - - " Schedule:Compact,", - " Cool Load Profile 1 Load Schedule, !- Name", - " Any Number, !- Schedule Type Limits Name", - " THROUGH: 12/31, !- Field 1", - " FOR: AllDays, !- Field 2", - " UNTIL: 2:00,-8000, !- Field 3", - " UNTIL: 4:00,-8000, !- Field 5", - " UNTIL: 5:00,-8000, !- Field 7", - " UNTIL: 8:00,-8000, !- Field 9", - " UNTIL: 12:00,-8000, !- Field 11", - " UNTIL: 24:00,-8000; !- Field 13", - - " Schedule:Compact,", - " cool Load Profile 1 Flow Frac Schedule, !- Name", - " Any Number, !- Schedule Type Limits Name", - " THROUGH: 12/31, !- Field 1", - " FOR: AllDays, !- Field 2", - " UNTIL: 24:00,1.0; !- Field 3", - }) ; - - ASSERT_TRUE( process_idf( idf_objects ) ); - bool ErrorsFound = false; - - DataGlobals::BeginSimFlag = true; - SimulationManager::GetProjectData(); - - OutputReportPredefined::SetPredefinedTables(); - HeatBalanceManager::SetPreConstructionInputParameters(); //establish array bounds for constructions early - OutputProcessor::TimeValue.allocate( 2 ); - OutputProcessor::SetupTimePointers( "Zone", DataGlobals::TimeStepZone ); // Set up Time pointer for HB/Zone Simulation - OutputProcessor::SetupTimePointers( "HVAC", DataHVACGlobals::TimeStepSys ); - PlantManager::CheckIfAnyPlant(); - createFacilityElectricPowerServiceObject(); - BranchInputManager::ManageBranchInput(); // just gets input and returns. - DataGlobals::DoingSizing = false; - DataGlobals::KickOffSimulation = true; - - WeatherManager::ResetEnvironmentCounter(); - SimulationManager::SetupSimulation( ErrorsFound ); - DataGlobals::KickOffSimulation = false; - - int EnvCount = 0; - DataGlobals::WarmupFlag = true; - bool Available ( true ); - - while ( Available ) { - - WeatherManager::GetNextEnvironment( Available, ErrorsFound ); - - if ( ! Available ) break; - if ( ErrorsFound ) break; - - ++EnvCount; - - DataGlobals::BeginEnvrnFlag = true; - DataGlobals::EndEnvrnFlag = false; - DataEnvironment::EndMonthFlag = false; - DataGlobals::WarmupFlag = true; - DataGlobals::DayOfSim = 0; - DataGlobals::DayOfSimChr = "0"; - - while ( ( DataGlobals::DayOfSim < DataGlobals::NumOfDayInEnvrn ) || ( DataGlobals::WarmupFlag ) ) { // Begin day loop ... - - ++DataGlobals::DayOfSim; - - if ( ! DataGlobals::WarmupFlag ) { - ++DataEnvironment::CurrentOverallSimDay; - } - DataGlobals::BeginDayFlag = true; - DataGlobals::EndDayFlag = false; - - for ( DataGlobals::HourOfDay = 1; DataGlobals::HourOfDay <= 24; ++DataGlobals::HourOfDay ) { // Begin hour loop ... - - DataGlobals::BeginHourFlag = true; - DataGlobals::EndHourFlag = false; - - for ( DataGlobals::TimeStep = 1; DataGlobals::TimeStep <= DataGlobals::NumOfTimeStepInHour; ++DataGlobals::TimeStep ) { - - DataGlobals::BeginTimeStepFlag = true; - - // Set the End__Flag variables to true if necessary. Note that - // each flag builds on the previous level. EndDayFlag cannot be - // .TRUE. unless EndHourFlag is also .TRUE., etc. Note that the - // EndEnvrnFlag and the EndSimFlag cannot be set during warmup. - // Note also that BeginTimeStepFlag, EndTimeStepFlag, and the - // SubTimeStepFlags can/will be set/reset in the HVAC Manager. - - if ( DataGlobals::TimeStep == DataGlobals::NumOfTimeStepInHour ) { - DataGlobals::EndHourFlag = true; - if ( DataGlobals::HourOfDay == 24 ) { - DataGlobals::EndDayFlag = true; - if ( ( !DataGlobals:: WarmupFlag ) && ( DataGlobals::DayOfSim == DataGlobals::NumOfDayInEnvrn ) ) { - DataGlobals::EndEnvrnFlag = true; - } - } - } + std::string const idf_objects = delimited_string({ + "Version,8.4;", + + "Building,", + "Plant Load Profile Example, !- Name", + " 0.0, !- North Axis {deg}", + " Suburbs, !- Terrain", + " 0.04, !- Loads Convergence Tolerance Value", + " 0.04, !- Temperature Convergence Tolerance Value {deltaC}", + " FullInteriorAndExterior, !- Solar Distribution", + " 25, !- Maximum Number of Warmup Days", + " 6; !- Minimum Number of Warmup Days", + + " Timestep,6;", + + " GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " CounterClockWise, !- Vertex Entry Direction", + " Relative; !- Coordinate System", + + " Site:Location,", + " CHICAGO_IL_USA_WMO_725300, !- Name", + " 42.00, !- Latitude {deg}", + " -87.88, !- Longitude {deg}", + " -6.00, !- Time Zone {hr}", + " 190.00; !- Elevation {m}", + + " SizingPeriod:DesignDay,", + " CHICAGO Ann Htg 99% Condns DB, !- Name", + " 1, !- Month", + " 21, !- Day of Month", + " WinterDesignDay, !- Day Type", + " -17.3, !- Maximum Dry-Bulb Temperature {C}", + " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 4.9, !- Wind Speed {m/s}", + " 270, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 0.00; !- Sky Clearness", + + " RunPeriod,", + " Jan, !- Name", + " 1, !- Begin Month", + " 1, !- Begin Day of Month", + " , !- Begin Year", + " 1, !- End Month", + " 2, !- End Day of Month", + " , !- End Year", + " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " Yes; !- Use Weather File Snow Indicators", + + " SimulationControl,", + " NO, !- Do Zone Sizing Calculation", + " NO, !- Do System Sizing Calculation", + " NO, !- Do Plant Sizing Calculation", + " Yes, !- Run Simulation for Sizing Periods", + " No; !- Run Simulation for Weather File Run Periods", + + " PlantLoop,", + " Use Heat Loop, !- Name", + " WATER, !- Fluid Type", + " , !- User Defined Fluid Type", + " Use Heat Loop Operation, !- Plant Equipment Operation Scheme Name", + " Use Heat Supply Outlet Node, !- Loop Temperature Setpoint Node Name", + " 100, !- Maximum Loop Temperature {C}", + " 3, !- Minimum Loop Temperature {C}", + " 0.003, !- Maximum Loop Flow Rate {m3/s}", + " 0, !- Minimum Loop Flow Rate {m3/s}", + " 1.0, !- Plant Loop Volume {m3}", + " Use Heat Supply Inlet Node, !- Plant Side Inlet Node Name", + " Use Heat Supply Outlet Node, !- Plant Side Outlet Node Name", + " Use Heat Supply Branches,!- Plant Side Branch List Name", + " Use Heat Supply Connectors, !- Plant Side Connector List Name", + " Use Heat Demand Inlet Node, !- Demand Side Inlet Node Name", + " Use Heat Demand Outlet Node, !- Demand Side Outlet Node Name", + " Use Heat Demand Branches,!- Demand Side Branch List Name", + " Use Heat Demand Connectors, !- Demand Side Connector List Name", + " Optimal, !- Load Distribution Scheme", + " , !- Availability Manager List Name", + " , !- Plant Loop Demand Calculation Scheme", + " , !- Common Pipe Simulation", + " , !- Pressure Simulation Type", + " 2.0; !- Loop Circulation Time {minutes}", + + " SetpointManager:Scheduled,", + " Use Heat Loop Setpoint Manager, !- Name", + " Temperature, !- Control Variable", + " Use Heat Loop Temp Sch, !- Schedule Name", + " Use Heat Loop Setpoint Node List; !- Setpoint Node or NodeList Name", + + " NodeList,", + " Use Heat Loop Setpoint Node List, !- Name", + " Use Heat Supply Outlet Node; !- Node 1 Name", + + " PlantEquipmentOperationSchemes,", + " Use Heat Loop Operation, !- Name", + " PlantEquipmentOperation:Uncontrolled, !- Control Scheme 1 Object Type", + " USE Heat operation, !- Control Scheme 1 Name", + " AlwaysOnSchedule; !- Control Scheme 1 Schedule Name", + + " PlantEquipmentOperation:Uncontrolled,", + " USE Heat operation, !- Name", + " TRANSFER to USE Heat HX equip; !- Equipment List Name", + + " PlantEquipmentList,", + " TRANSFER to USE Heat HX equip, !- Name", + " HeatExchanger:FluidToFluid, !- Equipment 1 Object Type", + " TRANSFER to USE Heat HX; !- Equipment 1 Name", + + " BranchList,", + " USE Heat Supply Branches,!- Name", + " USE Heat Supply Inlet Branch, !- Branch 1 Name", + " USE Heat Heating Branch, !- Branch 2 Name", + " USE Heat Supply Outlet Branch; !- Branch 3 Name", + + " ConnectorList,", + " USE Heat Supply Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " USE Heat Supply Splitter,!- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " USE Heat Supply Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " USE Heat Supply Splitter,!- Name", + " USE Heat Supply Inlet Branch, !- Inlet Branch Name", + " USE Heat Heating Branch; !- Outlet Branch 1 Name", + + " Connector:Mixer,", + " USE Heat Supply Mixer, !- Name", + " USE Heat Supply Outlet Branch, !- Outlet Branch Name", + " USE Heat Heating Branch; !- Inlet Branch 1 Name", + + " Branch,", + " USE Heat Supply Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pump:VariableSpeed, !- Component 1 Object Type", + " USE Heat Pump, !- Component 1 Name", + " USE Heat Supply Inlet Node, !- Component 1 Inlet Node Name", + " USE Heat Supply Pump-Heating Node; !- Component 1 Outlet Node Name", + + " Pump:VariableSpeed,", + " USE Heat Pump, !- Name", + " USE Heat Supply Inlet Node, !- Inlet Node Name", + " USE Heat Supply Pump-Heating Node, !- Outlet Node Name", + " 0.005, !- Rated Flow Rate {m3/s}", + " 1, !- Rated Pump Head {Pa}", + " 0.01, !- Rated Power Consumption {W}", + " 0.87, !- Motor Efficiency", + " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", + " 0, !- Coefficient 1 of the Part Load Performance Curve", + " 1, !- Coefficient 2 of the Part Load Performance Curve", + " 0, !- Coefficient 3 of the Part Load Performance Curve", + " 0, !- Coefficient 4 of the Part Load Performance Curve", + " 0, !- Minimum Flow Rate {m3/s}", + " INTERMITTENT; !- Pump Control Type", + + " Branch,", + " USE Heat Heating Branch, !- Name", + " , !- Pressure Drop Curve Name", + " HeatExchanger:FluidToFluid, !- Component 1 Object Type", + " TRANSFER to USE Heat HX, !- Component 1 Name", + " USE Heat Supply Heating Inlet Node, !- Component 1 Inlet Node Name", + " USE Heat Supply Heating Outlet Node; !- Component 1 Outlet Node Name", + + " HeatExchanger:FluidToFluid,", + " TRANSFER to USE Heat HX, !- Name", + " AlwaysOnSchedule, !- Availability Schedule Name", + " TRANSFER Heat Demand HX Inlet Node, !- Loop Demand Side Inlet Node Name", + " TRANSFER Heat Demand HX Outlet Node, !- Loop Demand Side Outlet Node Name", + " 0.003, !- Loop Demand Side Design Flow Rate {m3/s}", + " USE Heat Supply Heating Inlet Node, !- Loop Supply Side Inlet Node Name", + " USE Heat Supply Heating Outlet Node, !- Loop Supply Side Outlet Node Name", + " 0.003, !- Loop Supply Side Design Flow Rate {m3/s}", + " CrossFlowBothUnMixed, !- Heat Exchange Model Type", + " 15000, !- Heat Exchanger U-Factor Times Area Value {W/k}", + " HeatingSetpointModulated,!- Control Type", + " Use heat Supply Outlet Node, !- Heat Exchanger Setpoint Node Name", + " 0.2, !- Minimum Temperature Difference to Activate Heat Exchanger {deltaC}", + " LoopToLoop; !- Heat Transfer Metering End Use Type", + + " Branch,", + " USE Heat Supply Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " USE Heat Supply Outlet Pipe, !- Component 1 Name", + " USE Heat Supply Heating-Pipe Node, !- Component 1 Inlet Node Name", + " USE Heat Supply Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " USE Heat Supply Outlet Pipe, !- Name", + " USE Heat Supply Heating-Pipe Node, !- Inlet Node Name", + " USE Heat Supply Outlet Node; !- Outlet Node Name", + + " BranchList,", + " USE Heat Demand Branches,!- Name", + " USE Heat Demand Inlet Branch, !- Branch 1 Name", + " USE Heat Load Profile Branch 1, !- Branch 2 Name", + " USE Heat Demand Outlet Branch; !- Branch 3 Name", + + " ConnectorList,", + " USE Heat Demand Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " USE Heat Demand Splitter,!- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " USE Heat Demand Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " USE Heat Demand Splitter,!- ", + " USE Heat Demand Inlet Branch, !- Inlet Branch Name", + " USE Heat Load Profile Branch 1; !- Outlet Branch 1 Name", + + " Connector:Mixer,", + " USE Heat Demand Mixer, !- Name", + " USE Heat Demand Outlet Branch, !- Outlet Branch Name", + " USE Heat Load Profile Branch 1; !- Inlet Branch 1 Name", + + " Branch,", + " USE Heat Demand Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " USE Heat Demand Inlet Pipe, !- Component 1 Name", + " USE Heat Demand Inlet Node, !- Component 1 Inlet Node Name", + " USE Heat Demand Pipe-Load Profile Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " USE Heat Demand Inlet Pipe, !- Name", + " USE Heat Demand Inlet Node, !- Inlet Node Name", + " USE Heat Demand Pipe-Load Profile Node; !- Outlet Node Name", + + " Branch,", + " USE Heat Load Profile Branch 1, !- Name", + " , !- Pressure Drop Curve Name", + " LoadProfile:Plant, !- Component 1 Object Type", + " Heat Load Profile 1, !- Component 1 Name", + " Heat Demand Load Profile 1 Inlet Node, !- Component 1 Inlet Node Name", + " Heat Demand Load Profile 1 Outlet Node; !- Component 1 Outlet Node Name", + + " LoadProfile:Plant,", + " Heat Load Profile 1, !- Name", + " Heat Demand Load Profile 1 Inlet Node, !- Inlet Node Name", + " Heat Demand Load Profile 1 Outlet Node, !- Outlet Node Name", + " Heat Load Profile 1 Load Schedule, !- Load Schedule Name", + " 0.002, !- Peak Flow Rate {m3/s}", + " Heat Load Profile 1 Flow Frac Schedule; !- Flow Rate Fraction Schedule Name", + + " Branch,", + " USE Heat Demand Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " USE Heat Demand Outlet Pipe, !- Component 1 Name", + " USE Heat Demand Load Profile-Pipe Node, !- Component 1 Inlet Node Name", + " USE Heat Demand Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " USE Heat Demand Outlet Pipe, !- Name", + " USE Heat Demand Load Profile-Pipe Node, !- Inlet Node Name", + " USE Heat Demand Outlet Node; !- Outlet Node Name", + + " PlantLoop,", + " Use Cool Loop, !- Name", + " WATER, !- Fluid Type", + " , !- User Defined Fluid Type", + " Use Cool Loop Operation, !- Plant Equipment Operation Scheme Name", + " Use Cool Supply Outlet Node, !- Loop Temperature Setpoint Node Name", + " 100, !- Maximum Loop Temperature {C}", + " 3, !- Minimum Loop Temperature {C}", + " 0.003, !- Maximum Loop Flow Rate {m3/s}", + " 0, !- Minimum Loop Flow Rate {m3/s}", + " 1.0, !- Plant Loop Volume {m3}", + " Use Cool Supply Inlet Node, !- Plant Side Inlet Node Name", + " Use Cool Supply Outlet Node, !- Plant Side Outlet Node Name", + " Use Cool Supply Branches,!- Plant Side Branch List Name", + " Use Cool Supply Connectors, !- Plant Side Connector List Name", + " Use Cool Demand Inlet Node, !- Demand Side Inlet Node Name", + " Use Cool Demand Outlet Node, !- Demand Side Outlet Node Name", + " Use Cool Demand Branches,!- Demand Side Branch List Name", + " Use Cool Demand Connectors, !- Demand Side Connector List Name", + " Optimal, !- Load Distribution Scheme", + " , !- Availability Manager List Name", + " , !- Plant Loop Demand Calculation Scheme", + " , !- Common Pipe Simulation", + " , !- Pressure Simulation Type", + " 2.0; !- Loop Circulation Time {minutes}", + + " SetpointManager:Scheduled,", + " Use Cool Loop Setpoint Manager, !- Name", + " Temperature, !- Control Variable", + " Use Cool Loop Temp Sch, !- Schedule Name", + " Use Cool Loop Setpoint Node List; !- Setpoint Node or NodeList Name", + + " NodeList,", + " Use Cool Loop Setpoint Node List, !- Name", + " Use Cool Supply Outlet Node; !- Node 1 Name", + + " PlantEquipmentOperationSchemes,", + " Use Cool Loop Operation, !- Name", + " PlantEquipmentOperation:Uncontrolled, !- Control Scheme 1 Object Type", + " USE Cool operation, !- Control Scheme 1 Name", + " AlwaysOnSchedule; !- Control Scheme 1 Schedule Name", + + " PlantEquipmentOperation:Uncontrolled,", + " USE Cool operation, !- Name", + " TRANSFER to USE Cool HX equip; !- Equipment List Name", + + " PlantEquipmentList,", + " TRANSFER to USE Cool HX equip, !- Name", + " HeatExchanger:FluidToFluid, !- Equipment 1 Object Type", + " TRANSFER to USE Cool HX; !- Equipment 1 Name", + + " BranchList,", + " USE Cool Supply Branches,!- Name", + " USE Cool Supply Inlet Branch, !- Branch 1 Name", + " USE Cooling Branch, !- Branch 2 Name", + " USE Cool Supply Outlet Branch; !- Branch 3 Name", + + " ConnectorList,", + " USE Cool Supply Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " USE Cool Supply Splitter,!- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " USE Cool Supply Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " USE Cool Supply Splitter,!- Name", + " USE Cool Supply Inlet Branch, !- Inlet Branch Name", + " USE Cooling Branch; !- Outlet Branch 1 Name", + + " Connector:Mixer,", + " USE Cool Supply Mixer, !- Name", + " USE Cool Supply Outlet Branch, !- Outlet Branch Name", + " USE Cooling Branch; !- Inlet Branch 1 Name", + + " Branch,", + " USE Cool Supply Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pump:VariableSpeed, !- Component 1 Object Type", + " USE Cool Pump, !- Component 1 Name", + " USE Cool Supply Inlet Node, !- Component 1 Inlet Node Name", + " USE Cool Supply Pump-Heating Node; !- Component 1 Outlet Node Name", + + " Pump:VariableSpeed,", + " USE Cool Pump, !- Name", + " USE Cool Supply Inlet Node, !- Inlet Node Name", + " USE Cool Supply Pump-Heating Node, !- Outlet Node Name", + " 0.005, !- Rated Flow Rate {m3/s}", + " 1, !- Rated Pump Head {Pa}", + " 0.01, !- Rated Power Consumption {W}", + " 0.87, !- Motor Efficiency", + " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", + " 0, !- Coefficient 1 of the Part Load Performance Curve", + " 1, !- Coefficient 2 of the Part Load Performance Curve", + " 0, !- Coefficient 3 of the Part Load Performance Curve", + " 0, !- Coefficient 4 of the Part Load Performance Curve", + " 0, !- Minimum Flow Rate {m3/s}", + " INTERMITTENT; !- Pump Control Type", + + " Branch,", + " USE Cooling Branch, !- Name", + " , !- Pressure Drop Curve Name", + " HeatExchanger:FluidToFluid, !- Component 1 Object Type", + " TRANSFER to USE Cool HX, !- Component 1 Name", + " USE Cool Supply Cooling Inlet Node, !- Component 1 Inlet Node Name", + " USE Cool Supply Cooling Outlet Node; !- Component 1 Outlet Node Name", + + " HeatExchanger:FluidToFluid,", + " TRANSFER to USE Cool HX, !- Name", + " AlwaysOnSchedule, !- Availability Schedule Name", + " TRANSFER Demand HX Cool Inlet Node, !- Loop Demand Side Inlet Node Name", + " TRANSFER Demand HX Cool Outlet Node, !- Loop Demand Side Outlet Node Name", + " 0.003, !- Loop Demand Side Design Flow Rate {m3/s}", + " USE Cool Supply Cooling Inlet Node, !- Loop Supply Side Inlet Node Name", + " USE Cool Supply Cooling Outlet Node, !- Loop Supply Side Outlet Node Name", + " 0.003, !- Loop Supply Side Design Flow Rate {m3/s}", + " CrossFlowBothUnMixed, !- Heat Exchange Model Type", + " 15000, !- Heat Exchanger U-Factor Times Area Value {W/k}", + " CoolingSetpointModulated,!- Control Type", + " Use Cool Supply Outlet Node, !- Heat Exchanger Setpoint Node Name", + " 0.2, !- Minimum Temperature Difference to Activate Heat Exchanger {deltaC}", + " LoopToLoop; !- Heat Transfer Metering End Use Type", + + " Branch,", + " USE Cool Supply Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " USE Cool Supply Outlet Pipe, !- Component 1 Name", + " USE Cool Supply Heating-Pipe Node, !- Component 1 Inlet Node Name", + " USE Cool Supply Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " USE Cool Supply Outlet Pipe, !- Name", + " USE Cool Supply Heating-Pipe Node, !- Inlet Node Name", + " USE Cool Supply Outlet Node; !- Outlet Node Name", + + " BranchList,", + " USE Cool Demand Branches,!- Name", + " USE Cool Demand Inlet Branch, !- Branch 1 Name", + " USE Cool Load Profile Branch 1, !- Branch 2 Name", + " USE Cool Demand Outlet Branch; !- Branch 3 Name", + + " ConnectorList,", + " USE Cool Demand Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " USE Cool Demand Splitter,!- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " USE Cool Demand Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " USE Cool Demand Splitter,!- Name", + " USE Cool Demand Inlet Branch, !- Inlet Branch Name", + " USE Cool Load Profile Branch 1; !- Outlet Branch 1 Name", + + " Connector:Mixer,", + " USE Cool Demand Mixer, !- Name", + " USE Cool Demand Outlet Branch, !- Outlet Branch Name", + " USE Cool Load Profile Branch 1; !- Inlet Branch 1 Name", + + " Branch,", + " USE Cool Demand Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " USE Cool Demand Inlet Pipe, !- Component 1 Name", + " USE Cool Demand Inlet Node, !- Component 1 Inlet Node Name", + " USE Cool Demand Pipe-Load Profile Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " USE Cool Demand Inlet Pipe, !- Name", + " USE Cool Demand Inlet Node, !- Inlet Node Name", + " USE Cool Demand Pipe-Load Profile Node; !- Outlet Node Name", + + " Branch,", + " USE Cool Load Profile Branch 1, !- Name", + " , !- Pressure Drop Curve Name", + " LoadProfile:Plant, !- Component 1 Object Type", + " Cool Load Profile 1, !- Component 1 Name", + " Demand Cool Load Profile 1 Inlet Node, !- Component 1 Inlet Node Name", + " Demand Cool Load Profile 1 Outlet Node; !- Component 1 Outlet Node Name", + + " LoadProfile:Plant,", + " Cool Load Profile 1, !- Name", + " Demand Cool Load Profile 1 Inlet Node, !- Inlet Node Name", + " Demand Cool Load Profile 1 Outlet Node, !- Outlet Node Name", + " Cool Load Profile 1 Load Schedule, !- Load Schedule Name", + " 0.002, !- Peak Flow Rate {m3/s}", + " Cool Load Profile 1 Flow Frac Schedule; !- Flow Rate Fraction Schedule Name", + + " Branch,", + " USE Cool Demand Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " USE Cool Demand Outlet Pipe, !- Component 1 Name", + " USE Cool Demand Load Profile-Pipe Node, !- Component 1 Inlet Node Name", + " USE Cool Demand Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " USE Cool Demand Outlet Pipe, !- Name", + " USE Cool Demand Load Profile-Pipe Node, !- Inlet Node Name", + " USE Cool Demand Outlet Node; !- Outlet Node Name", + + " PlantLoop,", + " TRANSFER Loop, !- Name", + " WATER, !- Fluid Type", + " , !- User Defined Fluid Type", + " TRANSFER Loop Operation, !- Plant Equipment Operation Scheme Name", + " TRANSFER Supply Outlet Node, !- Loop Temperature Setpoint Node Name", + " 100, !- Maximum Loop Temperature {C}", + " 3, !- Minimum Loop Temperature {C}", + " 0.003, !- Maximum Loop Flow Rate {m3/s}", + " 0, !- Minimum Loop Flow Rate {m3/s}", + " 1.0, !- Plant Loop Volume {m3}", + " TRANSFER Supply Inlet Node, !- Plant Side Inlet Node Name", + " TRANSFER Supply Outlet Node, !- Plant Side Outlet Node Name", + " TRANSFER Supply Branches,!- Plant Side Branch List Name", + " TRANSFER Supply Connectors, !- Plant Side Connector List Name", + " TRANSFER Demand Inlet Node, !- Demand Side Inlet Node Name", + " TRANSFER Demand Outlet Node, !- Demand Side Outlet Node Name", + " TRANSFER Demand Branches,!- Demand Side Branch List Name", + " TRANSFER Demand Connectors, !- Demand Side Connector List Name", + " OPTIMAL, !- Load Distribution Scheme", + " , !- Availability Manager List Name", + " DualSetpointDeadband, !- Plant Loop Demand Calculation Scheme", + " , !- Common Pipe Simulation", + " , !- Pressure Simulation Type", + " 2.0; !- Loop Circulation Time {minutes}", + + " SetpointManager:Scheduled:dualSetpoint,", + " TRANSFER Loop Dual Setpoint Manager, !- Name", + " Temperature, !- Control Variable", + " TRANSFER Dual Loop Hi Temp Sch, !- High Setpoint Schedule Name", + " TRANSFER Dual Loop Lo Temp Sch, !- Low Setpoint Schedule Name", + " TRANSFER Loop Setpoint Node List; !- Setpoint Node or NodeList Name", + + " NodeList,", + " TRANSFER Loop Setpoint Node List, !- Name", + " TRANSFER Supply Outlet Node; !- Node 1 Name", + + " PlantEquipmentOperationSchemes,", + " TRANSFER Loop Operation, !- Name", + " PlantEquipmentOperation:Uncontrolled, !- Control Scheme 1 Object Type", + " TRANSFER HX, !- Control Scheme 1 Name", + " AlwaysOnSchedule; !- Control Scheme 1 Schedule Name", + + " PlantEquipmentOperation:Uncontrolled,", + " TRANSFER HX, !- Name", + " TRANSFER Plant; !- Equipment List Name", + + " PlantEquipmentList,", + " TRANSFER Plant, !- Name", + " HeatExchanger:FluidToFluid, !- Equipment 1 Object Type", + " SOURCE to TRANSFER HX; !- Equipment 1 Name", + + " BranchList,", + " TRANSFER Supply Branches,!- Name", + " TRANSFER Supply Inlet Branch, !- Branch 1 Name", + " TRANSFER HX Branch, !- Branch 2 Name", + " TRANSFER Supply Outlet Branch; !- Branch 3 Name", + + " ConnectorList,", + " TRANSFER Supply Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " TRANSFER Supply Splitter,!- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " TRANSFER Supply Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " TRANSFER Supply Splitter,!- Name", + " TRANSFER Supply Inlet Branch, !- Inlet Branch Name", + " TRANSFER HX Branch; !- Outlet Branch 1 Name", + + " Connector:Mixer,", + " TRANSFER Supply Mixer, !- Name", + " TRANSFER Supply Outlet Branch, !- Outlet Branch Name", + " TRANSFER HX Branch; !- Inlet Branch 1 Name", + + " Branch,", + " TRANSFER Supply Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pump:VariableSpeed, !- Component 1 Object Type", + " TRANSFER Pump, !- Component 1 Name", + " TRANSFER Supply Inlet Node, !- Component 1 Inlet Node Name", + " TRANSFER Supply Pump-Heating Node; !- Component 1 Outlet Node Name", + + " Pump:VariableSpeed,", + " TRANSFER Pump, !- Name", + " TRANSFER Supply Inlet Node, !- Inlet Node Name", + " TRANSFER Supply Pump-Heating Node, !- Outlet Node Name", + " 0.005, !- Rated Flow Rate {m3/s}", + " 1, !- Rated Pump Head {Pa}", + " 0.01, !- Rated Power Consumption {W}", + " 0.87, !- Motor Efficiency", + " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", + " 0, !- Coefficient 1 of the Part Load Performance Curve", + " 1, !- Coefficient 2 of the Part Load Performance Curve", + " 0, !- Coefficient 3 of the Part Load Performance Curve", + " 0, !- Coefficient 4 of the Part Load Performance Curve", + " 0, !- Minimum Flow Rate {m3/s}", + " INTERMITTENT; !- Pump Control Type", + + " Branch,", + " TRANSFER HX Branch, !- Name", + " , !- Pressure Drop Curve Name", + " HeatExchanger:FluidToFluid, !- Component 1 Object Type", + " SOURCE to TRANSFER HX, !- Component 1 Name", + " TRANSFER HX Supply Inlet Node, !- Component 1 Inlet Node Name", + " TRANSFER HX Supply Outlet Node; !- Component 1 Outlet Node Name", + + " HeatExchanger:FluidToFluid,", + " SOURCE to TRANSFER HX, !- Name", + " AlwaysOnSchedule, !- Availability Schedule Name", + " SOURCE Demand HX Inlet Node, !- Loop Demand Side Inlet Node Name", + " SOURCE Demand HX Outlet Node, !- Loop Demand Side Outlet Node Name", + " 0.003, !- Loop Demand Side Design Flow Rate {m3/s}", + " TRANSFER HX Supply Inlet Node, !- Loop Supply Side Inlet Node Name", + " TRANSFER HX Supply Outlet Node, !- Loop Supply Side Outlet Node Name", + " 0.003, !- Loop Supply Side Design Flow Rate {m3/s}", + " CrossFlowBothUnMixed, !- Heat Exchange Model Type", + " 15000, !- Heat Exchanger U-Factor Times Area Value {W/k}", + " DualDeadbandSetpointModulated, !- Control Type", + " TRANSFER Supply Outlet Node, !- Heat Exchanger Setpoint Node Name", + " 0.2, !- Minimum Temperature Difference to Activate Heat Exchanger {deltaC}", + " LoopToLoop; !- Heat Transfer Metering End Use Type", + + " Branch,", + " TRANSFER Supply Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " TRANSFER Supply Outlet Pipe, !- Component 1 Name", + " TRANSFER Supply HX-Pipe Node, !- Component 1 Inlet Node Name", + " TRANSFER Supply Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " TRANSFER Supply Outlet Pipe, !- Name", + " TRANSFER Supply HX-Pipe Node, !- Inlet Node Name", + " TRANSFER Supply Outlet Node; !- Outlet Node Name", + + " BranchList,", + " TRANSFER Demand Branches,!- Name", + " TRANSFER Demand Inlet Branch, !- Branch 1 Name", + " TRANSFER Demand HX Branch 1, !- Branch 2 Name", + " TRANSFER Demand HX Branch 2, !- Branch 3 Name", + " TRANSFER Demand Outlet Branch; !- Branch 4 Name", + + " ConnectorList,", + " TRANSFER Demand Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " TRANSFER Demand Splitter,!- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " TRANSFER Demand Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " TRANSFER Demand Splitter,!- Name", + " TRANSFER Demand Inlet Branch, !- Inlet Branch Name", + " TRANSFER Demand HX Branch 1, !- Outlet Branch 1 Name", + " TRANSFER Demand HX Branch 2; !- Outlet Branch 2 Name", + + " Connector:Mixer,", + " TRANSFER Demand Mixer, !- Name", + " TRANSFER Demand Outlet Branch, !- Outlet Branch Name", + " TRANSFER Demand HX Branch 1, !- Inlet Branch 1 Name", + " TRANSFER Demand HX Branch 2; !- Inlet Branch 2 Name", + + " Branch,", + " TRANSFER Demand Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " TRANSFER Demand Inlet Pipe, !- Component 1 Name", + " TRANSFER Demand Inlet Node, !- Component 1 Inlet Node Name", + " TRANSFER Demand Pipe-Load Profile Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " TRANSFER Demand Inlet Pipe, !- Name", + " TRANSFER Demand Inlet Node, !- Inlet Node Name", + " TRANSFER Demand Pipe-Load Profile Node; !- Outlet Node Name", + + " Branch,", + " TRANSFER Demand HX Branch 1, !- Name", + " , !- Pressure Drop Curve Name", + " HeatExchanger:FluidToFluid, !- Component 1 Object Type", + " TRANSFER to USE Heat HX, !- Component 1 Name", + " TRANSFER heat Demand HX Inlet Node, !- Component 1 Inlet Node Name", + " TRANSFER heat Demand HX Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " TRANSFER Demand HX Branch 2, !- Name", + " , !- Pressure Drop Curve ", + " HeatExchanger:FluidToFluid, !- Component 1 Object Type", + " TRANSFER to USE cool HX, !- Component 1 Name", + " TRANSFER Demand HX Cool Inlet Node, !- Component 1 Inlet Node Name", + " TRANSFER Demand HX cool Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " TRANSFER Demand Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " TRANSFER Demand Outlet Pipe, !- Component 1 Name", + " TRANSFER Demand Load Profile-Pipe Node, !- Component 1 Inlet Node Name", + " TRANSFER Demand Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " TRANSFER Demand Outlet Pipe, !- Name", + " TRANSFER Demand Load Profile-Pipe Node, !- Inlet Node Name", + " TRANSFER Demand Outlet Node; !- Outlet Node Name", + + " PlantLoop,", + " SOURCE Loop, !- Name", + " WATER, !- Fluid Type", + " , !- User Defined Fluid Type", + " SOURCE Loop Operation, !- Plant Equipment Operation Scheme Name", + " SOURCE Supply Outlet Node, !- Loop Temperature Setpoint Node Name", + " 100, !- Maximum Loop Temperature {C}", + " 3, !- Minimum Loop Temperature {C}", + " 0.003, !- Maximum Loop Flow Rate {m3/s}", + " 0, !- Minimum Loop Flow Rate {m3/s}", + " 1.0, !- Plant Loop Volume {m3}", + " SOURCE Supply Inlet Node,!- Plant Side Inlet Node Name", + " SOURCE Supply Outlet Node, !- Plant Side Outlet Node Name", + " SOURCE Supply Branches, !- Plant Side Branch List Name", + " SOURCE Supply Connectors,!- Plant Side Connector List Name", + " SOURCE Demand Inlet Node,!- Demand Side Inlet Node Name", + " SOURCE Demand Outlet Node, !- Demand Side Outlet Node Name", + " SOURCE Demand Branches, !- Demand Side Branch List Name", + " SOURCE Demand Connectors,!- Demand Side Connector List Name", + " Optimal, !- Load Distribution Scheme", + " , !- Availability Manager List Name", + " , !- Plant Loop Demand Calculation Scheme", + " , !- Common Pipe Simulation", + " , !- Pressure Simulation Type", + " 2.0; !- Loop Circulation Time {minutes}", + + " SetpointManager:Scheduled,", + " SOURCE Loop Setpoint Manager, !- Name", + " Temperature, !- Control Variable", + " SOURCE Loop Temp Sch, !- Schedule Name", + " SOURCE Loop Setpoint Node List; !- Setpoint Node or NodeList Name", + + " NodeList,", + " SOURCE Loop Setpoint Node List, !- Name", + " SOURCE Supply Outlet Node, !- Node 1 Name", + " SOURCE Supply Heating Outlet Node, !- Node 2 Name", + " SOURCE Supply Cooling Outlet Node; !- Node 3 Name", + + " PlantEquipmentOperationSchemes,", + " SOURCE Loop Operation, !- Name", + " PlantEquipmentOperation:ComponentSetpoint, !- Control Scheme 1 Object Type", + " SOURCE Purchased Only, !- Control Scheme 1 Name", + " AlwaysOnSchedule; !- Control Scheme 1 Schedule Name", + + " PlantEquipmentOperation:ComponentSetpoint,", + " SOURCE Purchased Only, !- Name", + " DistrictCooling, !- Equipment 1 Object Type", + " SOURCE Purchased Cooling,!- Equipment 1 Name", + " SOURCE Supply Cooling Inlet Node, !- Demand Calculation 1 Node Name", + " SOURCE Supply Cooling Outlet Node, !- Setpoint 1 Node Name", + " 0.003, !- Component 1 Flow Rate {m3/s}", + " Cooling, !- Operation 1 Type", + " DistrictHeating, !- Equipment 2 Object Type", + " SOURCE Purchased Heating,!- Equipment 2 Name", + " SOURCE Supply Heating Inlet Node, !- Demand Calculation 2 Node Name", + " SOURCE Supply Heating Outlet Node, !- Setpoint 2 Node Name", + " 0.003, !- Component 2 Flow Rate {m3/s}", + " HEATINg; !- Operation 2 Type", + + " PlantEquipmentList,", + " SOURCE cooling Plant, !- Name", + " DistrictCooling, !- Equipment 1 Object Type", + " SOURCE Purchased Cooling;!- Equipment 1 Name", + + " BranchList,", + " SOURCE Supply Branches, !- Name", + " SOURCE Supply Inlet Branch, !- Branch 1 Name", + " SOURCE Cooling Branch, !- Branch 2 Name", + " SOURCE Heating Branch, !- Branch 3 Name", + " SOURCE Supply Outlet Branch; !- Branch 4 Name", + + " ConnectorList,", + " SOURCE Supply Connectors,!- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " SOURCE Supply Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " SOURCE Supply Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " SOURCE Supply Splitter, !- Name", + " SOURCE Supply Inlet Branch, !- Inlet Branch Name", + " SOURCE Cooling Branch, !- Outlet Branch 1 Name", + " SOURCE Heating Branch; !- Outlet Branch 2 Name", + + " Connector:Mixer,", + " SOURCE Supply Mixer, !- Name", + " SOURCE Supply Outlet Branch, !- Outlet Branch Name", + " SOURCE Cooling Branch, !- Inlet Branch 1 Name", + " SOURCE Heating Branch; !- Inlet Branch 2 Name", + + " Branch,", + " SOURCE Supply Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pump:VariableSpeed, !- Component 1 Object Type", + " SOURCE Pump, !- Component 1 Name", + " SOURCE Supply Inlet Node,!- Component 1 Inlet Node Name", + " SOURCE Supply Pump-district Node; !- Component 1 Outlet Node Name", + + " Pump:VariableSpeed,", + " SOURCE Pump, !- Name", + " SOURCE Supply Inlet Node,!- Inlet Node Name", + " SOURCE Supply Pump-district Node, !- Outlet Node Name", + " 0.005, !- Rated Flow Rate {m3/s}", + " 1, !- Rated Pump Head {Pa}", + " 0.01, !- Rated Power Consumption {W}", + " 0.87, !- Motor Efficiency", + " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", + " 0, !- Coefficient 1 of the Part Load Performance Curve", + " 1, !- Coefficient 2 of the Part Load Performance Curve", + " 0, !- Coefficient 3 of the Part Load Performance Curve", + " 0, !- Coefficient 4 of the Part Load Performance ", + " 0, !- Minimum Flow Rate {m3/s}", + " INTERMITTENT; !- Pump Control Type", + + " Branch,", + " SOURCE Cooling Branch, !- Name", + " , !- Pressure Drop Curve Name", + " DistrictCooling, !- Component 1 Object Type", + " SOURCE Purchased Cooling,!- Component 1 Name", + " SOURCE Supply Cooling Inlet Node, !- Component 1 Inlet Node Name", + " SOURCE Supply Cooling Outlet Node; !- Component 1 Outlet Node Name", + + " DistrictCooling,", + " SOURCE Purchased Cooling,!- Name", + " SOURCE Supply Cooling Inlet Node, !- Chilled Water Inlet Node Name", + " SOURCE Supply Cooling Outlet Node, !- Chilled Water Outlet Node Name", + " 1000000; !- Nominal Capacity {W}", + + " Branch,", + " SOURCE Heating Branch, !- Name", + " , !- Pressure Drop Curve Name", + " DistrictHeating, !- Component 1 Object Type", + " SOURCE Purchased Heating,!- Component 1 Name", + " SOURCE Supply Heating Inlet Node, !- Component 1 Inlet Node Name", + " SOURCE Supply Heating Outlet Node; !- Component 1 Outlet Node Name", + + " DistrictHeating,", + " SOURCE Purchased Heating,!- Name", + " SOURCE Supply Heating Inlet Node, !- Hot Water Inlet Node Name", + " SOURCE Supply Heating Outlet Node, !- Hot Water Outlet Node Name", + " 1000000; !- Nominal Capacity {W}", + + " Branch,", + " SOURCE Supply Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " SOURCE Supply Outlet Pipe, !- Component 1 Name", + " SOURCE Supply Heating-Pipe Node, !- Component 1 Inlet Node Name", + " SOURCE Supply Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " SOURCE Supply Outlet Pipe, !- Name", + " SOURCE Supply Heating-Pipe Node, !- Inlet Node Name", + " SOURCE Supply Outlet Node; !- Outlet Node Name", + + " BranchList,", + " SOURCE Demand Branches, !- Name", + " SOURCE Demand Inlet Branch, !- Branch 1 Name", + " SOURCE Demand HX Branch, !- Branch 2 Name", + " SOURCE Demand Outlet Branch; !- Branch 3 Name", + + " ConnectorList,", + " SOURCE Demand Connectors,!- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " SOURCE Demand Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " SOURCE Demand Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " SOURCE Demand Splitter, !- Nam", + " SOURCE Demand Inlet Branch, !- Inlet Branch Name", + " SOURCE Demand HX Branch; !- Outlet Branch 1 Name", + + " Connector:Mixer,", + " SOURCE Demand Mixer, !- Name", + " SOURCE Demand Outlet Branch, !- Outlet Branch Name", + " SOURCE Demand HX Branch; !- Inlet Branch 1 Name", + + " Branch,", + " SOURCE Demand Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " SOURCE Demand Inlet Pipe,!- Component 1 Name", + " SOURCE Demand Inlet Node,!- Component 1 Inlet Node Name", + " SOURCE Demand Pipe-HX Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " SOURCE Demand Inlet Pipe,!- Name", + " SOURCE Demand Inlet Node,!- Inlet Node Name", + " SOURCE Demand Pipe-HX Node; !- Outlet Node Name", + + " Branch,", + " SOURCE Demand HX Branch, !- Name", + " , !- Pressure Drop Curve Name", + " HeatExchanger:FluidToFluid, !- Component 1 Object Type", + " SOURCE to TRANSFER HX, !- Component 1 Name", + " SOURCE Demand HX Inlet Node, !- Component 1 Inlet Node Name", + " SOURCE Demand HX Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " SOURCE Demand Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " SOURCE Demand Outlet Pipe, !- Component 1 Name", + " SOURCE Demand Load Profile-Pipe Node, !- Component 1 Inlet Node Name", + " SOURCE Demand Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " SOURCE Demand Outlet Pipe, !- Name", + " SOURCE Demand Load Profile-Pipe Node, !- Inlet Node Name", + " SOURCE Demand Outlet Node; !- Outlet Node Name", + + " ScheduleTypeLimits,", + " Any Number; !- Name", + + " ScheduleTypeLimits,", + " On/Off, !- Name", + " 0, !- Lower Limit Value", + " 1, !- Upper Limit Value", + " DISCRETE; !- Numeric Type", + + " Schedule:Compact,", + " Use Cool Loop Temp Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " THROUGH: 12/31, !- Field 1", + " FOR: AllDays, !- Field 2", + " UNTIL: 24:00,25.0; !- Field 3", + + " Schedule:Compact,", + " Use Heat Loop Temp Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " THROUGH: 12/31, !- Field 1", + " FOR: AllDays, !- Field 2", + " UNTIL: 24:00,15.0; !- Field 3", + + " Schedule:Compact,", + " TRANSFER Dual Loop Hi Temp Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " THROUGH: 12/31, !- Field 1", + " FOR: AllDays, !- Field 2", + " UNTIL: 24:00,19.0; !- Field 3", + + " Schedule:Compact,", + " TRANSFER Dual Loop Lo Temp Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " THROUGH: 12/31, !- Field 1", + " FOR: AllDays, !- Field 2", + " UNTIL: 24:00,17.5; !- Field 3", + + " Schedule:Compact,", + " SOURCE Loop Temp Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " THROUGH: 12/31, !- Field 1", + " FOR: AllDays, !- Field 2", + " UNTIL: 24:00,20.0; !- Field 3", + + " Schedule:Compact,", + " AlwaysOnSchedule, !- Name", + " On/Off, !- Schedule Type Limits Name", + " THROUGH: 12/31, !- Field 1", + " FOR: AllDays, !- Field 2", + " UNTIL: 24:00,1; !- Field 3", + + " Schedule:Compact,", + " Heat Load Profile 1 Load Schedule, !- Name", + " Any Number, !- Schedule Type Limits Name", + " THROUGH: 12/31, !- Field 1", + " FOR: AllDays, !- Field 2", + " UNTIL: 12:00,0, !- Field 3", + " UNTIL: 14:00,0, !- Field 5", + " UNTIL: 16:00,0, !- Field 7", + " UNTIL: 17:00,0, !- Field 9", + " UNTIL: 20:00,0, !- Field 11", + " UNTIL: 24:00,0; !- Field 13", + + " Schedule:Compact,", + " Heat Load Profile 1 Flow Frac Schedule, !- Name", + " Any Number, !- Schedule Type Limits Name", + " THROUGH: 12/31, !- Field 1", + " FOR: AllDays, !- Field 2", + " UNTIL: 24:00,0.0; !- Field 3", + + " Schedule:Compact,", + " Cool Load Profile 1 Load Schedule, !- Name", + " Any Number, !- Schedule Type Limits Name", + " THROUGH: 12/31, !- Field 1", + " FOR: AllDays, !- Field 2", + " UNTIL: 2:00,-8000, !- Field 3", + " UNTIL: 4:00,-8000, !- Field 5", + " UNTIL: 5:00,-8000, !- Field 7", + " UNTIL: 8:00,-8000, !- Field 9", + " UNTIL: 12:00,-8000, !- Field 11", + " UNTIL: 24:00,-8000; !- Field 13", + + " Schedule:Compact,", + " cool Load Profile 1 Flow Frac Schedule, !- Name", + " Any Number, !- Schedule Type Limits Name", + " THROUGH: 12/31, !- Field 1", + " FOR: AllDays, !- Field 2", + " UNTIL: 24:00,1.0; !- Field 3", + }); + + ASSERT_TRUE(process_idf(idf_objects)); + bool ErrorsFound = false; + + DataGlobals::BeginSimFlag = true; + SimulationManager::GetProjectData(); + + OutputReportPredefined::SetPredefinedTables(); + HeatBalanceManager::SetPreConstructionInputParameters(); // establish array bounds for constructions early + OutputProcessor::TimeValue.allocate(2); + OutputProcessor::SetupTimePointers("Zone", DataGlobals::TimeStepZone); // Set up Time pointer for HB/Zone Simulation + OutputProcessor::SetupTimePointers("HVAC", DataHVACGlobals::TimeStepSys); + PlantManager::CheckIfAnyPlant(); + createFacilityElectricPowerServiceObject(); + BranchInputManager::ManageBranchInput(); // just gets input and returns. + DataGlobals::DoingSizing = false; + DataGlobals::KickOffSimulation = true; + + WeatherManager::ResetEnvironmentCounter(); + SimulationManager::SetupSimulation(ErrorsFound); + DataGlobals::KickOffSimulation = false; + + int EnvCount = 0; + DataGlobals::WarmupFlag = true; + bool Available(true); + + while (Available) { + + WeatherManager::GetNextEnvironment(Available, ErrorsFound); + + if (!Available) break; + if (ErrorsFound) break; + + ++EnvCount; + + DataGlobals::BeginEnvrnFlag = true; + DataGlobals::EndEnvrnFlag = false; + DataEnvironment::EndMonthFlag = false; + DataGlobals::WarmupFlag = true; + DataGlobals::DayOfSim = 0; + DataGlobals::DayOfSimChr = "0"; + + while ((DataGlobals::DayOfSim < DataGlobals::NumOfDayInEnvrn) || (DataGlobals::WarmupFlag)) { // Begin day loop ... + + ++DataGlobals::DayOfSim; + + if (!DataGlobals::WarmupFlag) { + ++DataEnvironment::CurrentOverallSimDay; + } + DataGlobals::BeginDayFlag = true; + DataGlobals::EndDayFlag = false; + + for (DataGlobals::HourOfDay = 1; DataGlobals::HourOfDay <= 24; ++DataGlobals::HourOfDay) { // Begin hour loop ... + + DataGlobals::BeginHourFlag = true; + DataGlobals::EndHourFlag = false; + + for (DataGlobals::TimeStep = 1; DataGlobals::TimeStep <= DataGlobals::NumOfTimeStepInHour; ++DataGlobals::TimeStep) { + + DataGlobals::BeginTimeStepFlag = true; + + // Set the End__Flag variables to true if necessary. Note that + // each flag builds on the previous level. EndDayFlag cannot be + // .TRUE. unless EndHourFlag is also .TRUE., etc. Note that the + // EndEnvrnFlag and the EndSimFlag cannot be set during warmup. + // Note also that BeginTimeStepFlag, EndTimeStepFlag, and the + // SubTimeStepFlags can/will be set/reset in the HVAC Manager. + + if (DataGlobals::TimeStep == DataGlobals::NumOfTimeStepInHour) { + DataGlobals::EndHourFlag = true; + if (DataGlobals::HourOfDay == 24) { + DataGlobals::EndDayFlag = true; + if ((!DataGlobals::WarmupFlag) && (DataGlobals::DayOfSim == DataGlobals::NumOfDayInEnvrn)) { + DataGlobals::EndEnvrnFlag = true; + } + } + } - WeatherManager::ManageWeather(); + WeatherManager::ManageWeather(); - HeatBalanceManager::ManageHeatBalance(); + HeatBalanceManager::ManageHeatBalance(); - // After the first iteration of HeatBalance, all the 'input' has been gotten + // After the first iteration of HeatBalance, all the 'input' has been gotten - DataGlobals::BeginHourFlag = false; - DataGlobals::BeginDayFlag = false; - DataGlobals::BeginEnvrnFlag = false; - DataGlobals::BeginSimFlag = false; - DataGlobals::BeginFullSimFlag = false; + DataGlobals::BeginHourFlag = false; + DataGlobals::BeginDayFlag = false; + DataGlobals::BeginEnvrnFlag = false; + DataGlobals::BeginSimFlag = false; + DataGlobals::BeginFullSimFlag = false; - } // TimeStep loop + } // TimeStep loop - DataGlobals::PreviousHour = DataGlobals::HourOfDay; + DataGlobals::PreviousHour = DataGlobals::HourOfDay; - } // ... End hour loop. + } // ... End hour loop. - } // ... End day loop. + } // ... End day loop. - } // ... End environment loop. + } // ... End environment loop. - EXPECT_NEAR(DataLoopNode::Node(4).Temp, 20.0 , 0.01); - } + EXPECT_NEAR(DataLoopNode::Node(4).Temp, 20.0, 0.01); +} TEST_F(EnergyPlusFixture, PlantHXModulatedDualDeadDefectFileLo) { @@ -1172,1319 +1172,1319 @@ TEST_F(EnergyPlusFixture, PlantHXModulatedDualDeadDefectFileLo) // This test checks that the HX will attempt to meet setpoint of 21 when the conditioniong fluid is 20 and cannot really make it to 21. The HX // still heats up to 20. - std::string const idf_objects = delimited_string( { - "Version,8.4;", - - "Building,", - "Plant Load Profile Example, !- Name", - " 0.0, !- North Axis {deg}", - " Suburbs, !- Terrain", - " 0.04, !- Loads Convergence Tolerance Value", - " 0.04, !- Temperature Convergence Tolerance Value {deltaC}", - " FullInteriorAndExterior, !- Solar Distribution", - " 25, !- Maximum Number of Warmup Days", - " 6; !- Minimum Number of Warmup Days", - - " Timestep,6;", - - " GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " CounterClockWise, !- Vertex Entry Direction", - " Relative; !- Coordinate System", - - " Site:Location,", - " CHICAGO_IL_USA_WMO_725300, !- Name", - " 42.00, !- Latitude {deg}", - " -87.88, !- Longitude {deg}", - " -6.00, !- Time Zone {hr}", - " 190.00; !- Elevation {m}", - - " SizingPeriod:DesignDay,", - " CHICAGO Ann Htg 99% Condns DB, !- Name", - " 1, !- Month", - " 21, !- Day of Month", - " WinterDesignDay, !- Day Type", - " -17.3, !- Maximum Dry-Bulb Temperature {C}", - " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 4.9, !- Wind Speed {m/s}", - " 270, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 0.00; !- Sky Clearness", - - " RunPeriod,", - " Jan, !- Name", - " 1, !- Begin Month", - " 1, !- Begin Day of Month", - " , !- Begin Year", - " 1, !- End Month", - " 2, !- End Day of Month", - " , !- End Year", - " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " Yes; !- Use Weather File Snow Indicators", - - " SimulationControl,", - " NO, !- Do Zone Sizing Calculation", - " NO, !- Do System Sizing Calculation", - " NO, !- Do Plant Sizing Calculation", - " Yes, !- Run Simulation for Sizing Periods", - " No; !- Run Simulation for Weather File Run Periods", - - " PlantLoop,", - " Use Heat Loop, !- Name", - " WATER, !- Fluid Type", - " , !- User Defined Fluid Type", - " Use Heat Loop Operation, !- Plant Equipment Operation Scheme Name", - " Use Heat Supply Outlet Node, !- Loop Temperature Setpoint Node Name", - " 100, !- Maximum Loop Temperature {C}", - " 3, !- Minimum Loop Temperature {C}", - " 0.003, !- Maximum Loop Flow Rate {m3/s}", - " 0, !- Minimum Loop Flow Rate {m3/s}", - " 1.0, !- Plant Loop Volume {m3}", - " Use Heat Supply Inlet Node, !- Plant Side Inlet Node Name", - " Use Heat Supply Outlet Node, !- Plant Side Outlet Node Name", - " Use Heat Supply Branches,!- Plant Side Branch List Name", - " Use Heat Supply Connectors, !- Plant Side Connector List Name", - " Use Heat Demand Inlet Node, !- Demand Side Inlet Node Name", - " Use Heat Demand Outlet Node, !- Demand Side Outlet Node Name", - " Use Heat Demand Branches,!- Demand Side Branch List Name", - " Use Heat Demand Connectors, !- Demand Side Connector List Name", - " Optimal, !- Load Distribution Scheme", - " , !- Availability Manager List Name", - " , !- Plant Loop Demand Calculation Scheme", - " , !- Common Pipe Simulation", - " , !- Pressure Simulation Type", - " 2.0; !- Loop Circulation Time {minutes}", - - " SetpointManager:Scheduled,", - " Use Heat Loop Setpoint Manager, !- Name", - " Temperature, !- Control Variable", - " Use Heat Loop Temp Sch, !- Schedule Name", - " Use Heat Loop Setpoint Node List; !- Setpoint Node or NodeList Name", - - " NodeList,", - " Use Heat Loop Setpoint Node List, !- Name", - " Use Heat Supply Outlet Node; !- Node 1 Name", - - " PlantEquipmentOperationSchemes,", - " Use Heat Loop Operation, !- Name", - " PlantEquipmentOperation:Uncontrolled, !- Control Scheme 1 Object Type", - " USE Heat operation, !- Control Scheme 1 Name", - " AlwaysOnSchedule; !- Control Scheme 1 Schedule Name", - - " PlantEquipmentOperation:Uncontrolled,", - " USE Heat operation, !- Name", - " TRANSFER to USE Heat HX equip; !- Equipment List Name", - - " PlantEquipmentList,", - " TRANSFER to USE Heat HX equip, !- Name", - " HeatExchanger:FluidToFluid, !- Equipment 1 Object Type", - " TRANSFER to USE Heat HX; !- Equipment 1 Name", - - " BranchList,", - " USE Heat Supply Branches,!- Name", - " USE Heat Supply Inlet Branch, !- Branch 1 Name", - " USE Heat Heating Branch, !- Branch 2 Name", - " USE Heat Supply Outlet Branch; !- Branch 3 Name", - - " ConnectorList,", - " USE Heat Supply Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " USE Heat Supply Splitter,!- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " USE Heat Supply Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " USE Heat Supply Splitter,!- Name", - " USE Heat Supply Inlet Branch, !- Inlet Branch Name", - " USE Heat Heating Branch; !- Outlet Branch 1 Name", - - " Connector:Mixer,", - " USE Heat Supply Mixer, !- Name", - " USE Heat Supply Outlet Branch, !- Outlet Branch Name", - " USE Heat Heating Branch; !- Inlet Branch 1 Name", - - " Branch,", - " USE Heat Supply Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pump:VariableSpeed, !- Component 1 Object Type", - " USE Heat Pump, !- Component 1 Name", - " USE Heat Supply Inlet Node, !- Component 1 Inlet Node Name", - " USE Heat Supply Pump-Heating Node; !- Component 1 Outlet Node Name", - - " Pump:VariableSpeed,", - " USE Heat Pump, !- Name", - " USE Heat Supply Inlet Node, !- Inlet Node Name", - " USE Heat Supply Pump-Heating Node, !- Outlet Node Name", - " 0.005, !- Rated Flow Rate {m3/s}", - " 1, !- Rated Pump Head {Pa}", - " 0.01, !- Rated Power Consumption {W}", - " 0.87, !- Motor Efficiency", - " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", - " 0, !- Coefficient 1 of the Part Load Performance Curve", - " 1, !- Coefficient 2 of the Part Load Performance Curve", - " 0, !- Coefficient 3 of the Part Load Performance Curve", - " 0, !- Coefficient 4 of the Part Load Performance Curve", - " 0, !- Minimum Flow Rate {m3/s}", - " INTERMITTENT; !- Pump Control Type", - - " Branch,", - " USE Heat Heating Branch, !- Name", - " , !- Pressure Drop Curve Name", - " HeatExchanger:FluidToFluid, !- Component 1 Object Type", - " TRANSFER to USE Heat HX, !- Component 1 Name", - " USE Heat Supply Heating Inlet Node, !- Component 1 Inlet Node Name", - " USE Heat Supply Heating Outlet Node; !- Component 1 Outlet Node Name", - - " HeatExchanger:FluidToFluid,", - " TRANSFER to USE Heat HX, !- Name", - " AlwaysOnSchedule, !- Availability Schedule Name", - " TRANSFER Heat Demand HX Inlet Node, !- Loop Demand Side Inlet Node Name", - " TRANSFER Heat Demand HX Outlet Node, !- Loop Demand Side Outlet Node Name", - " 0.003, !- Loop Demand Side Design Flow Rate {m3/s}", - " USE Heat Supply Heating Inlet Node, !- Loop Supply Side Inlet Node Name", - " USE Heat Supply Heating Outlet Node, !- Loop Supply Side Outlet Node Name", - " 0.003, !- Loop Supply Side Design Flow Rate {m3/s}", - " CrossFlowBothUnMixed, !- Heat Exchange Model Type", - " 15000, !- Heat Exchanger U-Factor Times Area Value {W/k}", - " HeatingSetpointModulated,!- Control Type", - " Use heat Supply Outlet Node, !- Heat Exchanger Setpoint Node Name", - " 0.2, !- Minimum Temperature Difference to Activate Heat Exchanger {deltaC}", - " LoopToLoop; !- Heat Transfer Metering End Use Type", - - " Branch,", - " USE Heat Supply Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " USE Heat Supply Outlet Pipe, !- Component 1 Name", - " USE Heat Supply Heating-Pipe Node, !- Component 1 Inlet Node Name", - " USE Heat Supply Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " USE Heat Supply Outlet Pipe, !- Name", - " USE Heat Supply Heating-Pipe Node, !- Inlet Node Name", - " USE Heat Supply Outlet Node; !- Outlet Node Name", - - " BranchList,", - " USE Heat Demand Branches,!- Name", - " USE Heat Demand Inlet Branch, !- Branch 1 Name", - " USE Heat Load Profile Branch 1, !- Branch 2 Name", - " USE Heat Demand Outlet Branch; !- Branch 3 Name", - - " ConnectorList,", - " USE Heat Demand Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " USE Heat Demand Splitter,!- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " USE Heat Demand Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " USE Heat Demand Splitter,!- ", - " USE Heat Demand Inlet Branch, !- Inlet Branch Name", - " USE Heat Load Profile Branch 1; !- Outlet Branch 1 Name", - - " Connector:Mixer,", - " USE Heat Demand Mixer, !- Name", - " USE Heat Demand Outlet Branch, !- Outlet Branch Name", - " USE Heat Load Profile Branch 1; !- Inlet Branch 1 Name", - - " Branch,", - " USE Heat Demand Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " USE Heat Demand Inlet Pipe, !- Component 1 Name", - " USE Heat Demand Inlet Node, !- Component 1 Inlet Node Name", - " USE Heat Demand Pipe-Load Profile Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " USE Heat Demand Inlet Pipe, !- Name", - " USE Heat Demand Inlet Node, !- Inlet Node Name", - " USE Heat Demand Pipe-Load Profile Node; !- Outlet Node Name", - - " Branch,", - " USE Heat Load Profile Branch 1, !- Name", - " , !- Pressure Drop Curve Name", - " LoadProfile:Plant, !- Component 1 Object Type", - " Heat Load Profile 1, !- Component 1 Name", - " Heat Demand Load Profile 1 Inlet Node, !- Component 1 Inlet Node Name", - " Heat Demand Load Profile 1 Outlet Node; !- Component 1 Outlet Node Name", - - " LoadProfile:Plant,", - " Heat Load Profile 1, !- Name", - " Heat Demand Load Profile 1 Inlet Node, !- Inlet Node Name", - " Heat Demand Load Profile 1 Outlet Node, !- Outlet Node Name", - " Heat Load Profile 1 Load Schedule, !- Load Schedule Name", - " 0.002, !- Peak Flow Rate {m3/s}", - " Heat Load Profile 1 Flow Frac Schedule; !- Flow Rate Fraction Schedule Name", - - " Branch,", - " USE Heat Demand Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " USE Heat Demand Outlet Pipe, !- Component 1 Name", - " USE Heat Demand Load Profile-Pipe Node, !- Component 1 Inlet Node Name", - " USE Heat Demand Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " USE Heat Demand Outlet Pipe, !- Name", - " USE Heat Demand Load Profile-Pipe Node, !- Inlet Node Name", - " USE Heat Demand Outlet Node; !- Outlet Node Name", - - " PlantLoop,", - " Use Cool Loop, !- Name", - " WATER, !- Fluid Type", - " , !- User Defined Fluid Type", - " Use Cool Loop Operation, !- Plant Equipment Operation Scheme Name", - " Use Cool Supply Outlet Node, !- Loop Temperature Setpoint Node Name", - " 100, !- Maximum Loop Temperature {C}", - " 3, !- Minimum Loop Temperature {C}", - " 0.003, !- Maximum Loop Flow Rate {m3/s}", - " 0, !- Minimum Loop Flow Rate {m3/s}", - " 1.0, !- Plant Loop Volume {m3}", - " Use Cool Supply Inlet Node, !- Plant Side Inlet Node Name", - " Use Cool Supply Outlet Node, !- Plant Side Outlet Node Name", - " Use Cool Supply Branches,!- Plant Side Branch List Name", - " Use Cool Supply Connectors, !- Plant Side Connector List Name", - " Use Cool Demand Inlet Node, !- Demand Side Inlet Node Name", - " Use Cool Demand Outlet Node, !- Demand Side Outlet Node Name", - " Use Cool Demand Branches,!- Demand Side Branch List Name", - " Use Cool Demand Connectors, !- Demand Side Connector List Name", - " Optimal, !- Load Distribution Scheme", - " , !- Availability Manager List Name", - " , !- Plant Loop Demand Calculation Scheme", - " , !- Common Pipe Simulation", - " , !- Pressure Simulation Type", - " 2.0; !- Loop Circulation Time {minutes}", - - " SetpointManager:Scheduled,", - " Use Cool Loop Setpoint Manager, !- Name", - " Temperature, !- Control Variable", - " Use Cool Loop Temp Sch, !- Schedule Name", - " Use Cool Loop Setpoint Node List; !- Setpoint Node or NodeList Name", - - " NodeList,", - " Use Cool Loop Setpoint Node List, !- Name", - " Use Cool Supply Outlet Node; !- Node 1 Name", - - " PlantEquipmentOperationSchemes,", - " Use Cool Loop Operation, !- Name", - " PlantEquipmentOperation:Uncontrolled, !- Control Scheme 1 Object Type", - " USE Cool operation, !- Control Scheme 1 Name", - " AlwaysOnSchedule; !- Control Scheme 1 Schedule Name", - - " PlantEquipmentOperation:Uncontrolled,", - " USE Cool operation, !- Name", - " TRANSFER to USE Cool HX equip; !- Equipment List Name", - - " PlantEquipmentList,", - " TRANSFER to USE Cool HX equip, !- Name", - " HeatExchanger:FluidToFluid, !- Equipment 1 Object Type", - " TRANSFER to USE Cool HX; !- Equipment 1 Name", - - " BranchList,", - " USE Cool Supply Branches,!- Name", - " USE Cool Supply Inlet Branch, !- Branch 1 Name", - " USE Cooling Branch, !- Branch 2 Name", - " USE Cool Supply Outlet Branch; !- Branch 3 Name", - - " ConnectorList,", - " USE Cool Supply Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " USE Cool Supply Splitter,!- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " USE Cool Supply Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " USE Cool Supply Splitter,!- Name", - " USE Cool Supply Inlet Branch, !- Inlet Branch Name", - " USE Cooling Branch; !- Outlet Branch 1 Name", - - " Connector:Mixer,", - " USE Cool Supply Mixer, !- Name", - " USE Cool Supply Outlet Branch, !- Outlet Branch Name", - " USE Cooling Branch; !- Inlet Branch 1 Name", - - " Branch,", - " USE Cool Supply Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pump:VariableSpeed, !- Component 1 Object Type", - " USE Cool Pump, !- Component 1 Name", - " USE Cool Supply Inlet Node, !- Component 1 Inlet Node Name", - " USE Cool Supply Pump-Heating Node; !- Component 1 Outlet Node Name", - - " Pump:VariableSpeed,", - " USE Cool Pump, !- Name", - " USE Cool Supply Inlet Node, !- Inlet Node Name", - " USE Cool Supply Pump-Heating Node, !- Outlet Node Name", - " 0.005, !- Rated Flow Rate {m3/s}", - " 1, !- Rated Pump Head {Pa}", - " 0.01, !- Rated Power Consumption {W}", - " 0.87, !- Motor Efficiency", - " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", - " 0, !- Coefficient 1 of the Part Load Performance Curve", - " 1, !- Coefficient 2 of the Part Load Performance Curve", - " 0, !- Coefficient 3 of the Part Load Performance Curve", - " 0, !- Coefficient 4 of the Part Load Performance Curve", - " 0, !- Minimum Flow Rate {m3/s}", - " INTERMITTENT; !- Pump Control Type", - - " Branch,", - " USE Cooling Branch, !- Name", - " , !- Pressure Drop Curve Name", - " HeatExchanger:FluidToFluid, !- Component 1 Object Type", - " TRANSFER to USE Cool HX, !- Component 1 Name", - " USE Cool Supply Cooling Inlet Node, !- Component 1 Inlet Node Name", - " USE Cool Supply Cooling Outlet Node; !- Component 1 Outlet Node Name", - - " HeatExchanger:FluidToFluid,", - " TRANSFER to USE Cool HX, !- Name", - " AlwaysOnSchedule, !- Availability Schedule Name", - " TRANSFER Demand HX Cool Inlet Node, !- Loop Demand Side Inlet Node Name", - " TRANSFER Demand HX Cool Outlet Node, !- Loop Demand Side Outlet Node Name", - " 0.003, !- Loop Demand Side Design Flow Rate {m3/s}", - " USE Cool Supply Cooling Inlet Node, !- Loop Supply Side Inlet Node Name", - " USE Cool Supply Cooling Outlet Node, !- Loop Supply Side Outlet Node Name", - " 0.003, !- Loop Supply Side Design Flow Rate {m3/s}", - " CrossFlowBothUnMixed, !- Heat Exchange Model Type", - " 15000, !- Heat Exchanger U-Factor Times Area Value {W/k}", - " CoolingSetpointModulated,!- Control Type", - " Use Cool Supply Outlet Node, !- Heat Exchanger Setpoint Node Name", - " 0.2, !- Minimum Temperature Difference to Activate Heat Exchanger {deltaC}", - " LoopToLoop; !- Heat Transfer Metering End Use Type", - - " Branch,", - " USE Cool Supply Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " USE Cool Supply Outlet Pipe, !- Component 1 Name", - " USE Cool Supply Heating-Pipe Node, !- Component 1 Inlet Node Name", - " USE Cool Supply Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " USE Cool Supply Outlet Pipe, !- Name", - " USE Cool Supply Heating-Pipe Node, !- Inlet Node Name", - " USE Cool Supply Outlet Node; !- Outlet Node Name", - - " BranchList,", - " USE Cool Demand Branches,!- Name", - " USE Cool Demand Inlet Branch, !- Branch 1 Name", - " USE Cool Load Profile Branch 1, !- Branch 2 Name", - " USE Cool Demand Outlet Branch; !- Branch 3 Name", - - " ConnectorList,", - " USE Cool Demand Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " USE Cool Demand Splitter,!- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " USE Cool Demand Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " USE Cool Demand Splitter,!- Name", - " USE Cool Demand Inlet Branch, !- Inlet Branch Name", - " USE Cool Load Profile Branch 1; !- Outlet Branch 1 Name", - - " Connector:Mixer,", - " USE Cool Demand Mixer, !- Name", - " USE Cool Demand Outlet Branch, !- Outlet Branch Name", - " USE Cool Load Profile Branch 1; !- Inlet Branch 1 Name", - - " Branch,", - " USE Cool Demand Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " USE Cool Demand Inlet Pipe, !- Component 1 Name", - " USE Cool Demand Inlet Node, !- Component 1 Inlet Node Name", - " USE Cool Demand Pipe-Load Profile Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " USE Cool Demand Inlet Pipe, !- Name", - " USE Cool Demand Inlet Node, !- Inlet Node Name", - " USE Cool Demand Pipe-Load Profile Node; !- Outlet Node Name", - - " Branch,", - " USE Cool Load Profile Branch 1, !- Name", - " , !- Pressure Drop Curve Name", - " LoadProfile:Plant, !- Component 1 Object Type", - " Cool Load Profile 1, !- Component 1 Name", - " Demand Cool Load Profile 1 Inlet Node, !- Component 1 Inlet Node Name", - " Demand Cool Load Profile 1 Outlet Node; !- Component 1 Outlet Node Name", - - " LoadProfile:Plant,", - " Cool Load Profile 1, !- Name", - " Demand Cool Load Profile 1 Inlet Node, !- Inlet Node Name", - " Demand Cool Load Profile 1 Outlet Node, !- Outlet Node Name", - " Cool Load Profile 1 Load Schedule, !- Load Schedule Name", - " 0.002, !- Peak Flow Rate {m3/s}", - " Cool Load Profile 1 Flow Frac Schedule; !- Flow Rate Fraction Schedule Name", - - " Branch,", - " USE Cool Demand Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " USE Cool Demand Outlet Pipe, !- Component 1 Name", - " USE Cool Demand Load Profile-Pipe Node, !- Component 1 Inlet Node Name", - " USE Cool Demand Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " USE Cool Demand Outlet Pipe, !- Name", - " USE Cool Demand Load Profile-Pipe Node, !- Inlet Node Name", - " USE Cool Demand Outlet Node; !- Outlet Node Name", - - " PlantLoop,", - " TRANSFER Loop, !- Name", - " WATER, !- Fluid Type", - " , !- User Defined Fluid Type", - " TRANSFER Loop Operation, !- Plant Equipment Operation Scheme Name", - " TRANSFER Supply Outlet Node, !- Loop Temperature Setpoint Node Name", - " 100, !- Maximum Loop Temperature {C}", - " 3, !- Minimum Loop Temperature {C}", - " 0.003, !- Maximum Loop Flow Rate {m3/s}", - " 0, !- Minimum Loop Flow Rate {m3/s}", - " 1.0, !- Plant Loop Volume {m3}", - " TRANSFER Supply Inlet Node, !- Plant Side Inlet Node Name", - " TRANSFER Supply Outlet Node, !- Plant Side Outlet Node Name", - " TRANSFER Supply Branches,!- Plant Side Branch List Name", - " TRANSFER Supply Connectors, !- Plant Side Connector List Name", - " TRANSFER Demand Inlet Node, !- Demand Side Inlet Node Name", - " TRANSFER Demand Outlet Node, !- Demand Side Outlet Node Name", - " TRANSFER Demand Branches,!- Demand Side Branch List Name", - " TRANSFER Demand Connectors, !- Demand Side Connector List Name", - " OPTIMAL, !- Load Distribution Scheme", - " , !- Availability Manager List Name", - " DualSetpointDeadband, !- Plant Loop Demand Calculation Scheme", - " , !- Common Pipe Simulation", - " , !- Pressure Simulation Type", - " 2.0; !- Loop Circulation Time {minutes}", - - " SetpointManager:Scheduled:dualSetpoint,", - " TRANSFER Loop Dual Setpoint Manager, !- Name", - " Temperature, !- Control Variable", - " TRANSFER Dual Loop Hi Temp Sch, !- High Setpoint Schedule Name", - " TRANSFER Dual Loop Lo Temp Sch, !- Low Setpoint Schedule Name", - " TRANSFER Loop Setpoint Node List; !- Setpoint Node or NodeList Name", - - " NodeList,", - " TRANSFER Loop Setpoint Node List, !- Name", - " TRANSFER Supply Outlet Node; !- Node 1 Name", - - " PlantEquipmentOperationSchemes,", - " TRANSFER Loop Operation, !- Name", - " PlantEquipmentOperation:Uncontrolled, !- Control Scheme 1 Object Type", - " TRANSFER HX, !- Control Scheme 1 Name", - " AlwaysOnSchedule; !- Control Scheme 1 Schedule Name", - - " PlantEquipmentOperation:Uncontrolled,", - " TRANSFER HX, !- Name", - " TRANSFER Plant; !- Equipment List Name", - - " PlantEquipmentList,", - " TRANSFER Plant, !- Name", - " HeatExchanger:FluidToFluid, !- Equipment 1 Object Type", - " SOURCE to TRANSFER HX; !- Equipment 1 Name", - - " BranchList,", - " TRANSFER Supply Branches,!- Name", - " TRANSFER Supply Inlet Branch, !- Branch 1 Name", - " TRANSFER HX Branch, !- Branch 2 Name", - " TRANSFER Supply Outlet Branch; !- Branch 3 Name", - - " ConnectorList,", - " TRANSFER Supply Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " TRANSFER Supply Splitter,!- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " TRANSFER Supply Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " TRANSFER Supply Splitter,!- Name", - " TRANSFER Supply Inlet Branch, !- Inlet Branch Name", - " TRANSFER HX Branch; !- Outlet Branch 1 Name", - - " Connector:Mixer,", - " TRANSFER Supply Mixer, !- Name", - " TRANSFER Supply Outlet Branch, !- Outlet Branch Name", - " TRANSFER HX Branch; !- Inlet Branch 1 Name", - - " Branch,", - " TRANSFER Supply Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pump:VariableSpeed, !- Component 1 Object Type", - " TRANSFER Pump, !- Component 1 Name", - " TRANSFER Supply Inlet Node, !- Component 1 Inlet Node Name", - " TRANSFER Supply Pump-Heating Node; !- Component 1 Outlet Node Name", - - " Pump:VariableSpeed,", - " TRANSFER Pump, !- Name", - " TRANSFER Supply Inlet Node, !- Inlet Node Name", - " TRANSFER Supply Pump-Heating Node, !- Outlet Node Name", - " 0.005, !- Rated Flow Rate {m3/s}", - " 1, !- Rated Pump Head {Pa}", - " 0.01, !- Rated Power Consumption {W}", - " 0.87, !- Motor Efficiency", - " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", - " 0, !- Coefficient 1 of the Part Load Performance Curve", - " 1, !- Coefficient 2 of the Part Load Performance Curve", - " 0, !- Coefficient 3 of the Part Load Performance Curve", - " 0, !- Coefficient 4 of the Part Load Performance Curve", - " 0, !- Minimum Flow Rate {m3/s}", - " INTERMITTENT; !- Pump Control Type", - - " Branch,", - " TRANSFER HX Branch, !- Name", - " , !- Pressure Drop Curve Name", - " HeatExchanger:FluidToFluid, !- Component 1 Object Type", - " SOURCE to TRANSFER HX, !- Component 1 Name", - " TRANSFER HX Supply Inlet Node, !- Component 1 Inlet Node Name", - " TRANSFER HX Supply Outlet Node; !- Component 1 Outlet Node Name", - - " HeatExchanger:FluidToFluid,", - " SOURCE to TRANSFER HX, !- Name", - " AlwaysOnSchedule, !- Availability Schedule Name", - " SOURCE Demand HX Inlet Node, !- Loop Demand Side Inlet Node Name", - " SOURCE Demand HX Outlet Node, !- Loop Demand Side Outlet Node Name", - " 0.003, !- Loop Demand Side Design Flow Rate {m3/s}", - " TRANSFER HX Supply Inlet Node, !- Loop Supply Side Inlet Node Name", - " TRANSFER HX Supply Outlet Node, !- Loop Supply Side Outlet Node Name", - " 0.003, !- Loop Supply Side Design Flow Rate {m3/s}", - " CrossFlowBothUnMixed, !- Heat Exchange Model Type", - " 15000, !- Heat Exchanger U-Factor Times Area Value {W/k}", - " DualDeadbandSetpointModulated, !- Control Type", - " TRANSFER Supply Outlet Node, !- Heat Exchanger Setpoint Node Name", - " 0.2, !- Minimum Temperature Difference to Activate Heat Exchanger {deltaC}", - " LoopToLoop; !- Heat Transfer Metering End Use Type", - - " Branch,", - " TRANSFER Supply Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " TRANSFER Supply Outlet Pipe, !- Component 1 Name", - " TRANSFER Supply HX-Pipe Node, !- Component 1 Inlet Node Name", - " TRANSFER Supply Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " TRANSFER Supply Outlet Pipe, !- Name", - " TRANSFER Supply HX-Pipe Node, !- Inlet Node Name", - " TRANSFER Supply Outlet Node; !- Outlet Node Name", - - " BranchList,", - " TRANSFER Demand Branches,!- Name", - " TRANSFER Demand Inlet Branch, !- Branch 1 Name", - " TRANSFER Demand HX Branch 1, !- Branch 2 Name", - " TRANSFER Demand HX Branch 2, !- Branch 3 Name", - " TRANSFER Demand Outlet Branch; !- Branch 4 Name", - - " ConnectorList,", - " TRANSFER Demand Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " TRANSFER Demand Splitter,!- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " TRANSFER Demand Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " TRANSFER Demand Splitter,!- Name", - " TRANSFER Demand Inlet Branch, !- Inlet Branch Name", - " TRANSFER Demand HX Branch 1, !- Outlet Branch 1 Name", - " TRANSFER Demand HX Branch 2; !- Outlet Branch 2 Name", - - " Connector:Mixer,", - " TRANSFER Demand Mixer, !- Name", - " TRANSFER Demand Outlet Branch, !- Outlet Branch Name", - " TRANSFER Demand HX Branch 1, !- Inlet Branch 1 Name", - " TRANSFER Demand HX Branch 2; !- Inlet Branch 2 Name", - - " Branch,", - " TRANSFER Demand Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " TRANSFER Demand Inlet Pipe, !- Component 1 Name", - " TRANSFER Demand Inlet Node, !- Component 1 Inlet Node Name", - " TRANSFER Demand Pipe-Load Profile Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " TRANSFER Demand Inlet Pipe, !- Name", - " TRANSFER Demand Inlet Node, !- Inlet Node Name", - " TRANSFER Demand Pipe-Load Profile Node; !- Outlet Node Name", - - " Branch,", - " TRANSFER Demand HX Branch 1, !- Name", - " , !- Pressure Drop Curve Name", - " HeatExchanger:FluidToFluid, !- Component 1 Object Type", - " TRANSFER to USE Heat HX, !- Component 1 Name", - " TRANSFER heat Demand HX Inlet Node, !- Component 1 Inlet Node Name", - " TRANSFER heat Demand HX Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " TRANSFER Demand HX Branch 2, !- Name", - " , !- Pressure Drop Curve ", - " HeatExchanger:FluidToFluid, !- Component 1 Object Type", - " TRANSFER to USE cool HX, !- Component 1 Name", - " TRANSFER Demand HX Cool Inlet Node, !- Component 1 Inlet Node Name", - " TRANSFER Demand HX cool Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " TRANSFER Demand Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " TRANSFER Demand Outlet Pipe, !- Component 1 Name", - " TRANSFER Demand Load Profile-Pipe Node, !- Component 1 Inlet Node Name", - " TRANSFER Demand Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " TRANSFER Demand Outlet Pipe, !- Name", - " TRANSFER Demand Load Profile-Pipe Node, !- Inlet Node Name", - " TRANSFER Demand Outlet Node; !- Outlet Node Name", - - " PlantLoop,", - " SOURCE Loop, !- Name", - " WATER, !- Fluid Type", - " , !- User Defined Fluid Type", - " SOURCE Loop Operation, !- Plant Equipment Operation Scheme Name", - " SOURCE Supply Outlet Node, !- Loop Temperature Setpoint Node Name", - " 100, !- Maximum Loop Temperature {C}", - " 3, !- Minimum Loop Temperature {C}", - " 0.003, !- Maximum Loop Flow Rate {m3/s}", - " 0, !- Minimum Loop Flow Rate {m3/s}", - " 1.0, !- Plant Loop Volume {m3}", - " SOURCE Supply Inlet Node,!- Plant Side Inlet Node Name", - " SOURCE Supply Outlet Node, !- Plant Side Outlet Node Name", - " SOURCE Supply Branches, !- Plant Side Branch List Name", - " SOURCE Supply Connectors,!- Plant Side Connector List Name", - " SOURCE Demand Inlet Node,!- Demand Side Inlet Node Name", - " SOURCE Demand Outlet Node, !- Demand Side Outlet Node Name", - " SOURCE Demand Branches, !- Demand Side Branch List Name", - " SOURCE Demand Connectors,!- Demand Side Connector List Name", - " Optimal, !- Load Distribution Scheme", - " , !- Availability Manager List Name", - " , !- Plant Loop Demand Calculation Scheme", - " , !- Common Pipe Simulation", - " , !- Pressure Simulation Type", - " 2.0; !- Loop Circulation Time {minutes}", - - " SetpointManager:Scheduled,", - " SOURCE Loop Setpoint Manager, !- Name", - " Temperature, !- Control Variable", - " SOURCE Loop Temp Sch, !- Schedule Name", - " SOURCE Loop Setpoint Node List; !- Setpoint Node or NodeList Name", - - " NodeList,", - " SOURCE Loop Setpoint Node List, !- Name", - " SOURCE Supply Outlet Node, !- Node 1 Name", - " SOURCE Supply Heating Outlet Node, !- Node 2 Name", - " SOURCE Supply Cooling Outlet Node; !- Node 3 Name", - - " PlantEquipmentOperationSchemes,", - " SOURCE Loop Operation, !- Name", - " PlantEquipmentOperation:ComponentSetpoint, !- Control Scheme 1 Object Type", - " SOURCE Purchased Only, !- Control Scheme 1 Name", - " AlwaysOnSchedule; !- Control Scheme 1 Schedule Name", - - " PlantEquipmentOperation:ComponentSetpoint,", - " SOURCE Purchased Only, !- Name", - " DistrictCooling, !- Equipment 1 Object Type", - " SOURCE Purchased Cooling,!- Equipment 1 Name", - " SOURCE Supply Cooling Inlet Node, !- Demand Calculation 1 Node Name", - " SOURCE Supply Cooling Outlet Node, !- Setpoint 1 Node Name", - " 0.003, !- Component 1 Flow Rate {m3/s}", - " Cooling, !- Operation 1 Type", - " DistrictHeating, !- Equipment 2 Object Type", - " SOURCE Purchased Heating,!- Equipment 2 Name", - " SOURCE Supply Heating Inlet Node, !- Demand Calculation 2 Node Name", - " SOURCE Supply Heating Outlet Node, !- Setpoint 2 Node Name", - " 0.003, !- Component 2 Flow Rate {m3/s}", - " HEATINg; !- Operation 2 Type", - - " PlantEquipmentList,", - " SOURCE cooling Plant, !- Name", - " DistrictCooling, !- Equipment 1 Object Type", - " SOURCE Purchased Cooling;!- Equipment 1 Name", - - " BranchList,", - " SOURCE Supply Branches, !- Name", - " SOURCE Supply Inlet Branch, !- Branch 1 Name", - " SOURCE Cooling Branch, !- Branch 2 Name", - " SOURCE Heating Branch, !- Branch 3 Name", - " SOURCE Supply Outlet Branch; !- Branch 4 Name", - - " ConnectorList,", - " SOURCE Supply Connectors,!- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " SOURCE Supply Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " SOURCE Supply Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " SOURCE Supply Splitter, !- Name", - " SOURCE Supply Inlet Branch, !- Inlet Branch Name", - " SOURCE Cooling Branch, !- Outlet Branch 1 Name", - " SOURCE Heating Branch; !- Outlet Branch 2 Name", - - " Connector:Mixer,", - " SOURCE Supply Mixer, !- Name", - " SOURCE Supply Outlet Branch, !- Outlet Branch Name", - " SOURCE Cooling Branch, !- Inlet Branch 1 Name", - " SOURCE Heating Branch; !- Inlet Branch 2 Name", - - " Branch,", - " SOURCE Supply Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pump:VariableSpeed, !- Component 1 Object Type", - " SOURCE Pump, !- Component 1 Name", - " SOURCE Supply Inlet Node,!- Component 1 Inlet Node Name", - " SOURCE Supply Pump-district Node; !- Component 1 Outlet Node Name", - - " Pump:VariableSpeed,", - " SOURCE Pump, !- Name", - " SOURCE Supply Inlet Node,!- Inlet Node Name", - " SOURCE Supply Pump-district Node, !- Outlet Node Name", - " 0.005, !- Rated Flow Rate {m3/s}", - " 1, !- Rated Pump Head {Pa}", - " 0.01, !- Rated Power Consumption {W}", - " 0.87, !- Motor Efficiency", - " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", - " 0, !- Coefficient 1 of the Part Load Performance Curve", - " 1, !- Coefficient 2 of the Part Load Performance Curve", - " 0, !- Coefficient 3 of the Part Load Performance Curve", - " 0, !- Coefficient 4 of the Part Load Performance ", - " 0, !- Minimum Flow Rate {m3/s}", - " INTERMITTENT; !- Pump Control Type", - - " Branch,", - " SOURCE Cooling Branch, !- Name", - " , !- Pressure Drop Curve Name", - " DistrictCooling, !- Component 1 Object Type", - " SOURCE Purchased Cooling,!- Component 1 Name", - " SOURCE Supply Cooling Inlet Node, !- Component 1 Inlet Node Name", - " SOURCE Supply Cooling Outlet Node; !- Component 1 Outlet Node Name", - - " DistrictCooling,", - " SOURCE Purchased Cooling,!- Name", - " SOURCE Supply Cooling Inlet Node, !- Chilled Water Inlet Node Name", - " SOURCE Supply Cooling Outlet Node, !- Chilled Water Outlet Node Name", - " 1000000; !- Nominal Capacity {W}", - - " Branch,", - " SOURCE Heating Branch, !- Name", - " , !- Pressure Drop Curve Name", - " DistrictHeating, !- Component 1 Object Type", - " SOURCE Purchased Heating,!- Component 1 Name", - " SOURCE Supply Heating Inlet Node, !- Component 1 Inlet Node Name", - " SOURCE Supply Heating Outlet Node; !- Component 1 Outlet Node Name", - - " DistrictHeating,", - " SOURCE Purchased Heating,!- Name", - " SOURCE Supply Heating Inlet Node, !- Hot Water Inlet Node Name", - " SOURCE Supply Heating Outlet Node, !- Hot Water Outlet Node Name", - " 1000000; !- Nominal Capacity {W}", - - " Branch,", - " SOURCE Supply Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " SOURCE Supply Outlet Pipe, !- Component 1 Name", - " SOURCE Supply Heating-Pipe Node, !- Component 1 Inlet Node Name", - " SOURCE Supply Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " SOURCE Supply Outlet Pipe, !- Name", - " SOURCE Supply Heating-Pipe Node, !- Inlet Node Name", - " SOURCE Supply Outlet Node; !- Outlet Node Name", - - " BranchList,", - " SOURCE Demand Branches, !- Name", - " SOURCE Demand Inlet Branch, !- Branch 1 Name", - " SOURCE Demand HX Branch, !- Branch 2 Name", - " SOURCE Demand Outlet Branch; !- Branch 3 Name", - - " ConnectorList,", - " SOURCE Demand Connectors,!- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " SOURCE Demand Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " SOURCE Demand Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " SOURCE Demand Splitter, !- Nam", - " SOURCE Demand Inlet Branch, !- Inlet Branch Name", - " SOURCE Demand HX Branch; !- Outlet Branch 1 Name", - - " Connector:Mixer,", - " SOURCE Demand Mixer, !- Name", - " SOURCE Demand Outlet Branch, !- Outlet Branch Name", - " SOURCE Demand HX Branch; !- Inlet Branch 1 Name", - - " Branch,", - " SOURCE Demand Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " SOURCE Demand Inlet Pipe,!- Component 1 Name", - " SOURCE Demand Inlet Node,!- Component 1 Inlet Node Name", - " SOURCE Demand Pipe-HX Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " SOURCE Demand Inlet Pipe,!- Name", - " SOURCE Demand Inlet Node,!- Inlet Node Name", - " SOURCE Demand Pipe-HX Node; !- Outlet Node Name", - - " Branch,", - " SOURCE Demand HX Branch, !- Name", - " , !- Pressure Drop Curve Name", - " HeatExchanger:FluidToFluid, !- Component 1 Object Type", - " SOURCE to TRANSFER HX, !- Component 1 Name", - " SOURCE Demand HX Inlet Node, !- Component 1 Inlet Node Name", - " SOURCE Demand HX Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " SOURCE Demand Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " SOURCE Demand Outlet Pipe, !- Component 1 Name", - " SOURCE Demand Load Profile-Pipe Node, !- Component 1 Inlet Node Name", - " SOURCE Demand Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " SOURCE Demand Outlet Pipe, !- Name", - " SOURCE Demand Load Profile-Pipe Node, !- Inlet Node Name", - " SOURCE Demand Outlet Node; !- Outlet Node Name", - - " ScheduleTypeLimits,", - " Any Number; !- Name", - - " ScheduleTypeLimits,", - " On/Off, !- Name", - " 0, !- Lower Limit Value", - " 1, !- Upper Limit Value", - " DISCRETE; !- Numeric Type", - - " Schedule:Compact,", - " Use Cool Loop Temp Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " THROUGH: 12/31, !- Field 1", - " FOR: AllDays, !- Field 2", - " UNTIL: 24:00,25.0; !- Field 3", - - " Schedule:Compact,", - " Use Heat Loop Temp Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " THROUGH: 12/31, !- Field 1", - " FOR: AllDays, !- Field 2", - " UNTIL: 24:00,15.0; !- Field 3", - - " Schedule:Compact,", - " TRANSFER Dual Loop Hi Temp Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " THROUGH: 12/31, !- Field 1", - " FOR: AllDays, !- Field 2", - " UNTIL: 24:00,22.5; !- Field 3", - - " Schedule:Compact,", - " TRANSFER Dual Loop Lo Temp Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " THROUGH: 12/31, !- Field 1", - " FOR: AllDays, !- Field 2", - " UNTIL: 24:00,21.0; !- Field 3", - - " Schedule:Compact,", - " SOURCE Loop Temp Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " THROUGH: 12/31, !- Field 1", - " FOR: AllDays, !- Field 2", - " UNTIL: 24:00,20.0; !- Field 3", - - " Schedule:Compact,", - " AlwaysOnSchedule, !- Name", - " On/Off, !- Schedule Type Limits Name", - " THROUGH: 12/31, !- Field 1", - " FOR: AllDays, !- Field 2", - " UNTIL: 24:00,1; !- Field 3", - - " Schedule:Compact,", - " Heat Load Profile 1 Load Schedule, !- Name", - " Any Number, !- Schedule Type Limits Name", - " THROUGH: 12/31, !- Field 1", - " FOR: AllDays, !- Field 2", - " UNTIL: 12:00,8000, !- Field 3", - " UNTIL: 14:00,8000, !- Field 5", - " UNTIL: 16:00,8000, !- Field 7", - " UNTIL: 17:00,8000, !- Field 9", - " UNTIL: 20:00,8000, !- Field 11", - " UNTIL: 24:00,8000; !- Field 13", - - " Schedule:Compact,", - " Heat Load Profile 1 Flow Frac Schedule, !- Name", - " Any Number, !- Schedule Type Limits Name", - " THROUGH: 12/31, !- Field 1", - " FOR: AllDays, !- Field 2", - " UNTIL: 24:00,1.0; !- Field 3", - - " Schedule:Compact,", - " Cool Load Profile 1 Load Schedule, !- Name", - " Any Number, !- Schedule Type Limits Name", - " THROUGH: 12/31, !- Field 1", - " FOR: AllDays, !- Field 2", - " UNTIL: 2:00,0.0, !- Field 3", - " UNTIL: 4:00,0.0, !- Field 5", - " UNTIL: 5:00,0.0, !- Field 7", - " UNTIL: 8:00,0.0, !- Field 9", - " UNTIL: 12:00,0.0, !- Field 11", - " UNTIL: 24:00,0.0; !- Field 13", - - " Schedule:Compact,", - " cool Load Profile 1 Flow Frac Schedule, !- Name", - " Any Number, !- Schedule Type Limits Name", - " THROUGH: 12/31, !- Field 1", - " FOR: AllDays, !- Field 2", - " UNTIL: 24:00,0.0; !- Field 3", - }) ; - - ASSERT_TRUE( process_idf( idf_objects ) ); - bool ErrorsFound = false; - - DataGlobals::BeginSimFlag = true; - SimulationManager::GetProjectData(); - - OutputReportPredefined::SetPredefinedTables(); - HeatBalanceManager::SetPreConstructionInputParameters(); //establish array bounds for constructions early - OutputProcessor::TimeValue.allocate( 2 ); - OutputProcessor::SetupTimePointers( "Zone", DataGlobals::TimeStepZone ); // Set up Time pointer for HB/Zone Simulation - OutputProcessor::SetupTimePointers( "HVAC", DataHVACGlobals::TimeStepSys ); - PlantManager::CheckIfAnyPlant(); - createFacilityElectricPowerServiceObject(); - BranchInputManager::ManageBranchInput(); // just gets input and returns. - DataGlobals::DoingSizing = false; - DataGlobals::KickOffSimulation = true; - - WeatherManager::ResetEnvironmentCounter(); - SimulationManager::SetupSimulation( ErrorsFound ); - DataGlobals::KickOffSimulation = false; - - int EnvCount = 0; - DataGlobals::WarmupFlag = true; - bool Available ( true ); - - while ( Available ) { - - WeatherManager::GetNextEnvironment( Available, ErrorsFound ); - - if ( ! Available ) break; - if ( ErrorsFound ) break; - - ++EnvCount; - - DataGlobals::BeginEnvrnFlag = true; - DataGlobals::EndEnvrnFlag = false; - DataEnvironment::EndMonthFlag = false; - DataGlobals::WarmupFlag = true; - DataGlobals::DayOfSim = 0; - DataGlobals::DayOfSimChr = "0"; - - while ( ( DataGlobals::DayOfSim < DataGlobals::NumOfDayInEnvrn ) || ( DataGlobals::WarmupFlag ) ) { // Begin day loop ... - - ++DataGlobals::DayOfSim; - - if ( ! DataGlobals::WarmupFlag ) { - ++DataEnvironment::CurrentOverallSimDay; - } - DataGlobals::BeginDayFlag = true; - DataGlobals::EndDayFlag = false; - - for ( DataGlobals::HourOfDay = 1; DataGlobals::HourOfDay <= 24; ++DataGlobals::HourOfDay ) { // Begin hour loop ... - - DataGlobals::BeginHourFlag = true; - DataGlobals::EndHourFlag = false; - - for ( DataGlobals::TimeStep = 1; DataGlobals::TimeStep <= DataGlobals::NumOfTimeStepInHour; ++DataGlobals::TimeStep ) { - - DataGlobals::BeginTimeStepFlag = true; - - // Set the End__Flag variables to true if necessary. Note that - // each flag builds on the previous level. EndDayFlag cannot be - // .TRUE. unless EndHourFlag is also .TRUE., etc. Note that the - // EndEnvrnFlag and the EndSimFlag cannot be set during warmup. - // Note also that BeginTimeStepFlag, EndTimeStepFlag, and the - // SubTimeStepFlags can/will be set/reset in the HVAC Manager. - - if ( DataGlobals::TimeStep == DataGlobals::NumOfTimeStepInHour ) { - DataGlobals::EndHourFlag = true; - if ( DataGlobals::HourOfDay == 24 ) { - DataGlobals::EndDayFlag = true; - if ( ( !DataGlobals:: WarmupFlag ) && ( DataGlobals::DayOfSim == DataGlobals::NumOfDayInEnvrn ) ) { - DataGlobals::EndEnvrnFlag = true; - } - } - } + std::string const idf_objects = delimited_string({ + "Version,8.4;", + + "Building,", + "Plant Load Profile Example, !- Name", + " 0.0, !- North Axis {deg}", + " Suburbs, !- Terrain", + " 0.04, !- Loads Convergence Tolerance Value", + " 0.04, !- Temperature Convergence Tolerance Value {deltaC}", + " FullInteriorAndExterior, !- Solar Distribution", + " 25, !- Maximum Number of Warmup Days", + " 6; !- Minimum Number of Warmup Days", + + " Timestep,6;", + + " GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " CounterClockWise, !- Vertex Entry Direction", + " Relative; !- Coordinate System", + + " Site:Location,", + " CHICAGO_IL_USA_WMO_725300, !- Name", + " 42.00, !- Latitude {deg}", + " -87.88, !- Longitude {deg}", + " -6.00, !- Time Zone {hr}", + " 190.00; !- Elevation {m}", + + " SizingPeriod:DesignDay,", + " CHICAGO Ann Htg 99% Condns DB, !- Name", + " 1, !- Month", + " 21, !- Day of Month", + " WinterDesignDay, !- Day Type", + " -17.3, !- Maximum Dry-Bulb Temperature {C}", + " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 4.9, !- Wind Speed {m/s}", + " 270, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 0.00; !- Sky Clearness", + + " RunPeriod,", + " Jan, !- Name", + " 1, !- Begin Month", + " 1, !- Begin Day of Month", + " , !- Begin Year", + " 1, !- End Month", + " 2, !- End Day of Month", + " , !- End Year", + " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " Yes; !- Use Weather File Snow Indicators", + + " SimulationControl,", + " NO, !- Do Zone Sizing Calculation", + " NO, !- Do System Sizing Calculation", + " NO, !- Do Plant Sizing Calculation", + " Yes, !- Run Simulation for Sizing Periods", + " No; !- Run Simulation for Weather File Run Periods", + + " PlantLoop,", + " Use Heat Loop, !- Name", + " WATER, !- Fluid Type", + " , !- User Defined Fluid Type", + " Use Heat Loop Operation, !- Plant Equipment Operation Scheme Name", + " Use Heat Supply Outlet Node, !- Loop Temperature Setpoint Node Name", + " 100, !- Maximum Loop Temperature {C}", + " 3, !- Minimum Loop Temperature {C}", + " 0.003, !- Maximum Loop Flow Rate {m3/s}", + " 0, !- Minimum Loop Flow Rate {m3/s}", + " 1.0, !- Plant Loop Volume {m3}", + " Use Heat Supply Inlet Node, !- Plant Side Inlet Node Name", + " Use Heat Supply Outlet Node, !- Plant Side Outlet Node Name", + " Use Heat Supply Branches,!- Plant Side Branch List Name", + " Use Heat Supply Connectors, !- Plant Side Connector List Name", + " Use Heat Demand Inlet Node, !- Demand Side Inlet Node Name", + " Use Heat Demand Outlet Node, !- Demand Side Outlet Node Name", + " Use Heat Demand Branches,!- Demand Side Branch List Name", + " Use Heat Demand Connectors, !- Demand Side Connector List Name", + " Optimal, !- Load Distribution Scheme", + " , !- Availability Manager List Name", + " , !- Plant Loop Demand Calculation Scheme", + " , !- Common Pipe Simulation", + " , !- Pressure Simulation Type", + " 2.0; !- Loop Circulation Time {minutes}", + + " SetpointManager:Scheduled,", + " Use Heat Loop Setpoint Manager, !- Name", + " Temperature, !- Control Variable", + " Use Heat Loop Temp Sch, !- Schedule Name", + " Use Heat Loop Setpoint Node List; !- Setpoint Node or NodeList Name", + + " NodeList,", + " Use Heat Loop Setpoint Node List, !- Name", + " Use Heat Supply Outlet Node; !- Node 1 Name", + + " PlantEquipmentOperationSchemes,", + " Use Heat Loop Operation, !- Name", + " PlantEquipmentOperation:Uncontrolled, !- Control Scheme 1 Object Type", + " USE Heat operation, !- Control Scheme 1 Name", + " AlwaysOnSchedule; !- Control Scheme 1 Schedule Name", + + " PlantEquipmentOperation:Uncontrolled,", + " USE Heat operation, !- Name", + " TRANSFER to USE Heat HX equip; !- Equipment List Name", + + " PlantEquipmentList,", + " TRANSFER to USE Heat HX equip, !- Name", + " HeatExchanger:FluidToFluid, !- Equipment 1 Object Type", + " TRANSFER to USE Heat HX; !- Equipment 1 Name", + + " BranchList,", + " USE Heat Supply Branches,!- Name", + " USE Heat Supply Inlet Branch, !- Branch 1 Name", + " USE Heat Heating Branch, !- Branch 2 Name", + " USE Heat Supply Outlet Branch; !- Branch 3 Name", + + " ConnectorList,", + " USE Heat Supply Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " USE Heat Supply Splitter,!- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " USE Heat Supply Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " USE Heat Supply Splitter,!- Name", + " USE Heat Supply Inlet Branch, !- Inlet Branch Name", + " USE Heat Heating Branch; !- Outlet Branch 1 Name", + + " Connector:Mixer,", + " USE Heat Supply Mixer, !- Name", + " USE Heat Supply Outlet Branch, !- Outlet Branch Name", + " USE Heat Heating Branch; !- Inlet Branch 1 Name", + + " Branch,", + " USE Heat Supply Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pump:VariableSpeed, !- Component 1 Object Type", + " USE Heat Pump, !- Component 1 Name", + " USE Heat Supply Inlet Node, !- Component 1 Inlet Node Name", + " USE Heat Supply Pump-Heating Node; !- Component 1 Outlet Node Name", + + " Pump:VariableSpeed,", + " USE Heat Pump, !- Name", + " USE Heat Supply Inlet Node, !- Inlet Node Name", + " USE Heat Supply Pump-Heating Node, !- Outlet Node Name", + " 0.005, !- Rated Flow Rate {m3/s}", + " 1, !- Rated Pump Head {Pa}", + " 0.01, !- Rated Power Consumption {W}", + " 0.87, !- Motor Efficiency", + " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", + " 0, !- Coefficient 1 of the Part Load Performance Curve", + " 1, !- Coefficient 2 of the Part Load Performance Curve", + " 0, !- Coefficient 3 of the Part Load Performance Curve", + " 0, !- Coefficient 4 of the Part Load Performance Curve", + " 0, !- Minimum Flow Rate {m3/s}", + " INTERMITTENT; !- Pump Control Type", + + " Branch,", + " USE Heat Heating Branch, !- Name", + " , !- Pressure Drop Curve Name", + " HeatExchanger:FluidToFluid, !- Component 1 Object Type", + " TRANSFER to USE Heat HX, !- Component 1 Name", + " USE Heat Supply Heating Inlet Node, !- Component 1 Inlet Node Name", + " USE Heat Supply Heating Outlet Node; !- Component 1 Outlet Node Name", + + " HeatExchanger:FluidToFluid,", + " TRANSFER to USE Heat HX, !- Name", + " AlwaysOnSchedule, !- Availability Schedule Name", + " TRANSFER Heat Demand HX Inlet Node, !- Loop Demand Side Inlet Node Name", + " TRANSFER Heat Demand HX Outlet Node, !- Loop Demand Side Outlet Node Name", + " 0.003, !- Loop Demand Side Design Flow Rate {m3/s}", + " USE Heat Supply Heating Inlet Node, !- Loop Supply Side Inlet Node Name", + " USE Heat Supply Heating Outlet Node, !- Loop Supply Side Outlet Node Name", + " 0.003, !- Loop Supply Side Design Flow Rate {m3/s}", + " CrossFlowBothUnMixed, !- Heat Exchange Model Type", + " 15000, !- Heat Exchanger U-Factor Times Area Value {W/k}", + " HeatingSetpointModulated,!- Control Type", + " Use heat Supply Outlet Node, !- Heat Exchanger Setpoint Node Name", + " 0.2, !- Minimum Temperature Difference to Activate Heat Exchanger {deltaC}", + " LoopToLoop; !- Heat Transfer Metering End Use Type", + + " Branch,", + " USE Heat Supply Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " USE Heat Supply Outlet Pipe, !- Component 1 Name", + " USE Heat Supply Heating-Pipe Node, !- Component 1 Inlet Node Name", + " USE Heat Supply Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " USE Heat Supply Outlet Pipe, !- Name", + " USE Heat Supply Heating-Pipe Node, !- Inlet Node Name", + " USE Heat Supply Outlet Node; !- Outlet Node Name", + + " BranchList,", + " USE Heat Demand Branches,!- Name", + " USE Heat Demand Inlet Branch, !- Branch 1 Name", + " USE Heat Load Profile Branch 1, !- Branch 2 Name", + " USE Heat Demand Outlet Branch; !- Branch 3 Name", + + " ConnectorList,", + " USE Heat Demand Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " USE Heat Demand Splitter,!- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " USE Heat Demand Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " USE Heat Demand Splitter,!- ", + " USE Heat Demand Inlet Branch, !- Inlet Branch Name", + " USE Heat Load Profile Branch 1; !- Outlet Branch 1 Name", + + " Connector:Mixer,", + " USE Heat Demand Mixer, !- Name", + " USE Heat Demand Outlet Branch, !- Outlet Branch Name", + " USE Heat Load Profile Branch 1; !- Inlet Branch 1 Name", + + " Branch,", + " USE Heat Demand Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " USE Heat Demand Inlet Pipe, !- Component 1 Name", + " USE Heat Demand Inlet Node, !- Component 1 Inlet Node Name", + " USE Heat Demand Pipe-Load Profile Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " USE Heat Demand Inlet Pipe, !- Name", + " USE Heat Demand Inlet Node, !- Inlet Node Name", + " USE Heat Demand Pipe-Load Profile Node; !- Outlet Node Name", + + " Branch,", + " USE Heat Load Profile Branch 1, !- Name", + " , !- Pressure Drop Curve Name", + " LoadProfile:Plant, !- Component 1 Object Type", + " Heat Load Profile 1, !- Component 1 Name", + " Heat Demand Load Profile 1 Inlet Node, !- Component 1 Inlet Node Name", + " Heat Demand Load Profile 1 Outlet Node; !- Component 1 Outlet Node Name", + + " LoadProfile:Plant,", + " Heat Load Profile 1, !- Name", + " Heat Demand Load Profile 1 Inlet Node, !- Inlet Node Name", + " Heat Demand Load Profile 1 Outlet Node, !- Outlet Node Name", + " Heat Load Profile 1 Load Schedule, !- Load Schedule Name", + " 0.002, !- Peak Flow Rate {m3/s}", + " Heat Load Profile 1 Flow Frac Schedule; !- Flow Rate Fraction Schedule Name", + + " Branch,", + " USE Heat Demand Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " USE Heat Demand Outlet Pipe, !- Component 1 Name", + " USE Heat Demand Load Profile-Pipe Node, !- Component 1 Inlet Node Name", + " USE Heat Demand Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " USE Heat Demand Outlet Pipe, !- Name", + " USE Heat Demand Load Profile-Pipe Node, !- Inlet Node Name", + " USE Heat Demand Outlet Node; !- Outlet Node Name", + + " PlantLoop,", + " Use Cool Loop, !- Name", + " WATER, !- Fluid Type", + " , !- User Defined Fluid Type", + " Use Cool Loop Operation, !- Plant Equipment Operation Scheme Name", + " Use Cool Supply Outlet Node, !- Loop Temperature Setpoint Node Name", + " 100, !- Maximum Loop Temperature {C}", + " 3, !- Minimum Loop Temperature {C}", + " 0.003, !- Maximum Loop Flow Rate {m3/s}", + " 0, !- Minimum Loop Flow Rate {m3/s}", + " 1.0, !- Plant Loop Volume {m3}", + " Use Cool Supply Inlet Node, !- Plant Side Inlet Node Name", + " Use Cool Supply Outlet Node, !- Plant Side Outlet Node Name", + " Use Cool Supply Branches,!- Plant Side Branch List Name", + " Use Cool Supply Connectors, !- Plant Side Connector List Name", + " Use Cool Demand Inlet Node, !- Demand Side Inlet Node Name", + " Use Cool Demand Outlet Node, !- Demand Side Outlet Node Name", + " Use Cool Demand Branches,!- Demand Side Branch List Name", + " Use Cool Demand Connectors, !- Demand Side Connector List Name", + " Optimal, !- Load Distribution Scheme", + " , !- Availability Manager List Name", + " , !- Plant Loop Demand Calculation Scheme", + " , !- Common Pipe Simulation", + " , !- Pressure Simulation Type", + " 2.0; !- Loop Circulation Time {minutes}", + + " SetpointManager:Scheduled,", + " Use Cool Loop Setpoint Manager, !- Name", + " Temperature, !- Control Variable", + " Use Cool Loop Temp Sch, !- Schedule Name", + " Use Cool Loop Setpoint Node List; !- Setpoint Node or NodeList Name", + + " NodeList,", + " Use Cool Loop Setpoint Node List, !- Name", + " Use Cool Supply Outlet Node; !- Node 1 Name", + + " PlantEquipmentOperationSchemes,", + " Use Cool Loop Operation, !- Name", + " PlantEquipmentOperation:Uncontrolled, !- Control Scheme 1 Object Type", + " USE Cool operation, !- Control Scheme 1 Name", + " AlwaysOnSchedule; !- Control Scheme 1 Schedule Name", + + " PlantEquipmentOperation:Uncontrolled,", + " USE Cool operation, !- Name", + " TRANSFER to USE Cool HX equip; !- Equipment List Name", + + " PlantEquipmentList,", + " TRANSFER to USE Cool HX equip, !- Name", + " HeatExchanger:FluidToFluid, !- Equipment 1 Object Type", + " TRANSFER to USE Cool HX; !- Equipment 1 Name", + + " BranchList,", + " USE Cool Supply Branches,!- Name", + " USE Cool Supply Inlet Branch, !- Branch 1 Name", + " USE Cooling Branch, !- Branch 2 Name", + " USE Cool Supply Outlet Branch; !- Branch 3 Name", + + " ConnectorList,", + " USE Cool Supply Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " USE Cool Supply Splitter,!- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " USE Cool Supply Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " USE Cool Supply Splitter,!- Name", + " USE Cool Supply Inlet Branch, !- Inlet Branch Name", + " USE Cooling Branch; !- Outlet Branch 1 Name", + + " Connector:Mixer,", + " USE Cool Supply Mixer, !- Name", + " USE Cool Supply Outlet Branch, !- Outlet Branch Name", + " USE Cooling Branch; !- Inlet Branch 1 Name", + + " Branch,", + " USE Cool Supply Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pump:VariableSpeed, !- Component 1 Object Type", + " USE Cool Pump, !- Component 1 Name", + " USE Cool Supply Inlet Node, !- Component 1 Inlet Node Name", + " USE Cool Supply Pump-Heating Node; !- Component 1 Outlet Node Name", + + " Pump:VariableSpeed,", + " USE Cool Pump, !- Name", + " USE Cool Supply Inlet Node, !- Inlet Node Name", + " USE Cool Supply Pump-Heating Node, !- Outlet Node Name", + " 0.005, !- Rated Flow Rate {m3/s}", + " 1, !- Rated Pump Head {Pa}", + " 0.01, !- Rated Power Consumption {W}", + " 0.87, !- Motor Efficiency", + " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", + " 0, !- Coefficient 1 of the Part Load Performance Curve", + " 1, !- Coefficient 2 of the Part Load Performance Curve", + " 0, !- Coefficient 3 of the Part Load Performance Curve", + " 0, !- Coefficient 4 of the Part Load Performance Curve", + " 0, !- Minimum Flow Rate {m3/s}", + " INTERMITTENT; !- Pump Control Type", + + " Branch,", + " USE Cooling Branch, !- Name", + " , !- Pressure Drop Curve Name", + " HeatExchanger:FluidToFluid, !- Component 1 Object Type", + " TRANSFER to USE Cool HX, !- Component 1 Name", + " USE Cool Supply Cooling Inlet Node, !- Component 1 Inlet Node Name", + " USE Cool Supply Cooling Outlet Node; !- Component 1 Outlet Node Name", + + " HeatExchanger:FluidToFluid,", + " TRANSFER to USE Cool HX, !- Name", + " AlwaysOnSchedule, !- Availability Schedule Name", + " TRANSFER Demand HX Cool Inlet Node, !- Loop Demand Side Inlet Node Name", + " TRANSFER Demand HX Cool Outlet Node, !- Loop Demand Side Outlet Node Name", + " 0.003, !- Loop Demand Side Design Flow Rate {m3/s}", + " USE Cool Supply Cooling Inlet Node, !- Loop Supply Side Inlet Node Name", + " USE Cool Supply Cooling Outlet Node, !- Loop Supply Side Outlet Node Name", + " 0.003, !- Loop Supply Side Design Flow Rate {m3/s}", + " CrossFlowBothUnMixed, !- Heat Exchange Model Type", + " 15000, !- Heat Exchanger U-Factor Times Area Value {W/k}", + " CoolingSetpointModulated,!- Control Type", + " Use Cool Supply Outlet Node, !- Heat Exchanger Setpoint Node Name", + " 0.2, !- Minimum Temperature Difference to Activate Heat Exchanger {deltaC}", + " LoopToLoop; !- Heat Transfer Metering End Use Type", + + " Branch,", + " USE Cool Supply Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " USE Cool Supply Outlet Pipe, !- Component 1 Name", + " USE Cool Supply Heating-Pipe Node, !- Component 1 Inlet Node Name", + " USE Cool Supply Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " USE Cool Supply Outlet Pipe, !- Name", + " USE Cool Supply Heating-Pipe Node, !- Inlet Node Name", + " USE Cool Supply Outlet Node; !- Outlet Node Name", + + " BranchList,", + " USE Cool Demand Branches,!- Name", + " USE Cool Demand Inlet Branch, !- Branch 1 Name", + " USE Cool Load Profile Branch 1, !- Branch 2 Name", + " USE Cool Demand Outlet Branch; !- Branch 3 Name", + + " ConnectorList,", + " USE Cool Demand Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " USE Cool Demand Splitter,!- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " USE Cool Demand Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " USE Cool Demand Splitter,!- Name", + " USE Cool Demand Inlet Branch, !- Inlet Branch Name", + " USE Cool Load Profile Branch 1; !- Outlet Branch 1 Name", + + " Connector:Mixer,", + " USE Cool Demand Mixer, !- Name", + " USE Cool Demand Outlet Branch, !- Outlet Branch Name", + " USE Cool Load Profile Branch 1; !- Inlet Branch 1 Name", + + " Branch,", + " USE Cool Demand Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " USE Cool Demand Inlet Pipe, !- Component 1 Name", + " USE Cool Demand Inlet Node, !- Component 1 Inlet Node Name", + " USE Cool Demand Pipe-Load Profile Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " USE Cool Demand Inlet Pipe, !- Name", + " USE Cool Demand Inlet Node, !- Inlet Node Name", + " USE Cool Demand Pipe-Load Profile Node; !- Outlet Node Name", + + " Branch,", + " USE Cool Load Profile Branch 1, !- Name", + " , !- Pressure Drop Curve Name", + " LoadProfile:Plant, !- Component 1 Object Type", + " Cool Load Profile 1, !- Component 1 Name", + " Demand Cool Load Profile 1 Inlet Node, !- Component 1 Inlet Node Name", + " Demand Cool Load Profile 1 Outlet Node; !- Component 1 Outlet Node Name", + + " LoadProfile:Plant,", + " Cool Load Profile 1, !- Name", + " Demand Cool Load Profile 1 Inlet Node, !- Inlet Node Name", + " Demand Cool Load Profile 1 Outlet Node, !- Outlet Node Name", + " Cool Load Profile 1 Load Schedule, !- Load Schedule Name", + " 0.002, !- Peak Flow Rate {m3/s}", + " Cool Load Profile 1 Flow Frac Schedule; !- Flow Rate Fraction Schedule Name", + + " Branch,", + " USE Cool Demand Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " USE Cool Demand Outlet Pipe, !- Component 1 Name", + " USE Cool Demand Load Profile-Pipe Node, !- Component 1 Inlet Node Name", + " USE Cool Demand Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " USE Cool Demand Outlet Pipe, !- Name", + " USE Cool Demand Load Profile-Pipe Node, !- Inlet Node Name", + " USE Cool Demand Outlet Node; !- Outlet Node Name", + + " PlantLoop,", + " TRANSFER Loop, !- Name", + " WATER, !- Fluid Type", + " , !- User Defined Fluid Type", + " TRANSFER Loop Operation, !- Plant Equipment Operation Scheme Name", + " TRANSFER Supply Outlet Node, !- Loop Temperature Setpoint Node Name", + " 100, !- Maximum Loop Temperature {C}", + " 3, !- Minimum Loop Temperature {C}", + " 0.003, !- Maximum Loop Flow Rate {m3/s}", + " 0, !- Minimum Loop Flow Rate {m3/s}", + " 1.0, !- Plant Loop Volume {m3}", + " TRANSFER Supply Inlet Node, !- Plant Side Inlet Node Name", + " TRANSFER Supply Outlet Node, !- Plant Side Outlet Node Name", + " TRANSFER Supply Branches,!- Plant Side Branch List Name", + " TRANSFER Supply Connectors, !- Plant Side Connector List Name", + " TRANSFER Demand Inlet Node, !- Demand Side Inlet Node Name", + " TRANSFER Demand Outlet Node, !- Demand Side Outlet Node Name", + " TRANSFER Demand Branches,!- Demand Side Branch List Name", + " TRANSFER Demand Connectors, !- Demand Side Connector List Name", + " OPTIMAL, !- Load Distribution Scheme", + " , !- Availability Manager List Name", + " DualSetpointDeadband, !- Plant Loop Demand Calculation Scheme", + " , !- Common Pipe Simulation", + " , !- Pressure Simulation Type", + " 2.0; !- Loop Circulation Time {minutes}", + + " SetpointManager:Scheduled:dualSetpoint,", + " TRANSFER Loop Dual Setpoint Manager, !- Name", + " Temperature, !- Control Variable", + " TRANSFER Dual Loop Hi Temp Sch, !- High Setpoint Schedule Name", + " TRANSFER Dual Loop Lo Temp Sch, !- Low Setpoint Schedule Name", + " TRANSFER Loop Setpoint Node List; !- Setpoint Node or NodeList Name", + + " NodeList,", + " TRANSFER Loop Setpoint Node List, !- Name", + " TRANSFER Supply Outlet Node; !- Node 1 Name", + + " PlantEquipmentOperationSchemes,", + " TRANSFER Loop Operation, !- Name", + " PlantEquipmentOperation:Uncontrolled, !- Control Scheme 1 Object Type", + " TRANSFER HX, !- Control Scheme 1 Name", + " AlwaysOnSchedule; !- Control Scheme 1 Schedule Name", + + " PlantEquipmentOperation:Uncontrolled,", + " TRANSFER HX, !- Name", + " TRANSFER Plant; !- Equipment List Name", + + " PlantEquipmentList,", + " TRANSFER Plant, !- Name", + " HeatExchanger:FluidToFluid, !- Equipment 1 Object Type", + " SOURCE to TRANSFER HX; !- Equipment 1 Name", + + " BranchList,", + " TRANSFER Supply Branches,!- Name", + " TRANSFER Supply Inlet Branch, !- Branch 1 Name", + " TRANSFER HX Branch, !- Branch 2 Name", + " TRANSFER Supply Outlet Branch; !- Branch 3 Name", + + " ConnectorList,", + " TRANSFER Supply Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " TRANSFER Supply Splitter,!- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " TRANSFER Supply Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " TRANSFER Supply Splitter,!- Name", + " TRANSFER Supply Inlet Branch, !- Inlet Branch Name", + " TRANSFER HX Branch; !- Outlet Branch 1 Name", + + " Connector:Mixer,", + " TRANSFER Supply Mixer, !- Name", + " TRANSFER Supply Outlet Branch, !- Outlet Branch Name", + " TRANSFER HX Branch; !- Inlet Branch 1 Name", + + " Branch,", + " TRANSFER Supply Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pump:VariableSpeed, !- Component 1 Object Type", + " TRANSFER Pump, !- Component 1 Name", + " TRANSFER Supply Inlet Node, !- Component 1 Inlet Node Name", + " TRANSFER Supply Pump-Heating Node; !- Component 1 Outlet Node Name", + + " Pump:VariableSpeed,", + " TRANSFER Pump, !- Name", + " TRANSFER Supply Inlet Node, !- Inlet Node Name", + " TRANSFER Supply Pump-Heating Node, !- Outlet Node Name", + " 0.005, !- Rated Flow Rate {m3/s}", + " 1, !- Rated Pump Head {Pa}", + " 0.01, !- Rated Power Consumption {W}", + " 0.87, !- Motor Efficiency", + " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", + " 0, !- Coefficient 1 of the Part Load Performance Curve", + " 1, !- Coefficient 2 of the Part Load Performance Curve", + " 0, !- Coefficient 3 of the Part Load Performance Curve", + " 0, !- Coefficient 4 of the Part Load Performance Curve", + " 0, !- Minimum Flow Rate {m3/s}", + " INTERMITTENT; !- Pump Control Type", + + " Branch,", + " TRANSFER HX Branch, !- Name", + " , !- Pressure Drop Curve Name", + " HeatExchanger:FluidToFluid, !- Component 1 Object Type", + " SOURCE to TRANSFER HX, !- Component 1 Name", + " TRANSFER HX Supply Inlet Node, !- Component 1 Inlet Node Name", + " TRANSFER HX Supply Outlet Node; !- Component 1 Outlet Node Name", + + " HeatExchanger:FluidToFluid,", + " SOURCE to TRANSFER HX, !- Name", + " AlwaysOnSchedule, !- Availability Schedule Name", + " SOURCE Demand HX Inlet Node, !- Loop Demand Side Inlet Node Name", + " SOURCE Demand HX Outlet Node, !- Loop Demand Side Outlet Node Name", + " 0.003, !- Loop Demand Side Design Flow Rate {m3/s}", + " TRANSFER HX Supply Inlet Node, !- Loop Supply Side Inlet Node Name", + " TRANSFER HX Supply Outlet Node, !- Loop Supply Side Outlet Node Name", + " 0.003, !- Loop Supply Side Design Flow Rate {m3/s}", + " CrossFlowBothUnMixed, !- Heat Exchange Model Type", + " 15000, !- Heat Exchanger U-Factor Times Area Value {W/k}", + " DualDeadbandSetpointModulated, !- Control Type", + " TRANSFER Supply Outlet Node, !- Heat Exchanger Setpoint Node Name", + " 0.2, !- Minimum Temperature Difference to Activate Heat Exchanger {deltaC}", + " LoopToLoop; !- Heat Transfer Metering End Use Type", + + " Branch,", + " TRANSFER Supply Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " TRANSFER Supply Outlet Pipe, !- Component 1 Name", + " TRANSFER Supply HX-Pipe Node, !- Component 1 Inlet Node Name", + " TRANSFER Supply Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " TRANSFER Supply Outlet Pipe, !- Name", + " TRANSFER Supply HX-Pipe Node, !- Inlet Node Name", + " TRANSFER Supply Outlet Node; !- Outlet Node Name", + + " BranchList,", + " TRANSFER Demand Branches,!- Name", + " TRANSFER Demand Inlet Branch, !- Branch 1 Name", + " TRANSFER Demand HX Branch 1, !- Branch 2 Name", + " TRANSFER Demand HX Branch 2, !- Branch 3 Name", + " TRANSFER Demand Outlet Branch; !- Branch 4 Name", + + " ConnectorList,", + " TRANSFER Demand Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " TRANSFER Demand Splitter,!- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " TRANSFER Demand Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " TRANSFER Demand Splitter,!- Name", + " TRANSFER Demand Inlet Branch, !- Inlet Branch Name", + " TRANSFER Demand HX Branch 1, !- Outlet Branch 1 Name", + " TRANSFER Demand HX Branch 2; !- Outlet Branch 2 Name", + + " Connector:Mixer,", + " TRANSFER Demand Mixer, !- Name", + " TRANSFER Demand Outlet Branch, !- Outlet Branch Name", + " TRANSFER Demand HX Branch 1, !- Inlet Branch 1 Name", + " TRANSFER Demand HX Branch 2; !- Inlet Branch 2 Name", + + " Branch,", + " TRANSFER Demand Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " TRANSFER Demand Inlet Pipe, !- Component 1 Name", + " TRANSFER Demand Inlet Node, !- Component 1 Inlet Node Name", + " TRANSFER Demand Pipe-Load Profile Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " TRANSFER Demand Inlet Pipe, !- Name", + " TRANSFER Demand Inlet Node, !- Inlet Node Name", + " TRANSFER Demand Pipe-Load Profile Node; !- Outlet Node Name", + + " Branch,", + " TRANSFER Demand HX Branch 1, !- Name", + " , !- Pressure Drop Curve Name", + " HeatExchanger:FluidToFluid, !- Component 1 Object Type", + " TRANSFER to USE Heat HX, !- Component 1 Name", + " TRANSFER heat Demand HX Inlet Node, !- Component 1 Inlet Node Name", + " TRANSFER heat Demand HX Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " TRANSFER Demand HX Branch 2, !- Name", + " , !- Pressure Drop Curve ", + " HeatExchanger:FluidToFluid, !- Component 1 Object Type", + " TRANSFER to USE cool HX, !- Component 1 Name", + " TRANSFER Demand HX Cool Inlet Node, !- Component 1 Inlet Node Name", + " TRANSFER Demand HX cool Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " TRANSFER Demand Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " TRANSFER Demand Outlet Pipe, !- Component 1 Name", + " TRANSFER Demand Load Profile-Pipe Node, !- Component 1 Inlet Node Name", + " TRANSFER Demand Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " TRANSFER Demand Outlet Pipe, !- Name", + " TRANSFER Demand Load Profile-Pipe Node, !- Inlet Node Name", + " TRANSFER Demand Outlet Node; !- Outlet Node Name", + + " PlantLoop,", + " SOURCE Loop, !- Name", + " WATER, !- Fluid Type", + " , !- User Defined Fluid Type", + " SOURCE Loop Operation, !- Plant Equipment Operation Scheme Name", + " SOURCE Supply Outlet Node, !- Loop Temperature Setpoint Node Name", + " 100, !- Maximum Loop Temperature {C}", + " 3, !- Minimum Loop Temperature {C}", + " 0.003, !- Maximum Loop Flow Rate {m3/s}", + " 0, !- Minimum Loop Flow Rate {m3/s}", + " 1.0, !- Plant Loop Volume {m3}", + " SOURCE Supply Inlet Node,!- Plant Side Inlet Node Name", + " SOURCE Supply Outlet Node, !- Plant Side Outlet Node Name", + " SOURCE Supply Branches, !- Plant Side Branch List Name", + " SOURCE Supply Connectors,!- Plant Side Connector List Name", + " SOURCE Demand Inlet Node,!- Demand Side Inlet Node Name", + " SOURCE Demand Outlet Node, !- Demand Side Outlet Node Name", + " SOURCE Demand Branches, !- Demand Side Branch List Name", + " SOURCE Demand Connectors,!- Demand Side Connector List Name", + " Optimal, !- Load Distribution Scheme", + " , !- Availability Manager List Name", + " , !- Plant Loop Demand Calculation Scheme", + " , !- Common Pipe Simulation", + " , !- Pressure Simulation Type", + " 2.0; !- Loop Circulation Time {minutes}", + + " SetpointManager:Scheduled,", + " SOURCE Loop Setpoint Manager, !- Name", + " Temperature, !- Control Variable", + " SOURCE Loop Temp Sch, !- Schedule Name", + " SOURCE Loop Setpoint Node List; !- Setpoint Node or NodeList Name", + + " NodeList,", + " SOURCE Loop Setpoint Node List, !- Name", + " SOURCE Supply Outlet Node, !- Node 1 Name", + " SOURCE Supply Heating Outlet Node, !- Node 2 Name", + " SOURCE Supply Cooling Outlet Node; !- Node 3 Name", + + " PlantEquipmentOperationSchemes,", + " SOURCE Loop Operation, !- Name", + " PlantEquipmentOperation:ComponentSetpoint, !- Control Scheme 1 Object Type", + " SOURCE Purchased Only, !- Control Scheme 1 Name", + " AlwaysOnSchedule; !- Control Scheme 1 Schedule Name", + + " PlantEquipmentOperation:ComponentSetpoint,", + " SOURCE Purchased Only, !- Name", + " DistrictCooling, !- Equipment 1 Object Type", + " SOURCE Purchased Cooling,!- Equipment 1 Name", + " SOURCE Supply Cooling Inlet Node, !- Demand Calculation 1 Node Name", + " SOURCE Supply Cooling Outlet Node, !- Setpoint 1 Node Name", + " 0.003, !- Component 1 Flow Rate {m3/s}", + " Cooling, !- Operation 1 Type", + " DistrictHeating, !- Equipment 2 Object Type", + " SOURCE Purchased Heating,!- Equipment 2 Name", + " SOURCE Supply Heating Inlet Node, !- Demand Calculation 2 Node Name", + " SOURCE Supply Heating Outlet Node, !- Setpoint 2 Node Name", + " 0.003, !- Component 2 Flow Rate {m3/s}", + " HEATINg; !- Operation 2 Type", + + " PlantEquipmentList,", + " SOURCE cooling Plant, !- Name", + " DistrictCooling, !- Equipment 1 Object Type", + " SOURCE Purchased Cooling;!- Equipment 1 Name", + + " BranchList,", + " SOURCE Supply Branches, !- Name", + " SOURCE Supply Inlet Branch, !- Branch 1 Name", + " SOURCE Cooling Branch, !- Branch 2 Name", + " SOURCE Heating Branch, !- Branch 3 Name", + " SOURCE Supply Outlet Branch; !- Branch 4 Name", + + " ConnectorList,", + " SOURCE Supply Connectors,!- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " SOURCE Supply Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " SOURCE Supply Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " SOURCE Supply Splitter, !- Name", + " SOURCE Supply Inlet Branch, !- Inlet Branch Name", + " SOURCE Cooling Branch, !- Outlet Branch 1 Name", + " SOURCE Heating Branch; !- Outlet Branch 2 Name", + + " Connector:Mixer,", + " SOURCE Supply Mixer, !- Name", + " SOURCE Supply Outlet Branch, !- Outlet Branch Name", + " SOURCE Cooling Branch, !- Inlet Branch 1 Name", + " SOURCE Heating Branch; !- Inlet Branch 2 Name", + + " Branch,", + " SOURCE Supply Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pump:VariableSpeed, !- Component 1 Object Type", + " SOURCE Pump, !- Component 1 Name", + " SOURCE Supply Inlet Node,!- Component 1 Inlet Node Name", + " SOURCE Supply Pump-district Node; !- Component 1 Outlet Node Name", + + " Pump:VariableSpeed,", + " SOURCE Pump, !- Name", + " SOURCE Supply Inlet Node,!- Inlet Node Name", + " SOURCE Supply Pump-district Node, !- Outlet Node Name", + " 0.005, !- Rated Flow Rate {m3/s}", + " 1, !- Rated Pump Head {Pa}", + " 0.01, !- Rated Power Consumption {W}", + " 0.87, !- Motor Efficiency", + " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", + " 0, !- Coefficient 1 of the Part Load Performance Curve", + " 1, !- Coefficient 2 of the Part Load Performance Curve", + " 0, !- Coefficient 3 of the Part Load Performance Curve", + " 0, !- Coefficient 4 of the Part Load Performance ", + " 0, !- Minimum Flow Rate {m3/s}", + " INTERMITTENT; !- Pump Control Type", + + " Branch,", + " SOURCE Cooling Branch, !- Name", + " , !- Pressure Drop Curve Name", + " DistrictCooling, !- Component 1 Object Type", + " SOURCE Purchased Cooling,!- Component 1 Name", + " SOURCE Supply Cooling Inlet Node, !- Component 1 Inlet Node Name", + " SOURCE Supply Cooling Outlet Node; !- Component 1 Outlet Node Name", + + " DistrictCooling,", + " SOURCE Purchased Cooling,!- Name", + " SOURCE Supply Cooling Inlet Node, !- Chilled Water Inlet Node Name", + " SOURCE Supply Cooling Outlet Node, !- Chilled Water Outlet Node Name", + " 1000000; !- Nominal Capacity {W}", + + " Branch,", + " SOURCE Heating Branch, !- Name", + " , !- Pressure Drop Curve Name", + " DistrictHeating, !- Component 1 Object Type", + " SOURCE Purchased Heating,!- Component 1 Name", + " SOURCE Supply Heating Inlet Node, !- Component 1 Inlet Node Name", + " SOURCE Supply Heating Outlet Node; !- Component 1 Outlet Node Name", + + " DistrictHeating,", + " SOURCE Purchased Heating,!- Name", + " SOURCE Supply Heating Inlet Node, !- Hot Water Inlet Node Name", + " SOURCE Supply Heating Outlet Node, !- Hot Water Outlet Node Name", + " 1000000; !- Nominal Capacity {W}", + + " Branch,", + " SOURCE Supply Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " SOURCE Supply Outlet Pipe, !- Component 1 Name", + " SOURCE Supply Heating-Pipe Node, !- Component 1 Inlet Node Name", + " SOURCE Supply Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " SOURCE Supply Outlet Pipe, !- Name", + " SOURCE Supply Heating-Pipe Node, !- Inlet Node Name", + " SOURCE Supply Outlet Node; !- Outlet Node Name", + + " BranchList,", + " SOURCE Demand Branches, !- Name", + " SOURCE Demand Inlet Branch, !- Branch 1 Name", + " SOURCE Demand HX Branch, !- Branch 2 Name", + " SOURCE Demand Outlet Branch; !- Branch 3 Name", + + " ConnectorList,", + " SOURCE Demand Connectors,!- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " SOURCE Demand Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " SOURCE Demand Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " SOURCE Demand Splitter, !- Nam", + " SOURCE Demand Inlet Branch, !- Inlet Branch Name", + " SOURCE Demand HX Branch; !- Outlet Branch 1 Name", + + " Connector:Mixer,", + " SOURCE Demand Mixer, !- Name", + " SOURCE Demand Outlet Branch, !- Outlet Branch Name", + " SOURCE Demand HX Branch; !- Inlet Branch 1 Name", + + " Branch,", + " SOURCE Demand Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " SOURCE Demand Inlet Pipe,!- Component 1 Name", + " SOURCE Demand Inlet Node,!- Component 1 Inlet Node Name", + " SOURCE Demand Pipe-HX Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " SOURCE Demand Inlet Pipe,!- Name", + " SOURCE Demand Inlet Node,!- Inlet Node Name", + " SOURCE Demand Pipe-HX Node; !- Outlet Node Name", + + " Branch,", + " SOURCE Demand HX Branch, !- Name", + " , !- Pressure Drop Curve Name", + " HeatExchanger:FluidToFluid, !- Component 1 Object Type", + " SOURCE to TRANSFER HX, !- Component 1 Name", + " SOURCE Demand HX Inlet Node, !- Component 1 Inlet Node Name", + " SOURCE Demand HX Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " SOURCE Demand Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " SOURCE Demand Outlet Pipe, !- Component 1 Name", + " SOURCE Demand Load Profile-Pipe Node, !- Component 1 Inlet Node Name", + " SOURCE Demand Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " SOURCE Demand Outlet Pipe, !- Name", + " SOURCE Demand Load Profile-Pipe Node, !- Inlet Node Name", + " SOURCE Demand Outlet Node; !- Outlet Node Name", + + " ScheduleTypeLimits,", + " Any Number; !- Name", + + " ScheduleTypeLimits,", + " On/Off, !- Name", + " 0, !- Lower Limit Value", + " 1, !- Upper Limit Value", + " DISCRETE; !- Numeric Type", + + " Schedule:Compact,", + " Use Cool Loop Temp Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " THROUGH: 12/31, !- Field 1", + " FOR: AllDays, !- Field 2", + " UNTIL: 24:00,25.0; !- Field 3", + + " Schedule:Compact,", + " Use Heat Loop Temp Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " THROUGH: 12/31, !- Field 1", + " FOR: AllDays, !- Field 2", + " UNTIL: 24:00,15.0; !- Field 3", + + " Schedule:Compact,", + " TRANSFER Dual Loop Hi Temp Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " THROUGH: 12/31, !- Field 1", + " FOR: AllDays, !- Field 2", + " UNTIL: 24:00,22.5; !- Field 3", + + " Schedule:Compact,", + " TRANSFER Dual Loop Lo Temp Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " THROUGH: 12/31, !- Field 1", + " FOR: AllDays, !- Field 2", + " UNTIL: 24:00,21.0; !- Field 3", + + " Schedule:Compact,", + " SOURCE Loop Temp Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " THROUGH: 12/31, !- Field 1", + " FOR: AllDays, !- Field 2", + " UNTIL: 24:00,20.0; !- Field 3", + + " Schedule:Compact,", + " AlwaysOnSchedule, !- Name", + " On/Off, !- Schedule Type Limits Name", + " THROUGH: 12/31, !- Field 1", + " FOR: AllDays, !- Field 2", + " UNTIL: 24:00,1; !- Field 3", + + " Schedule:Compact,", + " Heat Load Profile 1 Load Schedule, !- Name", + " Any Number, !- Schedule Type Limits Name", + " THROUGH: 12/31, !- Field 1", + " FOR: AllDays, !- Field 2", + " UNTIL: 12:00,8000, !- Field 3", + " UNTIL: 14:00,8000, !- Field 5", + " UNTIL: 16:00,8000, !- Field 7", + " UNTIL: 17:00,8000, !- Field 9", + " UNTIL: 20:00,8000, !- Field 11", + " UNTIL: 24:00,8000; !- Field 13", + + " Schedule:Compact,", + " Heat Load Profile 1 Flow Frac Schedule, !- Name", + " Any Number, !- Schedule Type Limits Name", + " THROUGH: 12/31, !- Field 1", + " FOR: AllDays, !- Field 2", + " UNTIL: 24:00,1.0; !- Field 3", + + " Schedule:Compact,", + " Cool Load Profile 1 Load Schedule, !- Name", + " Any Number, !- Schedule Type Limits Name", + " THROUGH: 12/31, !- Field 1", + " FOR: AllDays, !- Field 2", + " UNTIL: 2:00,0.0, !- Field 3", + " UNTIL: 4:00,0.0, !- Field 5", + " UNTIL: 5:00,0.0, !- Field 7", + " UNTIL: 8:00,0.0, !- Field 9", + " UNTIL: 12:00,0.0, !- Field 11", + " UNTIL: 24:00,0.0; !- Field 13", + + " Schedule:Compact,", + " cool Load Profile 1 Flow Frac Schedule, !- Name", + " Any Number, !- Schedule Type Limits Name", + " THROUGH: 12/31, !- Field 1", + " FOR: AllDays, !- Field 2", + " UNTIL: 24:00,0.0; !- Field 3", + }); + + ASSERT_TRUE(process_idf(idf_objects)); + bool ErrorsFound = false; + + DataGlobals::BeginSimFlag = true; + SimulationManager::GetProjectData(); + + OutputReportPredefined::SetPredefinedTables(); + HeatBalanceManager::SetPreConstructionInputParameters(); // establish array bounds for constructions early + OutputProcessor::TimeValue.allocate(2); + OutputProcessor::SetupTimePointers("Zone", DataGlobals::TimeStepZone); // Set up Time pointer for HB/Zone Simulation + OutputProcessor::SetupTimePointers("HVAC", DataHVACGlobals::TimeStepSys); + PlantManager::CheckIfAnyPlant(); + createFacilityElectricPowerServiceObject(); + BranchInputManager::ManageBranchInput(); // just gets input and returns. + DataGlobals::DoingSizing = false; + DataGlobals::KickOffSimulation = true; + + WeatherManager::ResetEnvironmentCounter(); + SimulationManager::SetupSimulation(ErrorsFound); + DataGlobals::KickOffSimulation = false; + + int EnvCount = 0; + DataGlobals::WarmupFlag = true; + bool Available(true); + + while (Available) { + + WeatherManager::GetNextEnvironment(Available, ErrorsFound); + + if (!Available) break; + if (ErrorsFound) break; + + ++EnvCount; + + DataGlobals::BeginEnvrnFlag = true; + DataGlobals::EndEnvrnFlag = false; + DataEnvironment::EndMonthFlag = false; + DataGlobals::WarmupFlag = true; + DataGlobals::DayOfSim = 0; + DataGlobals::DayOfSimChr = "0"; + + while ((DataGlobals::DayOfSim < DataGlobals::NumOfDayInEnvrn) || (DataGlobals::WarmupFlag)) { // Begin day loop ... + + ++DataGlobals::DayOfSim; + + if (!DataGlobals::WarmupFlag) { + ++DataEnvironment::CurrentOverallSimDay; + } + DataGlobals::BeginDayFlag = true; + DataGlobals::EndDayFlag = false; + + for (DataGlobals::HourOfDay = 1; DataGlobals::HourOfDay <= 24; ++DataGlobals::HourOfDay) { // Begin hour loop ... + + DataGlobals::BeginHourFlag = true; + DataGlobals::EndHourFlag = false; + + for (DataGlobals::TimeStep = 1; DataGlobals::TimeStep <= DataGlobals::NumOfTimeStepInHour; ++DataGlobals::TimeStep) { + + DataGlobals::BeginTimeStepFlag = true; + + // Set the End__Flag variables to true if necessary. Note that + // each flag builds on the previous level. EndDayFlag cannot be + // .TRUE. unless EndHourFlag is also .TRUE., etc. Note that the + // EndEnvrnFlag and the EndSimFlag cannot be set during warmup. + // Note also that BeginTimeStepFlag, EndTimeStepFlag, and the + // SubTimeStepFlags can/will be set/reset in the HVAC Manager. + + if (DataGlobals::TimeStep == DataGlobals::NumOfTimeStepInHour) { + DataGlobals::EndHourFlag = true; + if (DataGlobals::HourOfDay == 24) { + DataGlobals::EndDayFlag = true; + if ((!DataGlobals::WarmupFlag) && (DataGlobals::DayOfSim == DataGlobals::NumOfDayInEnvrn)) { + DataGlobals::EndEnvrnFlag = true; + } + } + } - WeatherManager::ManageWeather(); + WeatherManager::ManageWeather(); - HeatBalanceManager::ManageHeatBalance(); + HeatBalanceManager::ManageHeatBalance(); - // After the first iteration of HeatBalance, all the 'input' has been gotten + // After the first iteration of HeatBalance, all the 'input' has been gotten - DataGlobals::BeginHourFlag = false; - DataGlobals::BeginDayFlag = false; - DataGlobals::BeginEnvrnFlag = false; - DataGlobals::BeginSimFlag = false; - DataGlobals::BeginFullSimFlag = false; + DataGlobals::BeginHourFlag = false; + DataGlobals::BeginDayFlag = false; + DataGlobals::BeginEnvrnFlag = false; + DataGlobals::BeginSimFlag = false; + DataGlobals::BeginFullSimFlag = false; - } // TimeStep loop + } // TimeStep loop - DataGlobals::PreviousHour = DataGlobals::HourOfDay; + DataGlobals::PreviousHour = DataGlobals::HourOfDay; - } // ... End hour loop. + } // ... End hour loop. - } // ... End day loop. + } // ... End day loop. - } // ... End environment loop. - // + } // ... End environment loop. + // - //Index 4 corresponds to NodeNumOut of "TRANSFER SUPPLY OUTLET PIPE", which is a component of - // "TRANSFER SUPPLY OUTLET BRANCH" in "TRANSFER SUPPLY BRANCHES" OF "TRANSFER LOOP" (part of PlantLoop data) - EXPECT_NEAR(DataLoopNode::Node(4).Temp, 20.0 , 0.01); - } + // Index 4 corresponds to NodeNumOut of "TRANSFER SUPPLY OUTLET PIPE", which is a component of + // "TRANSFER SUPPLY OUTLET BRANCH" in "TRANSFER SUPPLY BRANCHES" OF "TRANSFER LOOP" (part of PlantLoop data) + EXPECT_NEAR(DataLoopNode::Node(4).Temp, 20.0, 0.01); +} TEST_F(EnergyPlusFixture, PlantHXControlWithFirstHVACIteration) { - // this unit test is for issue #4959. Added FirstHVACIteration to simulate and control routines + // this unit test is for issue #4959. Added FirstHVACIteration to simulate and control routines // unit test checks that the change to logic for #4959 does work to affect node mass flow rate. The conditions are set up such that the demand // side inlet is too warm to cool the supply side, so previous behavior would shut down flow. Now if firstHVACIteration is true is should set // flow request at the design max and if it is false set the flow request to 0.0. The intent is setup enough structures to be able to call the // routine ControlFluidHeatExchanger and check its behavior with FirstHVACIteration. - PlantHeatExchangerFluidToFluid::FluidHX.allocate(1); - - // get availability schedule to work - DataGlobals::NumOfTimeStepInHour = 1; // must initialize this to get schedules initialized - DataGlobals::MinutesPerTimeStep = 60; // must initialize this to get schedules initialized - ScheduleManager::ProcessScheduleInput(); // read schedules - ScheduleManager::ScheduleInputProcessed = true; - DataEnvironment::Month = 1; - DataEnvironment::DayOfMonth = 21; - DataGlobals::HourOfDay = 1; - DataGlobals::TimeStep = 1; - DataEnvironment::DSTIndicator = 0; - DataEnvironment::DayOfWeek = 2; - DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = General::JulianDay( DataEnvironment::Month, DataEnvironment::DayOfMonth, 1 ); - ScheduleManager::UpdateScheduleValues(); - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).AvailSchedNum = -1; - - // setup four plant nodes for HX - DataLoopNode::Node.allocate( 4 ); - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).SupplySideLoop.InletNodeNum = 1; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).SupplySideLoop.OutletNodeNum = 3; - DataLoopNode::Node( 1 ).Temp = 18.0; - DataLoopNode::Node( 1 ).MassFlowRateMaxAvail = 2.0; - DataLoopNode::Node( 1 ).MassFlowRateMax = 2.0; - DataLoopNode::Node( 3 ).MassFlowRateMaxAvail = 2.0; - DataLoopNode::Node( 3 ).MassFlowRateMax = 2.0; - - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).SupplySideLoop.InletTemp = 18.0; - - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).DemandSideLoop.InletNodeNum = 2; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).DemandSideLoop.OutletNodeNum = 4; - DataLoopNode::Node( 2 ).Temp = 19.0; - DataLoopNode::Node( 2 ).MassFlowRateMaxAvail = 2.0; - DataLoopNode::Node( 2 ).MassFlowRateMax = 2.0; - DataLoopNode::Node( 4 ).MassFlowRateMaxAvail = 2.0; - DataLoopNode::Node( 4 ).MassFlowRateMax = 2.0; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).DemandSideLoop.InletTemp = 19.0; - - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).ControlMode = PlantHeatExchangerFluidToFluid::CoolingDifferentialOnOff; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).MinOperationTemp = 10.0; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).MaxOperationTemp = 30.0; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).Name = "Test HX"; - - //setup two plant loops, need for SetComponenetFlowRate - DataPlant::TotNumLoops = 2; - DataPlant::PlantLoop.allocate( DataPlant::TotNumLoops ); - - for ( int l = 1; l <= DataPlant::TotNumLoops; ++l ) { - auto & loop( DataPlant::PlantLoop( l ) ); - loop.LoopSide.allocate( 2 ); - auto & loopside( DataPlant::PlantLoop( l ).LoopSide( 1 ) ); - loopside.TotalBranches = 1; - loopside.Branch.allocate( 1 ); - auto & loopsidebranch( DataPlant::PlantLoop( l ).LoopSide( 1 ).Branch( 1 ) ); - loopsidebranch.TotalComponents = 1; - loopsidebranch.Comp.allocate( 1 ); - } - - DataPlant::PlantLoop( 1 ).Name = "HX supply side loop "; - DataPlant::PlantLoop( 1 ).FluidIndex = 1; - DataPlant::PlantLoop( 1 ).FluidName = "WATER"; - DataPlant::PlantLoop( 1 ).LoopSide( 1 ).Branch( 1 ).Comp( 1 ).Name = PlantHeatExchangerFluidToFluid::FluidHX( 1 ).Name; - DataPlant::PlantLoop( 1 ).LoopSide( 1 ).Branch( 1 ).Comp( 1 ).TypeOf_Num = DataPlant::TypeOf_FluidToFluidPlantHtExchg; - DataPlant::PlantLoop( 1 ).LoopSide( 1 ).Branch( 1 ).Comp( 1 ).NodeNumIn = PlantHeatExchangerFluidToFluid::FluidHX( 1 ).SupplySideLoop.InletNodeNum; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).SupplySideLoop.LoopNum = 1; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).SupplySideLoop.LoopSideNum = 1; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).SupplySideLoop.BranchNum = 1; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).SupplySideLoop.CompNum = 1; - - DataPlant::PlantLoop( 2 ).Name = "HX demand side loop "; - DataPlant::PlantLoop( 2 ).FluidIndex = 1; - DataPlant::PlantLoop( 2 ).FluidName = "WATER"; - DataPlant::PlantLoop( 2 ).LoopSide( 1 ).Branch( 1 ).Comp( 1 ).Name = PlantHeatExchangerFluidToFluid::FluidHX( 1 ).Name; - DataPlant::PlantLoop( 2 ).LoopSide( 1 ).Branch( 1 ).Comp( 1 ).TypeOf_Num = DataPlant::TypeOf_FluidToFluidPlantHtExchg; - DataPlant::PlantLoop( 2 ).LoopSide( 1 ).Branch( 1 ).Comp( 1 ).NodeNumIn = PlantHeatExchangerFluidToFluid::FluidHX( 1 ).DemandSideLoop.InletNodeNum; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).DemandSideLoop.LoopNum = 2; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).DemandSideLoop.LoopSideNum = 1; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).DemandSideLoop.BranchNum = 1; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).DemandSideLoop.CompNum = 1; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).DemandSideLoop.MassFlowRateMax = 2.0; - - // when FirstHVACIteration is true, mass flow should match design max - bool testFirstHVACIteration = true; - PlantHeatExchangerFluidToFluid::ControlFluidHeatExchanger( 1, 1, -1000.0, testFirstHVACIteration ); - - EXPECT_NEAR( DataLoopNode::Node( 2 ).MassFlowRate, PlantHeatExchangerFluidToFluid::FluidHX( 1 ).DemandSideLoop.MassFlowRateMax, 0.001 ); - - //when FirstHVACIteration is false, mass flow should be zero - testFirstHVACIteration = false; - PlantHeatExchangerFluidToFluid::ControlFluidHeatExchanger( 1, 1, -1000.0, testFirstHVACIteration ); - EXPECT_NEAR( DataLoopNode::Node( 2 ).MassFlowRate, 0.0, 0.001 ); - } + PlantHeatExchangerFluidToFluid::FluidHX.allocate(1); + + // get availability schedule to work + DataGlobals::NumOfTimeStepInHour = 1; // must initialize this to get schedules initialized + DataGlobals::MinutesPerTimeStep = 60; // must initialize this to get schedules initialized + ScheduleManager::ProcessScheduleInput(); // read schedules + ScheduleManager::ScheduleInputProcessed = true; + DataEnvironment::Month = 1; + DataEnvironment::DayOfMonth = 21; + DataGlobals::HourOfDay = 1; + DataGlobals::TimeStep = 1; + DataEnvironment::DSTIndicator = 0; + DataEnvironment::DayOfWeek = 2; + DataEnvironment::HolidayIndex = 0; + DataEnvironment::DayOfYear_Schedule = General::JulianDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); + ScheduleManager::UpdateScheduleValues(); + PlantHeatExchangerFluidToFluid::FluidHX(1).AvailSchedNum = -1; + + // setup four plant nodes for HX + DataLoopNode::Node.allocate(4); + PlantHeatExchangerFluidToFluid::FluidHX(1).SupplySideLoop.InletNodeNum = 1; + PlantHeatExchangerFluidToFluid::FluidHX(1).SupplySideLoop.OutletNodeNum = 3; + DataLoopNode::Node(1).Temp = 18.0; + DataLoopNode::Node(1).MassFlowRateMaxAvail = 2.0; + DataLoopNode::Node(1).MassFlowRateMax = 2.0; + DataLoopNode::Node(3).MassFlowRateMaxAvail = 2.0; + DataLoopNode::Node(3).MassFlowRateMax = 2.0; + + PlantHeatExchangerFluidToFluid::FluidHX(1).SupplySideLoop.InletTemp = 18.0; + + PlantHeatExchangerFluidToFluid::FluidHX(1).DemandSideLoop.InletNodeNum = 2; + PlantHeatExchangerFluidToFluid::FluidHX(1).DemandSideLoop.OutletNodeNum = 4; + DataLoopNode::Node(2).Temp = 19.0; + DataLoopNode::Node(2).MassFlowRateMaxAvail = 2.0; + DataLoopNode::Node(2).MassFlowRateMax = 2.0; + DataLoopNode::Node(4).MassFlowRateMaxAvail = 2.0; + DataLoopNode::Node(4).MassFlowRateMax = 2.0; + PlantHeatExchangerFluidToFluid::FluidHX(1).DemandSideLoop.InletTemp = 19.0; + + PlantHeatExchangerFluidToFluid::FluidHX(1).ControlMode = PlantHeatExchangerFluidToFluid::CoolingDifferentialOnOff; + PlantHeatExchangerFluidToFluid::FluidHX(1).MinOperationTemp = 10.0; + PlantHeatExchangerFluidToFluid::FluidHX(1).MaxOperationTemp = 30.0; + PlantHeatExchangerFluidToFluid::FluidHX(1).Name = "Test HX"; + + // setup two plant loops, need for SetComponenetFlowRate + DataPlant::TotNumLoops = 2; + DataPlant::PlantLoop.allocate(DataPlant::TotNumLoops); + + for (int l = 1; l <= DataPlant::TotNumLoops; ++l) { + auto &loop(DataPlant::PlantLoop(l)); + loop.LoopSide.allocate(2); + auto &loopside(DataPlant::PlantLoop(l).LoopSide(1)); + loopside.TotalBranches = 1; + loopside.Branch.allocate(1); + auto &loopsidebranch(DataPlant::PlantLoop(l).LoopSide(1).Branch(1)); + loopsidebranch.TotalComponents = 1; + loopsidebranch.Comp.allocate(1); + } + + DataPlant::PlantLoop(1).Name = "HX supply side loop "; + DataPlant::PlantLoop(1).FluidIndex = 1; + DataPlant::PlantLoop(1).FluidName = "WATER"; + DataPlant::PlantLoop(1).LoopSide(1).Branch(1).Comp(1).Name = PlantHeatExchangerFluidToFluid::FluidHX(1).Name; + DataPlant::PlantLoop(1).LoopSide(1).Branch(1).Comp(1).TypeOf_Num = DataPlant::TypeOf_FluidToFluidPlantHtExchg; + DataPlant::PlantLoop(1).LoopSide(1).Branch(1).Comp(1).NodeNumIn = PlantHeatExchangerFluidToFluid::FluidHX(1).SupplySideLoop.InletNodeNum; + PlantHeatExchangerFluidToFluid::FluidHX(1).SupplySideLoop.LoopNum = 1; + PlantHeatExchangerFluidToFluid::FluidHX(1).SupplySideLoop.LoopSideNum = 1; + PlantHeatExchangerFluidToFluid::FluidHX(1).SupplySideLoop.BranchNum = 1; + PlantHeatExchangerFluidToFluid::FluidHX(1).SupplySideLoop.CompNum = 1; + + DataPlant::PlantLoop(2).Name = "HX demand side loop "; + DataPlant::PlantLoop(2).FluidIndex = 1; + DataPlant::PlantLoop(2).FluidName = "WATER"; + DataPlant::PlantLoop(2).LoopSide(1).Branch(1).Comp(1).Name = PlantHeatExchangerFluidToFluid::FluidHX(1).Name; + DataPlant::PlantLoop(2).LoopSide(1).Branch(1).Comp(1).TypeOf_Num = DataPlant::TypeOf_FluidToFluidPlantHtExchg; + DataPlant::PlantLoop(2).LoopSide(1).Branch(1).Comp(1).NodeNumIn = PlantHeatExchangerFluidToFluid::FluidHX(1).DemandSideLoop.InletNodeNum; + PlantHeatExchangerFluidToFluid::FluidHX(1).DemandSideLoop.LoopNum = 2; + PlantHeatExchangerFluidToFluid::FluidHX(1).DemandSideLoop.LoopSideNum = 1; + PlantHeatExchangerFluidToFluid::FluidHX(1).DemandSideLoop.BranchNum = 1; + PlantHeatExchangerFluidToFluid::FluidHX(1).DemandSideLoop.CompNum = 1; + PlantHeatExchangerFluidToFluid::FluidHX(1).DemandSideLoop.MassFlowRateMax = 2.0; + + // when FirstHVACIteration is true, mass flow should match design max + bool testFirstHVACIteration = true; + PlantHeatExchangerFluidToFluid::ControlFluidHeatExchanger(1, 1, -1000.0, testFirstHVACIteration); + + EXPECT_NEAR(DataLoopNode::Node(2).MassFlowRate, PlantHeatExchangerFluidToFluid::FluidHX(1).DemandSideLoop.MassFlowRateMax, 0.001); + + // when FirstHVACIteration is false, mass flow should be zero + testFirstHVACIteration = false; + PlantHeatExchangerFluidToFluid::ControlFluidHeatExchanger(1, 1, -1000.0, testFirstHVACIteration); + EXPECT_NEAR(DataLoopNode::Node(2).MassFlowRate, 0.0, 0.001); +} TEST_F(EnergyPlusFixture, PlantHXControl_CoolingSetpointOnOffWithComponentOverride) { - // this unit test is for issue #5626. Fixed logic for CoolingSetpointOnOffWithComponentOverride. - // unit test checks that the change for #5626 adjusts the temperature value used in central plant dispatch routines by the tolerance value. - - PlantHeatExchangerFluidToFluid::FluidHX.allocate(1); - - // get availability schedule to work - DataGlobals::NumOfTimeStepInHour = 1; // must initialize this to get schedules initialized - DataGlobals::MinutesPerTimeStep = 60; // must initialize this to get schedules initialized - ScheduleManager::ProcessScheduleInput(); // read schedules - ScheduleManager::ScheduleInputProcessed = true; - DataEnvironment::Month = 1; - DataEnvironment::DayOfMonth = 21; - DataGlobals::HourOfDay = 1; - DataGlobals::TimeStep = 1; - DataEnvironment::DSTIndicator = 0; - DataEnvironment::DayOfWeek = 2; - DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = General::JulianDay( DataEnvironment::Month, DataEnvironment::DayOfMonth, 1 ); - ScheduleManager::UpdateScheduleValues(); - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).AvailSchedNum = -1; - - // setup four plant nodes for HX - DataLoopNode::Node.allocate( 6 ); - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).SupplySideLoop.InletNodeNum = 1; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).SupplySideLoop.OutletNodeNum = 3; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).SetPointNodeNum = 3; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).SupplySideLoop.MassFlowRateMax = 2.0; - - DataLoopNode::Node( 1 ).Temp = 18.0; - DataLoopNode::Node( 1 ).MassFlowRateMaxAvail = 2.0; - DataLoopNode::Node( 1 ).MassFlowRateMax = 2.0; - DataLoopNode::Node( 3 ).MassFlowRateMaxAvail = 2.0; - DataLoopNode::Node( 3 ).MassFlowRateMax = 2.0; - - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).SupplySideLoop.InletTemp = 18.0; - - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).DemandSideLoop.InletNodeNum = 2; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).DemandSideLoop.OutletNodeNum = 4; - DataLoopNode::Node( 2 ).Temp = 19.0; - DataLoopNode::Node( 2 ).MassFlowRateMaxAvail = 2.0; - DataLoopNode::Node( 2 ).MassFlowRateMax = 2.0; - DataLoopNode::Node( 4 ).MassFlowRateMaxAvail = 2.0; - DataLoopNode::Node( 4 ).MassFlowRateMax = 2.0; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).DemandSideLoop.InletTemp = 19.0; - - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).ControlMode = PlantHeatExchangerFluidToFluid::CoolingSetPointOnOffWithComponentOverride; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).MinOperationTemp = 10.0; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).MaxOperationTemp = 30.0; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).Name = "Test HX"; - - //setup two plant loops, need for SetComponenetFlowRate - DataPlant::TotNumLoops = 2; - DataPlant::PlantLoop.allocate( DataPlant::TotNumLoops ); - - for ( int l = 1; l <= DataPlant::TotNumLoops; ++l ) { - auto & loop( DataPlant::PlantLoop( l ) ); - loop.LoopSide.allocate( 2 ); - } - //loop 1 is like a chilled water loop, supply side of HX, two branches on supply side - DataPlant::PlantLoop( 1 ).LoopSide( 1 ).TotalBranches = 1; - DataPlant::PlantLoop( 1 ).LoopSide( 1 ).Branch.allocate( 1 ); - DataPlant::PlantLoop( 1 ).LoopSide( 1 ).Branch( 1 ).TotalComponents = 1; - DataPlant::PlantLoop( 1 ).LoopSide( 1 ).Branch( 1 ).Comp.allocate( 1 ); - DataPlant::PlantLoop( 1 ).LoopSide( 2 ).TotalBranches = 2; - DataPlant::PlantLoop( 1 ).LoopSide( 2 ).Branch.allocate( 2 ); - DataPlant::PlantLoop( 1 ).LoopSide( 2 ).Branch( 1 ).TotalComponents = 1; - DataPlant::PlantLoop( 1 ).LoopSide( 2 ).Branch( 1 ).Comp.allocate( 1 ); - DataPlant::PlantLoop( 1 ).LoopSide( 2 ).Branch( 2 ).TotalComponents = 1; - DataPlant::PlantLoop( 1 ).LoopSide( 2 ).Branch( 2 ).Comp.allocate( 1 ); - DataPlant::PlantLoop( 1 ).LoopSide( 2 ).Branch( 2 ).Comp( 1 ).NodeNumIn = 5; - - //loop 2 is like a condenser loop, demand side of HX - DataPlant::PlantLoop( 2 ).LoopSide( 1 ).TotalBranches = 1; - DataPlant::PlantLoop( 2 ).LoopSide( 1 ).Branch.allocate( 1 ); - DataPlant::PlantLoop( 2 ).LoopSide( 1 ).Branch( 1 ).TotalComponents = 1; - DataPlant::PlantLoop( 2 ).LoopSide( 1 ).Branch( 1 ).Comp.allocate( 1 ); - DataPlant::PlantLoop( 2 ).LoopSide( 2 ).TotalBranches = 1; - DataPlant::PlantLoop( 2 ).LoopSide( 2 ).Branch.allocate( 1 ); - DataPlant::PlantLoop( 2 ).LoopSide( 2 ).Branch( 1 ).TotalComponents = 1; - DataPlant::PlantLoop( 2 ).LoopSide( 2 ).Branch( 1 ).Comp.allocate( 1 ); - - DataPlant::PlantLoop( 1 ).Name = "HX supply side loop "; - DataPlant::PlantLoop( 1 ).FluidIndex = 1; - DataPlant::PlantLoop( 1 ).FluidName = "WATER"; - DataPlant::PlantLoop( 1 ).LoopSide( 2 ).Branch( 1 ).Comp( 1 ).Name = PlantHeatExchangerFluidToFluid::FluidHX( 1 ).Name; - DataPlant::PlantLoop( 1 ).LoopSide( 2 ).Branch( 1 ).Comp( 1 ).TypeOf_Num = DataPlant::TypeOf_FluidToFluidPlantHtExchg; - DataPlant::PlantLoop( 1 ).LoopSide( 2 ).Branch( 1 ).Comp( 1 ).NodeNumIn = PlantHeatExchangerFluidToFluid::FluidHX( 1 ).SupplySideLoop.InletNodeNum; - - DataPlant::PlantLoop( 2 ).Name = "HX demand side loop "; - DataPlant::PlantLoop( 2 ).FluidIndex = 1; - DataPlant::PlantLoop( 2 ).FluidName = "WATER"; - DataPlant::PlantLoop( 2 ).LoopSide( 1 ).Branch( 1 ).Comp( 1 ).Name = PlantHeatExchangerFluidToFluid::FluidHX( 1 ).Name; - DataPlant::PlantLoop( 2 ).LoopSide( 1 ).Branch( 1 ).Comp( 1 ).TypeOf_Num = DataPlant::TypeOf_FluidToFluidPlantHtExchg; - DataPlant::PlantLoop( 2 ).LoopSide( 1 ).Branch( 1 ).Comp( 1 ).NodeNumIn = PlantHeatExchangerFluidToFluid::FluidHX( 1 ).DemandSideLoop.InletNodeNum; - - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).DemandSideLoop.MassFlowRateMax = 2.0; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).ControlSignalTemp = PlantHeatExchangerFluidToFluid::DryBulbTemperature; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).OtherCompSupplySideLoop.InletNodeNum = 5; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).OtherCompSupplySideLoop.LoopNum = 1; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).OtherCompSupplySideLoop.LoopSideNum = 2; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).OtherCompSupplySideLoop.BranchNum = 2; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).OtherCompSupplySideLoop.CompNum = 1; - - PlantHeatExchangerFluidToFluid::NumberOfPlantFluidHXs = 1; - - DataPlant::PlantLoop( 1 ).LoopSide( 2 ).Branch( 2 ).Comp( 1 ).HowLoadServed = DataPlant::HowMet_ByNominalCap; - DataEnvironment::OutDryBulbTemp = 9.0; - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).TempControlTol = 0.0; - DataLoopNode::Node( 3 ).TempSetPoint = 11.0; - - //now call the init routine - PlantHeatExchangerFluidToFluid::InitFluidHeatExchanger( 1, 1 ); - - // check value in FreeCoolCntrlMinCntrlTemp - EXPECT_NEAR( DataPlant::PlantLoop( 1 ).LoopSide( 2 ).Branch( 2 ).Comp( 1 ).FreeCoolCntrlMinCntrlTemp, 11.0, 0.001 ); - - // change the tolerance and check the result, issue 5626 fix subtracts tolerance - PlantHeatExchangerFluidToFluid::FluidHX( 1 ).TempControlTol = 1.5; - PlantHeatExchangerFluidToFluid::InitFluidHeatExchanger( 1, 1 ); - - EXPECT_NEAR( DataPlant::PlantLoop( 1 ).LoopSide( 2 ).Branch( 2 ).Comp( 1 ).FreeCoolCntrlMinCntrlTemp, 9.5, 0.001 ); - } + // this unit test is for issue #5626. Fixed logic for CoolingSetpointOnOffWithComponentOverride. + // unit test checks that the change for #5626 adjusts the temperature value used in central plant dispatch routines by the tolerance value. + + PlantHeatExchangerFluidToFluid::FluidHX.allocate(1); + + // get availability schedule to work + DataGlobals::NumOfTimeStepInHour = 1; // must initialize this to get schedules initialized + DataGlobals::MinutesPerTimeStep = 60; // must initialize this to get schedules initialized + ScheduleManager::ProcessScheduleInput(); // read schedules + ScheduleManager::ScheduleInputProcessed = true; + DataEnvironment::Month = 1; + DataEnvironment::DayOfMonth = 21; + DataGlobals::HourOfDay = 1; + DataGlobals::TimeStep = 1; + DataEnvironment::DSTIndicator = 0; + DataEnvironment::DayOfWeek = 2; + DataEnvironment::HolidayIndex = 0; + DataEnvironment::DayOfYear_Schedule = General::JulianDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); + ScheduleManager::UpdateScheduleValues(); + PlantHeatExchangerFluidToFluid::FluidHX(1).AvailSchedNum = -1; + + // setup four plant nodes for HX + DataLoopNode::Node.allocate(6); + PlantHeatExchangerFluidToFluid::FluidHX(1).SupplySideLoop.InletNodeNum = 1; + PlantHeatExchangerFluidToFluid::FluidHX(1).SupplySideLoop.OutletNodeNum = 3; + PlantHeatExchangerFluidToFluid::FluidHX(1).SetPointNodeNum = 3; + PlantHeatExchangerFluidToFluid::FluidHX(1).SupplySideLoop.MassFlowRateMax = 2.0; + + DataLoopNode::Node(1).Temp = 18.0; + DataLoopNode::Node(1).MassFlowRateMaxAvail = 2.0; + DataLoopNode::Node(1).MassFlowRateMax = 2.0; + DataLoopNode::Node(3).MassFlowRateMaxAvail = 2.0; + DataLoopNode::Node(3).MassFlowRateMax = 2.0; + + PlantHeatExchangerFluidToFluid::FluidHX(1).SupplySideLoop.InletTemp = 18.0; + + PlantHeatExchangerFluidToFluid::FluidHX(1).DemandSideLoop.InletNodeNum = 2; + PlantHeatExchangerFluidToFluid::FluidHX(1).DemandSideLoop.OutletNodeNum = 4; + DataLoopNode::Node(2).Temp = 19.0; + DataLoopNode::Node(2).MassFlowRateMaxAvail = 2.0; + DataLoopNode::Node(2).MassFlowRateMax = 2.0; + DataLoopNode::Node(4).MassFlowRateMaxAvail = 2.0; + DataLoopNode::Node(4).MassFlowRateMax = 2.0; + PlantHeatExchangerFluidToFluid::FluidHX(1).DemandSideLoop.InletTemp = 19.0; + + PlantHeatExchangerFluidToFluid::FluidHX(1).ControlMode = PlantHeatExchangerFluidToFluid::CoolingSetPointOnOffWithComponentOverride; + PlantHeatExchangerFluidToFluid::FluidHX(1).MinOperationTemp = 10.0; + PlantHeatExchangerFluidToFluid::FluidHX(1).MaxOperationTemp = 30.0; + PlantHeatExchangerFluidToFluid::FluidHX(1).Name = "Test HX"; + + // setup two plant loops, need for SetComponenetFlowRate + DataPlant::TotNumLoops = 2; + DataPlant::PlantLoop.allocate(DataPlant::TotNumLoops); + + for (int l = 1; l <= DataPlant::TotNumLoops; ++l) { + auto &loop(DataPlant::PlantLoop(l)); + loop.LoopSide.allocate(2); + } + // loop 1 is like a chilled water loop, supply side of HX, two branches on supply side + DataPlant::PlantLoop(1).LoopSide(1).TotalBranches = 1; + DataPlant::PlantLoop(1).LoopSide(1).Branch.allocate(1); + DataPlant::PlantLoop(1).LoopSide(1).Branch(1).TotalComponents = 1; + DataPlant::PlantLoop(1).LoopSide(1).Branch(1).Comp.allocate(1); + DataPlant::PlantLoop(1).LoopSide(2).TotalBranches = 2; + DataPlant::PlantLoop(1).LoopSide(2).Branch.allocate(2); + DataPlant::PlantLoop(1).LoopSide(2).Branch(1).TotalComponents = 1; + DataPlant::PlantLoop(1).LoopSide(2).Branch(1).Comp.allocate(1); + DataPlant::PlantLoop(1).LoopSide(2).Branch(2).TotalComponents = 1; + DataPlant::PlantLoop(1).LoopSide(2).Branch(2).Comp.allocate(1); + DataPlant::PlantLoop(1).LoopSide(2).Branch(2).Comp(1).NodeNumIn = 5; + + // loop 2 is like a condenser loop, demand side of HX + DataPlant::PlantLoop(2).LoopSide(1).TotalBranches = 1; + DataPlant::PlantLoop(2).LoopSide(1).Branch.allocate(1); + DataPlant::PlantLoop(2).LoopSide(1).Branch(1).TotalComponents = 1; + DataPlant::PlantLoop(2).LoopSide(1).Branch(1).Comp.allocate(1); + DataPlant::PlantLoop(2).LoopSide(2).TotalBranches = 1; + DataPlant::PlantLoop(2).LoopSide(2).Branch.allocate(1); + DataPlant::PlantLoop(2).LoopSide(2).Branch(1).TotalComponents = 1; + DataPlant::PlantLoop(2).LoopSide(2).Branch(1).Comp.allocate(1); + + DataPlant::PlantLoop(1).Name = "HX supply side loop "; + DataPlant::PlantLoop(1).FluidIndex = 1; + DataPlant::PlantLoop(1).FluidName = "WATER"; + DataPlant::PlantLoop(1).LoopSide(2).Branch(1).Comp(1).Name = PlantHeatExchangerFluidToFluid::FluidHX(1).Name; + DataPlant::PlantLoop(1).LoopSide(2).Branch(1).Comp(1).TypeOf_Num = DataPlant::TypeOf_FluidToFluidPlantHtExchg; + DataPlant::PlantLoop(1).LoopSide(2).Branch(1).Comp(1).NodeNumIn = PlantHeatExchangerFluidToFluid::FluidHX(1).SupplySideLoop.InletNodeNum; + + DataPlant::PlantLoop(2).Name = "HX demand side loop "; + DataPlant::PlantLoop(2).FluidIndex = 1; + DataPlant::PlantLoop(2).FluidName = "WATER"; + DataPlant::PlantLoop(2).LoopSide(1).Branch(1).Comp(1).Name = PlantHeatExchangerFluidToFluid::FluidHX(1).Name; + DataPlant::PlantLoop(2).LoopSide(1).Branch(1).Comp(1).TypeOf_Num = DataPlant::TypeOf_FluidToFluidPlantHtExchg; + DataPlant::PlantLoop(2).LoopSide(1).Branch(1).Comp(1).NodeNumIn = PlantHeatExchangerFluidToFluid::FluidHX(1).DemandSideLoop.InletNodeNum; + + PlantHeatExchangerFluidToFluid::FluidHX(1).DemandSideLoop.MassFlowRateMax = 2.0; + PlantHeatExchangerFluidToFluid::FluidHX(1).ControlSignalTemp = PlantHeatExchangerFluidToFluid::DryBulbTemperature; + PlantHeatExchangerFluidToFluid::FluidHX(1).OtherCompSupplySideLoop.InletNodeNum = 5; + PlantHeatExchangerFluidToFluid::FluidHX(1).OtherCompSupplySideLoop.LoopNum = 1; + PlantHeatExchangerFluidToFluid::FluidHX(1).OtherCompSupplySideLoop.LoopSideNum = 2; + PlantHeatExchangerFluidToFluid::FluidHX(1).OtherCompSupplySideLoop.BranchNum = 2; + PlantHeatExchangerFluidToFluid::FluidHX(1).OtherCompSupplySideLoop.CompNum = 1; + + PlantHeatExchangerFluidToFluid::NumberOfPlantFluidHXs = 1; + + DataPlant::PlantLoop(1).LoopSide(2).Branch(2).Comp(1).HowLoadServed = DataPlant::HowMet_ByNominalCap; + DataEnvironment::OutDryBulbTemp = 9.0; + PlantHeatExchangerFluidToFluid::FluidHX(1).TempControlTol = 0.0; + DataLoopNode::Node(3).TempSetPoint = 11.0; + + // now call the init routine + PlantHeatExchangerFluidToFluid::InitFluidHeatExchanger(1, 1); + + // check value in FreeCoolCntrlMinCntrlTemp + EXPECT_NEAR(DataPlant::PlantLoop(1).LoopSide(2).Branch(2).Comp(1).FreeCoolCntrlMinCntrlTemp, 11.0, 0.001); + + // change the tolerance and check the result, issue 5626 fix subtracts tolerance + PlantHeatExchangerFluidToFluid::FluidHX(1).TempControlTol = 1.5; + PlantHeatExchangerFluidToFluid::InitFluidHeatExchanger(1, 1); + + EXPECT_NEAR(DataPlant::PlantLoop(1).LoopSide(2).Branch(2).Comp(1).FreeCoolCntrlMinCntrlTemp, 9.5, 0.001); +} } // namespace EnergyPlus diff --git a/tst/EnergyPlus/unit/RunPeriod.unit.cc b/tst/EnergyPlus/unit/RunPeriod.unit.cc index 8ad2f74f92e..6823b8fbdcb 100644 --- a/tst/EnergyPlus/unit/RunPeriod.unit.cc +++ b/tst/EnergyPlus/unit/RunPeriod.unit.cc @@ -70,134 +70,130 @@ using namespace EnergyPlus::ScheduleManager; TEST_F(EnergyPlusFixture, RunPeriod_YearTests) { - std::string const idf_objects = delimited_string({ - "Version,", - "8.8;", - "SimulationControl, NO, NO, NO, YES, YES;", - "Timestep,4;", - "RunPeriod,", - "RP1, !- Name", - "2, !- Begin Month", - "29, !- Begin Day of Month", - "2016, !- Begin Year", - "3, !- End Month", - "3, !- End Day of Month", - ", !- End Year", - "Monday, !- Day of Week for Start Day", - "Yes, !- Use Weather File Holidays and Special Days", - "Yes, !- Use Weather File Daylight Saving Period", - "No, !- Apply Weekend Holiday Rule", - "Yes, !- Use Weather File Rain Indicators", - "Yes; !- Use Weather File Snow Indicators", - "RunPeriod,", - "RP2, !- Name", - "2, !- Begin Month", - "29, !- Begin Day of Month", - ", !- Begin Year", - "3, !- End Month", - "3, !- End Day of Month", - ", !- End Year", - "Wednesday, !- Day of Week for Start Day", - "Yes, !- Use Weather File Holidays and Special Days", - "Yes, !- Use Weather File Daylight Saving Period", - "No, !- Apply Weekend Holiday Rule", - "Yes, !- Use Weather File Rain Indicators", - "Yes; !- Use Weather File Snow Indicators", - "RunPeriod,", - "RP3, !- Name", - "1, !- Begin Month", - "1, !- Begin Day of Month", - ", !- Begin Year", - "12, !- End Month", - "31, !- End Day of Month", - ", !- End Year", - "Thursday, !- Day of Week for Start Day", - "Yes, !- Use Weather File Holidays and Special Days", - "Yes, !- Use Weather File Daylight Saving Period", - "No, !- Apply Weekend Holiday Rule", - "Yes, !- Use Weather File Rain Indicators", - "Yes; !- Use Weather File Snow Indicators", - "RunPeriod,", - "RP4, !- Name", - "1, !- Begin Month", - "1, !- Begin Day of Month", - ", !- Begin Year", - "12, !- End Month", - "31, !- End Day of Month", - ", !- End Year", - ", !- Day of Week for Start Day", - "Yes, !- Use Weather File Holidays and Special Days", - "Yes, !- Use Weather File Daylight Saving Period", - "No, !- Apply Weekend Holiday Rule", - "Yes, !- Use Weather File Rain Indicators", - "Yes; !- Use Weather File Snow Indicators", - "BUILDING, Simple One Zone (Wireframe DXF), 0.0, Suburbs, .04, .004, MinimalShadowing, 30, 6;", - - }); - - ASSERT_TRUE( process_idf( idf_objects ) ); - bool errors_in_input( false ); - int totalrps( 4 ); - WeatherManager::GetRunPeriodData( totalrps, errors_in_input ); - EXPECT_FALSE( errors_in_input ); - - EXPECT_EQ( WeatherManager::WeekDay::Monday, WeatherManager::RunPeriodInput[0].startWeekDay ); - EXPECT_EQ( 2016, WeatherManager::RunPeriodInput[0].startYear ); - EXPECT_EQ( 2016, WeatherManager::RunPeriodInput[0].startYear ); - EXPECT_EQ( 2457448, WeatherManager::RunPeriodInput[0].startJulianDate ); - EXPECT_EQ( 2457451, WeatherManager::RunPeriodInput[0].endJulianDate ); - - EXPECT_EQ( WeatherManager::WeekDay::Wednesday, WeatherManager::RunPeriodInput[1].startWeekDay ); - EXPECT_EQ( 2012, WeatherManager::RunPeriodInput[1].startYear ); - EXPECT_EQ( 2012, WeatherManager::RunPeriodInput[1].startYear ); - EXPECT_EQ( 2455987, WeatherManager::RunPeriodInput[1].startJulianDate ); - EXPECT_EQ( 2455990, WeatherManager::RunPeriodInput[1].endJulianDate ); - - EXPECT_EQ( WeatherManager::WeekDay::Thursday, WeatherManager::RunPeriodInput[2].startWeekDay ); - EXPECT_EQ( 2015, WeatherManager::RunPeriodInput[2].startYear ); - EXPECT_EQ( 2015, WeatherManager::RunPeriodInput[2].startYear ); - EXPECT_EQ( 2457024, WeatherManager::RunPeriodInput[2].startJulianDate ); - EXPECT_EQ( 2457388, WeatherManager::RunPeriodInput[2].endJulianDate ); - - EXPECT_EQ( WeatherManager::WeekDay::Sunday, WeatherManager::RunPeriodInput[3].startWeekDay ); - EXPECT_EQ( 2017, WeatherManager::RunPeriodInput[3].startYear ); - EXPECT_EQ( 2017, WeatherManager::RunPeriodInput[3].startYear ); - EXPECT_EQ( 2457755, WeatherManager::RunPeriodInput[3].startJulianDate ); - EXPECT_EQ( 2458119, WeatherManager::RunPeriodInput[3].endJulianDate ); - + std::string const idf_objects = delimited_string({ + "Version,", + "8.8;", + "SimulationControl, NO, NO, NO, YES, YES;", + "Timestep,4;", + "RunPeriod,", + "RP1, !- Name", + "2, !- Begin Month", + "29, !- Begin Day of Month", + "2016, !- Begin Year", + "3, !- End Month", + "3, !- End Day of Month", + ", !- End Year", + "Monday, !- Day of Week for Start Day", + "Yes, !- Use Weather File Holidays and Special Days", + "Yes, !- Use Weather File Daylight Saving Period", + "No, !- Apply Weekend Holiday Rule", + "Yes, !- Use Weather File Rain Indicators", + "Yes; !- Use Weather File Snow Indicators", + "RunPeriod,", + "RP2, !- Name", + "2, !- Begin Month", + "29, !- Begin Day of Month", + ", !- Begin Year", + "3, !- End Month", + "3, !- End Day of Month", + ", !- End Year", + "Wednesday, !- Day of Week for Start Day", + "Yes, !- Use Weather File Holidays and Special Days", + "Yes, !- Use Weather File Daylight Saving Period", + "No, !- Apply Weekend Holiday Rule", + "Yes, !- Use Weather File Rain Indicators", + "Yes; !- Use Weather File Snow Indicators", + "RunPeriod,", + "RP3, !- Name", + "1, !- Begin Month", + "1, !- Begin Day of Month", + ", !- Begin Year", + "12, !- End Month", + "31, !- End Day of Month", + ", !- End Year", + "Thursday, !- Day of Week for Start Day", + "Yes, !- Use Weather File Holidays and Special Days", + "Yes, !- Use Weather File Daylight Saving Period", + "No, !- Apply Weekend Holiday Rule", + "Yes, !- Use Weather File Rain Indicators", + "Yes; !- Use Weather File Snow Indicators", + "RunPeriod,", + "RP4, !- Name", + "1, !- Begin Month", + "1, !- Begin Day of Month", + ", !- Begin Year", + "12, !- End Month", + "31, !- End Day of Month", + ", !- End Year", + ", !- Day of Week for Start Day", + "Yes, !- Use Weather File Holidays and Special Days", + "Yes, !- Use Weather File Daylight Saving Period", + "No, !- Apply Weekend Holiday Rule", + "Yes, !- Use Weather File Rain Indicators", + "Yes; !- Use Weather File Snow Indicators", + "BUILDING, Simple One Zone (Wireframe DXF), 0.0, Suburbs, .04, .004, MinimalShadowing, 30, 6;", + + }); + + ASSERT_TRUE(process_idf(idf_objects)); + bool errors_in_input(false); + int totalrps(4); + WeatherManager::GetRunPeriodData(totalrps, errors_in_input); + EXPECT_FALSE(errors_in_input); + + EXPECT_EQ(WeatherManager::WeekDay::Monday, WeatherManager::RunPeriodInput[0].startWeekDay); + EXPECT_EQ(2016, WeatherManager::RunPeriodInput[0].startYear); + EXPECT_EQ(2016, WeatherManager::RunPeriodInput[0].startYear); + EXPECT_EQ(2457448, WeatherManager::RunPeriodInput[0].startJulianDate); + EXPECT_EQ(2457451, WeatherManager::RunPeriodInput[0].endJulianDate); + + EXPECT_EQ(WeatherManager::WeekDay::Wednesday, WeatherManager::RunPeriodInput[1].startWeekDay); + EXPECT_EQ(2012, WeatherManager::RunPeriodInput[1].startYear); + EXPECT_EQ(2012, WeatherManager::RunPeriodInput[1].startYear); + EXPECT_EQ(2455987, WeatherManager::RunPeriodInput[1].startJulianDate); + EXPECT_EQ(2455990, WeatherManager::RunPeriodInput[1].endJulianDate); + + EXPECT_EQ(WeatherManager::WeekDay::Thursday, WeatherManager::RunPeriodInput[2].startWeekDay); + EXPECT_EQ(2015, WeatherManager::RunPeriodInput[2].startYear); + EXPECT_EQ(2015, WeatherManager::RunPeriodInput[2].startYear); + EXPECT_EQ(2457024, WeatherManager::RunPeriodInput[2].startJulianDate); + EXPECT_EQ(2457388, WeatherManager::RunPeriodInput[2].endJulianDate); + + EXPECT_EQ(WeatherManager::WeekDay::Sunday, WeatherManager::RunPeriodInput[3].startWeekDay); + EXPECT_EQ(2017, WeatherManager::RunPeriodInput[3].startYear); + EXPECT_EQ(2017, WeatherManager::RunPeriodInput[3].startYear); + EXPECT_EQ(2457755, WeatherManager::RunPeriodInput[3].startJulianDate); + EXPECT_EQ(2458119, WeatherManager::RunPeriodInput[3].endJulianDate); } - -TEST_F( EnergyPlusFixture, RunPeriod_EndYearOnly ) +TEST_F(EnergyPlusFixture, RunPeriod_EndYearOnly) { - std::string const idf_objects = delimited_string({ - "Version,", - "8.8;", - "SimulationControl, NO, NO, NO, YES, YES;", - "Timestep,4;", - "RunPeriod,", - ", !- Name", - "2, !- Begin Month", - "27, !- Begin Day of Month", - ", !- Begin Year", - "3, !- End Month", - "3, !- End Day of Month", - "1997, !- End Year", - "Tuesday, !- Day of Week for Start Day", - "Yes, !- Use Weather File Holidays and Special Days", - "Yes, !- Use Weather File Daylight Saving Period", - "No, !- Apply Weekend Holiday Rule", - "Yes, !- Use Weather File Rain Indicators", - "Yes; !- Use Weather File Snow Indicators", - "BUILDING, Simple One Zone (Wireframe DXF), 0.0, Suburbs, .04, .004, MinimalShadowing, 30, 6;", - }); - - ASSERT_TRUE( process_idf( idf_objects ) ); - bool errors_in_input( false ); - int totalrps( 1 ); - WeatherManager::GetRunPeriodData( totalrps, errors_in_input ); - - EXPECT_TRUE( errors_in_input ); - + std::string const idf_objects = delimited_string({ + "Version,", + "8.8;", + "SimulationControl, NO, NO, NO, YES, YES;", + "Timestep,4;", + "RunPeriod,", + ", !- Name", + "2, !- Begin Month", + "27, !- Begin Day of Month", + ", !- Begin Year", + "3, !- End Month", + "3, !- End Day of Month", + "1997, !- End Year", + "Tuesday, !- Day of Week for Start Day", + "Yes, !- Use Weather File Holidays and Special Days", + "Yes, !- Use Weather File Daylight Saving Period", + "No, !- Apply Weekend Holiday Rule", + "Yes, !- Use Weather File Rain Indicators", + "Yes; !- Use Weather File Snow Indicators", + "BUILDING, Simple One Zone (Wireframe DXF), 0.0, Suburbs, .04, .004, MinimalShadowing, 30, 6;", + }); + + ASSERT_TRUE(process_idf(idf_objects)); + bool errors_in_input(false); + int totalrps(1); + WeatherManager::GetRunPeriodData(totalrps, errors_in_input); + + EXPECT_TRUE(errors_in_input); } - diff --git a/tst/EnergyPlus/unit/SolarShading.unit.cc b/tst/EnergyPlus/unit/SolarShading.unit.cc index cd9246d8ad4..5980774a039 100644 --- a/tst/EnergyPlus/unit/SolarShading.unit.cc +++ b/tst/EnergyPlus/unit/SolarShading.unit.cc @@ -80,1383 +80,1383 @@ using namespace EnergyPlus::DataVectorTypes; using namespace EnergyPlus::DataShadowingCombinations; using namespace ObjexxFCL; -TEST_F( EnergyPlusFixture, SolarShadingTest_CalcPerSolarBeamTest ) +TEST_F(EnergyPlusFixture, SolarShadingTest_CalcPerSolarBeamTest) { -// Test inits for integrated and non-integrated shading calcs - -// static bool ErrorsFound( false ); // If errors detected in input -// static int ZoneNum( 0 ); // Zone number -// int NumAlphas( 2 ); -// int NumNumbers( 9 ); - Real64 AvgEqOfTime( 0.0 ); // Average value of Equation of Time for period - Real64 AvgSinSolarDeclin( 1.0 ); // Average value of Sine of Solar Declination for period - Real64 AvgCosSolarDeclin( 0.0 ); // Average value of Cosine of Solar Declination for period - int NumTimeSteps( 6 ); - - TimeStep = 1; - TotSurfaces = 3; - MaxBkSurf = 3; - SurfaceWindow.allocate( TotSurfaces ); - SunlitFracHR.allocate( 24, TotSurfaces ); - SunlitFrac.allocate( NumTimeSteps, 24, TotSurfaces ); - SunlitFracWithoutReveal.allocate( NumTimeSteps, 24, TotSurfaces ); - CTHETA.allocate( TotSurfaces ); - CosIncAngHR.allocate( 24, TotSurfaces ); - CosIncAng.allocate( NumTimeSteps, 24, TotSurfaces ); - AOSurf.allocate( TotSurfaces ); - BackSurfaces.allocate( NumTimeSteps, 24, MaxBkSurf, TotSurfaces ); - OverlapAreas.allocate( NumTimeSteps, 24, MaxBkSurf, TotSurfaces ); - -// Test non-integrated option first, CalcPerSolarBeam should set OutProjSLFracMult and InOutProjSLFracMult to 1.0 for all hours - for ( int SurfNum = 1; SurfNum <= TotSurfaces; ++SurfNum ) { - for ( int Hour = 1; Hour <= 24; ++Hour ) { - SurfaceWindow( SurfNum).OutProjSLFracMult( Hour ) = 999.0; - SurfaceWindow( SurfNum ).InOutProjSLFracMult( Hour ) = 888.0; - } - } - - DetailedSolarTimestepIntegration = false; - CalcPerSolarBeam( AvgEqOfTime, AvgSinSolarDeclin, AvgCosSolarDeclin ); - - for ( int SurfNum = 1; SurfNum <= TotSurfaces; ++SurfNum ) { - for ( int Hour = 1; Hour <= 24; ++Hour ) { - EXPECT_EQ( 1.0, SurfaceWindow( SurfNum ).OutProjSLFracMult( Hour ) ); - EXPECT_EQ( 1.0, SurfaceWindow( SurfNum ).InOutProjSLFracMult( Hour ) ); - } - } - - // Test integrated option, CalcPerSolarBeam should set OutProjSLFracMult and InOutProjSLFracMult to 1.0 only for the specified hour - // Re-initialize to new values - for ( int SurfNum = 1; SurfNum <= TotSurfaces; ++SurfNum ) { - for ( int Hour = 1; Hour <= 24; ++Hour ) { - SurfaceWindow( SurfNum ).OutProjSLFracMult( Hour ) = 555.0; - SurfaceWindow( SurfNum ).InOutProjSLFracMult( Hour ) = 444.0; - } - } - - DetailedSolarTimestepIntegration = true; - HourOfDay = 23; - CalcPerSolarBeam( AvgEqOfTime, AvgSinSolarDeclin, AvgCosSolarDeclin ); - - for ( int SurfNum = 1; SurfNum <= TotSurfaces; ++SurfNum ) { - for ( int Hour = 1; Hour <= 24; ++Hour ) { - if ( Hour == HourOfDay ) { - EXPECT_EQ( 1.0, SurfaceWindow( SurfNum ).OutProjSLFracMult( Hour ) ); - EXPECT_EQ( 1.0, SurfaceWindow( SurfNum ).InOutProjSLFracMult( Hour ) ); - } else { - EXPECT_EQ( 555.0, SurfaceWindow( SurfNum ).OutProjSLFracMult( Hour ) ); - EXPECT_EQ( 444.0, SurfaceWindow( SurfNum ).InOutProjSLFracMult( Hour ) ); - } - } - } - - // Clean up - SurfaceWindow.deallocate(); - SunlitFracHR.deallocate(); - SunlitFrac.deallocate(); - SunlitFracWithoutReveal.deallocate(); - CTHETA.deallocate(); - CosIncAngHR.deallocate(); - CosIncAng.deallocate(); - AOSurf.deallocate(); - BackSurfaces.deallocate(); - OverlapAreas.deallocate(); + // Test inits for integrated and non-integrated shading calcs + + // static bool ErrorsFound( false ); // If errors detected in input + // static int ZoneNum( 0 ); // Zone number + // int NumAlphas( 2 ); + // int NumNumbers( 9 ); + Real64 AvgEqOfTime(0.0); // Average value of Equation of Time for period + Real64 AvgSinSolarDeclin(1.0); // Average value of Sine of Solar Declination for period + Real64 AvgCosSolarDeclin(0.0); // Average value of Cosine of Solar Declination for period + int NumTimeSteps(6); + + TimeStep = 1; + TotSurfaces = 3; + MaxBkSurf = 3; + SurfaceWindow.allocate(TotSurfaces); + SunlitFracHR.allocate(24, TotSurfaces); + SunlitFrac.allocate(NumTimeSteps, 24, TotSurfaces); + SunlitFracWithoutReveal.allocate(NumTimeSteps, 24, TotSurfaces); + CTHETA.allocate(TotSurfaces); + CosIncAngHR.allocate(24, TotSurfaces); + CosIncAng.allocate(NumTimeSteps, 24, TotSurfaces); + AOSurf.allocate(TotSurfaces); + BackSurfaces.allocate(NumTimeSteps, 24, MaxBkSurf, TotSurfaces); + OverlapAreas.allocate(NumTimeSteps, 24, MaxBkSurf, TotSurfaces); + + // Test non-integrated option first, CalcPerSolarBeam should set OutProjSLFracMult and InOutProjSLFracMult to 1.0 for all hours + for (int SurfNum = 1; SurfNum <= TotSurfaces; ++SurfNum) { + for (int Hour = 1; Hour <= 24; ++Hour) { + SurfaceWindow(SurfNum).OutProjSLFracMult(Hour) = 999.0; + SurfaceWindow(SurfNum).InOutProjSLFracMult(Hour) = 888.0; + } + } + + DetailedSolarTimestepIntegration = false; + CalcPerSolarBeam(AvgEqOfTime, AvgSinSolarDeclin, AvgCosSolarDeclin); + + for (int SurfNum = 1; SurfNum <= TotSurfaces; ++SurfNum) { + for (int Hour = 1; Hour <= 24; ++Hour) { + EXPECT_EQ(1.0, SurfaceWindow(SurfNum).OutProjSLFracMult(Hour)); + EXPECT_EQ(1.0, SurfaceWindow(SurfNum).InOutProjSLFracMult(Hour)); + } + } + + // Test integrated option, CalcPerSolarBeam should set OutProjSLFracMult and InOutProjSLFracMult to 1.0 only for the specified hour + // Re-initialize to new values + for (int SurfNum = 1; SurfNum <= TotSurfaces; ++SurfNum) { + for (int Hour = 1; Hour <= 24; ++Hour) { + SurfaceWindow(SurfNum).OutProjSLFracMult(Hour) = 555.0; + SurfaceWindow(SurfNum).InOutProjSLFracMult(Hour) = 444.0; + } + } + + DetailedSolarTimestepIntegration = true; + HourOfDay = 23; + CalcPerSolarBeam(AvgEqOfTime, AvgSinSolarDeclin, AvgCosSolarDeclin); + + for (int SurfNum = 1; SurfNum <= TotSurfaces; ++SurfNum) { + for (int Hour = 1; Hour <= 24; ++Hour) { + if (Hour == HourOfDay) { + EXPECT_EQ(1.0, SurfaceWindow(SurfNum).OutProjSLFracMult(Hour)); + EXPECT_EQ(1.0, SurfaceWindow(SurfNum).InOutProjSLFracMult(Hour)); + } else { + EXPECT_EQ(555.0, SurfaceWindow(SurfNum).OutProjSLFracMult(Hour)); + EXPECT_EQ(444.0, SurfaceWindow(SurfNum).InOutProjSLFracMult(Hour)); + } + } + } + + // Clean up + SurfaceWindow.deallocate(); + SunlitFracHR.deallocate(); + SunlitFrac.deallocate(); + SunlitFracWithoutReveal.deallocate(); + CTHETA.deallocate(); + CosIncAngHR.deallocate(); + CosIncAng.deallocate(); + AOSurf.deallocate(); + BackSurfaces.deallocate(); + OverlapAreas.deallocate(); } -TEST_F( EnergyPlusFixture, SolarShadingTest_SurfaceScheduledSolarInc ) +TEST_F(EnergyPlusFixture, SolarShadingTest_SurfaceScheduledSolarInc) { - int SurfSolIncPtr; - TotSurfIncSolSSG = 4; - SurfIncSolSSG.allocate( TotSurfIncSolSSG ); - SurfIncSolSSG( 1 ).SurfPtr = 1; - SurfIncSolSSG( 1 ).ConstrPtr = 1; - SurfIncSolSSG( 2 ).SurfPtr = 1; - SurfIncSolSSG( 2 ).ConstrPtr = 2; - SurfIncSolSSG( 3 ).SurfPtr = 4; - SurfIncSolSSG( 3 ).ConstrPtr = 10; - SurfIncSolSSG( 4 ).SurfPtr = 5; - SurfIncSolSSG( 4 ).ConstrPtr = 1; - - // Test retrieving pointer for surface incident solar schedule - - SurfSolIncPtr = -99; - SurfSolIncPtr = SurfaceScheduledSolarInc( 1, 1 ); - EXPECT_EQ( 1, SurfSolIncPtr ); - - SurfSolIncPtr = -99; - SurfSolIncPtr = SurfaceScheduledSolarInc( 1, 2 ); - EXPECT_EQ( 2, SurfSolIncPtr ); - - SurfSolIncPtr = -99; - SurfSolIncPtr = SurfaceScheduledSolarInc( 1, 3 ); - EXPECT_EQ( 0, SurfSolIncPtr ); - - SurfSolIncPtr = -99; - SurfSolIncPtr = SurfaceScheduledSolarInc( 5, 1 ); - EXPECT_EQ( 4, SurfSolIncPtr ); - - SurfSolIncPtr = -99; - SurfSolIncPtr = SurfaceScheduledSolarInc( 5, 10 ); - EXPECT_EQ( 0, SurfSolIncPtr ); - - SurfIncSolSSG.deallocate(); + int SurfSolIncPtr; + TotSurfIncSolSSG = 4; + SurfIncSolSSG.allocate(TotSurfIncSolSSG); + SurfIncSolSSG(1).SurfPtr = 1; + SurfIncSolSSG(1).ConstrPtr = 1; + SurfIncSolSSG(2).SurfPtr = 1; + SurfIncSolSSG(2).ConstrPtr = 2; + SurfIncSolSSG(3).SurfPtr = 4; + SurfIncSolSSG(3).ConstrPtr = 10; + SurfIncSolSSG(4).SurfPtr = 5; + SurfIncSolSSG(4).ConstrPtr = 1; + + // Test retrieving pointer for surface incident solar schedule + + SurfSolIncPtr = -99; + SurfSolIncPtr = SurfaceScheduledSolarInc(1, 1); + EXPECT_EQ(1, SurfSolIncPtr); + + SurfSolIncPtr = -99; + SurfSolIncPtr = SurfaceScheduledSolarInc(1, 2); + EXPECT_EQ(2, SurfSolIncPtr); + + SurfSolIncPtr = -99; + SurfSolIncPtr = SurfaceScheduledSolarInc(1, 3); + EXPECT_EQ(0, SurfSolIncPtr); + + SurfSolIncPtr = -99; + SurfSolIncPtr = SurfaceScheduledSolarInc(5, 1); + EXPECT_EQ(4, SurfSolIncPtr); + + SurfSolIncPtr = -99; + SurfSolIncPtr = SurfaceScheduledSolarInc(5, 10); + EXPECT_EQ(0, SurfSolIncPtr); + + SurfIncSolSSG.deallocate(); } -TEST_F( EnergyPlusFixture, SolarShadingTest_polygon_contains_point ) +TEST_F(EnergyPlusFixture, SolarShadingTest_polygon_contains_point) { - unsigned int numSides = 4; - Array1D< Vector > Rectangle3d; + unsigned int numSides = 4; + Array1D Rectangle3d; - Rectangle3d.allocate( numSides ); + Rectangle3d.allocate(numSides); - Rectangle3d( 1 ).x = 0.; - Rectangle3d( 1 ).y = 0.; - Rectangle3d( 1 ).z = 0.; + Rectangle3d(1).x = 0.; + Rectangle3d(1).y = 0.; + Rectangle3d(1).z = 0.; - Rectangle3d( 2 ).x = 10.; - Rectangle3d( 2 ).y = 0.; - Rectangle3d( 2 ).z = 0.; + Rectangle3d(2).x = 10.; + Rectangle3d(2).y = 0.; + Rectangle3d(2).z = 0.; - Rectangle3d( 3 ).x = 10.; - Rectangle3d( 3 ).y = 10.; - Rectangle3d( 3 ).z = 0.; + Rectangle3d(3).x = 10.; + Rectangle3d(3).y = 10.; + Rectangle3d(3).z = 0.; - Rectangle3d( 4 ).x = 0.; - Rectangle3d( 4 ).y = 10.; - Rectangle3d( 4 ).z = 0.; + Rectangle3d(4).x = 0.; + Rectangle3d(4).y = 10.; + Rectangle3d(4).z = 0.; - Vector PointInside; + Vector PointInside; - PointInside.x = 5.; - PointInside.y = 5.; - PointInside.z = 0.; + PointInside.x = 5.; + PointInside.y = 5.; + PointInside.z = 0.; - Vector PointOutside; + Vector PointOutside; - PointOutside.x = 20.; - PointOutside.y = 20.; - PointOutside.z = 0.; + PointOutside.x = 20.; + PointOutside.y = 20.; + PointOutside.z = 0.; - EXPECT_TRUE(polygon_contains_point( numSides, Rectangle3d, PointInside, false, false, true ) ); - EXPECT_FALSE( polygon_contains_point( numSides, Rectangle3d, PointOutside, false, false, true ) ); + EXPECT_TRUE(polygon_contains_point(numSides, Rectangle3d, PointInside, false, false, true)); + EXPECT_FALSE(polygon_contains_point(numSides, Rectangle3d, PointOutside, false, false, true)); - Rectangle3d( 1 ).x = 0.; - Rectangle3d( 1 ).y = 0.; - Rectangle3d( 1 ).z = 0.; + Rectangle3d(1).x = 0.; + Rectangle3d(1).y = 0.; + Rectangle3d(1).z = 0.; - Rectangle3d( 2 ).x = 10.; - Rectangle3d( 2 ).y = 0.; - Rectangle3d( 2 ).z = 0.; + Rectangle3d(2).x = 10.; + Rectangle3d(2).y = 0.; + Rectangle3d(2).z = 0.; - Rectangle3d( 3 ).x = 10.; - Rectangle3d( 3 ).y = 0.; - Rectangle3d( 3 ).z = 10.; + Rectangle3d(3).x = 10.; + Rectangle3d(3).y = 0.; + Rectangle3d(3).z = 10.; - Rectangle3d( 4 ).x = 0.; - Rectangle3d( 4 ).y = 0.; - Rectangle3d( 4 ).z = 10.; + Rectangle3d(4).x = 0.; + Rectangle3d(4).y = 0.; + Rectangle3d(4).z = 10.; - PointInside.x = 5.; - PointInside.y = 0.; - PointInside.z = 5.; + PointInside.x = 5.; + PointInside.y = 0.; + PointInside.z = 5.; - PointOutside.x = 20.; - PointOutside.y = 0.; - PointOutside.z = 20.; + PointOutside.x = 20.; + PointOutside.y = 0.; + PointOutside.z = 20.; - EXPECT_TRUE( polygon_contains_point( numSides, Rectangle3d, PointInside, false, true, false ) ); - EXPECT_FALSE( polygon_contains_point( numSides, Rectangle3d, PointOutside, false, true, false ) ); + EXPECT_TRUE(polygon_contains_point(numSides, Rectangle3d, PointInside, false, true, false)); + EXPECT_FALSE(polygon_contains_point(numSides, Rectangle3d, PointOutside, false, true, false)); - Rectangle3d( 1 ).x = 0.; - Rectangle3d( 1 ).y = 0.; - Rectangle3d( 1 ).z = 0.; + Rectangle3d(1).x = 0.; + Rectangle3d(1).y = 0.; + Rectangle3d(1).z = 0.; - Rectangle3d( 2 ).x = 0.; - Rectangle3d( 2 ).y = 10.; - Rectangle3d( 2 ).z = 0.; + Rectangle3d(2).x = 0.; + Rectangle3d(2).y = 10.; + Rectangle3d(2).z = 0.; - Rectangle3d( 3 ).x = 0.; - Rectangle3d( 3 ).y = 10.; - Rectangle3d( 3 ).z = 10.; + Rectangle3d(3).x = 0.; + Rectangle3d(3).y = 10.; + Rectangle3d(3).z = 10.; - Rectangle3d( 4 ).x = 0.; - Rectangle3d( 4 ).y = 0.; - Rectangle3d( 4 ).z = 10.; + Rectangle3d(4).x = 0.; + Rectangle3d(4).y = 0.; + Rectangle3d(4).z = 10.; - PointInside.x = 0.; - PointInside.y = 5.; - PointInside.z = 5.; + PointInside.x = 0.; + PointInside.y = 5.; + PointInside.z = 5.; - PointOutside.x = 0.; - PointOutside.y = 20.; - PointOutside.z = 20.; + PointOutside.x = 0.; + PointOutside.y = 20.; + PointOutside.z = 20.; - EXPECT_TRUE( polygon_contains_point( numSides, Rectangle3d, PointInside, true, false, false ) ); - EXPECT_FALSE( polygon_contains_point( numSides, Rectangle3d, PointOutside, true, false, false ) ); + EXPECT_TRUE(polygon_contains_point(numSides, Rectangle3d, PointInside, true, false, false)); + EXPECT_FALSE(polygon_contains_point(numSides, Rectangle3d, PointOutside, true, false, false)); } -TEST_F( EnergyPlusFixture, SolarShadingTest_FigureSolarBeamAtTimestep ) +TEST_F(EnergyPlusFixture, SolarShadingTest_FigureSolarBeamAtTimestep) { std::string const idf_objects = delimited_string({" Version,8.9; ", - " Building, ", - " DemoFDT, !- Name ", - " 0, !- North Axis {deg} ", - " Suburbs, !- Terrain ", - " 3.9999999E-02, !- Loads Convergence Tolerance Value ", - " 4.0000002E-03, !- Temperature Convergence Tolerance Value {deltaC} ", - " FullExterior, !- Solar Distribution ", - " , !- Maximum Number of Warmup Days ", - " 6; !- Minimum Number of Warmup Days ", - " ShadowCalculation, ", - " TimestepFrequency, !- Calculation Method ", - " , !- Calculation Frequency ", - " , !- Maximum Figures in Shadow Overlap Calculations ", - " , !- Polygon Clipping Algorithm ", - " DetailedSkyDiffuseModeling; !- Sky Diffuse Modeling Algorithm ", - " SurfaceConvectionAlgorithm:Inside,TARP; ", - " SurfaceConvectionAlgorithm:Outside,TARP; ", - " HeatBalanceAlgorithm,ConductionTransferFunction; ", - " Timestep,6; ", - " RunPeriod, ", - " , !- Name ", - " 1, !- Begin Month ", - " 1, !- Begin Day of Month ", - " , !- Begin Year ", - " 12, !- End Month ", - " 31, !- End Day of Month ", - " , !- End Year ", - " , !- Day of Week for Start Day ", - " , !- Use Weather File Holidays and Special Days ", - " , !- Use Weather File Daylight Saving Period ", - " , !- Apply Weekend Holiday Rule ", - " , !- Use Weather File Rain Indicators ", - " ; !- Use Weather File Snow Indicators ", - " ScheduleTypeLimits, ", - " Fraction, !- Name ", - " 0.0, !- Lower Limit Value ", - " 1.0, !- Upper Limit Value ", - " Continuous; !- Numeric Type ", - " ScheduleTypeLimits, ", - " ON/OFF, !- Name ", - " 0, !- Lower Limit Value ", - " 1, !- Upper Limit Value ", - " Discrete; !- Numeric Type ", - " Schedule:Compact, ", - " SunShading, !- Name ", - " ON/OFF, !- Schedule Type Limits Name ", - " Through: 4/30, !- Field 1 ", - " For: AllDays, !- Field 2 ", - " until: 24:00,1, !- Field 3 ", - " Through: 10/31, !- Field 5 ", - " For: AllDays, !- Field 6 ", - " until: 24:00,0, !- Field 7 ", - " Through: 12/31, !- Field 9 ", - " For: AllDays, !- Field 10 ", - " until: 24:00,1; !- Field 11 ", - " Material, ", - " A2 - 4 IN DENSE FACE BRICK, !- Name ", - " Rough, !- Roughness ", - " 0.1014984, !- Thickness {m} ", - " 1.245296, !- Conductivity {W/m-K} ", - " 2082.400, !- Density {kg/m3} ", - " 920.4800, !- Specific Heat {J/kg-K} ", - " 0.9000000, !- Thermal Absorptance ", - " 0.9300000, !- Solar Absorptance ", - " 0.9300000; !- Visible Absorptance ", - " Material, ", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Name ", - " Smooth, !- Roughness ", - " 1.9050000E-02, !- Thickness {m} ", - " 0.7264224, !- Conductivity {W/m-K} ", - " 1601.846, !- Density {kg/m3} ", - " 836.8000, !- Specific Heat {J/kg-K} ", - " 0.9000000, !- Thermal Absorptance ", - " 0.9200000, !- Solar Absorptance ", - " 0.9200000; !- Visible Absorptance ", - " Material, ", - " E2 - 1 / 2 IN SLAG OR STONE, !- Name ", - " Rough, !- Roughness ", - " 1.2710161E-02, !- Thickness {m} ", - " 1.435549, !- Conductivity {W/m-K} ", - " 881.0155, !- Density {kg/m3} ", - " 1673.600, !- Specific Heat {J/kg-K} ", - " 0.9000000, !- Thermal Absorptance ", - " 0.5500000, !- Solar Absorptance ", - " 0.5500000; !- Visible Absorptance ", - " Material, ", - " C12 - 2 IN HW CONCRETE, !- Name ", - " MediumRough, !- Roughness ", - " 5.0901599E-02, !- Thickness {m} ", - " 1.729577, !- Conductivity {W/m-K} ", - " 2242.585, !- Density {kg/m3} ", - " 836.8000, !- Specific Heat {J/kg-K} ", - " 0.9000000, !- Thermal Absorptance ", - " 0.6500000, !- Solar Absorptance ", - " 0.6500000; !- Visible Absorptance ", - " Material:NoMass, ", - " R13LAYER, !- Name ", - " Rough, !- Roughness ", - " 2.290965, !- Thermal Resistance {m2-K/W} ", - " 0.9000000, !- Thermal Absorptance ", - " 0.7500000, !- Solar Absorptance ", - " 0.7500000; !- Visible Absorptance ", - " WindowMaterial:Glazing, ", - " GLASS - CLEAR PLATE 1 / 4 IN, !- Name ", - " SpectralAverage, !- Optical Data Type ", - " , !- Window Glass Spectral Data Set Name ", - " 0.006, !- Thickness {m} ", - " 0.80, !- Solar Transmittance at Normal Incidence ", - " 0.10, !- Front Side Solar Reflectance at Normal Incidence ", - " 0.10, !- Back Side Solar Reflectance at Normal Incidence ", - " 0.80, !- Visible Transmittance at Normal Incidence ", - " 0.10, !- Front Side Visible Reflectance at Normal Incidence ", - " 0.10, !- Back Side Visible Reflectance at Normal Incidence ", - " 0.0, !- Infrared Transmittance at Normal Incidence ", - " 0.84, !- Front Side Infrared Hemispherical Emissivity ", - " 0.84, !- Back Side Infrared Hemispherical Emissivity ", - " 0.9; !- Conductivity {W/m-K} ", - " WindowMaterial:Gas, ", - " AIRGAP, !- Name ", - " AIR, !- Gas Type ", - " 0.0125; !- Thickness {m} ", - " Construction, ", - " R13WALL, !- Name ", - " R13LAYER; !- Outside Layer ", - " Construction, ", - " EXTWALL09, !- Name ", - " A2 - 4 IN DENSE FACE BRICK, !- Outside Layer ", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 4 ", - " Construction, ", - " INTERIOR, !- Name ", - " C12 - 2 IN HW CONCRETE; !- Layer 4 ", - " Construction, ", - " SLAB FLOOR, !- Name ", - " C12 - 2 IN HW CONCRETE; !- Layer 4 ", - " Construction, ", - " ROOF31, !- Name ", - " E2 - 1 / 2 IN SLAG OR STONE, !- Outside Layer ", - " C12 - 2 IN HW CONCRETE; !- Layer 4 ", - " Construction, ", - " DOUBLE PANE HW WINDOW, !- Name ", - " GLASS - CLEAR PLATE 1 / 4 IN, !- Outside Layer ", - " AIRGAP, !- Layer 2 ", - " GLASS - CLEAR PLATE 1 / 4 IN; !- Layer 3 ", - " Construction, ", - " PARTITION02, !- Name ", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer ", - " C12 - 2 IN HW CONCRETE, !- Layer 4 ", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3 ", - " Construction, ", - " single PANE HW WINDOW, !- Name ", - " GLASS - CLEAR PLATE 1 / 4 IN; !- Outside Layer ", - " Construction, ", - " EXTWALLdemo, !- Name ", - " A2 - 4 IN DENSE FACE BRICK, !- Outside Layer ", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 4 ", - " GlobalGeometryRules, ", - " UpperLeftCorner, !- Starting Vertex Position ", - " Counterclockwise, !- Vertex Entry Direction ", - " Relative; !- Coordinate System ", - " Zone, ", - " ZONE ONE, !- Name ", - " 0, !- Direction of Relative North {deg} ", - " 0, !- X Origin {m} ", - " 0, !- Y Origin {m} ", - " 0, !- Z Origin {m} ", - " 1, !- Type ", - " 1, !- Multiplier ", - " 0, !- Ceiling Height {m} ", - " 0; !- Volume {m3} ", - " BuildingSurface:Detailed, ", - " Zn001:Wall-North, !- Name ", - " Wall, !- Surface Type ", - " EXTWALLdemo, !- Construction Name ", - " ZONE ONE, !- Zone Name ", - " Outdoors, !- Outside Boundary Condition ", - " , !- Outside Boundary Condition Object ", - " SunExposed, !- Sun Exposure ", - " WindExposed, !- Wind Exposure ", - " 0.5000000, !- View Factor to Ground ", - " 4, !- Number of Vertices ", - " 5,5,3, !- X,Y,Z ==> Vertex 1 {m} ", - " 5,5,0, !- X,Y,Z ==> Vertex 2 {m} ", - " -5,5,0, !- X,Y,Z ==> Vertex 3 {m} ", - " -5,5,3; !- X,Y,Z ==> Vertex 4 {m} ", - " BuildingSurface:Detailed, ", - " Zn001:Wall-East, !- Name ", - " Wall, !- Surface Type ", - " EXTWALL09, !- Construction Name ", - " ZONE ONE, !- Zone Name ", - " Outdoors, !- Outside Boundary Condition ", - " , !- Outside Boundary Condition Object ", - " SunExposed, !- Sun Exposure ", - " WindExposed, !- Wind Exposure ", - " 0.5000000, !- View Factor to Ground ", - " 4, !- Number of Vertices ", - " 5,-5,3, !- X,Y,Z ==> Vertex 1 {m} ", - " 5,-5,0, !- X,Y,Z ==> Vertex 2 {m} ", - " 5,5,0, !- X,Y,Z ==> Vertex 3 {m} ", - " 5,5,3; !- X,Y,Z ==> Vertex 4 {m} ", - " BuildingSurface:Detailed, ", - " Zn001:Wall-South, !- Name ", - " Wall, !- Surface Type ", - " R13WALL, !- Construction Name ", - " ZONE ONE, !- Zone Name ", - " Outdoors, !- Outside Boundary Condition ", - " , !- Outside Boundary Condition Object ", - " SunExposed, !- Sun Exposure ", - " WindExposed, !- Wind Exposure ", - " 0.5000000, !- View Factor to Ground ", - " 4, !- Number of Vertices ", - " -5,-5,3, !- X,Y,Z ==> Vertex 1 {m} ", - " -5,-5,0, !- X,Y,Z ==> Vertex 2 {m} ", - " 5,-5,0, !- X,Y,Z ==> Vertex 3 {m} ", - " 5,-5,3; !- X,Y,Z ==> Vertex 4 {m} ", - " BuildingSurface:Detailed, ", - " Zn001:Wall-West, !- Name ", - " Wall, !- Surface Type ", - " EXTWALL09, !- Construction Name ", - " ZONE ONE, !- Zone Name ", - " Outdoors, !- Outside Boundary Condition ", - " , !- Outside Boundary Condition Object ", - " SunExposed, !- Sun Exposure ", - " WindExposed, !- Wind Exposure ", - " 0.5000000, !- View Factor to Ground ", - " 4, !- Number of Vertices ", - " -5,5,3, !- X,Y,Z ==> Vertex 1 {m} ", - " -5,5,0, !- X,Y,Z ==> Vertex 2 {m} ", - " -5,-5,0, !- X,Y,Z ==> Vertex 3 {m} ", - " -5,-5,3; !- X,Y,Z ==> Vertex 4 {m} ", - " BuildingSurface:Detailed, ", - " Zn001:roof, !- Name ", - " Roof, !- Surface Type ", - " ROOF31, !- Construction Name ", - " ZONE ONE, !- Zone Name ", - " Outdoors, !- Outside Boundary Condition ", - " , !- Outside Boundary Condition Object ", - " SunExposed, !- Sun Exposure ", - " WindExposed, !- Wind Exposure ", - " 0.0000000, !- View Factor to Ground ", - " 4, !- Number of Vertices ", - " -5,-5,3, !- X,Y,Z ==> Vertex 1 {m} ", - " 5,-5,3, !- X,Y,Z ==> Vertex 2 {m} ", - " 5,5,3, !- X,Y,Z ==> Vertex 3 {m} ", - " -5,5,3; !- X,Y,Z ==> Vertex 4 {m} ", - " BuildingSurface:Detailed, ", - " Zn001:floor, !- Name ", - " Floor, !- Surface Type ", - " SLAB FLOOR, !- Construction Name ", - " ZONE ONE, !- Zone Name ", - " Outdoors, !- Outside Boundary Condition ", - " , !- Outside Boundary Condition Object ", - " SunExposed, !- Sun Exposure ", - " WindExposed, !- Wind Exposure ", - " 0.0000000, !- View Factor to Ground ", - " 4, !- Number of Vertices ", - " -5,5,0, !- X,Y,Z ==> Vertex 1 {m} ", - " 5,5,0, !- X,Y,Z ==> Vertex 2 {m} ", - " 5,-5,0, !- X,Y,Z ==> Vertex 3 {m} ", - " -5,-5,0; !- X,Y,Z ==> Vertex 4 {m} ", - " FenestrationSurface:Detailed, ", - " Zn001:Wall-South:Win001, !- Name ", - " Window, !- Surface Type ", - " DOUBLE PANE HW WINDOW, !- Construction Name ", - " Zn001:Wall-South, !- Building Surface Name ", - " , !- Outside Boundary Condition Object ", - " 0.5000000, !- View Factor to Ground ", - " , !- Shading Control Name ", - " TestFrameAndDivider, !- Frame and Divider Name ", - " 1.0, !- Multiplier ", - " 4, !- Number of Vertices ", - " -3,-5,2.5, !- X,Y,Z ==> Vertex 1 {m} ", - " -3,-5,0.5, !- X,Y,Z ==> Vertex 2 {m} ", - " 3,-5,0.5, !- X,Y,Z ==> Vertex 3 {m} ", - " 3,-5,2.5; !- X,Y,Z ==> Vertex 4 {m} ", - " WindowProperty:FrameAndDivider, ", - " TestFrameAndDivider, !- Name ", - " 0.05, !- Frame Width {m} ", - " 0.05, !- Frame Outside Projection {m} ", - " 0.05, !- Frame Inside Projection {m} ", - " 5.0, !- Frame Conductance {W/m2-K} ", - " 1.2, !- Ratio of Frame-Edge Glass Conductance to Center-Of-Gl", - " 0.8, !- Frame Solar Absorptance ", - " 0.8, !- Frame Visible Absorptance ", - " 0.9, !- Frame Thermal Hemispherical Emissivity ", - " DividedLite, !- Divider Type ", - " 0.02, !- Divider Width {m} ", - " 2, !- Number of Horizontal Dividers ", - " 2, !- Number of Vertical Dividers ", - " 0.02, !- Divider Outside Projection {m} ", - " 0.02, !- Divider Inside Projection {m} ", - " 5.0, !- Divider Conductance {W/m2-K} ", - " 1.2, !- Ratio of Divider-Edge Glass Conductance to Center-Of-", - " 0.8, !- Divider Solar Absorptance ", - " 0.8, !- Divider Visible Absorptance ", - " 0.9; !- Divider Thermal Hemispherical Emissivity ", - " Shading:Zone:Detailed, ", - " Zn001:Wall-South:Shade001, !- Name ", - " Zn001:Wall-South, !- Base Surface Name ", - " SunShading, !- Transmittance Schedule Name ", - " 4, !- Number of Vertices ", - " -3,-5,2.5, !- X,Y,Z ==> Vertex 1 {m} ", - " -3,-6,2.5, !- X,Y,Z ==> Vertex 2 {m} ", - " 3,-6,2.5, !- X,Y,Z ==> Vertex 3 {m} ", - " 3,-5,2.5; !- X,Y,Z ==> Vertex 4 {m} ", - " ShadingProperty:Reflectance, ", - " Zn001:Wall-South:Shade001, !- Shading Surface Name ", - " 0.2, !- Diffuse Solar Reflectance of Unglazed Part of Shading", + " Building, ", + " DemoFDT, !- Name ", + " 0, !- North Axis {deg} ", + " Suburbs, !- Terrain ", + " 3.9999999E-02, !- Loads Convergence Tolerance Value ", + " 4.0000002E-03, !- Temperature Convergence Tolerance Value {deltaC} ", + " FullExterior, !- Solar Distribution ", + " , !- Maximum Number of Warmup Days ", + " 6; !- Minimum Number of Warmup Days ", + " ShadowCalculation, ", + " TimestepFrequency, !- Calculation Method ", + " , !- Calculation Frequency ", + " , !- Maximum Figures in Shadow Overlap Calculations ", + " , !- Polygon Clipping Algorithm ", + " DetailedSkyDiffuseModeling; !- Sky Diffuse Modeling Algorithm ", + " SurfaceConvectionAlgorithm:Inside,TARP; ", + " SurfaceConvectionAlgorithm:Outside,TARP; ", + " HeatBalanceAlgorithm,ConductionTransferFunction; ", + " Timestep,6; ", + " RunPeriod, ", + " , !- Name ", + " 1, !- Begin Month ", + " 1, !- Begin Day of Month ", + " , !- Begin Year ", + " 12, !- End Month ", + " 31, !- End Day of Month ", + " , !- End Year ", + " , !- Day of Week for Start Day ", + " , !- Use Weather File Holidays and Special Days ", + " , !- Use Weather File Daylight Saving Period ", + " , !- Apply Weekend Holiday Rule ", + " , !- Use Weather File Rain Indicators ", + " ; !- Use Weather File Snow Indicators ", + " ScheduleTypeLimits, ", + " Fraction, !- Name ", + " 0.0, !- Lower Limit Value ", + " 1.0, !- Upper Limit Value ", + " Continuous; !- Numeric Type ", + " ScheduleTypeLimits, ", + " ON/OFF, !- Name ", + " 0, !- Lower Limit Value ", + " 1, !- Upper Limit Value ", + " Discrete; !- Numeric Type ", + " Schedule:Compact, ", + " SunShading, !- Name ", + " ON/OFF, !- Schedule Type Limits Name ", + " Through: 4/30, !- Field 1 ", + " For: AllDays, !- Field 2 ", + " until: 24:00,1, !- Field 3 ", + " Through: 10/31, !- Field 5 ", + " For: AllDays, !- Field 6 ", + " until: 24:00,0, !- Field 7 ", + " Through: 12/31, !- Field 9 ", + " For: AllDays, !- Field 10 ", + " until: 24:00,1; !- Field 11 ", + " Material, ", + " A2 - 4 IN DENSE FACE BRICK, !- Name ", + " Rough, !- Roughness ", + " 0.1014984, !- Thickness {m} ", + " 1.245296, !- Conductivity {W/m-K} ", + " 2082.400, !- Density {kg/m3} ", + " 920.4800, !- Specific Heat {J/kg-K} ", + " 0.9000000, !- Thermal Absorptance ", + " 0.9300000, !- Solar Absorptance ", + " 0.9300000; !- Visible Absorptance ", + " Material, ", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Name ", + " Smooth, !- Roughness ", + " 1.9050000E-02, !- Thickness {m} ", + " 0.7264224, !- Conductivity {W/m-K} ", + " 1601.846, !- Density {kg/m3} ", + " 836.8000, !- Specific Heat {J/kg-K} ", + " 0.9000000, !- Thermal Absorptance ", + " 0.9200000, !- Solar Absorptance ", + " 0.9200000; !- Visible Absorptance ", + " Material, ", + " E2 - 1 / 2 IN SLAG OR STONE, !- Name ", + " Rough, !- Roughness ", + " 1.2710161E-02, !- Thickness {m} ", + " 1.435549, !- Conductivity {W/m-K} ", + " 881.0155, !- Density {kg/m3} ", + " 1673.600, !- Specific Heat {J/kg-K} ", + " 0.9000000, !- Thermal Absorptance ", + " 0.5500000, !- Solar Absorptance ", + " 0.5500000; !- Visible Absorptance ", + " Material, ", + " C12 - 2 IN HW CONCRETE, !- Name ", + " MediumRough, !- Roughness ", + " 5.0901599E-02, !- Thickness {m} ", + " 1.729577, !- Conductivity {W/m-K} ", + " 2242.585, !- Density {kg/m3} ", + " 836.8000, !- Specific Heat {J/kg-K} ", + " 0.9000000, !- Thermal Absorptance ", + " 0.6500000, !- Solar Absorptance ", + " 0.6500000; !- Visible Absorptance ", + " Material:NoMass, ", + " R13LAYER, !- Name ", + " Rough, !- Roughness ", + " 2.290965, !- Thermal Resistance {m2-K/W} ", + " 0.9000000, !- Thermal Absorptance ", + " 0.7500000, !- Solar Absorptance ", + " 0.7500000; !- Visible Absorptance ", + " WindowMaterial:Glazing, ", + " GLASS - CLEAR PLATE 1 / 4 IN, !- Name ", + " SpectralAverage, !- Optical Data Type ", + " , !- Window Glass Spectral Data Set Name ", + " 0.006, !- Thickness {m} ", + " 0.80, !- Solar Transmittance at Normal Incidence ", + " 0.10, !- Front Side Solar Reflectance at Normal Incidence ", + " 0.10, !- Back Side Solar Reflectance at Normal Incidence ", + " 0.80, !- Visible Transmittance at Normal Incidence ", + " 0.10, !- Front Side Visible Reflectance at Normal Incidence ", + " 0.10, !- Back Side Visible Reflectance at Normal Incidence ", + " 0.0, !- Infrared Transmittance at Normal Incidence ", + " 0.84, !- Front Side Infrared Hemispherical Emissivity ", + " 0.84, !- Back Side Infrared Hemispherical Emissivity ", + " 0.9; !- Conductivity {W/m-K} ", + " WindowMaterial:Gas, ", + " AIRGAP, !- Name ", + " AIR, !- Gas Type ", + " 0.0125; !- Thickness {m} ", + " Construction, ", + " R13WALL, !- Name ", + " R13LAYER; !- Outside Layer ", + " Construction, ", + " EXTWALL09, !- Name ", + " A2 - 4 IN DENSE FACE BRICK, !- Outside Layer ", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 4 ", + " Construction, ", + " INTERIOR, !- Name ", + " C12 - 2 IN HW CONCRETE; !- Layer 4 ", + " Construction, ", + " SLAB FLOOR, !- Name ", + " C12 - 2 IN HW CONCRETE; !- Layer 4 ", + " Construction, ", + " ROOF31, !- Name ", + " E2 - 1 / 2 IN SLAG OR STONE, !- Outside Layer ", + " C12 - 2 IN HW CONCRETE; !- Layer 4 ", + " Construction, ", + " DOUBLE PANE HW WINDOW, !- Name ", + " GLASS - CLEAR PLATE 1 / 4 IN, !- Outside Layer ", + " AIRGAP, !- Layer 2 ", + " GLASS - CLEAR PLATE 1 / 4 IN; !- Layer 3 ", + " Construction, ", + " PARTITION02, !- Name ", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer ", + " C12 - 2 IN HW CONCRETE, !- Layer 4 ", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3 ", + " Construction, ", + " single PANE HW WINDOW, !- Name ", + " GLASS - CLEAR PLATE 1 / 4 IN; !- Outside Layer ", + " Construction, ", + " EXTWALLdemo, !- Name ", + " A2 - 4 IN DENSE FACE BRICK, !- Outside Layer ", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 4 ", + " GlobalGeometryRules, ", + " UpperLeftCorner, !- Starting Vertex Position ", + " Counterclockwise, !- Vertex Entry Direction ", + " Relative; !- Coordinate System ", + " Zone, ", + " ZONE ONE, !- Name ", + " 0, !- Direction of Relative North {deg} ", + " 0, !- X Origin {m} ", + " 0, !- Y Origin {m} ", + " 0, !- Z Origin {m} ", + " 1, !- Type ", + " 1, !- Multiplier ", + " 0, !- Ceiling Height {m} ", + " 0; !- Volume {m3} ", + " BuildingSurface:Detailed, ", + " Zn001:Wall-North, !- Name ", + " Wall, !- Surface Type ", + " EXTWALLdemo, !- Construction Name ", + " ZONE ONE, !- Zone Name ", + " Outdoors, !- Outside Boundary Condition ", + " , !- Outside Boundary Condition Object ", + " SunExposed, !- Sun Exposure ", + " WindExposed, !- Wind Exposure ", + " 0.5000000, !- View Factor to Ground ", + " 4, !- Number of Vertices ", + " 5,5,3, !- X,Y,Z ==> Vertex 1 {m} ", + " 5,5,0, !- X,Y,Z ==> Vertex 2 {m} ", + " -5,5,0, !- X,Y,Z ==> Vertex 3 {m} ", + " -5,5,3; !- X,Y,Z ==> Vertex 4 {m} ", + " BuildingSurface:Detailed, ", + " Zn001:Wall-East, !- Name ", + " Wall, !- Surface Type ", + " EXTWALL09, !- Construction Name ", + " ZONE ONE, !- Zone Name ", + " Outdoors, !- Outside Boundary Condition ", + " , !- Outside Boundary Condition Object ", + " SunExposed, !- Sun Exposure ", + " WindExposed, !- Wind Exposure ", + " 0.5000000, !- View Factor to Ground ", + " 4, !- Number of Vertices ", + " 5,-5,3, !- X,Y,Z ==> Vertex 1 {m} ", + " 5,-5,0, !- X,Y,Z ==> Vertex 2 {m} ", + " 5,5,0, !- X,Y,Z ==> Vertex 3 {m} ", + " 5,5,3; !- X,Y,Z ==> Vertex 4 {m} ", + " BuildingSurface:Detailed, ", + " Zn001:Wall-South, !- Name ", + " Wall, !- Surface Type ", + " R13WALL, !- Construction Name ", + " ZONE ONE, !- Zone Name ", + " Outdoors, !- Outside Boundary Condition ", + " , !- Outside Boundary Condition Object ", + " SunExposed, !- Sun Exposure ", + " WindExposed, !- Wind Exposure ", + " 0.5000000, !- View Factor to Ground ", + " 4, !- Number of Vertices ", + " -5,-5,3, !- X,Y,Z ==> Vertex 1 {m} ", + " -5,-5,0, !- X,Y,Z ==> Vertex 2 {m} ", + " 5,-5,0, !- X,Y,Z ==> Vertex 3 {m} ", + " 5,-5,3; !- X,Y,Z ==> Vertex 4 {m} ", + " BuildingSurface:Detailed, ", + " Zn001:Wall-West, !- Name ", + " Wall, !- Surface Type ", + " EXTWALL09, !- Construction Name ", + " ZONE ONE, !- Zone Name ", + " Outdoors, !- Outside Boundary Condition ", + " , !- Outside Boundary Condition Object ", + " SunExposed, !- Sun Exposure ", + " WindExposed, !- Wind Exposure ", + " 0.5000000, !- View Factor to Ground ", + " 4, !- Number of Vertices ", + " -5,5,3, !- X,Y,Z ==> Vertex 1 {m} ", + " -5,5,0, !- X,Y,Z ==> Vertex 2 {m} ", + " -5,-5,0, !- X,Y,Z ==> Vertex 3 {m} ", + " -5,-5,3; !- X,Y,Z ==> Vertex 4 {m} ", + " BuildingSurface:Detailed, ", + " Zn001:roof, !- Name ", + " Roof, !- Surface Type ", + " ROOF31, !- Construction Name ", + " ZONE ONE, !- Zone Name ", + " Outdoors, !- Outside Boundary Condition ", + " , !- Outside Boundary Condition Object ", + " SunExposed, !- Sun Exposure ", + " WindExposed, !- Wind Exposure ", + " 0.0000000, !- View Factor to Ground ", + " 4, !- Number of Vertices ", + " -5,-5,3, !- X,Y,Z ==> Vertex 1 {m} ", + " 5,-5,3, !- X,Y,Z ==> Vertex 2 {m} ", + " 5,5,3, !- X,Y,Z ==> Vertex 3 {m} ", + " -5,5,3; !- X,Y,Z ==> Vertex 4 {m} ", + " BuildingSurface:Detailed, ", + " Zn001:floor, !- Name ", + " Floor, !- Surface Type ", + " SLAB FLOOR, !- Construction Name ", + " ZONE ONE, !- Zone Name ", + " Outdoors, !- Outside Boundary Condition ", + " , !- Outside Boundary Condition Object ", + " SunExposed, !- Sun Exposure ", + " WindExposed, !- Wind Exposure ", + " 0.0000000, !- View Factor to Ground ", + " 4, !- Number of Vertices ", + " -5,5,0, !- X,Y,Z ==> Vertex 1 {m} ", + " 5,5,0, !- X,Y,Z ==> Vertex 2 {m} ", + " 5,-5,0, !- X,Y,Z ==> Vertex 3 {m} ", + " -5,-5,0; !- X,Y,Z ==> Vertex 4 {m} ", + " FenestrationSurface:Detailed, ", + " Zn001:Wall-South:Win001, !- Name ", + " Window, !- Surface Type ", + " DOUBLE PANE HW WINDOW, !- Construction Name ", + " Zn001:Wall-South, !- Building Surface Name ", + " , !- Outside Boundary Condition Object ", + " 0.5000000, !- View Factor to Ground ", + " , !- Shading Control Name ", + " TestFrameAndDivider, !- Frame and Divider Name ", + " 1.0, !- Multiplier ", + " 4, !- Number of Vertices ", + " -3,-5,2.5, !- X,Y,Z ==> Vertex 1 {m} ", + " -3,-5,0.5, !- X,Y,Z ==> Vertex 2 {m} ", + " 3,-5,0.5, !- X,Y,Z ==> Vertex 3 {m} ", + " 3,-5,2.5; !- X,Y,Z ==> Vertex 4 {m} ", + " WindowProperty:FrameAndDivider, ", + " TestFrameAndDivider, !- Name ", + " 0.05, !- Frame Width {m} ", + " 0.05, !- Frame Outside Projection {m} ", + " 0.05, !- Frame Inside Projection {m} ", + " 5.0, !- Frame Conductance {W/m2-K} ", + " 1.2, !- Ratio of Frame-Edge Glass Conductance to Center-Of-Gl", + " 0.8, !- Frame Solar Absorptance ", + " 0.8, !- Frame Visible Absorptance ", + " 0.9, !- Frame Thermal Hemispherical Emissivity ", + " DividedLite, !- Divider Type ", + " 0.02, !- Divider Width {m} ", + " 2, !- Number of Horizontal Dividers ", + " 2, !- Number of Vertical Dividers ", + " 0.02, !- Divider Outside Projection {m} ", + " 0.02, !- Divider Inside Projection {m} ", + " 5.0, !- Divider Conductance {W/m2-K} ", + " 1.2, !- Ratio of Divider-Edge Glass Conductance to Center-Of-", + " 0.8, !- Divider Solar Absorptance ", + " 0.8, !- Divider Visible Absorptance ", + " 0.9; !- Divider Thermal Hemispherical Emissivity ", + " Shading:Zone:Detailed, ", + " Zn001:Wall-South:Shade001, !- Name ", + " Zn001:Wall-South, !- Base Surface Name ", + " SunShading, !- Transmittance Schedule Name ", + " 4, !- Number of Vertices ", + " -3,-5,2.5, !- X,Y,Z ==> Vertex 1 {m} ", + " -3,-6,2.5, !- X,Y,Z ==> Vertex 2 {m} ", + " 3,-6,2.5, !- X,Y,Z ==> Vertex 3 {m} ", + " 3,-5,2.5; !- X,Y,Z ==> Vertex 4 {m} ", + " ShadingProperty:Reflectance, ", + " Zn001:Wall-South:Shade001, !- Shading Surface Name ", + " 0.2, !- Diffuse Solar Reflectance of Unglazed Part of Shading", " 0.2; !- Diffuse Visible Reflectance of Unglazed Part of Shadi"}); - ASSERT_TRUE( process_idf( idf_objects ) ); + ASSERT_TRUE(process_idf(idf_objects)); - SimulationManager::GetProjectData(); - bool FoundError = false; + SimulationManager::GetProjectData(); + bool FoundError = false; - HeatBalanceManager::GetProjectControlData( FoundError ); // read project control data - EXPECT_FALSE( FoundError ); // expect no errors + HeatBalanceManager::GetProjectControlData(FoundError); // read project control data + EXPECT_FALSE(FoundError); // expect no errors - HeatBalanceManager::SetPreConstructionInputParameters(); - ScheduleManager::ProcessScheduleInput(); // read schedules + HeatBalanceManager::SetPreConstructionInputParameters(); + ScheduleManager::ProcessScheduleInput(); // read schedules - HeatBalanceManager::GetMaterialData( FoundError ); - EXPECT_FALSE( FoundError ); + HeatBalanceManager::GetMaterialData(FoundError); + EXPECT_FALSE(FoundError); - HeatBalanceManager::GetFrameAndDividerData( FoundError ); - EXPECT_FALSE( FoundError ); + HeatBalanceManager::GetFrameAndDividerData(FoundError); + EXPECT_FALSE(FoundError); - HeatBalanceManager::GetConstructData( FoundError ); - EXPECT_FALSE( FoundError ); + HeatBalanceManager::GetConstructData(FoundError); + EXPECT_FALSE(FoundError); - HeatBalanceManager::GetZoneData( FoundError ); // Read Zone data from input file - EXPECT_FALSE( FoundError ); + HeatBalanceManager::GetZoneData(FoundError); // Read Zone data from input file + EXPECT_FALSE(FoundError); - SurfaceGeometry::GetGeometryParameters( FoundError ); - EXPECT_FALSE( FoundError ); + SurfaceGeometry::GetGeometryParameters(FoundError); + EXPECT_FALSE(FoundError); - SurfaceGeometry::CosZoneRelNorth.allocate( 1 ); - SurfaceGeometry::SinZoneRelNorth.allocate( 1 ); + SurfaceGeometry::CosZoneRelNorth.allocate(1); + SurfaceGeometry::SinZoneRelNorth.allocate(1); - SurfaceGeometry::CosZoneRelNorth( 1 ) = std::cos( -Zone( 1 ).RelNorth * DegToRadians ); - SurfaceGeometry::SinZoneRelNorth( 1 ) = std::sin( -Zone( 1 ).RelNorth * DegToRadians ); - SurfaceGeometry::CosBldgRelNorth = 1.0; - SurfaceGeometry::SinBldgRelNorth = 0.0; + SurfaceGeometry::CosZoneRelNorth(1) = std::cos(-Zone(1).RelNorth * DegToRadians); + SurfaceGeometry::SinZoneRelNorth(1) = std::sin(-Zone(1).RelNorth * DegToRadians); + SurfaceGeometry::CosBldgRelNorth = 1.0; + SurfaceGeometry::SinBldgRelNorth = 0.0; - SurfaceGeometry::GetSurfaceData( FoundError ); // setup zone geometry and get zone data - EXPECT_FALSE( FoundError ); // expect no errors + SurfaceGeometry::GetSurfaceData(FoundError); // setup zone geometry and get zone data + EXPECT_FALSE(FoundError); // expect no errors -// compare_err_stream( "" ); // just for debugging + // compare_err_stream( "" ); // just for debugging - SurfaceGeometry::SetupZoneGeometry( FoundError ); // this calls GetSurfaceData() - EXPECT_FALSE( FoundError ); + SurfaceGeometry::SetupZoneGeometry(FoundError); // this calls GetSurfaceData() + EXPECT_FALSE(FoundError); - SolarShading::AllocateModuleArrays(); - SolarShading::DetermineShadowingCombinations(); - DataEnvironment::DayOfYear_Schedule = 168; - DataEnvironment::DayOfWeek = 6; - DataGlobals::TimeStep = 4; - DataGlobals::HourOfDay = 9; + SolarShading::AllocateModuleArrays(); + SolarShading::DetermineShadowingCombinations(); + DataEnvironment::DayOfYear_Schedule = 168; + DataEnvironment::DayOfWeek = 6; + DataGlobals::TimeStep = 4; + DataGlobals::HourOfDay = 9; -// compare_err_stream( "" ); // just for debugging + // compare_err_stream( "" ); // just for debugging - DataSurfaces::ShadingTransmittanceVaries = true; - DataSystemVariables::DetailedSkyDiffuseAlgorithm = true; - SolarDistribution = FullExterior; + DataSurfaces::ShadingTransmittanceVaries = true; + DataSystemVariables::DetailedSkyDiffuseAlgorithm = true; + SolarDistribution = FullExterior; - CalcSkyDifShading = true; - SolarShading::InitSolarCalculations(); - SolarShading::SkyDifSolarShading(); - CalcSkyDifShading = false; + CalcSkyDifShading = true; + SolarShading::InitSolarCalculations(); + SolarShading::SkyDifSolarShading(); + CalcSkyDifShading = false; - FigureSolarBeamAtTimestep( DataGlobals::HourOfDay, DataGlobals::TimeStep ); + FigureSolarBeamAtTimestep(DataGlobals::HourOfDay, DataGlobals::TimeStep); - EXPECT_NEAR( 0.6504, DifShdgRatioIsoSkyHRTS( 4, 9, 6 ), 0.0001 ); - EXPECT_NEAR( 0.9152, DifShdgRatioHorizHRTS( 4, 9, 6 ), 0.0001 ); + EXPECT_NEAR(0.6504, DifShdgRatioIsoSkyHRTS(4, 9, 6), 0.0001); + EXPECT_NEAR(0.9152, DifShdgRatioHorizHRTS(4, 9, 6), 0.0001); } -TEST_F( EnergyPlusFixture, SolarShadingTest_ExternalShadingIO ) +TEST_F(EnergyPlusFixture, SolarShadingTest_ExternalShadingIO) { std::string const idf_objects = delimited_string({" Version,8.9; ", - " Building, ", - " DemoFDT, !- Name ", - " 0, !- North Axis {deg} ", - " Suburbs, !- Terrain ", - " 3.9999999E-02, !- Loads Convergence Tolerance Value ", - " 4.0000002E-03, !- Temperature Convergence Tolerance Value {deltaC} ", - " FullExterior, !- Solar Distribution ", - " , !- Maximum Number of Warmup Days ", - " 6; !- Minimum Number of Warmup Days ", - " ShadowCalculation, ", - " TimestepFrequency, !- Calculation Method ", - " , !- Calculation Frequency ", - " , !- Maximum Figures in Shadow Overlap Calculations ", - " , !- Polygon Clipping Algorithm ", - " DetailedSkyDiffuseModeling, !- Sky Diffuse Modeling Algorithm ", - " ScheduledShading, !- External Shading Calculation Method ", - " Yes; !- Output External Shading Calculation Results ", - " SurfaceConvectionAlgorithm:Inside,TARP; ", - " SurfaceConvectionAlgorithm:Outside,TARP; ", - " HeatBalanceAlgorithm,ConductionTransferFunction; ", - " Timestep,6; ", - " RunPeriod, ", - " , !- Name ", - " 1, !- Begin Month ", - " 1, !- Begin Day of Month ", - " , !- Begin Year ", - " 12, !- End Month ", - " 31, !- End Day of Month ", - " , !- End Year ", - " , !- Day of Week for Start Day ", - " , !- Use Weather File Holidays and Special Days ", - " , !- Use Weather File Daylight Saving Period ", - " , !- Apply Weekend Holiday Rule ", - " , !- Use Weather File Rain Indicators ", - " ; !- Use Weather File Snow Indicators ", - " ScheduleTypeLimits, ", - " Fraction, !- Name ", - " 0.0, !- Lower Limit Value ", - " 1.0, !- Upper Limit Value ", - " Continuous; !- Numeric Type ", - " ScheduleTypeLimits, ", - " ON/OFF, !- Name ", - " 0, !- Lower Limit Value ", - " 1, !- Upper Limit Value ", - " Discrete; !- Numeric Type ", - " Schedule:Compact, ", - " SunShading, !- Name ", - " ON/OFF, !- Schedule Type Limits Name ", - " Through: 4/30, !- Field 1 ", - " For: AllDays, !- Field 2 ", - " until: 24:00,1, !- Field 3 ", - " Through: 10/31, !- Field 5 ", - " For: AllDays, !- Field 6 ", - " until: 24:00,0, !- Field 7 ", - " Through: 12/31, !- Field 9 ", - " For: AllDays, !- Field 10 ", - " until: 24:00,1; !- Field 11 ", - " Material, ", - " A2 - 4 IN DENSE FACE BRICK, !- Name ", - " Rough, !- Roughness ", - " 0.1014984, !- Thickness {m} ", - " 1.245296, !- Conductivity {W/m-K} ", - " 2082.400, !- Density {kg/m3} ", - " 920.4800, !- Specific Heat {J/kg-K} ", - " 0.9000000, !- Thermal Absorptance ", - " 0.9300000, !- Solar Absorptance ", - " 0.9300000; !- Visible Absorptance ", - " Material, ", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Name ", - " Smooth, !- Roughness ", - " 1.9050000E-02, !- Thickness {m} ", - " 0.7264224, !- Conductivity {W/m-K} ", - " 1601.846, !- Density {kg/m3} ", - " 836.8000, !- Specific Heat {J/kg-K} ", - " 0.9000000, !- Thermal Absorptance ", - " 0.9200000, !- Solar Absorptance ", - " 0.9200000; !- Visible Absorptance ", - " Material, ", - " E2 - 1 / 2 IN SLAG OR STONE, !- Name ", - " Rough, !- Roughness ", - " 1.2710161E-02, !- Thickness {m} ", - " 1.435549, !- Conductivity {W/m-K} ", - " 881.0155, !- Density {kg/m3} ", - " 1673.600, !- Specific Heat {J/kg-K} ", - " 0.9000000, !- Thermal Absorptance ", - " 0.5500000, !- Solar Absorptance ", - " 0.5500000; !- Visible Absorptance ", - " Material, ", - " C12 - 2 IN HW CONCRETE, !- Name ", - " MediumRough, !- Roughness ", - " 5.0901599E-02, !- Thickness {m} ", - " 1.729577, !- Conductivity {W/m-K} ", - " 2242.585, !- Density {kg/m3} ", - " 836.8000, !- Specific Heat {J/kg-K} ", - " 0.9000000, !- Thermal Absorptance ", - " 0.6500000, !- Solar Absorptance ", - " 0.6500000; !- Visible Absorptance ", - " Material:NoMass, ", - " R13LAYER, !- Name ", - " Rough, !- Roughness ", - " 2.290965, !- Thermal Resistance {m2-K/W} ", - " 0.9000000, !- Thermal Absorptance ", - " 0.7500000, !- Solar Absorptance ", - " 0.7500000; !- Visible Absorptance ", - " WindowMaterial:Glazing, ", - " GLASS - CLEAR PLATE 1 / 4 IN, !- Name ", - " SpectralAverage, !- Optical Data Type ", - " , !- Window Glass Spectral Data Set Name ", - " 0.006, !- Thickness {m} ", - " 0.80, !- Solar Transmittance at Normal Incidence ", - " 0.10, !- Front Side Solar Reflectance at Normal Incidence ", - " 0.10, !- Back Side Solar Reflectance at Normal Incidence ", - " 0.80, !- Visible Transmittance at Normal Incidence ", - " 0.10, !- Front Side Visible Reflectance at Normal Incidence ", - " 0.10, !- Back Side Visible Reflectance at Normal Incidence ", - " 0.0, !- Infrared Transmittance at Normal Incidence ", - " 0.84, !- Front Side Infrared Hemispherical Emissivity ", - " 0.84, !- Back Side Infrared Hemispherical Emissivity ", - " 0.9; !- Conductivity {W/m-K} ", - " WindowMaterial:Gas, ", - " AIRGAP, !- Name ", - " AIR, !- Gas Type ", - " 0.0125; !- Thickness {m} ", - " Construction, ", - " R13WALL, !- Name ", - " R13LAYER; !- Outside Layer ", - " Construction, ", - " EXTWALL09, !- Name ", - " A2 - 4 IN DENSE FACE BRICK, !- Outside Layer ", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 4 ", - " Construction, ", - " INTERIOR, !- Name ", - " C12 - 2 IN HW CONCRETE; !- Layer 4 ", - " Construction, ", - " SLAB FLOOR, !- Name ", - " C12 - 2 IN HW CONCRETE; !- Layer 4 ", - " Construction, ", - " ROOF31, !- Name ", - " E2 - 1 / 2 IN SLAG OR STONE, !- Outside Layer ", - " C12 - 2 IN HW CONCRETE; !- Layer 4 ", - " Construction, ", - " DOUBLE PANE HW WINDOW, !- Name ", - " GLASS - CLEAR PLATE 1 / 4 IN, !- Outside Layer ", - " AIRGAP, !- Layer 2 ", - " GLASS - CLEAR PLATE 1 / 4 IN; !- Layer 3 ", - " Construction, ", - " PARTITION02, !- Name ", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer ", - " C12 - 2 IN HW CONCRETE, !- Layer 4 ", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3 ", - " Construction, ", - " single PANE HW WINDOW, !- Name ", - " GLASS - CLEAR PLATE 1 / 4 IN; !- Outside Layer ", - " Construction, ", - " EXTWALLdemo, !- Name ", - " A2 - 4 IN DENSE FACE BRICK, !- Outside Layer ", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 4 ", - " GlobalGeometryRules, ", - " UpperLeftCorner, !- Starting Vertex Position ", - " Counterclockwise, !- Vertex Entry Direction ", - " Relative; !- Coordinate System ", - " Zone, ", - " ZONE ONE, !- Name ", - " 0, !- Direction of Relative North {deg} ", - " 0, !- X Origin {m} ", - " 0, !- Y Origin {m} ", - " 0, !- Z Origin {m} ", - " 1, !- Type ", - " 1, !- Multiplier ", - " 0, !- Ceiling Height {m} ", - " 0; !- Volume {m3} ", - " BuildingSurface:Detailed, ", - " Zn001:Wall-North, !- Name ", - " Wall, !- Surface Type ", - " EXTWALLdemo, !- Construction Name ", - " ZONE ONE, !- Zone Name ", - " Outdoors, !- Outside Boundary Condition ", - " , !- Outside Boundary Condition Object ", - " SunExposed, !- Sun Exposure ", - " WindExposed, !- Wind Exposure ", - " 0.5000000, !- View Factor to Ground ", - " 4, !- Number of Vertices ", - " 5,5,3, !- X,Y,Z ==> Vertex 1 {m} ", - " 5,5,0, !- X,Y,Z ==> Vertex 2 {m} ", - " -5,5,0, !- X,Y,Z ==> Vertex 3 {m} ", - " -5,5,3; !- X,Y,Z ==> Vertex 4 {m} ", - " BuildingSurface:Detailed, ", - " Zn001:Wall-East, !- Name ", - " Wall, !- Surface Type ", - " EXTWALL09, !- Construction Name ", - " ZONE ONE, !- Zone Name ", - " Outdoors, !- Outside Boundary Condition ", - " , !- Outside Boundary Condition Object ", - " SunExposed, !- Sun Exposure ", - " WindExposed, !- Wind Exposure ", - " 0.5000000, !- View Factor to Ground ", - " 4, !- Number of Vertices ", - " 5,-5,3, !- X,Y,Z ==> Vertex 1 {m} ", - " 5,-5,0, !- X,Y,Z ==> Vertex 2 {m} ", - " 5,5,0, !- X,Y,Z ==> Vertex 3 {m} ", - " 5,5,3; !- X,Y,Z ==> Vertex 4 {m} ", - " BuildingSurface:Detailed, ", - " Zn001:Wall-South, !- Name ", - " Wall, !- Surface Type ", - " R13WALL, !- Construction Name ", - " ZONE ONE, !- Zone Name ", - " Outdoors, !- Outside Boundary Condition ", - " , !- Outside Boundary Condition Object ", - " SunExposed, !- Sun Exposure ", - " WindExposed, !- Wind Exposure ", - " 0.5000000, !- View Factor to Ground ", - " 4, !- Number of Vertices ", - " -5,-5,3, !- X,Y,Z ==> Vertex 1 {m} ", - " -5,-5,0, !- X,Y,Z ==> Vertex 2 {m} ", - " 5,-5,0, !- X,Y,Z ==> Vertex 3 {m} ", - " 5,-5,3; !- X,Y,Z ==> Vertex 4 {m} ", - " BuildingSurface:Detailed, ", - " Zn001:Wall-West, !- Name ", - " Wall, !- Surface Type ", - " EXTWALL09, !- Construction Name ", - " ZONE ONE, !- Zone Name ", - " Outdoors, !- Outside Boundary Condition ", - " , !- Outside Boundary Condition Object ", - " SunExposed, !- Sun Exposure ", - " WindExposed, !- Wind Exposure ", - " 0.5000000, !- View Factor to Ground ", - " 4, !- Number of Vertices ", - " -5,5,3, !- X,Y,Z ==> Vertex 1 {m} ", - " -5,5,0, !- X,Y,Z ==> Vertex 2 {m} ", - " -5,-5,0, !- X,Y,Z ==> Vertex 3 {m} ", - " -5,-5,3; !- X,Y,Z ==> Vertex 4 {m} ", - " BuildingSurface:Detailed, ", - " Zn001:roof, !- Name ", - " Roof, !- Surface Type ", - " ROOF31, !- Construction Name ", - " ZONE ONE, !- Zone Name ", - " Outdoors, !- Outside Boundary Condition ", - " , !- Outside Boundary Condition Object ", - " SunExposed, !- Sun Exposure ", - " WindExposed, !- Wind Exposure ", - " 0.0000000, !- View Factor to Ground ", - " 4, !- Number of Vertices ", - " -5,-5,3, !- X,Y,Z ==> Vertex 1 {m} ", - " 5,-5,3, !- X,Y,Z ==> Vertex 2 {m} ", - " 5,5,3, !- X,Y,Z ==> Vertex 3 {m} ", - " -5,5,3; !- X,Y,Z ==> Vertex 4 {m} ", - " SurfaceProperty:LocalEnvironment, ", - " LocEnv:Zn001:roof, ", - " Zn001:roof, ", - " ExtShadingSch:Zn001:roof, ", - " , ", - " ; ", - " Schedule:Compact, ", - " ExtShadingSch:Zn001:roof, ", - " Fraction, !- Schedule Type Limits Name ", - " Through: 12/31, !- Field 1 ", - " For: AllDays, !- Field 2 ", - " Until: 24:00, !- Field 3 ", - " 0.5432; !- Field 4 ", - " BuildingSurface:Detailed, ", - " Zn001:floor, !- Name ", - " Floor, !- Surface Type ", - " SLAB FLOOR, !- Construction Name ", - " ZONE ONE, !- Zone Name ", - " Outdoors, !- Outside Boundary Condition ", - " , !- Outside Boundary Condition Object ", - " SunExposed, !- Sun Exposure ", - " WindExposed, !- Wind Exposure ", - " 0.0000000, !- View Factor to Ground ", - " 4, !- Number of Vertices ", - " -5,5,0, !- X,Y,Z ==> Vertex 1 {m} ", - " 5,5,0, !- X,Y,Z ==> Vertex 2 {m} ", - " 5,-5,0, !- X,Y,Z ==> Vertex 3 {m} ", - " -5,-5,0; !- X,Y,Z ==> Vertex 4 {m} ", - " FenestrationSurface:Detailed, ", - " Zn001:Wall-South:Win001, !- Name ", - " Window, !- Surface Type ", - " DOUBLE PANE HW WINDOW, !- Construction Name ", - " Zn001:Wall-South, !- Building Surface Name ", - " , !- Outside Boundary Condition Object ", - " 0.5000000, !- View Factor to Ground ", - " , !- Shading Control Name ", - " TestFrameAndDivider, !- Frame and Divider Name ", - " 1.0, !- Multiplier ", - " 4, !- Number of Vertices ", - " -3,-5,2.5, !- X,Y,Z ==> Vertex 1 {m} ", - " -3,-5,0.5, !- X,Y,Z ==> Vertex 2 {m} ", - " 3,-5,0.5, !- X,Y,Z ==> Vertex 3 {m} ", - " 3,-5,2.5; !- X,Y,Z ==> Vertex 4 {m} ", - " WindowProperty:FrameAndDivider, ", - " TestFrameAndDivider, !- Name ", - " 0.05, !- Frame Width {m} ", - " 0.05, !- Frame Outside Projection {m} ", - " 0.05, !- Frame Inside Projection {m} ", - " 5.0, !- Frame Conductance {W/m2-K} ", - " 1.2, !- Ratio of Frame-Edge Glass Conductance to Center-Of-Gl", - " 0.8, !- Frame Solar Absorptance ", - " 0.8, !- Frame Visible Absorptance ", - " 0.9, !- Frame Thermal Hemispherical Emissivity ", - " DividedLite, !- Divider Type ", - " 0.02, !- Divider Width {m} ", - " 2, !- Number of Horizontal Dividers ", - " 2, !- Number of Vertical Dividers ", - " 0.02, !- Divider Outside Projection {m} ", - " 0.02, !- Divider Inside Projection {m} ", - " 5.0, !- Divider Conductance {W/m2-K} ", - " 1.2, !- Ratio of Divider-Edge Glass Conductance to Center-Of-", - " 0.8, !- Divider Solar Absorptance ", - " 0.8, !- Divider Visible Absorptance ", - " 0.9; !- Divider Thermal Hemispherical Emissivity ", - " Shading:Zone:Detailed, ", - " Zn001:Wall-South:Shade001, !- Name ", - " Zn001:Wall-South, !- Base Surface Name ", - " SunShading, !- Transmittance Schedule Name ", - " 4, !- Number of Vertices ", - " -3,-5,2.5, !- X,Y,Z ==> Vertex 1 {m} ", - " -3,-6,2.5, !- X,Y,Z ==> Vertex 2 {m} ", - " 3,-6,2.5, !- X,Y,Z ==> Vertex 3 {m} ", - " 3,-5,2.5; !- X,Y,Z ==> Vertex 4 {m} ", - " ShadingProperty:Reflectance, ", - " Zn001:Wall-South:Shade001, !- Shading Surface Name ", - " 0.2, !- Diffuse Solar Reflectance of Unglazed Part of Shading", + " Building, ", + " DemoFDT, !- Name ", + " 0, !- North Axis {deg} ", + " Suburbs, !- Terrain ", + " 3.9999999E-02, !- Loads Convergence Tolerance Value ", + " 4.0000002E-03, !- Temperature Convergence Tolerance Value {deltaC} ", + " FullExterior, !- Solar Distribution ", + " , !- Maximum Number of Warmup Days ", + " 6; !- Minimum Number of Warmup Days ", + " ShadowCalculation, ", + " TimestepFrequency, !- Calculation Method ", + " , !- Calculation Frequency ", + " , !- Maximum Figures in Shadow Overlap Calculations ", + " , !- Polygon Clipping Algorithm ", + " DetailedSkyDiffuseModeling, !- Sky Diffuse Modeling Algorithm ", + " ScheduledShading, !- External Shading Calculation Method ", + " Yes; !- Output External Shading Calculation Results ", + " SurfaceConvectionAlgorithm:Inside,TARP; ", + " SurfaceConvectionAlgorithm:Outside,TARP; ", + " HeatBalanceAlgorithm,ConductionTransferFunction; ", + " Timestep,6; ", + " RunPeriod, ", + " , !- Name ", + " 1, !- Begin Month ", + " 1, !- Begin Day of Month ", + " , !- Begin Year ", + " 12, !- End Month ", + " 31, !- End Day of Month ", + " , !- End Year ", + " , !- Day of Week for Start Day ", + " , !- Use Weather File Holidays and Special Days ", + " , !- Use Weather File Daylight Saving Period ", + " , !- Apply Weekend Holiday Rule ", + " , !- Use Weather File Rain Indicators ", + " ; !- Use Weather File Snow Indicators ", + " ScheduleTypeLimits, ", + " Fraction, !- Name ", + " 0.0, !- Lower Limit Value ", + " 1.0, !- Upper Limit Value ", + " Continuous; !- Numeric Type ", + " ScheduleTypeLimits, ", + " ON/OFF, !- Name ", + " 0, !- Lower Limit Value ", + " 1, !- Upper Limit Value ", + " Discrete; !- Numeric Type ", + " Schedule:Compact, ", + " SunShading, !- Name ", + " ON/OFF, !- Schedule Type Limits Name ", + " Through: 4/30, !- Field 1 ", + " For: AllDays, !- Field 2 ", + " until: 24:00,1, !- Field 3 ", + " Through: 10/31, !- Field 5 ", + " For: AllDays, !- Field 6 ", + " until: 24:00,0, !- Field 7 ", + " Through: 12/31, !- Field 9 ", + " For: AllDays, !- Field 10 ", + " until: 24:00,1; !- Field 11 ", + " Material, ", + " A2 - 4 IN DENSE FACE BRICK, !- Name ", + " Rough, !- Roughness ", + " 0.1014984, !- Thickness {m} ", + " 1.245296, !- Conductivity {W/m-K} ", + " 2082.400, !- Density {kg/m3} ", + " 920.4800, !- Specific Heat {J/kg-K} ", + " 0.9000000, !- Thermal Absorptance ", + " 0.9300000, !- Solar Absorptance ", + " 0.9300000; !- Visible Absorptance ", + " Material, ", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Name ", + " Smooth, !- Roughness ", + " 1.9050000E-02, !- Thickness {m} ", + " 0.7264224, !- Conductivity {W/m-K} ", + " 1601.846, !- Density {kg/m3} ", + " 836.8000, !- Specific Heat {J/kg-K} ", + " 0.9000000, !- Thermal Absorptance ", + " 0.9200000, !- Solar Absorptance ", + " 0.9200000; !- Visible Absorptance ", + " Material, ", + " E2 - 1 / 2 IN SLAG OR STONE, !- Name ", + " Rough, !- Roughness ", + " 1.2710161E-02, !- Thickness {m} ", + " 1.435549, !- Conductivity {W/m-K} ", + " 881.0155, !- Density {kg/m3} ", + " 1673.600, !- Specific Heat {J/kg-K} ", + " 0.9000000, !- Thermal Absorptance ", + " 0.5500000, !- Solar Absorptance ", + " 0.5500000; !- Visible Absorptance ", + " Material, ", + " C12 - 2 IN HW CONCRETE, !- Name ", + " MediumRough, !- Roughness ", + " 5.0901599E-02, !- Thickness {m} ", + " 1.729577, !- Conductivity {W/m-K} ", + " 2242.585, !- Density {kg/m3} ", + " 836.8000, !- Specific Heat {J/kg-K} ", + " 0.9000000, !- Thermal Absorptance ", + " 0.6500000, !- Solar Absorptance ", + " 0.6500000; !- Visible Absorptance ", + " Material:NoMass, ", + " R13LAYER, !- Name ", + " Rough, !- Roughness ", + " 2.290965, !- Thermal Resistance {m2-K/W} ", + " 0.9000000, !- Thermal Absorptance ", + " 0.7500000, !- Solar Absorptance ", + " 0.7500000; !- Visible Absorptance ", + " WindowMaterial:Glazing, ", + " GLASS - CLEAR PLATE 1 / 4 IN, !- Name ", + " SpectralAverage, !- Optical Data Type ", + " , !- Window Glass Spectral Data Set Name ", + " 0.006, !- Thickness {m} ", + " 0.80, !- Solar Transmittance at Normal Incidence ", + " 0.10, !- Front Side Solar Reflectance at Normal Incidence ", + " 0.10, !- Back Side Solar Reflectance at Normal Incidence ", + " 0.80, !- Visible Transmittance at Normal Incidence ", + " 0.10, !- Front Side Visible Reflectance at Normal Incidence ", + " 0.10, !- Back Side Visible Reflectance at Normal Incidence ", + " 0.0, !- Infrared Transmittance at Normal Incidence ", + " 0.84, !- Front Side Infrared Hemispherical Emissivity ", + " 0.84, !- Back Side Infrared Hemispherical Emissivity ", + " 0.9; !- Conductivity {W/m-K} ", + " WindowMaterial:Gas, ", + " AIRGAP, !- Name ", + " AIR, !- Gas Type ", + " 0.0125; !- Thickness {m} ", + " Construction, ", + " R13WALL, !- Name ", + " R13LAYER; !- Outside Layer ", + " Construction, ", + " EXTWALL09, !- Name ", + " A2 - 4 IN DENSE FACE BRICK, !- Outside Layer ", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 4 ", + " Construction, ", + " INTERIOR, !- Name ", + " C12 - 2 IN HW CONCRETE; !- Layer 4 ", + " Construction, ", + " SLAB FLOOR, !- Name ", + " C12 - 2 IN HW CONCRETE; !- Layer 4 ", + " Construction, ", + " ROOF31, !- Name ", + " E2 - 1 / 2 IN SLAG OR STONE, !- Outside Layer ", + " C12 - 2 IN HW CONCRETE; !- Layer 4 ", + " Construction, ", + " DOUBLE PANE HW WINDOW, !- Name ", + " GLASS - CLEAR PLATE 1 / 4 IN, !- Outside Layer ", + " AIRGAP, !- Layer 2 ", + " GLASS - CLEAR PLATE 1 / 4 IN; !- Layer 3 ", + " Construction, ", + " PARTITION02, !- Name ", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer ", + " C12 - 2 IN HW CONCRETE, !- Layer 4 ", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3 ", + " Construction, ", + " single PANE HW WINDOW, !- Name ", + " GLASS - CLEAR PLATE 1 / 4 IN; !- Outside Layer ", + " Construction, ", + " EXTWALLdemo, !- Name ", + " A2 - 4 IN DENSE FACE BRICK, !- Outside Layer ", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 4 ", + " GlobalGeometryRules, ", + " UpperLeftCorner, !- Starting Vertex Position ", + " Counterclockwise, !- Vertex Entry Direction ", + " Relative; !- Coordinate System ", + " Zone, ", + " ZONE ONE, !- Name ", + " 0, !- Direction of Relative North {deg} ", + " 0, !- X Origin {m} ", + " 0, !- Y Origin {m} ", + " 0, !- Z Origin {m} ", + " 1, !- Type ", + " 1, !- Multiplier ", + " 0, !- Ceiling Height {m} ", + " 0; !- Volume {m3} ", + " BuildingSurface:Detailed, ", + " Zn001:Wall-North, !- Name ", + " Wall, !- Surface Type ", + " EXTWALLdemo, !- Construction Name ", + " ZONE ONE, !- Zone Name ", + " Outdoors, !- Outside Boundary Condition ", + " , !- Outside Boundary Condition Object ", + " SunExposed, !- Sun Exposure ", + " WindExposed, !- Wind Exposure ", + " 0.5000000, !- View Factor to Ground ", + " 4, !- Number of Vertices ", + " 5,5,3, !- X,Y,Z ==> Vertex 1 {m} ", + " 5,5,0, !- X,Y,Z ==> Vertex 2 {m} ", + " -5,5,0, !- X,Y,Z ==> Vertex 3 {m} ", + " -5,5,3; !- X,Y,Z ==> Vertex 4 {m} ", + " BuildingSurface:Detailed, ", + " Zn001:Wall-East, !- Name ", + " Wall, !- Surface Type ", + " EXTWALL09, !- Construction Name ", + " ZONE ONE, !- Zone Name ", + " Outdoors, !- Outside Boundary Condition ", + " , !- Outside Boundary Condition Object ", + " SunExposed, !- Sun Exposure ", + " WindExposed, !- Wind Exposure ", + " 0.5000000, !- View Factor to Ground ", + " 4, !- Number of Vertices ", + " 5,-5,3, !- X,Y,Z ==> Vertex 1 {m} ", + " 5,-5,0, !- X,Y,Z ==> Vertex 2 {m} ", + " 5,5,0, !- X,Y,Z ==> Vertex 3 {m} ", + " 5,5,3; !- X,Y,Z ==> Vertex 4 {m} ", + " BuildingSurface:Detailed, ", + " Zn001:Wall-South, !- Name ", + " Wall, !- Surface Type ", + " R13WALL, !- Construction Name ", + " ZONE ONE, !- Zone Name ", + " Outdoors, !- Outside Boundary Condition ", + " , !- Outside Boundary Condition Object ", + " SunExposed, !- Sun Exposure ", + " WindExposed, !- Wind Exposure ", + " 0.5000000, !- View Factor to Ground ", + " 4, !- Number of Vertices ", + " -5,-5,3, !- X,Y,Z ==> Vertex 1 {m} ", + " -5,-5,0, !- X,Y,Z ==> Vertex 2 {m} ", + " 5,-5,0, !- X,Y,Z ==> Vertex 3 {m} ", + " 5,-5,3; !- X,Y,Z ==> Vertex 4 {m} ", + " BuildingSurface:Detailed, ", + " Zn001:Wall-West, !- Name ", + " Wall, !- Surface Type ", + " EXTWALL09, !- Construction Name ", + " ZONE ONE, !- Zone Name ", + " Outdoors, !- Outside Boundary Condition ", + " , !- Outside Boundary Condition Object ", + " SunExposed, !- Sun Exposure ", + " WindExposed, !- Wind Exposure ", + " 0.5000000, !- View Factor to Ground ", + " 4, !- Number of Vertices ", + " -5,5,3, !- X,Y,Z ==> Vertex 1 {m} ", + " -5,5,0, !- X,Y,Z ==> Vertex 2 {m} ", + " -5,-5,0, !- X,Y,Z ==> Vertex 3 {m} ", + " -5,-5,3; !- X,Y,Z ==> Vertex 4 {m} ", + " BuildingSurface:Detailed, ", + " Zn001:roof, !- Name ", + " Roof, !- Surface Type ", + " ROOF31, !- Construction Name ", + " ZONE ONE, !- Zone Name ", + " Outdoors, !- Outside Boundary Condition ", + " , !- Outside Boundary Condition Object ", + " SunExposed, !- Sun Exposure ", + " WindExposed, !- Wind Exposure ", + " 0.0000000, !- View Factor to Ground ", + " 4, !- Number of Vertices ", + " -5,-5,3, !- X,Y,Z ==> Vertex 1 {m} ", + " 5,-5,3, !- X,Y,Z ==> Vertex 2 {m} ", + " 5,5,3, !- X,Y,Z ==> Vertex 3 {m} ", + " -5,5,3; !- X,Y,Z ==> Vertex 4 {m} ", + " SurfaceProperty:LocalEnvironment, ", + " LocEnv:Zn001:roof, ", + " Zn001:roof, ", + " ExtShadingSch:Zn001:roof, ", + " , ", + " ; ", + " Schedule:Compact, ", + " ExtShadingSch:Zn001:roof, ", + " Fraction, !- Schedule Type Limits Name ", + " Through: 12/31, !- Field 1 ", + " For: AllDays, !- Field 2 ", + " Until: 24:00, !- Field 3 ", + " 0.5432; !- Field 4 ", + " BuildingSurface:Detailed, ", + " Zn001:floor, !- Name ", + " Floor, !- Surface Type ", + " SLAB FLOOR, !- Construction Name ", + " ZONE ONE, !- Zone Name ", + " Outdoors, !- Outside Boundary Condition ", + " , !- Outside Boundary Condition Object ", + " SunExposed, !- Sun Exposure ", + " WindExposed, !- Wind Exposure ", + " 0.0000000, !- View Factor to Ground ", + " 4, !- Number of Vertices ", + " -5,5,0, !- X,Y,Z ==> Vertex 1 {m} ", + " 5,5,0, !- X,Y,Z ==> Vertex 2 {m} ", + " 5,-5,0, !- X,Y,Z ==> Vertex 3 {m} ", + " -5,-5,0; !- X,Y,Z ==> Vertex 4 {m} ", + " FenestrationSurface:Detailed, ", + " Zn001:Wall-South:Win001, !- Name ", + " Window, !- Surface Type ", + " DOUBLE PANE HW WINDOW, !- Construction Name ", + " Zn001:Wall-South, !- Building Surface Name ", + " , !- Outside Boundary Condition Object ", + " 0.5000000, !- View Factor to Ground ", + " , !- Shading Control Name ", + " TestFrameAndDivider, !- Frame and Divider Name ", + " 1.0, !- Multiplier ", + " 4, !- Number of Vertices ", + " -3,-5,2.5, !- X,Y,Z ==> Vertex 1 {m} ", + " -3,-5,0.5, !- X,Y,Z ==> Vertex 2 {m} ", + " 3,-5,0.5, !- X,Y,Z ==> Vertex 3 {m} ", + " 3,-5,2.5; !- X,Y,Z ==> Vertex 4 {m} ", + " WindowProperty:FrameAndDivider, ", + " TestFrameAndDivider, !- Name ", + " 0.05, !- Frame Width {m} ", + " 0.05, !- Frame Outside Projection {m} ", + " 0.05, !- Frame Inside Projection {m} ", + " 5.0, !- Frame Conductance {W/m2-K} ", + " 1.2, !- Ratio of Frame-Edge Glass Conductance to Center-Of-Gl", + " 0.8, !- Frame Solar Absorptance ", + " 0.8, !- Frame Visible Absorptance ", + " 0.9, !- Frame Thermal Hemispherical Emissivity ", + " DividedLite, !- Divider Type ", + " 0.02, !- Divider Width {m} ", + " 2, !- Number of Horizontal Dividers ", + " 2, !- Number of Vertical Dividers ", + " 0.02, !- Divider Outside Projection {m} ", + " 0.02, !- Divider Inside Projection {m} ", + " 5.0, !- Divider Conductance {W/m2-K} ", + " 1.2, !- Ratio of Divider-Edge Glass Conductance to Center-Of-", + " 0.8, !- Divider Solar Absorptance ", + " 0.8, !- Divider Visible Absorptance ", + " 0.9; !- Divider Thermal Hemispherical Emissivity ", + " Shading:Zone:Detailed, ", + " Zn001:Wall-South:Shade001, !- Name ", + " Zn001:Wall-South, !- Base Surface Name ", + " SunShading, !- Transmittance Schedule Name ", + " 4, !- Number of Vertices ", + " -3,-5,2.5, !- X,Y,Z ==> Vertex 1 {m} ", + " -3,-6,2.5, !- X,Y,Z ==> Vertex 2 {m} ", + " 3,-6,2.5, !- X,Y,Z ==> Vertex 3 {m} ", + " 3,-5,2.5; !- X,Y,Z ==> Vertex 4 {m} ", + " ShadingProperty:Reflectance, ", + " Zn001:Wall-South:Shade001, !- Shading Surface Name ", + " 0.2, !- Diffuse Solar Reflectance of Unglazed Part of Shading", " 0.2; !- Diffuse Visible Reflectance of Unglazed Part of Shadi"}); - ASSERT_TRUE( process_idf( idf_objects ) ); + ASSERT_TRUE(process_idf(idf_objects)); - SolarShading::clear_state(); + SolarShading::clear_state(); - SimulationManager::GetProjectData(); - bool FoundError = false; + SimulationManager::GetProjectData(); + bool FoundError = false; - HeatBalanceManager::GetProjectControlData( FoundError ); // read project control data - EXPECT_FALSE( FoundError ); // expect no errors + HeatBalanceManager::GetProjectControlData(FoundError); // read project control data + EXPECT_FALSE(FoundError); // expect no errors - HeatBalanceManager::SetPreConstructionInputParameters(); - ScheduleManager::ProcessScheduleInput(); // read schedules + HeatBalanceManager::SetPreConstructionInputParameters(); + ScheduleManager::ProcessScheduleInput(); // read schedules - HeatBalanceManager::GetMaterialData( FoundError ); - EXPECT_FALSE( FoundError ); + HeatBalanceManager::GetMaterialData(FoundError); + EXPECT_FALSE(FoundError); - HeatBalanceManager::GetFrameAndDividerData( FoundError ); - EXPECT_FALSE( FoundError ); + HeatBalanceManager::GetFrameAndDividerData(FoundError); + EXPECT_FALSE(FoundError); - HeatBalanceManager::GetConstructData( FoundError ); - EXPECT_FALSE( FoundError ); + HeatBalanceManager::GetConstructData(FoundError); + EXPECT_FALSE(FoundError); - HeatBalanceManager::GetZoneData( FoundError ); // Read Zone data from input file - EXPECT_FALSE( FoundError ); + HeatBalanceManager::GetZoneData(FoundError); // Read Zone data from input file + EXPECT_FALSE(FoundError); - SurfaceGeometry::GetGeometryParameters( FoundError ); - EXPECT_FALSE( FoundError ); + SurfaceGeometry::GetGeometryParameters(FoundError); + EXPECT_FALSE(FoundError); - SurfaceGeometry::CosZoneRelNorth.allocate( 1 ); - SurfaceGeometry::SinZoneRelNorth.allocate( 1 ); + SurfaceGeometry::CosZoneRelNorth.allocate(1); + SurfaceGeometry::SinZoneRelNorth.allocate(1); - SurfaceGeometry::CosZoneRelNorth( 1 ) = std::cos( -Zone( 1 ).RelNorth * DegToRadians ); - SurfaceGeometry::SinZoneRelNorth( 1 ) = std::sin( -Zone( 1 ).RelNorth * DegToRadians ); - SurfaceGeometry::CosBldgRelNorth = 1.0; - SurfaceGeometry::SinBldgRelNorth = 0.0; + SurfaceGeometry::CosZoneRelNorth(1) = std::cos(-Zone(1).RelNorth * DegToRadians); + SurfaceGeometry::SinZoneRelNorth(1) = std::sin(-Zone(1).RelNorth * DegToRadians); + SurfaceGeometry::CosBldgRelNorth = 1.0; + SurfaceGeometry::SinBldgRelNorth = 0.0; - compare_err_stream( "" ); // just for debugging - SurfaceGeometry::SetupZoneGeometry( FoundError ); // this calls GetSurfaceData() - EXPECT_FALSE( FoundError ); + compare_err_stream(""); // just for debugging + SurfaceGeometry::SetupZoneGeometry(FoundError); // this calls GetSurfaceData() + EXPECT_FALSE(FoundError); - SolarShading::AllocateModuleArrays(); - SolarShading::DetermineShadowingCombinations(); - DataEnvironment::DayOfYear_Schedule = 168; - DataEnvironment::DayOfWeek = 6; - DataGlobals::TimeStep = 4; - DataGlobals::HourOfDay = 9; + SolarShading::AllocateModuleArrays(); + SolarShading::DetermineShadowingCombinations(); + DataEnvironment::DayOfYear_Schedule = 168; + DataEnvironment::DayOfWeek = 6; + DataGlobals::TimeStep = 4; + DataGlobals::HourOfDay = 9; - compare_err_stream( "" ); // just for debugging + compare_err_stream(""); // just for debugging - DataSurfaces::ShadingTransmittanceVaries = true; - DataSystemVariables::DetailedSkyDiffuseAlgorithm = true; - DataSystemVariables::UseScheduledSunlitFrac = true; - SolarDistribution = FullExterior; + DataSurfaces::ShadingTransmittanceVaries = true; + DataSystemVariables::DetailedSkyDiffuseAlgorithm = true; + DataSystemVariables::UseScheduledSunlitFrac = true; + SolarDistribution = FullExterior; - CalcSkyDifShading = true; - SolarShading::InitSolarCalculations(); - SolarShading::SkyDifSolarShading(); - CalcSkyDifShading = false; + CalcSkyDifShading = true; + SolarShading::InitSolarCalculations(); + SolarShading::SkyDifSolarShading(); + CalcSkyDifShading = false; - ScheduleManager::UpdateScheduleValues(); - DataBSDFWindow::SUNCOSTS( 4, 9, 1 ) = 0.1; - DataBSDFWindow::SUNCOSTS( 4, 9, 2 ) = 0.1; - DataBSDFWindow::SUNCOSTS( 4, 9, 3 ) = 0.1; - FigureSolarBeamAtTimestep( DataGlobals::HourOfDay, DataGlobals::TimeStep ); + ScheduleManager::UpdateScheduleValues(); + DataBSDFWindow::SUNCOSTS(4, 9, 1) = 0.1; + DataBSDFWindow::SUNCOSTS(4, 9, 2) = 0.1; + DataBSDFWindow::SUNCOSTS(4, 9, 3) = 0.1; + FigureSolarBeamAtTimestep(DataGlobals::HourOfDay, DataGlobals::TimeStep); - EXPECT_TRUE( UseScheduledSunlitFrac ); - EXPECT_DOUBLE_EQ( 0.5432, ScheduleManager::LookUpScheduleValue( 2, 9, 4 ) ); - EXPECT_FALSE( SolarShading::SUNCOS( 3 ) < 0.00001 ); + EXPECT_TRUE(UseScheduledSunlitFrac); + EXPECT_DOUBLE_EQ(0.5432, ScheduleManager::LookUpScheduleValue(2, 9, 4)); + EXPECT_FALSE(SolarShading::SUNCOS(3) < 0.00001); EXPECT_DOUBLE_EQ(0.00001, DataEnvironment::SunIsUpValue); ; - EXPECT_FALSE( SolarShading::SUNCOS( 3 ) < DataEnvironment::SunIsUpValue ); + EXPECT_FALSE(SolarShading::SUNCOS(3) < DataEnvironment::SunIsUpValue); - EXPECT_DOUBLE_EQ( 1, SunlitFrac( 4, 9, 3 ) ); - EXPECT_DOUBLE_EQ( 1, SunlitFrac( 4, 9, 6 ) ); - EXPECT_DOUBLE_EQ( 0.5432, SunlitFrac( 4, 9, 9 ) ); - SolarShading::clear_state(); + EXPECT_DOUBLE_EQ(1, SunlitFrac(4, 9, 3)); + EXPECT_DOUBLE_EQ(1, SunlitFrac(4, 9, 6)); + EXPECT_DOUBLE_EQ(0.5432, SunlitFrac(4, 9, 9)); + SolarShading::clear_state(); } -TEST_F( EnergyPlusFixture, SolarShadingTest_DisableGroupSelfShading ) +TEST_F(EnergyPlusFixture, SolarShadingTest_DisableGroupSelfShading) { std::string const idf_objects = delimited_string({" Version,8.9; ", - " Building, ", - " DemoFDT, !- Name ", - " 0, !- North Axis {deg} ", - " Suburbs, !- Terrain ", - " 3.9999999E-02, !- Loads Convergence Tolerance Value ", - " 4.0000002E-03, !- Temperature Convergence Tolerance Value {deltaC} ", - " FullExterior, !- Solar Distribution ", - " , !- Maximum Number of Warmup Days ", - " 6; !- Minimum Number of Warmup Days ", - " ShadowCalculation, ", - " TimestepFrequency, !- Calculation Method ", - " , !- Calculation Frequency ", - " , !- Maximum Figures in Shadow Overlap Calculations ", - " , !- Polygon Clipping Algorithm ", - " , !- Sky Diffuse Modeling Algorithm ", - " , !- External Shading Calculation Method ", - " , !- Output External Shading Calculation Results ", - " Yes, !- Disable Shading within A Zone Group ", - " , !- Disable Shading between Zone Groups ", - " ShadingZoneGroup; !- Shading Group 1 ZoneList Name ", - " SurfaceConvectionAlgorithm:Inside,TARP; ", - " SurfaceConvectionAlgorithm:Outside,TARP; ", - " HeatBalanceAlgorithm,ConductionTransferFunction; ", - " Timestep,6; ", - " RunPeriod, ", - " , !- Name ", - " 1, !- Begin Month ", - " 1, !- Begin Day of Month ", - " 12, !- End Month ", - " 31, !- End Day of Month ", - " , !- Day of Week for Start Day ", - " , !- Use Weather File Holidays and Special Days ", - " , !- Use Weather File Daylight Saving Period ", - " , !- Apply Weekend Holiday Rule ", - " , !- Use Weather File Rain Indicators ", - " ; !- Use Weather File Snow Indicators ", - " ScheduleTypeLimits, ", - " Fraction, !- Name ", - " 0.0, !- Lower Limit Value ", - " 1.0, !- Upper Limit Value ", - " Continuous; !- Numeric Type ", - " ScheduleTypeLimits, ", - " ON/OFF, !- Name ", - " 0, !- Lower Limit Value ", - " 1, !- Upper Limit Value ", - " Discrete; !- Numeric Type ", - " Schedule:Compact, ", - " SunShading, !- Name ", - " ON/OFF, !- Schedule Type Limits Name ", - " Through: 4/30, !- Field 1 ", - " For: AllDays, !- Field 2 ", - " until: 24:00,1, !- Field 3 ", - " Through: 10/31, !- Field 5 ", - " For: AllDays, !- Field 6 ", - " until: 24:00,0, !- Field 7 ", - " Through: 12/31, !- Field 9 ", - " For: AllDays, !- Field 10 ", - " until: 24:00,1; !- Field 11 ", - " Material, ", - " A2 - 4 IN DENSE FACE BRICK, !- Name ", - " Rough, !- Roughness ", - " 0.1014984, !- Thickness {m} ", - " 1.245296, !- Conductivity {W/m-K} ", - " 2082.400, !- Density {kg/m3} ", - " 920.4800, !- Specific Heat {J/kg-K} ", - " 0.9000000, !- Thermal Absorptance ", - " 0.9300000, !- Solar Absorptance ", - " 0.9300000; !- Visible Absorptance ", - " Material, ", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Name ", - " Smooth, !- Roughness ", - " 1.9050000E-02, !- Thickness {m} ", - " 0.7264224, !- Conductivity {W/m-K} ", - " 1601.846, !- Density {kg/m3} ", - " 836.8000, !- Specific Heat {J/kg-K} ", - " 0.9000000, !- Thermal Absorptance ", - " 0.9200000, !- Solar Absorptance ", - " 0.9200000; !- Visible Absorptance ", - " Material, ", - " E2 - 1 / 2 IN SLAG OR STONE, !- Name ", - " Rough, !- Roughness ", - " 1.2710161E-02, !- Thickness {m} ", - " 1.435549, !- Conductivity {W/m-K} ", - " 881.0155, !- Density {kg/m3} ", - " 1673.600, !- Specific Heat {J/kg-K} ", - " 0.9000000, !- Thermal Absorptance ", - " 0.5500000, !- Solar Absorptance ", - " 0.5500000; !- Visible Absorptance ", - " Material, ", - " C12 - 2 IN HW CONCRETE, !- Name ", - " MediumRough, !- Roughness ", - " 5.0901599E-02, !- Thickness {m} ", - " 1.729577, !- Conductivity {W/m-K} ", - " 2242.585, !- Density {kg/m3} ", - " 836.8000, !- Specific Heat {J/kg-K} ", - " 0.9000000, !- Thermal Absorptance ", - " 0.6500000, !- Solar Absorptance ", - " 0.6500000; !- Visible Absorptance ", - " Material:NoMass, ", - " R13LAYER, !- Name ", - " Rough, !- Roughness ", - " 2.290965, !- Thermal Resistance {m2-K/W} ", - " 0.9000000, !- Thermal Absorptance ", - " 0.7500000, !- Solar Absorptance ", - " 0.7500000; !- Visible Absorptance ", - " WindowMaterial:Glazing, ", - " GLASS - CLEAR PLATE 1 / 4 IN, !- Name ", - " SpectralAverage, !- Optical Data Type ", - " , !- Window Glass Spectral Data Set Name ", - " 0.006, !- Thickness {m} ", - " 0.80, !- Solar Transmittance at Normal Incidence ", - " 0.10, !- Front Side Solar Reflectance at Normal Incidence ", - " 0.10, !- Back Side Solar Reflectance at Normal Incidence ", - " 0.80, !- Visible Transmittance at Normal Incidence ", - " 0.10, !- Front Side Visible Reflectance at Normal Incidence ", - " 0.10, !- Back Side Visible Reflectance at Normal Incidence ", - " 0.0, !- Infrared Transmittance at Normal Incidence ", - " 0.84, !- Front Side Infrared Hemispherical Emissivity ", - " 0.84, !- Back Side Infrared Hemispherical Emissivity ", - " 0.9; !- Conductivity {W/m-K} ", - " WindowMaterial:Gas, ", - " AIRGAP, !- Name ", - " AIR, !- Gas Type ", - " 0.0125; !- Thickness {m} ", - " Construction, ", - " R13WALL, !- Name ", - " R13LAYER; !- Outside Layer ", - " Construction, ", - " EXTWALL09, !- Name ", - " A2 - 4 IN DENSE FACE BRICK, !- Outside Layer ", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 4 ", - " Construction, ", - " INTERIOR, !- Name ", - " C12 - 2 IN HW CONCRETE; !- Layer 4 ", - " Construction, ", - " SLAB FLOOR, !- Name ", - " C12 - 2 IN HW CONCRETE; !- Layer 4 ", - " Construction, ", - " ROOF31, !- Name ", - " E2 - 1 / 2 IN SLAG OR STONE, !- Outside Layer ", - " C12 - 2 IN HW CONCRETE; !- Layer 4 ", - " Construction, ", - " DOUBLE PANE HW WINDOW, !- Name ", - " GLASS - CLEAR PLATE 1 / 4 IN, !- Outside Layer ", - " AIRGAP, !- Layer 2 ", - " GLASS - CLEAR PLATE 1 / 4 IN; !- Layer 3 ", - " Construction, ", - " PARTITION02, !- Name ", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer ", - " C12 - 2 IN HW CONCRETE, !- Layer 4 ", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3 ", - " Construction, ", - " single PANE HW WINDOW, !- Name ", - " GLASS - CLEAR PLATE 1 / 4 IN; !- Outside Layer ", - " Construction, ", - " EXTWALLdemo, !- Name ", - " A2 - 4 IN DENSE FACE BRICK, !- Outside Layer ", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 4 ", - " GlobalGeometryRules, ", - " UpperLeftCorner, !- Starting Vertex Position ", - " Counterclockwise, !- Vertex Entry Direction ", - " Relative; !- Coordinate System ", - " Zone, ", - " ZONE ONE, !- Name ", - " 0, !- Direction of Relative North {deg} ", - " 0, !- X Origin {m} ", - " 0, !- Y Origin {m} ", - " 0, !- Z Origin {m} ", - " 1, !- Type ", - " 1, !- Multiplier ", - " 0, !- Ceiling Height {m} ", - " 0; !- Volume {m3} ", - " ZoneList, ", - " ShadingZoneGroup, ", - " ZONE ONE; ", - " BuildingSurface:Detailed, ", - " Zn001:Wall-North, !- Name ", - " Wall, !- Surface Type ", - " EXTWALLdemo, !- Construction Name ", - " ZONE ONE, !- Zone Name ", - " Outdoors, !- Outside Boundary Condition ", - " , !- Outside Boundary Condition Object ", - " SunExposed, !- Sun Exposure ", - " WindExposed, !- Wind Exposure ", - " 0.5000000, !- View Factor to Ground ", - " 4, !- Number of Vertices ", - " 5,5,3, !- X,Y,Z ==> Vertex 1 {m} ", - " 5,5,0, !- X,Y,Z ==> Vertex 2 {m} ", - " -5,5,0, !- X,Y,Z ==> Vertex 3 {m} ", - " -5,5,3; !- X,Y,Z ==> Vertex 4 {m} ", - " BuildingSurface:Detailed, ", - " Zn001:Wall-East, !- Name ", - " Wall, !- Surface Type ", - " EXTWALL09, !- Construction Name ", - " ZONE ONE, !- Zone Name ", - " Outdoors, !- Outside Boundary Condition ", - " , !- Outside Boundary Condition Object ", - " SunExposed, !- Sun Exposure ", - " WindExposed, !- Wind Exposure ", - " 0.5000000, !- View Factor to Ground ", - " 4, !- Number of Vertices ", - " 5,-5,3, !- X,Y,Z ==> Vertex 1 {m} ", - " 5,-5,0, !- X,Y,Z ==> Vertex 2 {m} ", - " 5,5,0, !- X,Y,Z ==> Vertex 3 {m} ", - " 5,5,3; !- X,Y,Z ==> Vertex 4 {m} ", - " BuildingSurface:Detailed, ", - " Zn001:Wall-South, !- Name ", - " Wall, !- Surface Type ", - " R13WALL, !- Construction Name ", - " ZONE ONE, !- Zone Name ", - " Outdoors, !- Outside Boundary Condition ", - " , !- Outside Boundary Condition Object ", - " SunExposed, !- Sun Exposure ", - " WindExposed, !- Wind Exposure ", - " 0.5000000, !- View Factor to Ground ", - " 4, !- Number of Vertices ", - " -5,-5,3, !- X,Y,Z ==> Vertex 1 {m} ", - " -5,-5,0, !- X,Y,Z ==> Vertex 2 {m} ", - " 5,-5,0, !- X,Y,Z ==> Vertex 3 {m} ", - " 5,-5,3; !- X,Y,Z ==> Vertex 4 {m} ", - " BuildingSurface:Detailed, ", - " Zn001:Wall-West, !- Name ", - " Wall, !- Surface Type ", - " EXTWALL09, !- Construction Name ", - " ZONE ONE, !- Zone Name ", - " Outdoors, !- Outside Boundary Condition ", - " , !- Outside Boundary Condition Object ", - " SunExposed, !- Sun Exposure ", - " WindExposed, !- Wind Exposure ", - " 0.5000000, !- View Factor to Ground ", - " 4, !- Number of Vertices ", - " -5,5,3, !- X,Y,Z ==> Vertex 1 {m} ", - " -5,5,0, !- X,Y,Z ==> Vertex 2 {m} ", - " -5,-5,0, !- X,Y,Z ==> Vertex 3 {m} ", - " -5,-5,3; !- X,Y,Z ==> Vertex 4 {m} ", - " BuildingSurface:Detailed, ", - " Zn001:roof, !- Name ", - " Roof, !- Surface Type ", - " ROOF31, !- Construction Name ", - " ZONE ONE, !- Zone Name ", - " Outdoors, !- Outside Boundary Condition ", - " , !- Outside Boundary Condition Object ", - " SunExposed, !- Sun Exposure ", - " WindExposed, !- Wind Exposure ", - " 0.0000000, !- View Factor to Ground ", - " 4, !- Number of Vertices ", - " -5,-5,3, !- X,Y,Z ==> Vertex 1 {m} ", - " 5,-5,3, !- X,Y,Z ==> Vertex 2 {m} ", - " 5,5,3, !- X,Y,Z ==> Vertex 3 {m} ", - " -5,5,3; !- X,Y,Z ==> Vertex 4 {m} ", - " Schedule:Compact, ", - " ExtShadingSch:Zn001:roof, ", - " Fraction, !- Schedule Type Limits Name ", - " Through: 12/31, !- Field 1 ", - " For: AllDays, !- Field 2 ", - " Until: 24:00, !- Field 3 ", - " 0.5432; !- Field 4 ", - " BuildingSurface:Detailed, ", - " Zn001:floor, !- Name ", - " Floor, !- Surface Type ", - " SLAB FLOOR, !- Construction Name ", - " ZONE ONE, !- Zone Name ", - " Outdoors, !- Outside Boundary Condition ", - " , !- Outside Boundary Condition Object ", - " SunExposed, !- Sun Exposure ", - " WindExposed, !- Wind Exposure ", - " 0.0000000, !- View Factor to Ground ", - " 4, !- Number of Vertices ", - " -5,5,0, !- X,Y,Z ==> Vertex 1 {m} ", - " 5,5,0, !- X,Y,Z ==> Vertex 2 {m} ", - " 5,-5,0, !- X,Y,Z ==> Vertex 3 {m} ", - " -5,-5,0; !- X,Y,Z ==> Vertex 4 {m} ", - " FenestrationSurface:Detailed, ", - " Zn001:Wall-South:Win001, !- Name ", - " Window, !- Surface Type ", - " DOUBLE PANE HW WINDOW, !- Construction Name ", - " Zn001:Wall-South, !- Building Surface Name ", - " , !- Outside Boundary Condition Object ", - " 0.5000000, !- View Factor to Ground ", - " , !- Shading Control Name ", - " TestFrameAndDivider, !- Frame and Divider Name ", - " 1.0, !- Multiplier ", - " 4, !- Number of Vertices ", - " -3,-5,2.5, !- X,Y,Z ==> Vertex 1 {m} ", - " -3,-5,0.5, !- X,Y,Z ==> Vertex 2 {m} ", - " 3,-5,0.5, !- X,Y,Z ==> Vertex 3 {m} ", - " 3,-5,2.5; !- X,Y,Z ==> Vertex 4 {m} ", - " WindowProperty:FrameAndDivider, ", - " TestFrameAndDivider, !- Name ", - " 0.05, !- Frame Width {m} ", - " 0.05, !- Frame Outside Projection {m} ", - " 0.05, !- Frame Inside Projection {m} ", - " 5.0, !- Frame Conductance {W/m2-K} ", - " 1.2, !- Ratio of Frame-Edge Glass Conductance to Center-Of-Gl", - " 0.8, !- Frame Solar Absorptance ", - " 0.8, !- Frame Visible Absorptance ", - " 0.9, !- Frame Thermal Hemispherical Emissivity ", - " DividedLite, !- Divider Type ", - " 0.02, !- Divider Width {m} ", - " 2, !- Number of Horizontal Dividers ", - " 2, !- Number of Vertical Dividers ", - " 0.02, !- Divider Outside Projection {m} ", - " 0.02, !- Divider Inside Projection {m} ", - " 5.0, !- Divider Conductance {W/m2-K} ", - " 1.2, !- Ratio of Divider-Edge Glass Conductance to Center-Of-", - " 0.8, !- Divider Solar Absorptance ", - " 0.8, !- Divider Visible Absorptance ", - " 0.9; !- Divider Thermal Hemispherical Emissivity ", - " Shading:Zone:Detailed, ", - " Zn001:Wall-South:Shade001, !- Name ", - " Zn001:Wall-South, !- Base Surface Name ", - " SunShading, !- Transmittance Schedule Name ", - " 4, !- Number of Vertices ", - " -3,-5,2.5, !- X,Y,Z ==> Vertex 1 {m} ", - " -3,-6,2.5, !- X,Y,Z ==> Vertex 2 {m} ", - " 3,-6,2.5, !- X,Y,Z ==> Vertex 3 {m} ", - " 3,-5,2.5; !- X,Y,Z ==> Vertex 4 {m} ", - " ShadingProperty:Reflectance, ", - " Zn001:Wall-South:Shade001, !- Shading Surface Name ", - " 0.2, !- Diffuse Solar Reflectance of Unglazed Part of Shading", + " Building, ", + " DemoFDT, !- Name ", + " 0, !- North Axis {deg} ", + " Suburbs, !- Terrain ", + " 3.9999999E-02, !- Loads Convergence Tolerance Value ", + " 4.0000002E-03, !- Temperature Convergence Tolerance Value {deltaC} ", + " FullExterior, !- Solar Distribution ", + " , !- Maximum Number of Warmup Days ", + " 6; !- Minimum Number of Warmup Days ", + " ShadowCalculation, ", + " TimestepFrequency, !- Calculation Method ", + " , !- Calculation Frequency ", + " , !- Maximum Figures in Shadow Overlap Calculations ", + " , !- Polygon Clipping Algorithm ", + " , !- Sky Diffuse Modeling Algorithm ", + " , !- External Shading Calculation Method ", + " , !- Output External Shading Calculation Results ", + " Yes, !- Disable Shading within A Zone Group ", + " , !- Disable Shading between Zone Groups ", + " ShadingZoneGroup; !- Shading Group 1 ZoneList Name ", + " SurfaceConvectionAlgorithm:Inside,TARP; ", + " SurfaceConvectionAlgorithm:Outside,TARP; ", + " HeatBalanceAlgorithm,ConductionTransferFunction; ", + " Timestep,6; ", + " RunPeriod, ", + " , !- Name ", + " 1, !- Begin Month ", + " 1, !- Begin Day of Month ", + " 12, !- End Month ", + " 31, !- End Day of Month ", + " , !- Day of Week for Start Day ", + " , !- Use Weather File Holidays and Special Days ", + " , !- Use Weather File Daylight Saving Period ", + " , !- Apply Weekend Holiday Rule ", + " , !- Use Weather File Rain Indicators ", + " ; !- Use Weather File Snow Indicators ", + " ScheduleTypeLimits, ", + " Fraction, !- Name ", + " 0.0, !- Lower Limit Value ", + " 1.0, !- Upper Limit Value ", + " Continuous; !- Numeric Type ", + " ScheduleTypeLimits, ", + " ON/OFF, !- Name ", + " 0, !- Lower Limit Value ", + " 1, !- Upper Limit Value ", + " Discrete; !- Numeric Type ", + " Schedule:Compact, ", + " SunShading, !- Name ", + " ON/OFF, !- Schedule Type Limits Name ", + " Through: 4/30, !- Field 1 ", + " For: AllDays, !- Field 2 ", + " until: 24:00,1, !- Field 3 ", + " Through: 10/31, !- Field 5 ", + " For: AllDays, !- Field 6 ", + " until: 24:00,0, !- Field 7 ", + " Through: 12/31, !- Field 9 ", + " For: AllDays, !- Field 10 ", + " until: 24:00,1; !- Field 11 ", + " Material, ", + " A2 - 4 IN DENSE FACE BRICK, !- Name ", + " Rough, !- Roughness ", + " 0.1014984, !- Thickness {m} ", + " 1.245296, !- Conductivity {W/m-K} ", + " 2082.400, !- Density {kg/m3} ", + " 920.4800, !- Specific Heat {J/kg-K} ", + " 0.9000000, !- Thermal Absorptance ", + " 0.9300000, !- Solar Absorptance ", + " 0.9300000; !- Visible Absorptance ", + " Material, ", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Name ", + " Smooth, !- Roughness ", + " 1.9050000E-02, !- Thickness {m} ", + " 0.7264224, !- Conductivity {W/m-K} ", + " 1601.846, !- Density {kg/m3} ", + " 836.8000, !- Specific Heat {J/kg-K} ", + " 0.9000000, !- Thermal Absorptance ", + " 0.9200000, !- Solar Absorptance ", + " 0.9200000; !- Visible Absorptance ", + " Material, ", + " E2 - 1 / 2 IN SLAG OR STONE, !- Name ", + " Rough, !- Roughness ", + " 1.2710161E-02, !- Thickness {m} ", + " 1.435549, !- Conductivity {W/m-K} ", + " 881.0155, !- Density {kg/m3} ", + " 1673.600, !- Specific Heat {J/kg-K} ", + " 0.9000000, !- Thermal Absorptance ", + " 0.5500000, !- Solar Absorptance ", + " 0.5500000; !- Visible Absorptance ", + " Material, ", + " C12 - 2 IN HW CONCRETE, !- Name ", + " MediumRough, !- Roughness ", + " 5.0901599E-02, !- Thickness {m} ", + " 1.729577, !- Conductivity {W/m-K} ", + " 2242.585, !- Density {kg/m3} ", + " 836.8000, !- Specific Heat {J/kg-K} ", + " 0.9000000, !- Thermal Absorptance ", + " 0.6500000, !- Solar Absorptance ", + " 0.6500000; !- Visible Absorptance ", + " Material:NoMass, ", + " R13LAYER, !- Name ", + " Rough, !- Roughness ", + " 2.290965, !- Thermal Resistance {m2-K/W} ", + " 0.9000000, !- Thermal Absorptance ", + " 0.7500000, !- Solar Absorptance ", + " 0.7500000; !- Visible Absorptance ", + " WindowMaterial:Glazing, ", + " GLASS - CLEAR PLATE 1 / 4 IN, !- Name ", + " SpectralAverage, !- Optical Data Type ", + " , !- Window Glass Spectral Data Set Name ", + " 0.006, !- Thickness {m} ", + " 0.80, !- Solar Transmittance at Normal Incidence ", + " 0.10, !- Front Side Solar Reflectance at Normal Incidence ", + " 0.10, !- Back Side Solar Reflectance at Normal Incidence ", + " 0.80, !- Visible Transmittance at Normal Incidence ", + " 0.10, !- Front Side Visible Reflectance at Normal Incidence ", + " 0.10, !- Back Side Visible Reflectance at Normal Incidence ", + " 0.0, !- Infrared Transmittance at Normal Incidence ", + " 0.84, !- Front Side Infrared Hemispherical Emissivity ", + " 0.84, !- Back Side Infrared Hemispherical Emissivity ", + " 0.9; !- Conductivity {W/m-K} ", + " WindowMaterial:Gas, ", + " AIRGAP, !- Name ", + " AIR, !- Gas Type ", + " 0.0125; !- Thickness {m} ", + " Construction, ", + " R13WALL, !- Name ", + " R13LAYER; !- Outside Layer ", + " Construction, ", + " EXTWALL09, !- Name ", + " A2 - 4 IN DENSE FACE BRICK, !- Outside Layer ", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 4 ", + " Construction, ", + " INTERIOR, !- Name ", + " C12 - 2 IN HW CONCRETE; !- Layer 4 ", + " Construction, ", + " SLAB FLOOR, !- Name ", + " C12 - 2 IN HW CONCRETE; !- Layer 4 ", + " Construction, ", + " ROOF31, !- Name ", + " E2 - 1 / 2 IN SLAG OR STONE, !- Outside Layer ", + " C12 - 2 IN HW CONCRETE; !- Layer 4 ", + " Construction, ", + " DOUBLE PANE HW WINDOW, !- Name ", + " GLASS - CLEAR PLATE 1 / 4 IN, !- Outside Layer ", + " AIRGAP, !- Layer 2 ", + " GLASS - CLEAR PLATE 1 / 4 IN; !- Layer 3 ", + " Construction, ", + " PARTITION02, !- Name ", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer ", + " C12 - 2 IN HW CONCRETE, !- Layer 4 ", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3 ", + " Construction, ", + " single PANE HW WINDOW, !- Name ", + " GLASS - CLEAR PLATE 1 / 4 IN; !- Outside Layer ", + " Construction, ", + " EXTWALLdemo, !- Name ", + " A2 - 4 IN DENSE FACE BRICK, !- Outside Layer ", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 4 ", + " GlobalGeometryRules, ", + " UpperLeftCorner, !- Starting Vertex Position ", + " Counterclockwise, !- Vertex Entry Direction ", + " Relative; !- Coordinate System ", + " Zone, ", + " ZONE ONE, !- Name ", + " 0, !- Direction of Relative North {deg} ", + " 0, !- X Origin {m} ", + " 0, !- Y Origin {m} ", + " 0, !- Z Origin {m} ", + " 1, !- Type ", + " 1, !- Multiplier ", + " 0, !- Ceiling Height {m} ", + " 0; !- Volume {m3} ", + " ZoneList, ", + " ShadingZoneGroup, ", + " ZONE ONE; ", + " BuildingSurface:Detailed, ", + " Zn001:Wall-North, !- Name ", + " Wall, !- Surface Type ", + " EXTWALLdemo, !- Construction Name ", + " ZONE ONE, !- Zone Name ", + " Outdoors, !- Outside Boundary Condition ", + " , !- Outside Boundary Condition Object ", + " SunExposed, !- Sun Exposure ", + " WindExposed, !- Wind Exposure ", + " 0.5000000, !- View Factor to Ground ", + " 4, !- Number of Vertices ", + " 5,5,3, !- X,Y,Z ==> Vertex 1 {m} ", + " 5,5,0, !- X,Y,Z ==> Vertex 2 {m} ", + " -5,5,0, !- X,Y,Z ==> Vertex 3 {m} ", + " -5,5,3; !- X,Y,Z ==> Vertex 4 {m} ", + " BuildingSurface:Detailed, ", + " Zn001:Wall-East, !- Name ", + " Wall, !- Surface Type ", + " EXTWALL09, !- Construction Name ", + " ZONE ONE, !- Zone Name ", + " Outdoors, !- Outside Boundary Condition ", + " , !- Outside Boundary Condition Object ", + " SunExposed, !- Sun Exposure ", + " WindExposed, !- Wind Exposure ", + " 0.5000000, !- View Factor to Ground ", + " 4, !- Number of Vertices ", + " 5,-5,3, !- X,Y,Z ==> Vertex 1 {m} ", + " 5,-5,0, !- X,Y,Z ==> Vertex 2 {m} ", + " 5,5,0, !- X,Y,Z ==> Vertex 3 {m} ", + " 5,5,3; !- X,Y,Z ==> Vertex 4 {m} ", + " BuildingSurface:Detailed, ", + " Zn001:Wall-South, !- Name ", + " Wall, !- Surface Type ", + " R13WALL, !- Construction Name ", + " ZONE ONE, !- Zone Name ", + " Outdoors, !- Outside Boundary Condition ", + " , !- Outside Boundary Condition Object ", + " SunExposed, !- Sun Exposure ", + " WindExposed, !- Wind Exposure ", + " 0.5000000, !- View Factor to Ground ", + " 4, !- Number of Vertices ", + " -5,-5,3, !- X,Y,Z ==> Vertex 1 {m} ", + " -5,-5,0, !- X,Y,Z ==> Vertex 2 {m} ", + " 5,-5,0, !- X,Y,Z ==> Vertex 3 {m} ", + " 5,-5,3; !- X,Y,Z ==> Vertex 4 {m} ", + " BuildingSurface:Detailed, ", + " Zn001:Wall-West, !- Name ", + " Wall, !- Surface Type ", + " EXTWALL09, !- Construction Name ", + " ZONE ONE, !- Zone Name ", + " Outdoors, !- Outside Boundary Condition ", + " , !- Outside Boundary Condition Object ", + " SunExposed, !- Sun Exposure ", + " WindExposed, !- Wind Exposure ", + " 0.5000000, !- View Factor to Ground ", + " 4, !- Number of Vertices ", + " -5,5,3, !- X,Y,Z ==> Vertex 1 {m} ", + " -5,5,0, !- X,Y,Z ==> Vertex 2 {m} ", + " -5,-5,0, !- X,Y,Z ==> Vertex 3 {m} ", + " -5,-5,3; !- X,Y,Z ==> Vertex 4 {m} ", + " BuildingSurface:Detailed, ", + " Zn001:roof, !- Name ", + " Roof, !- Surface Type ", + " ROOF31, !- Construction Name ", + " ZONE ONE, !- Zone Name ", + " Outdoors, !- Outside Boundary Condition ", + " , !- Outside Boundary Condition Object ", + " SunExposed, !- Sun Exposure ", + " WindExposed, !- Wind Exposure ", + " 0.0000000, !- View Factor to Ground ", + " 4, !- Number of Vertices ", + " -5,-5,3, !- X,Y,Z ==> Vertex 1 {m} ", + " 5,-5,3, !- X,Y,Z ==> Vertex 2 {m} ", + " 5,5,3, !- X,Y,Z ==> Vertex 3 {m} ", + " -5,5,3; !- X,Y,Z ==> Vertex 4 {m} ", + " Schedule:Compact, ", + " ExtShadingSch:Zn001:roof, ", + " Fraction, !- Schedule Type Limits Name ", + " Through: 12/31, !- Field 1 ", + " For: AllDays, !- Field 2 ", + " Until: 24:00, !- Field 3 ", + " 0.5432; !- Field 4 ", + " BuildingSurface:Detailed, ", + " Zn001:floor, !- Name ", + " Floor, !- Surface Type ", + " SLAB FLOOR, !- Construction Name ", + " ZONE ONE, !- Zone Name ", + " Outdoors, !- Outside Boundary Condition ", + " , !- Outside Boundary Condition Object ", + " SunExposed, !- Sun Exposure ", + " WindExposed, !- Wind Exposure ", + " 0.0000000, !- View Factor to Ground ", + " 4, !- Number of Vertices ", + " -5,5,0, !- X,Y,Z ==> Vertex 1 {m} ", + " 5,5,0, !- X,Y,Z ==> Vertex 2 {m} ", + " 5,-5,0, !- X,Y,Z ==> Vertex 3 {m} ", + " -5,-5,0; !- X,Y,Z ==> Vertex 4 {m} ", + " FenestrationSurface:Detailed, ", + " Zn001:Wall-South:Win001, !- Name ", + " Window, !- Surface Type ", + " DOUBLE PANE HW WINDOW, !- Construction Name ", + " Zn001:Wall-South, !- Building Surface Name ", + " , !- Outside Boundary Condition Object ", + " 0.5000000, !- View Factor to Ground ", + " , !- Shading Control Name ", + " TestFrameAndDivider, !- Frame and Divider Name ", + " 1.0, !- Multiplier ", + " 4, !- Number of Vertices ", + " -3,-5,2.5, !- X,Y,Z ==> Vertex 1 {m} ", + " -3,-5,0.5, !- X,Y,Z ==> Vertex 2 {m} ", + " 3,-5,0.5, !- X,Y,Z ==> Vertex 3 {m} ", + " 3,-5,2.5; !- X,Y,Z ==> Vertex 4 {m} ", + " WindowProperty:FrameAndDivider, ", + " TestFrameAndDivider, !- Name ", + " 0.05, !- Frame Width {m} ", + " 0.05, !- Frame Outside Projection {m} ", + " 0.05, !- Frame Inside Projection {m} ", + " 5.0, !- Frame Conductance {W/m2-K} ", + " 1.2, !- Ratio of Frame-Edge Glass Conductance to Center-Of-Gl", + " 0.8, !- Frame Solar Absorptance ", + " 0.8, !- Frame Visible Absorptance ", + " 0.9, !- Frame Thermal Hemispherical Emissivity ", + " DividedLite, !- Divider Type ", + " 0.02, !- Divider Width {m} ", + " 2, !- Number of Horizontal Dividers ", + " 2, !- Number of Vertical Dividers ", + " 0.02, !- Divider Outside Projection {m} ", + " 0.02, !- Divider Inside Projection {m} ", + " 5.0, !- Divider Conductance {W/m2-K} ", + " 1.2, !- Ratio of Divider-Edge Glass Conductance to Center-Of-", + " 0.8, !- Divider Solar Absorptance ", + " 0.8, !- Divider Visible Absorptance ", + " 0.9; !- Divider Thermal Hemispherical Emissivity ", + " Shading:Zone:Detailed, ", + " Zn001:Wall-South:Shade001, !- Name ", + " Zn001:Wall-South, !- Base Surface Name ", + " SunShading, !- Transmittance Schedule Name ", + " 4, !- Number of Vertices ", + " -3,-5,2.5, !- X,Y,Z ==> Vertex 1 {m} ", + " -3,-6,2.5, !- X,Y,Z ==> Vertex 2 {m} ", + " 3,-6,2.5, !- X,Y,Z ==> Vertex 3 {m} ", + " 3,-5,2.5; !- X,Y,Z ==> Vertex 4 {m} ", + " ShadingProperty:Reflectance, ", + " Zn001:Wall-South:Shade001, !- Shading Surface Name ", + " 0.2, !- Diffuse Solar Reflectance of Unglazed Part of Shading", " 0.2; !- Diffuse Visible Reflectance of Unglazed Part of Shadi"}); - ASSERT_TRUE( process_idf( idf_objects ) ); + ASSERT_TRUE(process_idf(idf_objects)); - SolarShading::clear_state(); + SolarShading::clear_state(); - SimulationManager::GetProjectData(); - bool FoundError = false; + SimulationManager::GetProjectData(); + bool FoundError = false; - HeatBalanceManager::GetProjectControlData( FoundError ); // read project control data - EXPECT_FALSE( FoundError ); // expect no errors + HeatBalanceManager::GetProjectControlData(FoundError); // read project control data + EXPECT_FALSE(FoundError); // expect no errors - HeatBalanceManager::SetPreConstructionInputParameters(); - ScheduleManager::ProcessScheduleInput(); // read schedules + HeatBalanceManager::SetPreConstructionInputParameters(); + ScheduleManager::ProcessScheduleInput(); // read schedules - HeatBalanceManager::GetMaterialData( FoundError ); - EXPECT_FALSE( FoundError ); + HeatBalanceManager::GetMaterialData(FoundError); + EXPECT_FALSE(FoundError); - HeatBalanceManager::GetFrameAndDividerData( FoundError ); - EXPECT_FALSE( FoundError ); + HeatBalanceManager::GetFrameAndDividerData(FoundError); + EXPECT_FALSE(FoundError); - HeatBalanceManager::GetConstructData( FoundError ); - EXPECT_FALSE( FoundError ); + HeatBalanceManager::GetConstructData(FoundError); + EXPECT_FALSE(FoundError); - HeatBalanceManager::GetZoneData( FoundError ); // Read Zone data from input file - EXPECT_FALSE( FoundError ); + HeatBalanceManager::GetZoneData(FoundError); // Read Zone data from input file + EXPECT_FALSE(FoundError); - SurfaceGeometry::GetGeometryParameters( FoundError ); - EXPECT_FALSE( FoundError ); + SurfaceGeometry::GetGeometryParameters(FoundError); + EXPECT_FALSE(FoundError); - SizingManager::GetZoneSizingInput(); + SizingManager::GetZoneSizingInput(); - SurfaceGeometry::CosZoneRelNorth.allocate( 1 ); - SurfaceGeometry::SinZoneRelNorth.allocate( 1 ); + SurfaceGeometry::CosZoneRelNorth.allocate(1); + SurfaceGeometry::SinZoneRelNorth.allocate(1); - SurfaceGeometry::CosZoneRelNorth( 1 ) = std::cos( -Zone( 1 ).RelNorth * DegToRadians ); - SurfaceGeometry::SinZoneRelNorth( 1 ) = std::sin( -Zone( 1 ).RelNorth * DegToRadians ); - SurfaceGeometry::CosBldgRelNorth = 1.0; - SurfaceGeometry::SinBldgRelNorth = 0.0; + SurfaceGeometry::CosZoneRelNorth(1) = std::cos(-Zone(1).RelNorth * DegToRadians); + SurfaceGeometry::SinZoneRelNorth(1) = std::sin(-Zone(1).RelNorth * DegToRadians); + SurfaceGeometry::CosBldgRelNorth = 1.0; + SurfaceGeometry::SinBldgRelNorth = 0.0; - compare_err_stream( "" ); // just for debugging - SurfaceGeometry::SetupZoneGeometry( FoundError ); // this calls GetSurfaceData() - EXPECT_FALSE( FoundError ); + compare_err_stream(""); // just for debugging + SurfaceGeometry::SetupZoneGeometry(FoundError); // this calls GetSurfaceData() + EXPECT_FALSE(FoundError); - compare_err_stream( "" ); // just for debugging + compare_err_stream(""); // just for debugging - SolarShading::GetShadowingInput(); + SolarShading::GetShadowingInput(); - for ( int SurfNum = 1; SurfNum <= TotSurfaces; SurfNum++ ) { - if ( Surface( SurfNum ).ExtBoundCond == 0 && Surface( SurfNum ).Zone != 0 ) { - int ZoneSize = Surface(SurfNum).DisabledShadowingZoneList.size(); - EXPECT_EQ( 1, ZoneSize ); - std::vector< int > DisabledZones = Surface( SurfNum ).DisabledShadowingZoneList; - for ( int i : DisabledZones ) { - EXPECT_EQ( 1, i ); - } - } - } + for (int SurfNum = 1; SurfNum <= TotSurfaces; SurfNum++) { + if (Surface(SurfNum).ExtBoundCond == 0 && Surface(SurfNum).Zone != 0) { + int ZoneSize = Surface(SurfNum).DisabledShadowingZoneList.size(); + EXPECT_EQ(1, ZoneSize); + std::vector DisabledZones = Surface(SurfNum).DisabledShadowingZoneList; + for (int i : DisabledZones) { + EXPECT_EQ(1, i); + } + } + } } diff --git a/tst/EnergyPlus/unit/UnitHeater.unit.cc b/tst/EnergyPlus/unit/UnitHeater.unit.cc index f13527e9010..55ac09a53ce 100644 --- a/tst/EnergyPlus/unit/UnitHeater.unit.cc +++ b/tst/EnergyPlus/unit/UnitHeater.unit.cc @@ -112,2353 +112,2353 @@ using namespace EnergyPlus::WaterCoils; TEST_F(EnergyPlusFixture, UnitHeater_HWHeatingCoilUAAutoSizingTest) { - bool ErrorsFound( false ); // function returns true on error - bool FirstHVACIteration( true ); // TRUE if 1st HVAC simulation of system timestep - int UnitHeatNum( 1 ); // unit heat index - int ZoneNum( 1 ); // zone index - int CoilNum( 1 ); // heating coil index - int PltSizHeatNum( 0 ); // hot water plant loop index - Real64 HWMaxVolFlowRate( 0.0 ); // hot water coil water volume flow rate, m3/s - Real64 CpHW( 0.0 ); // hot water specific heat, J/kg K - Real64 HWPlantDeltaTDesign( 0.0 ); // hot water plant loop design temp difference, deltaC - Real64 HWCoilDesignCapacity( 0.0 ); // hot water heating coil design capacity (W) - Real64 HWDensity( 0.0 ); // hot water density, kg/m3 - - std::string const idf_objects = delimited_string( { - " Version,8.4;", - - " Timestep,4;", - - " Building,", - " NONE, !- Name", - " 0.0000000E+00, !- North Axis {deg}", - " Suburbs, !- Terrain", - " 3.9999999E-02, !- Loads Convergence Tolerance Value", - " 0.4000000, !- Temperature Convergence Tolerance Value {deltaC}", - " MinimalShadowing, !- Solar Distribution", - " 25, !- Maximum Number of Warmup Days", - " 6; !- Minimum Number of Warmup Days", - - " HeatBalanceAlgorithm,ConductionTransferFunction;", - - " SurfaceConvectionAlgorithm:Inside,TARP;", - - " SurfaceConvectionAlgorithm:Outside,DOE-2;", - - " RunPeriod,", - " , !- Name", - " 1, !- Begin Month", - " 14, !- Begin Day of Month", - " , !- Begin Year", - " 1, !- End Month", - " 14, !- End Day of Month", - " , !- End Year", - " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " Yes; !- Use Weather File Snow Indicators", - - " Site:Location,", - " CHICAGO_IL_USA TMY2-94846, !- Name", - " 41.78, !- Latitude {deg}", - " -87.75, !- Longitude {deg}", - " -6.00, !- Time Zone {hr}", - " 190.00; !- Elevation {m}", - - " SimulationControl,", - " Yes, !- Do Zone Sizing Calculation", - " No, !- Do System Sizing Calculation", - " No, !- Do Plant Sizing Calculation", - " No, !- Run Simulation for Sizing Periods", - " No; !- Run Simulation for Weather File Run Periods", - - " SizingPeriod:DesignDay,", - " CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, !- Name", - " 1, !- Month", - " 21, !- Day of Month", - " WinterDesignDay, !- Day Type", - " -17.3, !- Maximum Dry-Bulb Temperature {C}", - " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 4.9, !- Wind Speed {m/s}", - " 270, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 1.0; !- Sky Clearness", - - " SizingPeriod:DesignDay,", - " CHICAGO_IL_USA Annual Cooling 1% Design Conditions DB/MCWB, !- Name", - " 7, !- Month", - " 21, !- Day of Month", - " SummerDesignDay, !- Day Type", - " 31.5, !- Maximum Dry-Bulb Temperature {C}", - " 10.7, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " 23.0, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 5.3, !- Wind Speed {m/s}", - " 230, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 1.0; !- Sky Clearness", - - " Material,", - " A1 - 1 IN STUCCO, !- Name", - " Smooth, !- Roughness", - " 2.5389841E-02, !- Thickness {m}", - " 0.6918309, !- Conductivity {W/m-K}", - " 1858.142, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.9200000, !- Solar Absorptance", - " 0.9200000; !- Visible Absorptance", - - " Material,", - " C4 - 4 IN COMMON BRICK, !- Name", - " Rough, !- Roughness", - " 0.1014984, !- Thickness {m}", - " 0.7264224, !- Conductivity {W/m-K}", - " 1922.216, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7600000, !- Solar Absorptance", - " 0.7600000; !- Visible Absorptance", - - " Material,", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Name", - " Smooth, !- Roughness", - " 1.9050000E-02, !- Thickness {m}", - " 0.7264224, !- Conductivity {W/m-K}", - " 1601.846, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.9200000, !- Solar Absorptance", - " 0.9200000; !- Visible Absorptance", - - " Material,", - " C6 - 8 IN CLAY TILE, !- Name", - " Smooth, !- Roughness", - " 0.2033016, !- Thickness {m}", - " 0.5707605, !- Conductivity {W/m-K}", - " 1121.292, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.8200000, !- Solar Absorptance", - " 0.8200000; !- Visible Absorptance", - - " Material,", - " C10 - 8 IN HW CONCRETE, !- Name", - " MediumRough, !- Roughness", - " 0.2033016, !- Thickness {m}", - " 1.729577, !- Conductivity {W/m-K}", - " 2242.585, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - - " Material,", - " E2 - 1 / 2 IN SLAG OR STONE, !- Name", - " Rough, !- Roughness", - " 1.2710161E-02, !- Thickness {m}", - " 1.435549, !- Conductivity {W/m-K}", - " 881.0155, !- Density {kg/m3}", - " 1673.600, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.5500000, !- Solar Absorptance", - " 0.5500000; !- Visible Absorptance", - - " Material,", - " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Name", - " Rough, !- Roughness", - " 9.5402403E-03, !- Thickness {m}", - " 0.1902535, !- Conductivity {W/m-K}", - " 1121.292, !- Density {kg/m3}", - " 1673.600, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " B5 - 1 IN DENSE INSULATION, !- Name", - " VeryRough, !- Roughness", - " 2.5389841E-02, !- Thickness {m}", - " 4.3239430E-02, !- Conductivity {W/m-K}", - " 91.30524, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.5000000, !- Solar Absorptance", - " 0.5000000; !- Visible Absorptance", - - " Material,", - " C12 - 2 IN HW CONCRETE, !- Name", - " MediumRough, !- Roughness", - " 5.0901599E-02, !- Thickness {m}", - " 1.729577, !- Conductivity {W/m-K}", - " 2242.585, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - - " WindowMaterial:Glazing,", - " WIN-LAY-GLASS-LIGHT, !- Name", - " SpectralAverage, !- Optical Data Type", - " , !- Window Glass Spectral Data Set Name", - " 0.003, !- Thickness {m}", - " 0.90, !- Solar Transmittance at Normal Incidence", - " 0.031, !- Front Side Solar Reflectance at Normal Incidence", - " 0.031, !- Back Side Solar Reflectance at Normal Incidence", - " 0.90, !- Visible Transmittance at Normal Incidence", - " 0.05, !- Front Side Visible Reflectance at Normal Incidence", - " 0.05, !- Back Side Visible Reflectance at Normal Incidence", - " 0.0, !- Infrared Transmittance at Normal Incidence", - " 0.84, !- Front Side Infrared Hemispherical Emissivity", - " 0.84, !- Back Side Infrared Hemispherical Emissivity", - " 0.9; !- Conductivity {W/m-K}", - - " Construction,", - " EXTWALL80, !- Name", - " A1 - 1 IN STUCCO, !- Outside Layer", - " C4 - 4 IN COMMON BRICK, !- Layer 2", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", - - " Construction,", - " PARTITION06, !- Name", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer", - " C6 - 8 IN CLAY TILE, !- Layer 2", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", - - " Construction,", - " FLOOR SLAB 8 IN, !- Name", - " C10 - 8 IN HW CONCRETE; !- Outside Layer", - - " Construction,", - " ROOF34, !- Name", - " E2 - 1 / 2 IN SLAG OR STONE, !- Outside Layer", - " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Layer 2", - " B5 - 1 IN DENSE INSULATION, !- Layer 3", - " C12 - 2 IN HW CONCRETE; !- Layer 4", - - " Construction,", - " WIN-CON-LIGHT, !- Name", - " WIN-LAY-GLASS-LIGHT; !- Outside Layer", - - " ScheduleTypeLimits,", - " Any Number; !- Name", - - " ScheduleTypeLimits,", - " Fraction, !- Name", - " 0.0, !- Lower Limit Value", - " 1.0, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - " ScheduleTypeLimits,", - " Temperature, !- Name", - " -60, !- Lower Limit Value", - " 200, !- Upper Limit Value", - " CONTINUOUS, !- Numeric Type", - " Temperature; !- Unit Type", - - " ScheduleTypeLimits,", - " Control Type, !- Name", - " 0, !- Lower Limit Value", - " 4, !- Upper Limit Value", - " DISCRETE; !- Numeric Type", - - " ScheduleTypeLimits,", - " On/Off, !- Name", - " 0, !- Lower Limit Value", - " 1, !- Upper Limit Value", - " DISCRETE; !- Numeric Type", - - " Schedule:Compact,", - " Activity Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Alldays, !- Field 2", - " Until: 24:00,131.80; !- Field 3", - - " Schedule:Compact,", - " Work Eff Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Alldays, !- Field 2", - " Until: 24:00,0.00; !- Field 3", - - " Schedule:Compact,", - " Clothing Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Alldays, !- Field 2", - " Until: 24:00,1.00; !- Field 3", - - " Schedule:Compact,", - " Air Velo Sch, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Alldays, !- Field 2", - " Until: 24:00,0.137; !- Field 3", - - " Schedule:Compact,", - " Office Occupancy, !- Name", - " ANY NUMBER, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Weekdays, !- Field 2", - " Until: 6:00,0.00, !- Field 3", - " Until: 7:00,0.10, !- Field 5", - " Until: 8:00,0.50, !- Field 7", - " Until: 12:00,1.00, !- Field 9", - " Until: 13:00,0.50, !- Field 11", - " Until: 16:00,1.00, !- Field 13", - " Until: 17:00,0.50, !- Field 15", - " Until: 18:00,0.10, !- Field 17", - " Until: 24:00,0.00, !- Field 19", - " For: Weekends Holidays CustomDay1 CustomDay2, !- Field 21", - " Until: 24:00,0.00, !- Field 22", - " For: SummerDesignDay, !- Field 24", - " Until: 24:00,1.00, !- Field 25", - " For: WinterDesignDay, !- Field 27", - " Until: 24:00,5.00E-002; !- Field 28", - - " Schedule:Compact,", - " Intermittent, !- Name", - " ANY NUMBER, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Weekdays, !- Field 2", - " Until: 8:00,0.00, !- Field 3", - " Until: 18:00,1.00, !- Field 5", - " Until: 24:00,0.00, !- Field 7", - " For: Weekends Holidays CustomDay1 CustomDay2, !- Field 9", - " Until: 24:00,0.00, !- Field 10", - " For: SummerDesignDay, !- Field 12", - " Until: 24:00,1.00, !- Field 13", - " For: WinterDesignDay, !- Field 15", - " Until: 24:00,0.15; !- Field 16", - - " Schedule:Compact,", - " Office Lighting, !- Name", - " ANY NUMBER, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Weekdays, !- Field 2", - " Until: 6:00,5.00E-002, !- Field 3", - " Until: 7:00,0.20, !- Field 5", - " Until: 17:00,1.00, !- Field 7", - " Until: 18:00,0.50, !- Field 9", - " Until: 24:00,5.00E-002, !- Field 11", - " For: Weekends Holidays CustomDay1 CustomDay2, !- Field 13", - " Until: 24:00,5.00E-002, !- Field 14", - " For: SummerDesignDay, !- Field 16", - " Until: 24:00,1.00, !- Field 17", - " For: WinterDesignDay, !- Field 19", - " Until: 24:00,0.15; !- Field 20", - - " Schedule:Compact,", - " ON, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Alldays, !- Field 2", - " Until: 24:00,1.00; !- Field 3", - - " Schedule:Compact,", - " HW LOOP TEMP SCHEDULE, !- Name", - " TEMPERATURE, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Alldays, !- Field 2", - " Until: 24:00,82.00; !- Field 3", - - " Schedule:Compact,", - " FANANDCOILAVAILSCHED, !- Name", - " FRACTION, !- Schedule Type Limits Name", - " Through: 3/31, !- Field 1", - " For: Alldays, !- Field 2", - " Until: 24:00,1.00, !- Field 3", - " Through: 9/30, !- Field 5", - " For: Weekdays, !- Field 6", - " Until: 7:00,0.00, !- Field 7", - " Until: 17:00,1.00, !- Field 9", - " Until: 24:00,0.00, !- Field 11", - " For: Weekends Holidays CustomDay1 CustomDay2, !- Field 13", - " Until: 24:00,0.00, !- Field 14", - " For: SummerDesignDay WinterDesignDay, !- Field 16", - " Until: 24:00,1.00, !- Field 17", - " Through: 12/31, !- Field 19", - " For: Alldays, !- Field 20", - " Until: 24:00,1.00; !- Field 21", - - " Schedule:Compact,", - " HEATING SETPOINTS, !- Name", - " TEMPERATURE, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Weekdays Weekends Holidays CustomDay1 CustomDay2, !- Field 2", - " Until: 7:00,15.00, !- Field 3", - " Until: 17:00,20.00, !- Field 5", - " Until: 24:00,15.00, !- Field 7", - " For: SummerDesignDay, !- Field 9", - " Until: 24:00,15.00, !- Field 10", - " For: WinterDesignDay, !- Field 12", - " Until: 24:00,20.00; !- Field 13", - - " Schedule:Compact,", - " COOLING SETPOINTS, !- Name", - " TEMPERATURE, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Weekdays Weekends Holidays CustomDay1 CustomDay2, !- Field 2", - " Until: 7:00,30.00, !- Field 3", - " Until: 17:00,24.00, !- Field 5", - " Until: 24:00,30.00, !- Field 7", - " For: SummerDesignDay, !- Field 9", - " Until: 24:00,24.00, !- Field 10", - " For: WinterDesignDay, !- Field 12", - " Until: 24:00,50.00; !- Field 13", - - " Schedule:Compact,", - " ZONE CONTROL TYPE SCHED, !- Name", - " CONTROL TYPE, !- Schedule Type Limits Name", - " Through: 3/31, !- Field 1", - " For: Alldays, !- Field 2", - " Until: 24:00,1, !- Field 3", - " Through: 9/30, !- Field 5", - " For: Alldays, !- Field 6", - " Until: 24:00,2, !- Field 7", - " Through: 12/31, !- Field 9", - " For: Alldays, !- Field 10", - " Until: 24:00,1; !- Field 11", - - " Schedule:Compact,", - " UNITHEATAVAILABILITY, !- Name", - " ANY NUMBER, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Alldays, !- Field 2", - " Until: 24:00,1.00; !- Field 3", - - " Site:GroundTemperature:BuildingSurface,20.03,20.03,20.13,20.30,20.43,20.52,20.62,20.77,20.78,20.55,20.44,20.20;", - - " Zone,", - " EAST ZONE, !- Name", - " 0.0000000E+00, !- Direction of Relative North {deg}", - " 0.0000000E+00, !- X Origin {m}", - " 0.0000000E+00, !- Y Origin {m}", - " 0.0000000E+00, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " People,", - " EAST ZONE, !- Name", - " EAST ZONE, !- Zone or ZoneList Name", - " Office Occupancy, !- Number of People Schedule Name", - " people, !- Number of People Calculation Method", - " 3.000000, !- Number of People", - " , !- People per Zone Floor Area {person/m2}", - " , !- Zone Floor Area per Person {m2/person}", - " 0.3000000, !- Fraction Radiant", - " , !- Sensible Heat Fraction", - " Activity Sch, !- Activity Level Schedule Name", - " 3.82E-8, !- Carbon Dioxide Generation Rate {m3/s-W}", - " , !- Enable ASHRAE 55 Comfort Warnings", - " zoneaveraged, !- Mean Radiant Temperature Calculation Type", - " , !- Surface Name/Angle Factor List Name", - " Work Eff Sch, !- Work Efficiency Schedule Name", - " ClothingInsulationSchedule, !- Clothing Insulation Calculation Method", - " , !- Clothing Insulation Calculation Method Schedule Name", - " Clothing Sch, !- Clothing Insulation Schedule Name", - " Air Velo Sch, !- Air Velocity Schedule Name", - " FANGER; !- Thermal Comfort Model 1 Type", - - " Lights,", - " EAST ZONE Lights 1, !- Name", - " EAST ZONE, !- Zone or ZoneList Name", - " Office Lighting, !- Schedule Name", - " LightingLevel, !- Design Level Calculation Method", - " 1464.375, !- Lighting Level {W}", - " , !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.0000000E+00, !- Return Air Fraction", - " 0.2000000, !- Fraction Radiant", - " 0.2000000, !- Fraction Visible", - " 0.0000000E+00, !- Fraction Replaceable", - " GeneralLights; !- End-Use Subcategory", - - " ElectricEquipment,", - " EAST ZONE ElecEq 1, !- Name", - " EAST ZONE, !- Zone or ZoneList Name", - " Intermittent, !- Schedule Name", - " EquipmentLevel, !- Design Level Calculation Method", - " 1464.375, !- Design Level {W}", - " , !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.0000000E+00, !- Fraction Latent", - " 0.3000000, !- Fraction Radiant", - " 0.0000000E+00; !- Fraction Lost", - - " GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " CounterClockWise, !- Vertex Entry Direction", - " World; !- Coordinate System", - - " BuildingSurface:Detailed,", - " Zn002:Wall001, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " EAST ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 12.19200,6.096000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", - " 9.144000,6.096000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", - " 9.144000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn002:Wall002, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " EAST ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,0.0000000E+00,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,0.0000000E+00,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn002:Wall003, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " EAST ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 12.19200,0.0000000E+00,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 12.19200,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,6.096000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn002:Wall004, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " EAST ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,0.0000000E+00,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn002:Wall005, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " EAST ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 9.144000,6.096000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,6.096000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn002:Flr001, !- Name", - " Floor, !- Surface Type", - " FLOOR SLAB 8 IN, !- Construction Name", - " EAST ZONE, !- Zone Name", - " Ground, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,6.096000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,0.0000000E+00,0.0000000E+00; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn002:Roof001, !- Name", - " Roof, !- Surface Type", - " ROOF34, !- Construction Name", - " EAST ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.0000000E+00, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,0.0000000E+00,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,0.0000000E+00,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " Sizing:Parameters,", - " 1.5, !- Heating Sizing Factor", - " 1.5, !- Cooling Sizing Factor", - " ; !- Timesteps in Averaging Window", - - " ZoneInfiltration:DesignFlowRate,", - " EAST ZONE Infiltration, !- Name", - " EAST ZONE, !- Zone or ZoneList Name", - " UNITHEATAVAILABILITY, !- Schedule Name", - " Flow/Zone, !- Design Flow Rate Calculation Method", - " 0.00275772902001411, !- Design Flow Rate {m3/s}", - " , !- Flow per Zone Floor Area {m3/s-m2}", - " , !- Flow per Exterior Surface Area {m3/s-m2}", - " , !- Air Changes per Hour {1/hr}", - " , !- Constant Term Coefficient", - " , !- Temperature Term Coefficient", - " 0.224051539, !- Velocity Term Coefficient", - " ; !- Velocity Squared Term Coefficient", - - " Sizing:Zone,", - " EAST ZONE, !- Zone or ZoneList Name", - " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", - " 12.78, !- Zone Cooling Design Supply Air Temperature {C}", - " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", - " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", - " 32.22, !- Zone Heating Design Supply Air Temperature {C}", - " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", - " 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " 0.009, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", - " SZ DSOA EAST ZONE, !- Design Specification Outdoor Air Object Name", - " , !- Zone Heating Sizing Factor", - " , !- Zone Cooling Sizing Factor", - " DesignDay, !- Cooling Design Air Flow Method", - " 0, !- Cooling Design Air Flow Rate {m3/s}", - " 0.000762, !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", - " 0, !- Cooling Minimum Air Flow {m3/s}", - " 0, !- Cooling Minimum Air Flow Fraction", - " DesignDay, !- Heating Design Air Flow Method", - " 0, !- Heating Design Air Flow Rate {m3/s}", - " 0.002032, !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", - " 0.1415762, !- Heating Maximum Air Flow {m3/s}", - " 0.3, !- Heating Maximum Air Flow Fraction", - " SZ DSOA EAST ZONE Design Spec Zone Air Dist; !- Design Specification Zone Air Distribution Object Name", - - " DesignSpecification:ZoneAirDistribution,", - " SZ DSOA EAST ZONE Design Spec Zone Air Dist, !- Name", - " 1, !- Zone Air Distribution Effectiveness in Cooling Mode {dimensionless}", - " 1; !- Zone Air Distribution Effectiveness in Heating Mode {dimensionless}", - - " DesignSpecification:OutdoorAir,", - " SZ DSOA EAST ZONE, !- Name", - " Sum, !- Outdoor Air Method", - " 0.00780950959206505, !- Outdoor Air Flow per Person {m3/s-person}", - " 0.012032, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}", - " 0, !- Outdoor Air Flow per Zone {m3/s}", - " 0; !- Outdoor Air Flow Air Changes per Hour {1/hr}", - - " Sizing:Plant,", - " Hot Water Loop, !- Plant or Condenser Loop Name", - " Heating, !- Loop Type", - " 82.2222222222222, !- Design Loop Exit Temperature {C}", - " 22.2222222222222; !- Loop Design Temperature Difference {deltaC}", - - " PlantLoop,", - " Hot Water Loop, !- Name", - " Water, !- Fluid Type", - " , !- User Defined Fluid Type", - " Hot Loop Operation, !- Plant Equipment Operation Scheme Name", - " HW Supply Outlet Node, !- Loop Temperature Setpoint Node Name", - " 100, !- Maximum Loop Temperature {C}", - " 10, !- Minimum Loop Temperature {C}", - " Autosize, !- Maximum Loop Flow Rate {m3/s}", - " 0.0, !- Minimum Loop Flow Rate {m3/s}", - " autocalculate, !- Plant Loop Volume {m3}", - " HW Supply Inlet Node, !- Plant Side Inlet Node Name", - " HW Supply Outlet Node, !- Plant Side Outlet Node Name", - " Heating Supply Side Branches, !- Plant Side Branch List Name", - " Heating Supply Side Connectors, !- Plant Side Connector List Name", - " HW Demand Inlet Node, !- Demand Side Inlet Node Name", - " HW Demand Outlet Node, !- Demand Side Outlet Node Name", - " Heating Demand Side Branches, !- Demand Side Branch List Name", - " Heating Demand Side Connectors, !- Demand Side Connector List Name", - " Optimal, !- Load Distribution Scheme", - " , !- Availability Manager List Name", - " , !- Plant Loop Demand Calculation Scheme", - " , !- Common Pipe Simulation", - " , !- Pressure Simulation Type", - " 2.0; !- Loop Circulation Time {minutes}", - - " SetpointManager:Scheduled,", - " Hot Water Loop Setpoint Manager, !- Name", - " Temperature, !- Control Variable", - " HW Loop Temp Schedule, !- Schedule Name", - " Hot Water Loop Setpoint Node List; !- Setpoint Node or NodeList Name", - - " NodeList,", - " Hot Water Loop Setpoint Node List, !- Name", - " HW Supply Outlet Node; !- Node 1 Name", - - " BranchList,", - " Heating Supply Side Branches, !- Name", - " Heating Supply Inlet Branch, !- Branch 1 Name", - " Heating Purchased Hot Water Branch, !- Branch 2 Name", - " Heating Supply Bypass Branch, !- Branch 3 Name", - " Heating Supply Outlet Branch; !- Branch 4 Name", - - " ConnectorList,", - " Heating Supply Side Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " Heating Supply Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " Heating Supply Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " Heating Supply Splitter, !- Name", - " Heating Supply Inlet Branch, !- Inlet Branch Name", - " Heating Purchased Hot Water Branch, !- Outlet Branch 1 Name", - " Heating Supply Bypass Branch; !- Outlet Branch 2 Name", - - " Connector:Mixer,", - " Heating Supply Mixer, !- Name", - " Heating Supply Outlet Branch, !- Outlet Branch Name", - " Heating Purchased Hot Water Branch, !- Inlet Branch 1 Name", - " Heating Supply Bypass Branch; !- Inlet Branch 2 Name", - - " Branch,", - " Heating Supply Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pump:VariableSpeed, !- Component 1 Object Type", - " HW Circ Pump, !- Component 1 Name", - " HW Supply Inlet Node, !- Component 1 Inlet Node Name", - " HW Pump Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " Heating Purchased Hot Water Branch, !- Name", - " , !- Pressure Drop Curve Name", - " DistrictHeating, !- Component 1 Object Type", - " Purchased Heating, !- Component 1 Name", - " Purchased Heat Inlet Node, !- Component 1 Inlet Node Name", - " Purchased Heat Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " Heating Supply Bypass Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " Heating Supply Side Bypass, !- Component 1 Name", - " Heating Supply Bypass Inlet Node, !- Component 1 Inlet Node Name", - " Heating Supply Bypass Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " Heating Supply Side Bypass, !- Name", - " Heating Supply Bypass Inlet Node, !- Inlet Node Name", - " Heating Supply Bypass Outlet Node; !- Outlet Node Name", - - " Branch,", - " Heating Supply Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " Heating Supply Outlet, !- Component 1 Name", - " Heating Supply Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", - " HW Supply Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " Heating Supply Outlet, !- Name", - " Heating Supply Exit Pipe Inlet Node, !- Inlet Node Name", - " HW Supply Outlet Node; !- Outlet Node Name", - - " Pump:VariableSpeed,", - " HW Circ Pump, !- Name", - " HW Supply Inlet Node, !- Inlet Node Name", - " HW Pump Outlet Node, !- Outlet Node Name", - " autosize, !- Rated Flow Rate {m3/s}", - " 179352, !- Rated Pump Head {Pa}", - " autosize, !- Rated Power Consumption {W}", - " 0.9, !- Motor Efficiency", - " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", - " 0, !- Coefficient 1 of the Part Load Performance Curve", - " 1, !- Coefficient 2 of the Part Load Performance Curve", - " 0, !- Coefficient 3 of the Part Load Performance Curve", - " 0, !- Coefficient 4 of the Part Load Performance Curve", - " 0, !- Minimum Flow Rate {m3/s}", - " INTERMITTENT; !- Pump Control Type", - - " BranchList,", - " Heating Demand Side Branches, !- Name", - " ZonesHWInletBranch, !- Branch 1 Name", - " Zone2HWBranch, !- Branch 3 Name", - " ZonesHWBypassBranch, !- Branch 5 Name", - " ZonesHWOutletBranch; !- Branch 6 Name", - - " ConnectorList,", - " Heating Demand Side Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " Zones HW Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " Zones HW Mixer; !- Connector 2 Name", - - " Connector:Splitter,", - " Zones HW Splitter, !- Name", - " ZonesHWInletBranch, !- Inlet Branch Name", - " Zone2HWBranch, !- Outlet Branch 2 Name", - " ZonesHWBypassBranch; !- Outlet Branch 4 Name", - - " Connector:Mixer,", - " Zones HW Mixer, !- Name", - " ZonesHWOutletBranch, !- Outlet Branch Name", - " Zone2HWBranch, !- Inlet Branch 2 Name", - " ZonesHWBypassBranch; !- Inlet Branch 4 Name", - - " Branch,", - " ZonesHWInletBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " ZonesHWInletPipe, !- Component 1 Name", - " HW Demand Inlet Node, !- Component 1 Inlet Node Name", - " HW Demand Entrance Pipe Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " ZonesHWInletPipe, !- Name", - " HW Demand Inlet Node, !- Inlet Node Name", - " HW Demand Entrance Pipe Outlet Node; !- Outlet Node Name", - - " Branch,", - " ZonesHWOutletBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " ZonesHWOutletPipe, !- Component 1 Name", - " HW Demand Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", - " HW Demand Outlet Node; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " ZonesHWOutletPipe, !- Name", - " HW Demand Exit Pipe Inlet Node, !- Inlet Node Name", - " HW Demand Outlet Node; !- Outlet Node Name", - - " Branch,", - " Zone2HWBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Coil:Heating:Water, !- Component 1 Object Type", - " Zone2UnitHeatHeatingCoil,!- Component 1 Name", - " Zone2UnitHeatHWInletNode,!- Component 1 Inlet Node Name", - " Zone2UnitHeatHWOutletNode; !- Component 1 Outlet Node Name", - - " Branch,", - " ZonesHWBypassBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " ZonesHWBypassPipe, !- Component 1 Name", - " ZonesHWBypassInletNode, !- Component 1 Inlet Node Name", - " ZonesHWBypassOutletNode; !- Component 1 Outlet Node Name", - - " Pipe:Adiabatic,", - " ZonesHWBypassPipe, !- Name", - " ZonesHWBypassInletNode, !- Inlet Node Name", - " ZonesHWBypassOutletNode; !- Outlet Node Name", - - " PlantEquipmentOperationSchemes,", - " Hot Loop Operation, !- Name", - " PlantEquipmentOperation:HeatingLoad, !- Control Scheme 1 Object Type", - " Purchased Heating Only, !- Control Scheme 1 Name", - " ON; !- Control Scheme 1 Schedule Name", - - " PlantEquipmentOperation:HeatingLoad,", - " Purchased Heating Only, !- Name", - " 0, !- Load Range 1 Lower Limit {W}", - " 1000000, !- Load Range 1 Upper Limit {W}", - " heating plant; !- Range 1 Equipment List Name", - - " PlantEquipmentList,", - " heating plant, !- Name", - " DistrictHeating, !- Equipment 1 Object Type", - " Purchased Heating; !- Equipment 1 Name", - - " DistrictHeating,", - " Purchased Heating, !- Name", - " Purchased Heat Inlet Node, !- Hot Water Inlet Node Name", - " Purchased Heat Outlet Node, !- Hot Water Outlet Node Name", - " 1000000; !- Nominal Capacity {W}", - - " ZoneControl:Thermostat,", - " Zone 2 Thermostat, !- Name", - " EAST ZONE, !- Zone or ZoneList Name", - " Zone Control Type Sched, !- Control Type Schedule Name", - " ThermostatSetpoint:SingleHeating, !- Control 1 Object Type", - " Heating Setpoint with SB,!- Control 1 Name", - " ThermostatSetpoint:SingleCooling, !- Control 2 Object Type", - " Cooling Setpoint with SB;!- Control 2 Name", - - " ThermostatSetpoint:SingleHeating,", - " Heating Setpoint with SB,!- Name", - " Heating Setpoints; !- Setpoint Temperature Schedule Name", - - " ThermostatSetpoint:SingleCooling,", - " Cooling Setpoint with SB,!- Name", - " Cooling Setpoints; !- Setpoint Temperature Schedule Name", - - " ZoneHVAC:EquipmentConnections,", - " EAST ZONE, !- Zone Name", - " Zone2Equipment, !- Zone Conditioning Equipment List Name", - " Zone2Inlets, !- Zone Air Inlet Node or NodeList Name", - " Zone2Exhausts, !- Zone Air Exhaust Node or NodeList Name", - " Zone 2 Node, !- Zone Air Node Name", - " Zone 2 Outlet Node; !- Zone Return Air Node Name", - - " ZoneHVAC:EquipmentList,", - " Zone2Equipment, !- Name", - " SequentialLoad, !- Load Distribution Scheme", - " ZoneHVAC:UnitHeater, !- Zone Equipment 1 Object Type", - " Zone2UnitHeat, !- Zone Equipment 1 Name", - " 1, !- Zone Equipment 1 Cooling Sequence", - " 1; !- Zone Equipment 1 Heating or No-Load Sequence", - - " NodeList,", - " Zone2Inlets, !- Name", - " Zone2UnitHeatAirOutletNode; !- Node 1 Name", - - " NodeList,", - " Zone2Exhausts, !- Name", - " Zone2UnitHeatAirInletNode; !- Node 1 Name", - - " ZoneHVAC:UnitHeater,", - " Zone2UnitHeat, !- Name", - " UnitHeatAvailability, !- Availability Schedule Name", - " Zone2UnitHeatAirInletNode, !- Air Inlet Node Name", - " Zone2UnitHeatAirOutletNode, !- Air Outlet Node Name", - " Fan:ConstantVolume, !- Supply Air Fan Object Type", - " Zone2UnitHeatFan, !- Supply Air Fan Name", - " autosize, !- Maximum Supply Air Flow Rate {m3/s}", - " Coil:Heating:Water, !- Heating Coil Object Type", - " Zone2UnitHeatHeatingCoil,!- Heating Coil Name", - " , !- Supply Air Fan Operating Mode Schedule Name", - " No, !- Supply Air Fan Operation During No Heating", - " autosize, !- Maximum Hot Water or Steam Flow Rate {m3/s}", - " 0, !- Minimum Hot Water or Steam Flow Rate {m3/s}", - " 0.001; !- Heating Convergence Tolerance", - - " Fan:ConstantVolume,", - " Zone2UnitHeatFan, !- Name", - " UnitHeatAvailability, !- Availability Schedule Name", - " 0.5, !- Fan Total Efficiency", - " 75.0, !- Pressure Rise {Pa}", - " autosize, !- Maximum Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1.0, !- Motor In Airstream Fraction", - " Zone2UnitHeatAirInletNode, !- Air Inlet Node Name", - " Zone2UnitHeatFanOutletNode; !- Air Outlet Node Name", - - " Coil:Heating:Water,", - " Zone2UnitHeatHeatingCoil,!- Name", - " FanAndCoilAvailSched, !- Availability Schedule Name", - " autosize, !- U-Factor Times Area Value {W/K}", - " autosize, !- Maximum Water Flow Rate {m3/s}", - " Zone2UnitHeatHWInletNode,!- Water Inlet Node Name", - " Zone2UnitHeatHWOutletNode, !- Water Outlet Node Name", - " Zone2UnitHeatFanOutletNode, !- Air Inlet Node Name", - " Zone2UnitHeatAirOutletNode, !- Air Outlet Node Name", - " UFactorTimesAreaAndDesignWaterFlowRate, !- Performance Input Method", - " autosize, !- Rated Capacity {W}", - " 82.2, !- Rated Inlet Water Temperature {C}", - " 16.6, !- Rated Inlet Air Temperature {C}", - " 71.1, !- Rated Outlet Water Temperature {C}", - " 32.2, !- Rated Outlet Air Temperature {C}", - " ; !- Rated Ratio for Air and Water Convection", - } ); - ASSERT_TRUE( process_idf( idf_objects ) ); - - NumOfTimeStepInHour = 4; // must initialize this to get schedules initialized - MinutesPerTimeStep = 15; // must initialize this to get schedules initialized - ProcessScheduleInput(); // read schedule data - - ErrorsFound = false; - HeatBalanceManager::GetProjectControlData( ErrorsFound ); // read project control data - EXPECT_FALSE( ErrorsFound ); - - OutputProcessor::TimeValue.allocate( 2 ); - DataGlobals::DDOnlySimulation = true; - - GetProjectData(); - OutputReportPredefined::SetPredefinedTables(); - SetPreConstructionInputParameters(); //establish array bounds for constructions early - - BeginSimFlag = true; - BeginEnvrnFlag = true; - ZoneSizingCalc = true; - createFacilityElectricPowerServiceObject(); - SizingManager::ManageSizing(); - - EXPECT_FALSE( ErrorsFound ); - EXPECT_EQ( 1, NumOfUnitHeats ); - EXPECT_EQ( "ZONE2UNITHEAT", UnitHeat( 1 ).Name ); - - ErrorsFound = false; - ZoneEqUnitHeater = true; - DataSizing::CurZoneEqNum = 1; - - InitUnitHeater( UnitHeatNum, ZoneNum, FirstHVACIteration ); - InitWaterCoil( CoilNum, FirstHVACIteration ); // init hot water heating coil + bool ErrorsFound(false); // function returns true on error + bool FirstHVACIteration(true); // TRUE if 1st HVAC simulation of system timestep + int UnitHeatNum(1); // unit heat index + int ZoneNum(1); // zone index + int CoilNum(1); // heating coil index + int PltSizHeatNum(0); // hot water plant loop index + Real64 HWMaxVolFlowRate(0.0); // hot water coil water volume flow rate, m3/s + Real64 CpHW(0.0); // hot water specific heat, J/kg K + Real64 HWPlantDeltaTDesign(0.0); // hot water plant loop design temp difference, deltaC + Real64 HWCoilDesignCapacity(0.0); // hot water heating coil design capacity (W) + Real64 HWDensity(0.0); // hot water density, kg/m3 + + std::string const idf_objects = delimited_string({ + " Version,8.4;", + + " Timestep,4;", + + " Building,", + " NONE, !- Name", + " 0.0000000E+00, !- North Axis {deg}", + " Suburbs, !- Terrain", + " 3.9999999E-02, !- Loads Convergence Tolerance Value", + " 0.4000000, !- Temperature Convergence Tolerance Value {deltaC}", + " MinimalShadowing, !- Solar Distribution", + " 25, !- Maximum Number of Warmup Days", + " 6; !- Minimum Number of Warmup Days", + + " HeatBalanceAlgorithm,ConductionTransferFunction;", + + " SurfaceConvectionAlgorithm:Inside,TARP;", + + " SurfaceConvectionAlgorithm:Outside,DOE-2;", + + " RunPeriod,", + " , !- Name", + " 1, !- Begin Month", + " 14, !- Begin Day of Month", + " , !- Begin Year", + " 1, !- End Month", + " 14, !- End Day of Month", + " , !- End Year", + " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " Yes; !- Use Weather File Snow Indicators", + + " Site:Location,", + " CHICAGO_IL_USA TMY2-94846, !- Name", + " 41.78, !- Latitude {deg}", + " -87.75, !- Longitude {deg}", + " -6.00, !- Time Zone {hr}", + " 190.00; !- Elevation {m}", + + " SimulationControl,", + " Yes, !- Do Zone Sizing Calculation", + " No, !- Do System Sizing Calculation", + " No, !- Do Plant Sizing Calculation", + " No, !- Run Simulation for Sizing Periods", + " No; !- Run Simulation for Weather File Run Periods", + + " SizingPeriod:DesignDay,", + " CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, !- Name", + " 1, !- Month", + " 21, !- Day of Month", + " WinterDesignDay, !- Day Type", + " -17.3, !- Maximum Dry-Bulb Temperature {C}", + " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 4.9, !- Wind Speed {m/s}", + " 270, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 1.0; !- Sky Clearness", + + " SizingPeriod:DesignDay,", + " CHICAGO_IL_USA Annual Cooling 1% Design Conditions DB/MCWB, !- Name", + " 7, !- Month", + " 21, !- Day of Month", + " SummerDesignDay, !- Day Type", + " 31.5, !- Maximum Dry-Bulb Temperature {C}", + " 10.7, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " 23.0, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 5.3, !- Wind Speed {m/s}", + " 230, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 1.0; !- Sky Clearness", + + " Material,", + " A1 - 1 IN STUCCO, !- Name", + " Smooth, !- Roughness", + " 2.5389841E-02, !- Thickness {m}", + " 0.6918309, !- Conductivity {W/m-K}", + " 1858.142, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.9200000, !- Solar Absorptance", + " 0.9200000; !- Visible Absorptance", + + " Material,", + " C4 - 4 IN COMMON BRICK, !- Name", + " Rough, !- Roughness", + " 0.1014984, !- Thickness {m}", + " 0.7264224, !- Conductivity {W/m-K}", + " 1922.216, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7600000, !- Solar Absorptance", + " 0.7600000; !- Visible Absorptance", + + " Material,", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Name", + " Smooth, !- Roughness", + " 1.9050000E-02, !- Thickness {m}", + " 0.7264224, !- Conductivity {W/m-K}", + " 1601.846, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.9200000, !- Solar Absorptance", + " 0.9200000; !- Visible Absorptance", + + " Material,", + " C6 - 8 IN CLAY TILE, !- Name", + " Smooth, !- Roughness", + " 0.2033016, !- Thickness {m}", + " 0.5707605, !- Conductivity {W/m-K}", + " 1121.292, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.8200000, !- Solar Absorptance", + " 0.8200000; !- Visible Absorptance", + + " Material,", + " C10 - 8 IN HW CONCRETE, !- Name", + " MediumRough, !- Roughness", + " 0.2033016, !- Thickness {m}", + " 1.729577, !- Conductivity {W/m-K}", + " 2242.585, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + + " Material,", + " E2 - 1 / 2 IN SLAG OR STONE, !- Name", + " Rough, !- Roughness", + " 1.2710161E-02, !- Thickness {m}", + " 1.435549, !- Conductivity {W/m-K}", + " 881.0155, !- Density {kg/m3}", + " 1673.600, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.5500000, !- Solar Absorptance", + " 0.5500000; !- Visible Absorptance", + + " Material,", + " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Name", + " Rough, !- Roughness", + " 9.5402403E-03, !- Thickness {m}", + " 0.1902535, !- Conductivity {W/m-K}", + " 1121.292, !- Density {kg/m3}", + " 1673.600, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " B5 - 1 IN DENSE INSULATION, !- Name", + " VeryRough, !- Roughness", + " 2.5389841E-02, !- Thickness {m}", + " 4.3239430E-02, !- Conductivity {W/m-K}", + " 91.30524, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.5000000, !- Solar Absorptance", + " 0.5000000; !- Visible Absorptance", + + " Material,", + " C12 - 2 IN HW CONCRETE, !- Name", + " MediumRough, !- Roughness", + " 5.0901599E-02, !- Thickness {m}", + " 1.729577, !- Conductivity {W/m-K}", + " 2242.585, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + + " WindowMaterial:Glazing,", + " WIN-LAY-GLASS-LIGHT, !- Name", + " SpectralAverage, !- Optical Data Type", + " , !- Window Glass Spectral Data Set Name", + " 0.003, !- Thickness {m}", + " 0.90, !- Solar Transmittance at Normal Incidence", + " 0.031, !- Front Side Solar Reflectance at Normal Incidence", + " 0.031, !- Back Side Solar Reflectance at Normal Incidence", + " 0.90, !- Visible Transmittance at Normal Incidence", + " 0.05, !- Front Side Visible Reflectance at Normal Incidence", + " 0.05, !- Back Side Visible Reflectance at Normal Incidence", + " 0.0, !- Infrared Transmittance at Normal Incidence", + " 0.84, !- Front Side Infrared Hemispherical Emissivity", + " 0.84, !- Back Side Infrared Hemispherical Emissivity", + " 0.9; !- Conductivity {W/m-K}", + + " Construction,", + " EXTWALL80, !- Name", + " A1 - 1 IN STUCCO, !- Outside Layer", + " C4 - 4 IN COMMON BRICK, !- Layer 2", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", + + " Construction,", + " PARTITION06, !- Name", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer", + " C6 - 8 IN CLAY TILE, !- Layer 2", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", + + " Construction,", + " FLOOR SLAB 8 IN, !- Name", + " C10 - 8 IN HW CONCRETE; !- Outside Layer", + + " Construction,", + " ROOF34, !- Name", + " E2 - 1 / 2 IN SLAG OR STONE, !- Outside Layer", + " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Layer 2", + " B5 - 1 IN DENSE INSULATION, !- Layer 3", + " C12 - 2 IN HW CONCRETE; !- Layer 4", + + " Construction,", + " WIN-CON-LIGHT, !- Name", + " WIN-LAY-GLASS-LIGHT; !- Outside Layer", + + " ScheduleTypeLimits,", + " Any Number; !- Name", + + " ScheduleTypeLimits,", + " Fraction, !- Name", + " 0.0, !- Lower Limit Value", + " 1.0, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + " ScheduleTypeLimits,", + " Temperature, !- Name", + " -60, !- Lower Limit Value", + " 200, !- Upper Limit Value", + " CONTINUOUS, !- Numeric Type", + " Temperature; !- Unit Type", + + " ScheduleTypeLimits,", + " Control Type, !- Name", + " 0, !- Lower Limit Value", + " 4, !- Upper Limit Value", + " DISCRETE; !- Numeric Type", + + " ScheduleTypeLimits,", + " On/Off, !- Name", + " 0, !- Lower Limit Value", + " 1, !- Upper Limit Value", + " DISCRETE; !- Numeric Type", + + " Schedule:Compact,", + " Activity Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Alldays, !- Field 2", + " Until: 24:00,131.80; !- Field 3", + + " Schedule:Compact,", + " Work Eff Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Alldays, !- Field 2", + " Until: 24:00,0.00; !- Field 3", + + " Schedule:Compact,", + " Clothing Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Alldays, !- Field 2", + " Until: 24:00,1.00; !- Field 3", + + " Schedule:Compact,", + " Air Velo Sch, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Alldays, !- Field 2", + " Until: 24:00,0.137; !- Field 3", + + " Schedule:Compact,", + " Office Occupancy, !- Name", + " ANY NUMBER, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Weekdays, !- Field 2", + " Until: 6:00,0.00, !- Field 3", + " Until: 7:00,0.10, !- Field 5", + " Until: 8:00,0.50, !- Field 7", + " Until: 12:00,1.00, !- Field 9", + " Until: 13:00,0.50, !- Field 11", + " Until: 16:00,1.00, !- Field 13", + " Until: 17:00,0.50, !- Field 15", + " Until: 18:00,0.10, !- Field 17", + " Until: 24:00,0.00, !- Field 19", + " For: Weekends Holidays CustomDay1 CustomDay2, !- Field 21", + " Until: 24:00,0.00, !- Field 22", + " For: SummerDesignDay, !- Field 24", + " Until: 24:00,1.00, !- Field 25", + " For: WinterDesignDay, !- Field 27", + " Until: 24:00,5.00E-002; !- Field 28", + + " Schedule:Compact,", + " Intermittent, !- Name", + " ANY NUMBER, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Weekdays, !- Field 2", + " Until: 8:00,0.00, !- Field 3", + " Until: 18:00,1.00, !- Field 5", + " Until: 24:00,0.00, !- Field 7", + " For: Weekends Holidays CustomDay1 CustomDay2, !- Field 9", + " Until: 24:00,0.00, !- Field 10", + " For: SummerDesignDay, !- Field 12", + " Until: 24:00,1.00, !- Field 13", + " For: WinterDesignDay, !- Field 15", + " Until: 24:00,0.15; !- Field 16", + + " Schedule:Compact,", + " Office Lighting, !- Name", + " ANY NUMBER, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Weekdays, !- Field 2", + " Until: 6:00,5.00E-002, !- Field 3", + " Until: 7:00,0.20, !- Field 5", + " Until: 17:00,1.00, !- Field 7", + " Until: 18:00,0.50, !- Field 9", + " Until: 24:00,5.00E-002, !- Field 11", + " For: Weekends Holidays CustomDay1 CustomDay2, !- Field 13", + " Until: 24:00,5.00E-002, !- Field 14", + " For: SummerDesignDay, !- Field 16", + " Until: 24:00,1.00, !- Field 17", + " For: WinterDesignDay, !- Field 19", + " Until: 24:00,0.15; !- Field 20", + + " Schedule:Compact,", + " ON, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Alldays, !- Field 2", + " Until: 24:00,1.00; !- Field 3", + + " Schedule:Compact,", + " HW LOOP TEMP SCHEDULE, !- Name", + " TEMPERATURE, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Alldays, !- Field 2", + " Until: 24:00,82.00; !- Field 3", + + " Schedule:Compact,", + " FANANDCOILAVAILSCHED, !- Name", + " FRACTION, !- Schedule Type Limits Name", + " Through: 3/31, !- Field 1", + " For: Alldays, !- Field 2", + " Until: 24:00,1.00, !- Field 3", + " Through: 9/30, !- Field 5", + " For: Weekdays, !- Field 6", + " Until: 7:00,0.00, !- Field 7", + " Until: 17:00,1.00, !- Field 9", + " Until: 24:00,0.00, !- Field 11", + " For: Weekends Holidays CustomDay1 CustomDay2, !- Field 13", + " Until: 24:00,0.00, !- Field 14", + " For: SummerDesignDay WinterDesignDay, !- Field 16", + " Until: 24:00,1.00, !- Field 17", + " Through: 12/31, !- Field 19", + " For: Alldays, !- Field 20", + " Until: 24:00,1.00; !- Field 21", + + " Schedule:Compact,", + " HEATING SETPOINTS, !- Name", + " TEMPERATURE, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Weekdays Weekends Holidays CustomDay1 CustomDay2, !- Field 2", + " Until: 7:00,15.00, !- Field 3", + " Until: 17:00,20.00, !- Field 5", + " Until: 24:00,15.00, !- Field 7", + " For: SummerDesignDay, !- Field 9", + " Until: 24:00,15.00, !- Field 10", + " For: WinterDesignDay, !- Field 12", + " Until: 24:00,20.00; !- Field 13", + + " Schedule:Compact,", + " COOLING SETPOINTS, !- Name", + " TEMPERATURE, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Weekdays Weekends Holidays CustomDay1 CustomDay2, !- Field 2", + " Until: 7:00,30.00, !- Field 3", + " Until: 17:00,24.00, !- Field 5", + " Until: 24:00,30.00, !- Field 7", + " For: SummerDesignDay, !- Field 9", + " Until: 24:00,24.00, !- Field 10", + " For: WinterDesignDay, !- Field 12", + " Until: 24:00,50.00; !- Field 13", + + " Schedule:Compact,", + " ZONE CONTROL TYPE SCHED, !- Name", + " CONTROL TYPE, !- Schedule Type Limits Name", + " Through: 3/31, !- Field 1", + " For: Alldays, !- Field 2", + " Until: 24:00,1, !- Field 3", + " Through: 9/30, !- Field 5", + " For: Alldays, !- Field 6", + " Until: 24:00,2, !- Field 7", + " Through: 12/31, !- Field 9", + " For: Alldays, !- Field 10", + " Until: 24:00,1; !- Field 11", + + " Schedule:Compact,", + " UNITHEATAVAILABILITY, !- Name", + " ANY NUMBER, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Alldays, !- Field 2", + " Until: 24:00,1.00; !- Field 3", + + " Site:GroundTemperature:BuildingSurface,20.03,20.03,20.13,20.30,20.43,20.52,20.62,20.77,20.78,20.55,20.44,20.20;", + + " Zone,", + " EAST ZONE, !- Name", + " 0.0000000E+00, !- Direction of Relative North {deg}", + " 0.0000000E+00, !- X Origin {m}", + " 0.0000000E+00, !- Y Origin {m}", + " 0.0000000E+00, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " People,", + " EAST ZONE, !- Name", + " EAST ZONE, !- Zone or ZoneList Name", + " Office Occupancy, !- Number of People Schedule Name", + " people, !- Number of People Calculation Method", + " 3.000000, !- Number of People", + " , !- People per Zone Floor Area {person/m2}", + " , !- Zone Floor Area per Person {m2/person}", + " 0.3000000, !- Fraction Radiant", + " , !- Sensible Heat Fraction", + " Activity Sch, !- Activity Level Schedule Name", + " 3.82E-8, !- Carbon Dioxide Generation Rate {m3/s-W}", + " , !- Enable ASHRAE 55 Comfort Warnings", + " zoneaveraged, !- Mean Radiant Temperature Calculation Type", + " , !- Surface Name/Angle Factor List Name", + " Work Eff Sch, !- Work Efficiency Schedule Name", + " ClothingInsulationSchedule, !- Clothing Insulation Calculation Method", + " , !- Clothing Insulation Calculation Method Schedule Name", + " Clothing Sch, !- Clothing Insulation Schedule Name", + " Air Velo Sch, !- Air Velocity Schedule Name", + " FANGER; !- Thermal Comfort Model 1 Type", + + " Lights,", + " EAST ZONE Lights 1, !- Name", + " EAST ZONE, !- Zone or ZoneList Name", + " Office Lighting, !- Schedule Name", + " LightingLevel, !- Design Level Calculation Method", + " 1464.375, !- Lighting Level {W}", + " , !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.0000000E+00, !- Return Air Fraction", + " 0.2000000, !- Fraction Radiant", + " 0.2000000, !- Fraction Visible", + " 0.0000000E+00, !- Fraction Replaceable", + " GeneralLights; !- End-Use Subcategory", + + " ElectricEquipment,", + " EAST ZONE ElecEq 1, !- Name", + " EAST ZONE, !- Zone or ZoneList Name", + " Intermittent, !- Schedule Name", + " EquipmentLevel, !- Design Level Calculation Method", + " 1464.375, !- Design Level {W}", + " , !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.0000000E+00, !- Fraction Latent", + " 0.3000000, !- Fraction Radiant", + " 0.0000000E+00; !- Fraction Lost", + + " GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " CounterClockWise, !- Vertex Entry Direction", + " World; !- Coordinate System", + + " BuildingSurface:Detailed,", + " Zn002:Wall001, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " EAST ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 12.19200,6.096000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", + " 9.144000,6.096000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", + " 9.144000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn002:Wall002, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " EAST ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,0.0000000E+00,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,0.0000000E+00,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn002:Wall003, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " EAST ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 12.19200,0.0000000E+00,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 12.19200,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,6.096000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn002:Wall004, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " EAST ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,0.0000000E+00,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn002:Wall005, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " EAST ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 9.144000,6.096000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,6.096000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn002:Flr001, !- Name", + " Floor, !- Surface Type", + " FLOOR SLAB 8 IN, !- Construction Name", + " EAST ZONE, !- Zone Name", + " Ground, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,0.0000000E+00,0.0000000E+00, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,0.0000000E+00, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,6.096000,0.0000000E+00, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,0.0000000E+00,0.0000000E+00; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn002:Roof001, !- Name", + " Roof, !- Surface Type", + " ROOF34, !- Construction Name", + " EAST ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.0000000E+00, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,0.0000000E+00,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,0.0000000E+00,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " Sizing:Parameters,", + " 1.5, !- Heating Sizing Factor", + " 1.5, !- Cooling Sizing Factor", + " ; !- Timesteps in Averaging Window", + + " ZoneInfiltration:DesignFlowRate,", + " EAST ZONE Infiltration, !- Name", + " EAST ZONE, !- Zone or ZoneList Name", + " UNITHEATAVAILABILITY, !- Schedule Name", + " Flow/Zone, !- Design Flow Rate Calculation Method", + " 0.00275772902001411, !- Design Flow Rate {m3/s}", + " , !- Flow per Zone Floor Area {m3/s-m2}", + " , !- Flow per Exterior Surface Area {m3/s-m2}", + " , !- Air Changes per Hour {1/hr}", + " , !- Constant Term Coefficient", + " , !- Temperature Term Coefficient", + " 0.224051539, !- Velocity Term Coefficient", + " ; !- Velocity Squared Term Coefficient", + + " Sizing:Zone,", + " EAST ZONE, !- Zone or ZoneList Name", + " SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method", + " 12.78, !- Zone Cooling Design Supply Air Temperature {C}", + " , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}", + " SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method", + " 32.22, !- Zone Heating Design Supply Air Temperature {C}", + " , !- Zone Heating Design Supply Air Temperature Difference {deltaC}", + " 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " 0.009, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}", + " SZ DSOA EAST ZONE, !- Design Specification Outdoor Air Object Name", + " , !- Zone Heating Sizing Factor", + " , !- Zone Cooling Sizing Factor", + " DesignDay, !- Cooling Design Air Flow Method", + " 0, !- Cooling Design Air Flow Rate {m3/s}", + " 0.000762, !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}", + " 0, !- Cooling Minimum Air Flow {m3/s}", + " 0, !- Cooling Minimum Air Flow Fraction", + " DesignDay, !- Heating Design Air Flow Method", + " 0, !- Heating Design Air Flow Rate {m3/s}", + " 0.002032, !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}", + " 0.1415762, !- Heating Maximum Air Flow {m3/s}", + " 0.3, !- Heating Maximum Air Flow Fraction", + " SZ DSOA EAST ZONE Design Spec Zone Air Dist; !- Design Specification Zone Air Distribution Object Name", + + " DesignSpecification:ZoneAirDistribution,", + " SZ DSOA EAST ZONE Design Spec Zone Air Dist, !- Name", + " 1, !- Zone Air Distribution Effectiveness in Cooling Mode {dimensionless}", + " 1; !- Zone Air Distribution Effectiveness in Heating Mode {dimensionless}", + + " DesignSpecification:OutdoorAir,", + " SZ DSOA EAST ZONE, !- Name", + " Sum, !- Outdoor Air Method", + " 0.00780950959206505, !- Outdoor Air Flow per Person {m3/s-person}", + " 0.012032, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}", + " 0, !- Outdoor Air Flow per Zone {m3/s}", + " 0; !- Outdoor Air Flow Air Changes per Hour {1/hr}", + + " Sizing:Plant,", + " Hot Water Loop, !- Plant or Condenser Loop Name", + " Heating, !- Loop Type", + " 82.2222222222222, !- Design Loop Exit Temperature {C}", + " 22.2222222222222; !- Loop Design Temperature Difference {deltaC}", + + " PlantLoop,", + " Hot Water Loop, !- Name", + " Water, !- Fluid Type", + " , !- User Defined Fluid Type", + " Hot Loop Operation, !- Plant Equipment Operation Scheme Name", + " HW Supply Outlet Node, !- Loop Temperature Setpoint Node Name", + " 100, !- Maximum Loop Temperature {C}", + " 10, !- Minimum Loop Temperature {C}", + " Autosize, !- Maximum Loop Flow Rate {m3/s}", + " 0.0, !- Minimum Loop Flow Rate {m3/s}", + " autocalculate, !- Plant Loop Volume {m3}", + " HW Supply Inlet Node, !- Plant Side Inlet Node Name", + " HW Supply Outlet Node, !- Plant Side Outlet Node Name", + " Heating Supply Side Branches, !- Plant Side Branch List Name", + " Heating Supply Side Connectors, !- Plant Side Connector List Name", + " HW Demand Inlet Node, !- Demand Side Inlet Node Name", + " HW Demand Outlet Node, !- Demand Side Outlet Node Name", + " Heating Demand Side Branches, !- Demand Side Branch List Name", + " Heating Demand Side Connectors, !- Demand Side Connector List Name", + " Optimal, !- Load Distribution Scheme", + " , !- Availability Manager List Name", + " , !- Plant Loop Demand Calculation Scheme", + " , !- Common Pipe Simulation", + " , !- Pressure Simulation Type", + " 2.0; !- Loop Circulation Time {minutes}", + + " SetpointManager:Scheduled,", + " Hot Water Loop Setpoint Manager, !- Name", + " Temperature, !- Control Variable", + " HW Loop Temp Schedule, !- Schedule Name", + " Hot Water Loop Setpoint Node List; !- Setpoint Node or NodeList Name", + + " NodeList,", + " Hot Water Loop Setpoint Node List, !- Name", + " HW Supply Outlet Node; !- Node 1 Name", + + " BranchList,", + " Heating Supply Side Branches, !- Name", + " Heating Supply Inlet Branch, !- Branch 1 Name", + " Heating Purchased Hot Water Branch, !- Branch 2 Name", + " Heating Supply Bypass Branch, !- Branch 3 Name", + " Heating Supply Outlet Branch; !- Branch 4 Name", + + " ConnectorList,", + " Heating Supply Side Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " Heating Supply Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " Heating Supply Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " Heating Supply Splitter, !- Name", + " Heating Supply Inlet Branch, !- Inlet Branch Name", + " Heating Purchased Hot Water Branch, !- Outlet Branch 1 Name", + " Heating Supply Bypass Branch; !- Outlet Branch 2 Name", + + " Connector:Mixer,", + " Heating Supply Mixer, !- Name", + " Heating Supply Outlet Branch, !- Outlet Branch Name", + " Heating Purchased Hot Water Branch, !- Inlet Branch 1 Name", + " Heating Supply Bypass Branch; !- Inlet Branch 2 Name", + + " Branch,", + " Heating Supply Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pump:VariableSpeed, !- Component 1 Object Type", + " HW Circ Pump, !- Component 1 Name", + " HW Supply Inlet Node, !- Component 1 Inlet Node Name", + " HW Pump Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " Heating Purchased Hot Water Branch, !- Name", + " , !- Pressure Drop Curve Name", + " DistrictHeating, !- Component 1 Object Type", + " Purchased Heating, !- Component 1 Name", + " Purchased Heat Inlet Node, !- Component 1 Inlet Node Name", + " Purchased Heat Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " Heating Supply Bypass Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " Heating Supply Side Bypass, !- Component 1 Name", + " Heating Supply Bypass Inlet Node, !- Component 1 Inlet Node Name", + " Heating Supply Bypass Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " Heating Supply Side Bypass, !- Name", + " Heating Supply Bypass Inlet Node, !- Inlet Node Name", + " Heating Supply Bypass Outlet Node; !- Outlet Node Name", + + " Branch,", + " Heating Supply Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " Heating Supply Outlet, !- Component 1 Name", + " Heating Supply Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", + " HW Supply Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " Heating Supply Outlet, !- Name", + " Heating Supply Exit Pipe Inlet Node, !- Inlet Node Name", + " HW Supply Outlet Node; !- Outlet Node Name", + + " Pump:VariableSpeed,", + " HW Circ Pump, !- Name", + " HW Supply Inlet Node, !- Inlet Node Name", + " HW Pump Outlet Node, !- Outlet Node Name", + " autosize, !- Rated Flow Rate {m3/s}", + " 179352, !- Rated Pump Head {Pa}", + " autosize, !- Rated Power Consumption {W}", + " 0.9, !- Motor Efficiency", + " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", + " 0, !- Coefficient 1 of the Part Load Performance Curve", + " 1, !- Coefficient 2 of the Part Load Performance Curve", + " 0, !- Coefficient 3 of the Part Load Performance Curve", + " 0, !- Coefficient 4 of the Part Load Performance Curve", + " 0, !- Minimum Flow Rate {m3/s}", + " INTERMITTENT; !- Pump Control Type", + + " BranchList,", + " Heating Demand Side Branches, !- Name", + " ZonesHWInletBranch, !- Branch 1 Name", + " Zone2HWBranch, !- Branch 3 Name", + " ZonesHWBypassBranch, !- Branch 5 Name", + " ZonesHWOutletBranch; !- Branch 6 Name", + + " ConnectorList,", + " Heating Demand Side Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " Zones HW Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " Zones HW Mixer; !- Connector 2 Name", + + " Connector:Splitter,", + " Zones HW Splitter, !- Name", + " ZonesHWInletBranch, !- Inlet Branch Name", + " Zone2HWBranch, !- Outlet Branch 2 Name", + " ZonesHWBypassBranch; !- Outlet Branch 4 Name", + + " Connector:Mixer,", + " Zones HW Mixer, !- Name", + " ZonesHWOutletBranch, !- Outlet Branch Name", + " Zone2HWBranch, !- Inlet Branch 2 Name", + " ZonesHWBypassBranch; !- Inlet Branch 4 Name", + + " Branch,", + " ZonesHWInletBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " ZonesHWInletPipe, !- Component 1 Name", + " HW Demand Inlet Node, !- Component 1 Inlet Node Name", + " HW Demand Entrance Pipe Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " ZonesHWInletPipe, !- Name", + " HW Demand Inlet Node, !- Inlet Node Name", + " HW Demand Entrance Pipe Outlet Node; !- Outlet Node Name", + + " Branch,", + " ZonesHWOutletBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " ZonesHWOutletPipe, !- Component 1 Name", + " HW Demand Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", + " HW Demand Outlet Node; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " ZonesHWOutletPipe, !- Name", + " HW Demand Exit Pipe Inlet Node, !- Inlet Node Name", + " HW Demand Outlet Node; !- Outlet Node Name", + + " Branch,", + " Zone2HWBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Coil:Heating:Water, !- Component 1 Object Type", + " Zone2UnitHeatHeatingCoil,!- Component 1 Name", + " Zone2UnitHeatHWInletNode,!- Component 1 Inlet Node Name", + " Zone2UnitHeatHWOutletNode; !- Component 1 Outlet Node Name", + + " Branch,", + " ZonesHWBypassBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " ZonesHWBypassPipe, !- Component 1 Name", + " ZonesHWBypassInletNode, !- Component 1 Inlet Node Name", + " ZonesHWBypassOutletNode; !- Component 1 Outlet Node Name", + + " Pipe:Adiabatic,", + " ZonesHWBypassPipe, !- Name", + " ZonesHWBypassInletNode, !- Inlet Node Name", + " ZonesHWBypassOutletNode; !- Outlet Node Name", + + " PlantEquipmentOperationSchemes,", + " Hot Loop Operation, !- Name", + " PlantEquipmentOperation:HeatingLoad, !- Control Scheme 1 Object Type", + " Purchased Heating Only, !- Control Scheme 1 Name", + " ON; !- Control Scheme 1 Schedule Name", + + " PlantEquipmentOperation:HeatingLoad,", + " Purchased Heating Only, !- Name", + " 0, !- Load Range 1 Lower Limit {W}", + " 1000000, !- Load Range 1 Upper Limit {W}", + " heating plant; !- Range 1 Equipment List Name", + + " PlantEquipmentList,", + " heating plant, !- Name", + " DistrictHeating, !- Equipment 1 Object Type", + " Purchased Heating; !- Equipment 1 Name", + + " DistrictHeating,", + " Purchased Heating, !- Name", + " Purchased Heat Inlet Node, !- Hot Water Inlet Node Name", + " Purchased Heat Outlet Node, !- Hot Water Outlet Node Name", + " 1000000; !- Nominal Capacity {W}", + + " ZoneControl:Thermostat,", + " Zone 2 Thermostat, !- Name", + " EAST ZONE, !- Zone or ZoneList Name", + " Zone Control Type Sched, !- Control Type Schedule Name", + " ThermostatSetpoint:SingleHeating, !- Control 1 Object Type", + " Heating Setpoint with SB,!- Control 1 Name", + " ThermostatSetpoint:SingleCooling, !- Control 2 Object Type", + " Cooling Setpoint with SB;!- Control 2 Name", + + " ThermostatSetpoint:SingleHeating,", + " Heating Setpoint with SB,!- Name", + " Heating Setpoints; !- Setpoint Temperature Schedule Name", + + " ThermostatSetpoint:SingleCooling,", + " Cooling Setpoint with SB,!- Name", + " Cooling Setpoints; !- Setpoint Temperature Schedule Name", + + " ZoneHVAC:EquipmentConnections,", + " EAST ZONE, !- Zone Name", + " Zone2Equipment, !- Zone Conditioning Equipment List Name", + " Zone2Inlets, !- Zone Air Inlet Node or NodeList Name", + " Zone2Exhausts, !- Zone Air Exhaust Node or NodeList Name", + " Zone 2 Node, !- Zone Air Node Name", + " Zone 2 Outlet Node; !- Zone Return Air Node Name", + + " ZoneHVAC:EquipmentList,", + " Zone2Equipment, !- Name", + " SequentialLoad, !- Load Distribution Scheme", + " ZoneHVAC:UnitHeater, !- Zone Equipment 1 Object Type", + " Zone2UnitHeat, !- Zone Equipment 1 Name", + " 1, !- Zone Equipment 1 Cooling Sequence", + " 1; !- Zone Equipment 1 Heating or No-Load Sequence", + + " NodeList,", + " Zone2Inlets, !- Name", + " Zone2UnitHeatAirOutletNode; !- Node 1 Name", + + " NodeList,", + " Zone2Exhausts, !- Name", + " Zone2UnitHeatAirInletNode; !- Node 1 Name", + + " ZoneHVAC:UnitHeater,", + " Zone2UnitHeat, !- Name", + " UnitHeatAvailability, !- Availability Schedule Name", + " Zone2UnitHeatAirInletNode, !- Air Inlet Node Name", + " Zone2UnitHeatAirOutletNode, !- Air Outlet Node Name", + " Fan:ConstantVolume, !- Supply Air Fan Object Type", + " Zone2UnitHeatFan, !- Supply Air Fan Name", + " autosize, !- Maximum Supply Air Flow Rate {m3/s}", + " Coil:Heating:Water, !- Heating Coil Object Type", + " Zone2UnitHeatHeatingCoil,!- Heating Coil Name", + " , !- Supply Air Fan Operating Mode Schedule Name", + " No, !- Supply Air Fan Operation During No Heating", + " autosize, !- Maximum Hot Water or Steam Flow Rate {m3/s}", + " 0, !- Minimum Hot Water or Steam Flow Rate {m3/s}", + " 0.001; !- Heating Convergence Tolerance", + + " Fan:ConstantVolume,", + " Zone2UnitHeatFan, !- Name", + " UnitHeatAvailability, !- Availability Schedule Name", + " 0.5, !- Fan Total Efficiency", + " 75.0, !- Pressure Rise {Pa}", + " autosize, !- Maximum Flow Rate {m3/s}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Airstream Fraction", + " Zone2UnitHeatAirInletNode, !- Air Inlet Node Name", + " Zone2UnitHeatFanOutletNode; !- Air Outlet Node Name", + + " Coil:Heating:Water,", + " Zone2UnitHeatHeatingCoil,!- Name", + " FanAndCoilAvailSched, !- Availability Schedule Name", + " autosize, !- U-Factor Times Area Value {W/K}", + " autosize, !- Maximum Water Flow Rate {m3/s}", + " Zone2UnitHeatHWInletNode,!- Water Inlet Node Name", + " Zone2UnitHeatHWOutletNode, !- Water Outlet Node Name", + " Zone2UnitHeatFanOutletNode, !- Air Inlet Node Name", + " Zone2UnitHeatAirOutletNode, !- Air Outlet Node Name", + " UFactorTimesAreaAndDesignWaterFlowRate, !- Performance Input Method", + " autosize, !- Rated Capacity {W}", + " 82.2, !- Rated Inlet Water Temperature {C}", + " 16.6, !- Rated Inlet Air Temperature {C}", + " 71.1, !- Rated Outlet Water Temperature {C}", + " 32.2, !- Rated Outlet Air Temperature {C}", + " ; !- Rated Ratio for Air and Water Convection", + }); + ASSERT_TRUE(process_idf(idf_objects)); + + NumOfTimeStepInHour = 4; // must initialize this to get schedules initialized + MinutesPerTimeStep = 15; // must initialize this to get schedules initialized + ProcessScheduleInput(); // read schedule data + + ErrorsFound = false; + HeatBalanceManager::GetProjectControlData(ErrorsFound); // read project control data + EXPECT_FALSE(ErrorsFound); + + OutputProcessor::TimeValue.allocate(2); + DataGlobals::DDOnlySimulation = true; + + GetProjectData(); + OutputReportPredefined::SetPredefinedTables(); + SetPreConstructionInputParameters(); // establish array bounds for constructions early + + BeginSimFlag = true; + BeginEnvrnFlag = true; + ZoneSizingCalc = true; + createFacilityElectricPowerServiceObject(); + SizingManager::ManageSizing(); + + EXPECT_FALSE(ErrorsFound); + EXPECT_EQ(1, NumOfUnitHeats); + EXPECT_EQ("ZONE2UNITHEAT", UnitHeat(1).Name); + + ErrorsFound = false; + ZoneEqUnitHeater = true; + DataSizing::CurZoneEqNum = 1; + + InitUnitHeater(UnitHeatNum, ZoneNum, FirstHVACIteration); + InitWaterCoil(CoilNum, FirstHVACIteration); // init hot water heating coil PltSizHeatNum = PlantUtilities::MyPlantSizingIndex("Coil:Heating:Water", UnitHeat(UnitHeatNum).HCoilName, WaterCoils::WaterCoil(CoilNum).WaterInletNodeNum, WaterCoils::WaterCoil(CoilNum).WaterOutletNodeNum, ErrorsFound); - EXPECT_FALSE( ErrorsFound ); + EXPECT_FALSE(ErrorsFound); - HWMaxVolFlowRate = WaterCoils::WaterCoil( CoilNum ).MaxWaterVolFlowRate; + HWMaxVolFlowRate = WaterCoils::WaterCoil(CoilNum).MaxWaterVolFlowRate; HWDensity = GetDensityGlycol(PlantLoop(UnitHeat(UnitHeatNum).HWLoopNum).FluidName, DataGlobals::HWInitConvTemp, PlantLoop(UnitHeat(UnitHeatNum).HWLoopNum).FluidIndex, "xxx"); CpHW = GetSpecificHeatGlycol(PlantLoop(UnitHeat(UnitHeatNum).HWLoopNum).FluidName, DataGlobals::HWInitConvTemp, PlantLoop(UnitHeat(UnitHeatNum).HWLoopNum).FluidIndex, "xxx"); - HWPlantDeltaTDesign = PlantSizData( PltSizHeatNum ).DeltaT; - // calculate hot water coil design capacity - HWCoilDesignCapacity = HWMaxVolFlowRate * HWDensity * CpHW * HWPlantDeltaTDesign; - EXPECT_NEAR( HWCoilDesignCapacity, WaterCoils::WaterCoil( CoilNum ).DesWaterHeatingCoilRate, 1.0 ); - EXPECT_NEAR( 188.51, WaterCoils::WaterCoil( CoilNum ).UACoil, 0.02 ); + HWPlantDeltaTDesign = PlantSizData(PltSizHeatNum).DeltaT; + // calculate hot water coil design capacity + HWCoilDesignCapacity = HWMaxVolFlowRate * HWDensity * CpHW * HWPlantDeltaTDesign; + EXPECT_NEAR(HWCoilDesignCapacity, WaterCoils::WaterCoil(CoilNum).DesWaterHeatingCoilRate, 1.0); + EXPECT_NEAR(188.51, WaterCoils::WaterCoil(CoilNum).UACoil, 0.02); } TEST_F(EnergyPlusFixture, UnitHeater_SimUnitHeaterTest) { - bool ErrorsFound( false ); // function returns true on error - bool FirstHVACIteration( true ); // TRUE if 1st HVAC simulation of system timestep - - int UnitHeatNum( 1 ); // unit heat index - int ZoneNum( 1 ); // zone index - int CoilNum( 1 ); // heating coil index - int WCWaterInletNode( 0 ); // water coil water inlet node - int WCWaterOutletNode( 0 ); // water coil water outlet node - int UHAirInletNode( 0 ); // unit heater air inlet node - int UHAirOutletNode( 0 ); // unit heater air outlet node - - Real64 CpHW( 0.0 ); // hot water specific heat, J/kg K - Real64 SysOutputProvided( 0.0 ); // heating rate delivered - Real64 LatOutputProvided( 0.0 ); // latent heating rate delivered - Real64 ConvTol( 1.0 ); // convergence tolerance - Real64 HWMassFlowRate( 0.0 ); // hot water coil water mass flow rate, m3/s - Real64 UHAirMassFlowRate( 0.0 ); // unit heate air mass flow rate - Real64 UHHeatingRate( 0.0 ); // unit heate heating rate - Real64 UHEnteringAirEnthalpy( 0.0 ); // unit heater entering air enthalpy - Real64 UHLeavingAirEnthalpy( 0.0 ); // unit heater leaving air enthalpy - Real64 HWCoilHeatingRate( 0.0 ); // hot water heating coil heating rate - - std::string const idf_objects = delimited_string( { - " Version,8.4;", - - " ScheduleTypeLimits,", - " Any Number; !- Name", - - " Schedule:Compact,", - " UNITHEATAVAILABILITY, !- Name", - " ANY NUMBER, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: Alldays, !- Field 2", - " Until: 24:00,1.00; !- Field 3", - - " Zone,", - " EAST ZONE, !- Name", - " 0.0000000E+00, !- Direction of Relative North {deg}", - " 0.0000000E+00, !- X Origin {m}", - " 0.0000000E+00, !- Y Origin {m}", - " 0.0000000E+00, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " ZoneHVAC:EquipmentConnections,", - " EAST ZONE, !- Zone Name", - " Zone2Equipment, !- Zone Conditioning Equipment List Name", - " Zone2Inlets, !- Zone Air Inlet Node or NodeList Name", - " Zone2Exhausts, !- Zone Air Exhaust Node or NodeList Name", - " Zone 2 Node, !- Zone Air Node Name", - " Zone 2 Outlet Node; !- Zone Return Air Node Name", - - " ZoneHVAC:EquipmentList,", - " Zone2Equipment, !- Name", - " SequentialLoad, !- Load Distribution Scheme", - " ZoneHVAC:UnitHeater, !- Zone Equipment 1 Object Type", - " Zone2UnitHeat, !- Zone Equipment 1 Name", - " 1, !- Zone Equipment 1 Cooling Sequence", - " 1; !- Zone Equipment 1 Heating or No-Load Sequence", - - " NodeList,", - " Zone2Inlets, !- Name", - " Zone2UnitHeatAirOutletNode; !- Node 1 Name", - - " NodeList,", - " Zone2Exhausts, !- Name", - " Zone2UnitHeatAirInletNode; !- Node 1 Name", - - " ZoneHVAC:UnitHeater,", - " Zone2UnitHeat, !- Name", - " UnitHeatAvailability, !- Availability Schedule Name", - " Zone2UnitHeatAirInletNode, !- Air Inlet Node Name", - " Zone2UnitHeatAirOutletNode, !- Air Outlet Node Name", - " Fan:ConstantVolume, !- Supply Air Fan Object Type", - " Zone2UnitHeatFan, !- Supply Air Fan Name", - " 0.47055, !- Maximum Supply Air Flow Rate {m3/s}", - " Coil:Heating:Water, !- Heating Coil Object Type", - " Zone2UnitHeatHeatingCoil,!- Heating Coil Name", - " , !- Supply Air Fan Operating Mode Schedule Name", - " No, !- Supply Air Fan Operation During No Heating", - " 7.25956E-005, !- Maximum Hot Water or Steam Flow Rate {m3/s}", - " 0.0, !- Minimum Hot Water or Steam Flow Rate {m3/s}", - " 0.001; !- Heating Convergence Tolerance", - - " Fan:ConstantVolume,", - " Zone2UnitHeatFan, !- Name", - " UnitHeatAvailability, !- Availability Schedule Name", - " 0.5, !- Fan Total Efficiency", - " 75.0, !- Pressure Rise {Pa}", - " 0.47055, !- Maximum Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1.0, !- Motor In Airstream Fraction", - " Zone2UnitHeatAirInletNode, !- Air Inlet Node Name", - " Zone2UnitHeatFanOutletNode; !- Air Outlet Node Name", - - " Coil:Heating:Water,", - " Zone2UnitHeatHeatingCoil,!- Name", - " UnitHeatAvailability, !- Availability Schedule Name", - " 84.93609, !- U-Factor Times Area Value {W/K}", - " 7.25956E-005, !- Maximum Water Flow Rate {m3/s}", - " Zone2UnitHeatHWInletNode,!- Water Inlet Node Name", - " Zone2UnitHeatHWOutletNode, !- Water Outlet Node Name", - " Zone2UnitHeatFanOutletNode, !- Air Inlet Node Name", - " Zone2UnitHeatAirOutletNode, !- Air Outlet Node Name", - " UFactorTimesAreaAndDesignWaterFlowRate, !- Performance Input Method", - " 6750.70521, !- Rated Capacity {W}", - " 82.2, !- Rated Inlet Water Temperature {C}", - " 16.6, !- Rated Inlet Air Temperature {C}", - " 71.1, !- Rated Outlet Water Temperature {C}", - " 32.2, !- Rated Outlet Air Temperature {C}", - " ; !- Rated Ratio for Air and Water Convection", - } ); - ASSERT_TRUE( process_idf( idf_objects ) ); - - NumOfTimeStepInHour = 4; // must initialize this to get schedules initialized - MinutesPerTimeStep = 15; // must initialize this to get schedules initialized - ProcessScheduleInput(); // read schedule data - - ErrorsFound = false; - HeatBalanceManager::GetZoneData( ErrorsFound ); // read zone data - EXPECT_FALSE( ErrorsFound ); - - ErrorsFound = false; - GetZoneEquipmentData(); - EXPECT_FALSE( ErrorsFound ); - - ErrorsFound = false; - GetWaterCoilInput(); - EXPECT_FALSE( ErrorsFound ); - GetWaterCoilsInputFlag = false; - - ErrorsFound = false; - GetFanInput(); - EXPECT_FALSE( ErrorsFound ); - - ErrorsFound = false; - GetUnitHeaterInput(); // get unit heaters data - EXPECT_FALSE( ErrorsFound ); - EXPECT_EQ( 1, NumOfUnitHeats ); - EXPECT_EQ( "ZONE2UNITHEAT", UnitHeat( 1 ).Name ); - - ErrorsFound = false; - ZoneEqUnitHeater = true; - DataSizing::CurZoneEqNum = 1; - - TotNumLoops = 1; - PlantLoop.allocate( TotNumLoops ); - - for ( int l = 1; l <= TotNumLoops; ++l ) { - auto & loop( PlantLoop( l ) ); - loop.LoopSide.allocate( 2 ); - auto & loopside( PlantLoop( l ).LoopSide( 1 ) ); - loopside.TotalBranches = 1; - loopside.Branch.allocate( 1 ); - auto & loopsidebranch( PlantLoop( l ).LoopSide( 1 ).Branch( 1 ) ); - loopsidebranch.TotalComponents = 1; - loopsidebranch.Comp.allocate( 1 ); - } - - PlantLoop( 1 ).Name = "HotWaterLoop"; - PlantLoop( 1 ).FluidName = "HotWater"; - PlantLoop( 1 ).FluidIndex = 1; - PlantLoop( 1 ).FluidName = "WATER"; - PlantLoop( 1 ).LoopSide( 1 ).Branch( 1 ).Comp( 1 ).Name = WaterCoils::WaterCoil( 1 ).Name; - PlantLoop( 1 ).LoopSide( 1 ).Branch( 1 ).Comp( 1 ).TypeOf_Num = WaterCoils::WaterCoil_SimpleHeating; - PlantLoop( 1 ).LoopSide( 1 ).Branch( 1 ).Comp( 1 ).NodeNumIn = WaterCoils::WaterCoil( 1 ).WaterInletNodeNum; - PlantLoop( 1 ).LoopSide( 1 ).Branch( 1 ).Comp( 1 ).NodeNumOut = WaterCoils::WaterCoil( 1 ).WaterOutletNodeNum; - - ZoneSysEnergyDemand.allocate( 1 ); - ZoneSysEnergyDemand( 1 ).RemainingOutputReqToHeatSP = 2000.0; - - ZoneSizingRunDone = true; - ZoneEqSizing.allocate( 1 ); - ZoneEqSizing( CurZoneEqNum ).DesignSizeFromParent = false; - DataGlobals::DoingSizing = true; - - ZoneCompTurnFansOn = true; - ZoneCompTurnFansOff = false; - - Schedule( 1 ).CurrentValue = 1; - CurDeadBandOrSetback.allocate( 1 ); - CurDeadBandOrSetback( ZoneNum ) = false; - - Node( Fan( 1 ).InletNodeNum ).Temp = 16.6; - Node( Fan( 1 ).InletNodeNum ).HumRat = PsyWFnTdbRhPb( 16.6, 0.5, 101325.0, "UnitTest" ); - Node( Fan( 1 ).InletNodeNum ).Enthalpy = Psychrometrics::PsyHFnTdbW( Node( Fan( 1 ).InletNodeNum ).Temp, Node( Fan( 1 ).InletNodeNum ).HumRat ); - DataEnvironment::StdRhoAir = PsyRhoAirFnPbTdbW( 101325.0, 20.0, 0.0 ); - - WCWaterInletNode = WaterCoils::WaterCoil( CoilNum ).WaterInletNodeNum; - WCWaterOutletNode = WaterCoils::WaterCoil( CoilNum ).WaterOutletNodeNum; - Node( WCWaterInletNode ).Temp = 60.0; - - DataGlobals::BeginEnvrnFlag = true; - SysSizingCalc = true; - - UHAirInletNode = UnitHeat( UnitHeatNum ).AirInNode; - UHAirOutletNode = UnitHeat( UnitHeatNum ).AirOutNode; - - SimUnitHeater( UnitHeat( UnitHeatNum ).Name, ZoneNum, FirstHVACIteration, SysOutputProvided, LatOutputProvided, CurZoneEqNum ); - // SimUnitHeater does not converge on the first call: the unit heater deliveres more than required heating load. But it meets - // on the second call (iteration). I suspect it may be an initialization issue related to ControlCompOutput routine - SimUnitHeater( UnitHeat( UnitHeatNum ).Name, ZoneNum, FirstHVACIteration, SysOutputProvided, LatOutputProvided, CurZoneEqNum ); - // verify the total heat rate deleivered by the unit heater - UHAirMassFlowRate = Node( UHAirInletNode ).MassFlowRate; - UHEnteringAirEnthalpy = PsyHFnTdbW( Node( UHAirInletNode ).Temp, Node( UHAirInletNode ).HumRat ); - UHLeavingAirEnthalpy = PsyHFnTdbW( Node( UHAirOutletNode ).Temp, Node( UHAirOutletNode ).HumRat ); - UHHeatingRate = UHAirMassFlowRate * ( UHLeavingAirEnthalpy - UHEnteringAirEnthalpy ); - EXPECT_NEAR( UHHeatingRate, UnitHeat( UnitHeatNum ).HeatPower, ConvTol ); - // verify the heat rate delivered by the hot water heating coil - HWMassFlowRate = WaterCoils::WaterCoil( CoilNum ).InletWaterMassFlowRate; + bool ErrorsFound(false); // function returns true on error + bool FirstHVACIteration(true); // TRUE if 1st HVAC simulation of system timestep + + int UnitHeatNum(1); // unit heat index + int ZoneNum(1); // zone index + int CoilNum(1); // heating coil index + int WCWaterInletNode(0); // water coil water inlet node + int WCWaterOutletNode(0); // water coil water outlet node + int UHAirInletNode(0); // unit heater air inlet node + int UHAirOutletNode(0); // unit heater air outlet node + + Real64 CpHW(0.0); // hot water specific heat, J/kg K + Real64 SysOutputProvided(0.0); // heating rate delivered + Real64 LatOutputProvided(0.0); // latent heating rate delivered + Real64 ConvTol(1.0); // convergence tolerance + Real64 HWMassFlowRate(0.0); // hot water coil water mass flow rate, m3/s + Real64 UHAirMassFlowRate(0.0); // unit heate air mass flow rate + Real64 UHHeatingRate(0.0); // unit heate heating rate + Real64 UHEnteringAirEnthalpy(0.0); // unit heater entering air enthalpy + Real64 UHLeavingAirEnthalpy(0.0); // unit heater leaving air enthalpy + Real64 HWCoilHeatingRate(0.0); // hot water heating coil heating rate + + std::string const idf_objects = delimited_string({ + " Version,8.4;", + + " ScheduleTypeLimits,", + " Any Number; !- Name", + + " Schedule:Compact,", + " UNITHEATAVAILABILITY, !- Name", + " ANY NUMBER, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: Alldays, !- Field 2", + " Until: 24:00,1.00; !- Field 3", + + " Zone,", + " EAST ZONE, !- Name", + " 0.0000000E+00, !- Direction of Relative North {deg}", + " 0.0000000E+00, !- X Origin {m}", + " 0.0000000E+00, !- Y Origin {m}", + " 0.0000000E+00, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " ZoneHVAC:EquipmentConnections,", + " EAST ZONE, !- Zone Name", + " Zone2Equipment, !- Zone Conditioning Equipment List Name", + " Zone2Inlets, !- Zone Air Inlet Node or NodeList Name", + " Zone2Exhausts, !- Zone Air Exhaust Node or NodeList Name", + " Zone 2 Node, !- Zone Air Node Name", + " Zone 2 Outlet Node; !- Zone Return Air Node Name", + + " ZoneHVAC:EquipmentList,", + " Zone2Equipment, !- Name", + " SequentialLoad, !- Load Distribution Scheme", + " ZoneHVAC:UnitHeater, !- Zone Equipment 1 Object Type", + " Zone2UnitHeat, !- Zone Equipment 1 Name", + " 1, !- Zone Equipment 1 Cooling Sequence", + " 1; !- Zone Equipment 1 Heating or No-Load Sequence", + + " NodeList,", + " Zone2Inlets, !- Name", + " Zone2UnitHeatAirOutletNode; !- Node 1 Name", + + " NodeList,", + " Zone2Exhausts, !- Name", + " Zone2UnitHeatAirInletNode; !- Node 1 Name", + + " ZoneHVAC:UnitHeater,", + " Zone2UnitHeat, !- Name", + " UnitHeatAvailability, !- Availability Schedule Name", + " Zone2UnitHeatAirInletNode, !- Air Inlet Node Name", + " Zone2UnitHeatAirOutletNode, !- Air Outlet Node Name", + " Fan:ConstantVolume, !- Supply Air Fan Object Type", + " Zone2UnitHeatFan, !- Supply Air Fan Name", + " 0.47055, !- Maximum Supply Air Flow Rate {m3/s}", + " Coil:Heating:Water, !- Heating Coil Object Type", + " Zone2UnitHeatHeatingCoil,!- Heating Coil Name", + " , !- Supply Air Fan Operating Mode Schedule Name", + " No, !- Supply Air Fan Operation During No Heating", + " 7.25956E-005, !- Maximum Hot Water or Steam Flow Rate {m3/s}", + " 0.0, !- Minimum Hot Water or Steam Flow Rate {m3/s}", + " 0.001; !- Heating Convergence Tolerance", + + " Fan:ConstantVolume,", + " Zone2UnitHeatFan, !- Name", + " UnitHeatAvailability, !- Availability Schedule Name", + " 0.5, !- Fan Total Efficiency", + " 75.0, !- Pressure Rise {Pa}", + " 0.47055, !- Maximum Flow Rate {m3/s}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Airstream Fraction", + " Zone2UnitHeatAirInletNode, !- Air Inlet Node Name", + " Zone2UnitHeatFanOutletNode; !- Air Outlet Node Name", + + " Coil:Heating:Water,", + " Zone2UnitHeatHeatingCoil,!- Name", + " UnitHeatAvailability, !- Availability Schedule Name", + " 84.93609, !- U-Factor Times Area Value {W/K}", + " 7.25956E-005, !- Maximum Water Flow Rate {m3/s}", + " Zone2UnitHeatHWInletNode,!- Water Inlet Node Name", + " Zone2UnitHeatHWOutletNode, !- Water Outlet Node Name", + " Zone2UnitHeatFanOutletNode, !- Air Inlet Node Name", + " Zone2UnitHeatAirOutletNode, !- Air Outlet Node Name", + " UFactorTimesAreaAndDesignWaterFlowRate, !- Performance Input Method", + " 6750.70521, !- Rated Capacity {W}", + " 82.2, !- Rated Inlet Water Temperature {C}", + " 16.6, !- Rated Inlet Air Temperature {C}", + " 71.1, !- Rated Outlet Water Temperature {C}", + " 32.2, !- Rated Outlet Air Temperature {C}", + " ; !- Rated Ratio for Air and Water Convection", + }); + ASSERT_TRUE(process_idf(idf_objects)); + + NumOfTimeStepInHour = 4; // must initialize this to get schedules initialized + MinutesPerTimeStep = 15; // must initialize this to get schedules initialized + ProcessScheduleInput(); // read schedule data + + ErrorsFound = false; + HeatBalanceManager::GetZoneData(ErrorsFound); // read zone data + EXPECT_FALSE(ErrorsFound); + + ErrorsFound = false; + GetZoneEquipmentData(); + EXPECT_FALSE(ErrorsFound); + + ErrorsFound = false; + GetWaterCoilInput(); + EXPECT_FALSE(ErrorsFound); + GetWaterCoilsInputFlag = false; + + ErrorsFound = false; + GetFanInput(); + EXPECT_FALSE(ErrorsFound); + + ErrorsFound = false; + GetUnitHeaterInput(); // get unit heaters data + EXPECT_FALSE(ErrorsFound); + EXPECT_EQ(1, NumOfUnitHeats); + EXPECT_EQ("ZONE2UNITHEAT", UnitHeat(1).Name); + + ErrorsFound = false; + ZoneEqUnitHeater = true; + DataSizing::CurZoneEqNum = 1; + + TotNumLoops = 1; + PlantLoop.allocate(TotNumLoops); + + for (int l = 1; l <= TotNumLoops; ++l) { + auto &loop(PlantLoop(l)); + loop.LoopSide.allocate(2); + auto &loopside(PlantLoop(l).LoopSide(1)); + loopside.TotalBranches = 1; + loopside.Branch.allocate(1); + auto &loopsidebranch(PlantLoop(l).LoopSide(1).Branch(1)); + loopsidebranch.TotalComponents = 1; + loopsidebranch.Comp.allocate(1); + } + + PlantLoop(1).Name = "HotWaterLoop"; + PlantLoop(1).FluidName = "HotWater"; + PlantLoop(1).FluidIndex = 1; + PlantLoop(1).FluidName = "WATER"; + PlantLoop(1).LoopSide(1).Branch(1).Comp(1).Name = WaterCoils::WaterCoil(1).Name; + PlantLoop(1).LoopSide(1).Branch(1).Comp(1).TypeOf_Num = WaterCoils::WaterCoil_SimpleHeating; + PlantLoop(1).LoopSide(1).Branch(1).Comp(1).NodeNumIn = WaterCoils::WaterCoil(1).WaterInletNodeNum; + PlantLoop(1).LoopSide(1).Branch(1).Comp(1).NodeNumOut = WaterCoils::WaterCoil(1).WaterOutletNodeNum; + + ZoneSysEnergyDemand.allocate(1); + ZoneSysEnergyDemand(1).RemainingOutputReqToHeatSP = 2000.0; + + ZoneSizingRunDone = true; + ZoneEqSizing.allocate(1); + ZoneEqSizing(CurZoneEqNum).DesignSizeFromParent = false; + DataGlobals::DoingSizing = true; + + ZoneCompTurnFansOn = true; + ZoneCompTurnFansOff = false; + + Schedule(1).CurrentValue = 1; + CurDeadBandOrSetback.allocate(1); + CurDeadBandOrSetback(ZoneNum) = false; + + Node(Fan(1).InletNodeNum).Temp = 16.6; + Node(Fan(1).InletNodeNum).HumRat = PsyWFnTdbRhPb(16.6, 0.5, 101325.0, "UnitTest"); + Node(Fan(1).InletNodeNum).Enthalpy = Psychrometrics::PsyHFnTdbW(Node(Fan(1).InletNodeNum).Temp, Node(Fan(1).InletNodeNum).HumRat); + DataEnvironment::StdRhoAir = PsyRhoAirFnPbTdbW(101325.0, 20.0, 0.0); + + WCWaterInletNode = WaterCoils::WaterCoil(CoilNum).WaterInletNodeNum; + WCWaterOutletNode = WaterCoils::WaterCoil(CoilNum).WaterOutletNodeNum; + Node(WCWaterInletNode).Temp = 60.0; + + DataGlobals::BeginEnvrnFlag = true; + SysSizingCalc = true; + + UHAirInletNode = UnitHeat(UnitHeatNum).AirInNode; + UHAirOutletNode = UnitHeat(UnitHeatNum).AirOutNode; + + SimUnitHeater(UnitHeat(UnitHeatNum).Name, ZoneNum, FirstHVACIteration, SysOutputProvided, LatOutputProvided, CurZoneEqNum); + // SimUnitHeater does not converge on the first call: the unit heater deliveres more than required heating load. But it meets + // on the second call (iteration). I suspect it may be an initialization issue related to ControlCompOutput routine + SimUnitHeater(UnitHeat(UnitHeatNum).Name, ZoneNum, FirstHVACIteration, SysOutputProvided, LatOutputProvided, CurZoneEqNum); + // verify the total heat rate deleivered by the unit heater + UHAirMassFlowRate = Node(UHAirInletNode).MassFlowRate; + UHEnteringAirEnthalpy = PsyHFnTdbW(Node(UHAirInletNode).Temp, Node(UHAirInletNode).HumRat); + UHLeavingAirEnthalpy = PsyHFnTdbW(Node(UHAirOutletNode).Temp, Node(UHAirOutletNode).HumRat); + UHHeatingRate = UHAirMassFlowRate * (UHLeavingAirEnthalpy - UHEnteringAirEnthalpy); + EXPECT_NEAR(UHHeatingRate, UnitHeat(UnitHeatNum).HeatPower, ConvTol); + // verify the heat rate delivered by the hot water heating coil + HWMassFlowRate = WaterCoils::WaterCoil(CoilNum).InletWaterMassFlowRate; CpHW = GetSpecificHeatGlycol(PlantLoop(UnitHeat(UnitHeatNum).HWLoopNum).FluidName, 60.0, PlantLoop(UnitHeat(UnitHeatNum).HWLoopNum).FluidIndex, "UnitTest"); - HWCoilHeatingRate = HWMassFlowRate * CpHW * ( Node( WCWaterInletNode ).Temp - Node( WCWaterOutletNode ).Temp ); - EXPECT_NEAR( HWCoilHeatingRate, WaterCoils::WaterCoil( CoilNum ).TotWaterHeatingCoilRate, ConvTol ); + HWCoilHeatingRate = HWMassFlowRate * CpHW * (Node(WCWaterInletNode).Temp - Node(WCWaterOutletNode).Temp); + EXPECT_NEAR(HWCoilHeatingRate, WaterCoils::WaterCoil(CoilNum).TotWaterHeatingCoilRate, ConvTol); } TEST_F(EnergyPlusFixture, UnitHeater_SecondPriorityZoneEquipment) { - std::string const idf_objects = delimited_string( { - "Version,8.9;", - - "Timestep,1;", - - "Building,", - " Bldg, !- Name", - " 0.0, !- North Axis {deg}", - " Suburbs, !- Terrain", - " 0.05, !- Loads Convergence Tolerance Value", - " 0.05, !- Temperature Convergence Tolerance Value {deltaC}", - " MinimalShadowing, !- Solar Distribution", - " 30, !- Maximum Number of Warmup Days", - " 6; !- Minimum Number of Warmup Days", - - "SurfaceConvectionAlgorithm:Inside,Simple;", - "SurfaceConvectionAlgorithm:Outside,SimpleCombined;", - "HeatBalanceAlgorithm,ConductionTransferFunction;", - - "SimulationControl,", - " No, !- Do Zone Sizing Calculation", - " No, !- Do System Sizing Calculation", - " No, !- Do Plant Sizing Calculation", - " Yes, !- Run Simulation for Sizing Periods", - " No; !- Run Simulation for Weather File Run Periods", - - " Site:Location,", - " CHICAGO_IL_USA TMY2-94846, !- Name", - " 41.78, !- Latitude {deg}", - " -87.75, !- Longitude {deg}", - " -6.00, !- Time Zone {hr}", - " 190.00; !- Elevation {m}", - - " SizingPeriod:DesignDay,", - " CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, !- Name", - " 1, !- Month", - " 21, !- Day of Month", - " WinterDesignDay, !- Day Type", - " -12.3, !- Maximum Dry-Bulb Temperature {C}", - " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 4.9, !- Wind Speed {m/s}", - " 270, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 0.0; !- Sky Clearness", - - " Site:GroundTemperature:BuildingSurface,21.5,21.4,21.5,21.5,22.0,22.9,23.0,23.1,23.1,22.2,21.7,21.6;", - - " Material:NoMass,", - " R13LAYER, !- Name", - " Rough, !- Roughness", - " 2.290965, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - "Material:NoMass,", - " R31LAYER, !- Name", - " Rough, !- Roughness", - " 5.456, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - "Material,", - " C5 - 4 IN HW CONCRETE, !- Name", - " MediumRough, !- Roughness", - " 0.1014984, !- Thickness {m}", - " 1.729577, !- Conductivity {W/m-K}", - " 2242.585, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - - "Construction,", - " R13WALL, !- Name", - " R13LAYER; !- Outside Layer", - - "Construction,", - " FLOOR, !- Name", - " C5 - 4 IN HW CONCRETE; !- Outside Layer", - - "Construction,", - " ROOF31, !- Name", - " R31LAYER; !- Outside Layer", - - "Zone,", - " Main Zone, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, 0, 0, !- X,Y,Z {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - "GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " CounterClockWise, !- Vertex Entry Direction", - " relative; !- Coordinate System", - - "BuildingSurface:Detailed,", - " Zn001:Wall001, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " Main Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0, 0, 4.572000, !- X,Y,Z 1 {m}", - " 0, 0, 0, !- X,Y,Z 2 {m}", - " 15.24000, 0, 0, !- X,Y,Z 3 {m}", - " 15.24000, 0, 4.572000; !- X,Y,Z 4 {m}", - - "BuildingSurface:Detailed,", - " Zn001:Wall002, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " Main Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000, 0, 4.572000, !- X,Y,Z 1 {m}", - " 15.24000, 0, 0, !- X,Y,Z 2 {m}", - " 15.24000, 15.24000, 0, !- X,Y,Z 3 {m}", - " 15.24000, 15.24000, 4.572000; !- X,Y,Z 4 {m}", - - "BuildingSurface:Detailed,", - " Zn001:Wall003, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " Main Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000, 15.24000, 4.572000, !- X,Y,Z 1 {m}", - " 15.24000, 15.24000, 0, !- X,Y,Z 2 {m}", - " 0, 15.24000, 0, !- X,Y,Z 3 {m}", - " 0, 15.24000, 4.572000; !- X,Y,Z 4 {m}", - - "BuildingSurface:Detailed,", - " Zn001:Wall004, !- Name", - " Wall, !- Surface Type", - " R13WALL, !- Construction Name", - " Main Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0, 15.24000, 4.572000, !- X,Y,Z 1 {m}", - " 0, 15.24000, 0, !- X,Y,Z 2 {m}", - " 0, 0, 0, !- X,Y,Z 3 {m}", - " 0, 0, 4.572000; !- X,Y,Z 4 {m}", - - "BuildingSurface:Detailed,", - " Zn001:Flr001, !- Name", - " Floor, !- Surface Type", - " FLOOR, !- Construction Name", - " Main Zone, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn001:Flr001, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 15.24000, 0.000000, 0.0, !- X,Y,Z 1 {m}", - " 0.000000, 0.000000, 0.0, !- X,Y,Z 2 {m}", - " 0.000000, 15.24000, 0.0, !- X,Y,Z 3 {m}", - " 15.24000, 15.24000, 0.0; !- X,Y,Z 4 {m}", - - "BuildingSurface:Detailed,", - " Zn001:Roof001, !- Name", - " Roof, !- Surface Type", - " ROOF31, !- Construction Name", - " Main Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.000000, 15.24000, 4.572, !- X,Y,Z 1 {m}", - " 0.000000, 0.000000, 4.572, !- X,Y,Z 2 {m}", - " 15.24000, 0.000000, 4.572, !- X,Y,Z 3 {m}", - " 15.24000, 15.24000, 4.572; !- X,Y,Z 4 {m}", - - "ScheduleTypeLimits,", - " Any Number; !- Name", - - "ScheduleTypeLimits,", - " Fraction, !- Name", - " 0.0, !- Lower Limit Value", - " 1.0, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - "ScheduleTypeLimits,", - " Temperature, !- Name", - " -60, !- Lower Limit Value", - " 200, !- Upper Limit Value", - " CONTINUOUS, !- Numeric Type", - " Temperature; !- Unit Type", - - "ScheduleTypeLimits,", - " Control Type, !- Name", - " 0, !- Lower Limit Value", - " 4, !- Upper Limit Value", - " DISCRETE; !- Numeric Type", - - "ScheduleTypeLimits,", - " On/Off, !- Name", - " 0, !- Lower Limit Value", - " 1, !- Upper Limit Value", - " DISCRETE; !- Numeric Type", - - "ScheduleTypeLimits,", - " FlowRate, !- Name", - " 0.0, !- Lower Limit Value", - " 10, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - "ScheduleTypeLimits,", - " Humidity, !- Name", - " 0, !- Lower Limit Value", - " 100, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - "Schedule:Compact,", - " OCCUPY-1, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", - " Until: 8:00, 0.0, !- Field 4", - " Until: 11:00, 1.00, !- Field 6", - " Until: 12:00, 0.80, !- Field 8", - " Until: 13:00, 0.40, !- Field 10", - " Until: 14:00, 0.80, !- Field 12", - " Until: 18:00, 1.00, !- Field 14", - " Until: 19:00, 0.50, !- Field 16", - " Until: 21:00, 0.10, !- Field 18", - " Until: 24:00, 0.0, !- Field 20", - " For: Weekends WinterDesignDay Holiday, !- Field 21", - " Until: 24:00, 0.0; !- Field 23", - - "Schedule:Compact,", - " LIGHTS-1, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", - " Until: 8:00, 0.05, !- Field 4", - " Until: 9:00, 0.9, !- Field 6", - " Until: 10:00, 0.95, !- Field 8", - " Until: 11:00, 1.00, !- Field 10", - " Until: 12:00, 0.95, !- Field 12", - " Until: 13:00, 0.8, !- Field 14", - " Until: 14:00, 0.9, !- Field 16", - " Until: 18:00, 1.00, !- Field 18", - " Until: 19:00, 0.60, !- Field 20", - " Until: 21:00, 0.20, !- Field 22", - " Until: 24:00, 0.05, !- Field 24", - " For: Weekends WinterDesignDay Holiday, !- Field 25", - " Until: 24:00, 0.05; !- Field 27", - - "Schedule:Compact,", - " EQUIP-1, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", - " Until: 8:00, 0.02, !- Field 4", - " Until: 9:00, 0.4, !- Field 6", - " Until: 14:00, 0.9, !- Field 8", - " Until: 15:00, 0.8, !- Field 10", - " Until: 16:00, 0.7, !- Field 12", - " Until: 18:00, 0.5, !- Field 14", - " Until: 20:00, 0.3, !- Field 16", - " Until: 24:00, 0.02, !- Field 18", - " For: Weekends WinterDesignDay Holiday, !- Field 19", - " Until: 24:00, 0.2; !- Field 21", - - "Schedule:Compact,", - " INFIL-SCH, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 3/31, !- Field 1", - " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", - " Until: 24:00, 1.0, !- Field 4", - " For: AllOtherDays, !- Field 5", - " Until: 24:00, 1.0, !- Field 7", - " Through: 9/30, !- Field 8", - " For: AllDays, !- Field 9", - " Until: 24:00, 0.7, !- Field 11", - " Through: 12/31, !- Field 12", - " For: AllDays, !- Field 13", - " Until: 24:00, 1.0, !- Field 15", - " For: AllOtherDays, !- Field 16", - " Until: 24:00, 0.2; !- Field 18", - - "Schedule:Compact,", - " ActSchd, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00, 117.239997864;", - - "Schedule:Compact,", - " Htg-SetP-Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 1", - " Until: 24:00, 21.1; !- Field 2", - - "Schedule:Compact,", - " Clg-SetP-Sch, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00, 23.9; !- Field 4", - - "Schedule:Compact,", - " Min OA Sched, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00, 0.5; !- Field 3", - - "Schedule:Compact,", - " FanAvailSched, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 3/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00, 1.0, !- Field 4", - " Through: 9/30, !- Field 5", - " For: WeekDays, !- Field 6", - " Until: 7:00, 0.0, !- Field 8", - " Until: 17:00, 1.0, !- Field 10", - " Until: 24:00, 0.0, !- Field 12", - " For: SummerDesignDay WinterDesignDay, !- Field 13", - " Until: 24:00, 1.0, !- Field 15", - " For: AllOtherDays, !- Field 16", - " Until: 24:00, 0.0, !- Field 18", - " Through: 12/31, !- Field 19", - " For: AllDays, !- Field 20", - " Until: 24:00, 1.0; !- Field 22", - - "Schedule:Compact,", - " AlwaysOn, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00, 1.0; !- Field 4", - - "People,", - " Main Zone People 1, !- Name", - " Main Zone, !- Zone or ZoneList Name", - " OCCUPY-1, !- Number of People Schedule Name", - " people, !- Number of People Calculation Method", - " 20, !- Number of People", - " , !- People per Zone Floor Area {person/m2}", - " , !- Zone Floor Area per Person {m2/person}", - " 0.3, !- Fraction Radiant", - " AutoCalculate, !- Sensible Heat Fraction", - " ActSchd; !- Activity Level Schedule Name", - - "Lights,", - " Main Zone Lights 1, !- Name", - " Main Zone, !- Zone or ZoneList Name", - " LIGHTS-1, !- Schedule Name", - " LightingLevel, !- Design Level Calculation Method", - " 2964, !- Lighting Level {W}", - " , !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.2, !- Return Air Fraction", - " 0.59, !- Fraction Radiant", - " 0.2, !- Fraction Visible", - " 0, !- Fraction Replaceable", - " GeneralLights; !- End-Use Subcategory", - - "ElectricEquipment,", - " Main Zone ElecEq 1, !- Name", - " Main Zone, !- Zone or ZoneList Name", - " EQUIP-1, !- Schedule Name", - " EquipmentLevel, !- Design Level Calculation Method", - " 19760, !- Design Level {W}", - " , !- Watts per Zone Floor Area {W/m2}", - " , !- Watts per Person {W/person}", - " 0.5, !- Fraction Latent", - " 0.3, !- Fraction Radiant", - " 0; !- Fraction Lost", - - "ZoneInfiltration:DesignFlowRate,", - " Main Zone Infil 1, !- Name", - " Main Zone, !- Zone or ZoneList Name", - " INFIL-SCH, !- Schedule Name", - " flow/zone, !- Design Flow Rate Calculation Method", - " 0.031089, !- Design Flow Rate {m3/s}", - " , !- Flow per Zone Floor Area {m3/s-m2}", - " , !- Flow per Exterior Surface Area {m3/s-m2}", - " , !- Air Changes per Hour {1/hr}", - " 0, !- Constant Term Coefficient", - " 0, !- Temperature Term Coefficient", - " 0.2237, !- Velocity Term Coefficient", - " 0; !- Velocity Squared Term Coefficient", - - "Sizing:Parameters,", - " 1.2, !- Heating Sizing Factor", - " 1.2; !- Cooling Sizing Factor", - - "ThermostatSetpoint:DualSetpoint,", - " All Zones Dual SP Control, !- Name", - " Htg-SetP-Sch, !- Heating Setpoint Temperature Schedule Name", - " Clg-SetP-Sch; !- Cooling Setpoint Temperature Schedule Name", - - "Schedule:Compact,", - " ZONE CONTROL TYPE SCHED, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00, 4; !- Field 4", - - "ZoneControl:Thermostat,", - " Main Zone Thermostat, !- Name", - " Main Zone, !- Zone or ZoneList Name", - " ZONE CONTROL TYPE SCHED, !- Control Type Schedule Name", - " ThermostatSetpoint:DualSetpoint, !- Control 1 Object Type", - " All Zones Dual SP Control; !- Control 1 Name", - - "ZoneHVAC:EquipmentConnections,", - " Main Zone, !- Zone Name", - " Main Zone Equipment, !- Zone Conditioning Equipment List Name", - " Main Zone Inlet Nodes, !- Zone Air Inlet Node or NodeList Name", - " Main Zone Exh Node List, !- Zone Air Exhaust Node or NodeList Name", - " Main Zone Zone Air Node, !- Zone Air Node Name", - " Main Zone Return Outlet; !- Zone Return Air Node Name", - - "NodeList,", - " Main Zone Inlet Nodes, !- Name", - " Main Zone Supply Inlet, !- Node 1 Name", - " Node 33; !- Node 2 Name", - - "NodeList,", - " Main Zone Exh Node List, !- Name", - " Node 32; !- Node 1 Name", - - "ZoneHVAC:EquipmentList,", - " Main Zone Equipment, !- Name", - " SequentialLoad, !- Load Distribution Scheme", - " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", - " Main Zone ATU, !- Zone Equipment 1 Name", - " 1, !- Zone Equipment 1 Cooling Sequence", - " 1, !- Zone Equipment 1 Heating or No-Load Sequence", - " ZoneHVAC:UnitHeater, !- Zone Equipment 2 Object Type", - " UnitHeater, !- Zone Equipment 2 Name", - " 2, !- Zone Equipment 2 Cooling Sequence", - " 2; !- Zone Equipment 2 Heating or No-Load Sequence", - - "ZoneHVAC:AirDistributionUnit,", - " Main Zone ATU, !- Name", - " Main Zone Supply Inlet, !- Air Distribution Unit Outlet Node Name", - " AirTerminal:SingleDuct:VAV:Reheat, !- Air Terminal Object Type", - " Main Zone VAV Reheat; !- Air Terminal Name", - - "AirTerminal:SingleDuct:VAV:Reheat,", - " Main Zone VAV Reheat, !- Name", - " , !- Availability Schedule Name", - " Main Zone Damper Outlet, !- Damper Air Outlet Node Name", - " Main Zone Zone Equip Inlet, !- Air Inlet Node Name", - " 1.13941, !- Maximum Air Flow Rate {m3/s}", - " Constant, !- Zone Minimum Air Flow Input Method", - " 0.3, !- Constant Minimum Air Flow Fraction", - " , !- Fixed Minimum Air Flow Rate {m3/s}", - " , !- Minimum Air Flow Fraction Schedule Name", - " Coil:Heating:Electric, !- Reheat Coil Object Type", - " Main Zone Reheat Coil, !- Reheat Coil Name", - " , !- Maximum Hot Water or Steam Flow Rate {m3/s}", - " , !- Minimum Hot Water or Steam Flow Rate {m3/s}", - " Main Zone Supply Inlet, !- Air Outlet Node Name", - " 0.001, !- Convergence Tolerance", - " Reverse, !- Damper Heating Action", - " , !- Maximum Flow per Zone Floor Area During Reheat {m3/s-m2}", - " ; !- Maximum Flow Fraction During Reheat", - - "Coil:Heating:Electric,", - " Main Zone Reheat Coil, !- Name", - " , !- Availability Schedule Name", - " 1, !- Efficiency", - " 17542.25595, !- Nominal Capacity {W}", - " Main Zone Damper Outlet, !- Air Inlet Node Name", - " Main Zone Supply Inlet; !- Air Outlet Node Name", - - "ZoneHVAC:UnitHeater,", - " UnitHeater, !- Name", - " Alwayson, !- Availability Schedule Name", - " Node 32, !- Air Inlet Node Name", - " Node 33, !- Air Outlet Node Name", - " Fan:OnOff, !- Supply Air Fan Object Type", - " UnitHeater_SupplyFan, !- Supply Air Fan Name", - " 0.18880, !- Maximum Supply Air Flow Rate {m3/s}", - " Coil:Heating:Electric, !- Heating Coil Object Type", - " UnitHeater_ElectricHeater, !- Heating Coil Name", - " , !- Supply Air Fan Operating Mode Schedule Name", - " No, !- Supply Air Fan Operation During No Heating", - " , !- Maximum Hot Water or Steam Flow Rate {m3/s}", - " 0, !- Minimum Hot Water or Steam Flow Rate {m3/s}", - " 0.001; !- Heating Convergence Tolerance", - - "Fan:OnOff,", - " UnitHeater_SupplyFan, !- Name", - " Alwayson, !- Availability Schedule Name", - " 0.5, !- Fan Total Efficiency", - " 250, !- Pressure Rise {Pa}", - " 0.18880, !- Maximum Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1, !- Motor In Airstream Fraction", - " Node 32, !- Air Inlet Node Name", - " UnitHeater_FanOutletNode,!- Air Outlet Node Name", - " , !- Fan Power Ratio Function of Speed Ratio Curve Name", - " , !- Fan Efficiency Ratio Function of Speed Ratio Curve Name", - " General; !- End-Use Subcategory", - - "Coil:Heating:Electric,", - " UnitHeater_ElectricHeater, !- Name", - " Alwayson, !- Availability Schedule Name", - " 1, !- Efficiency", - " 15235.58538, !- Nominal Capacity {W}", - " UnitHeater_FanOutletNode,!- Air Inlet Node Name", - " Node 33; !- Air Outlet Node Name", - - "AirLoopHVAC,", - " VAV System, !- Name", - " VAV System Controllers, !- Controller List Name", - " VAV System Availability Managers, !- Availability Manager List Name", - " 1.13941, !- Design Supply Air Flow Rate {m3/s}", - " VAV System Branches, !- Branch List Name", - " , !- Connector List Name", - " VAV System Air Loop Inlet, !- Supply Side Inlet Node Name", - " VAV System Return Air Outlet, !- Demand Side Outlet Node Name", - " VAV System Supply Path Inlet, !- Demand Side Inlet Node Names", - " VAV System Supply Fan Outlet; !- Supply Side Outlet Node Names", - - "AirLoopHVAC:ControllerList,", - " VAV System Controllers, !- Name", - " Controller:WaterCoil, !- Controller 1 Object Type", - " VAV System Cooling Coil Controller; !- Controller 1 Name", - - "BranchList,", - " VAV System Branches, !- Name", - " VAV System Main Branch; !- Branch 1 Name", - - "Branch,", - " VAV System Main Branch, !- Name", - " , !- Pressure Drop Curve Name", - " AirLoopHVAC:OutdoorAirSystem, !- Component 1 Object Type", - " VAV System OA System, !- Component 1 Name", - " VAV System Air Loop Inlet, !- Component 1 Inlet Node Name", - " VAV System Mixed Air Outlet, !- Component 1 Outlet Node Name", - " Coil:Cooling:Water, !- Component 2 Object Type", - " VAV System Cooling Coil, !- Component 2 Name", - " VAV System Mixed Air Outlet, !- Component 2 Inlet Node Name", - " VAV System Cooling Coil Outlet, !- Component 2 Outlet Node Name", - " Fan:VariableVolume, !- Component 3 Object Type", - " VAV System Supply Fan, !- Component 3 Name", - " VAV System Cooling Coil Outlet, !- Component 3 Inlet Node Name", - " VAV System Supply Fan Outlet; !- Component 3 Outlet Node Name", - - "AirLoopHVAC:SupplyPath,", - " VAV System Supply Path, !- Name", - " VAV System Supply Path Inlet, !- Supply Air Path Inlet Node Name", - " AirLoopHVAC:ZoneSplitter,!- Component 1 Object Type", - " VAV System Zone Splitter;!- Component 1 Name", - - "AirLoopHVAC:ZoneSplitter,", - " VAV System Zone Splitter,!- Name", - " VAV System Supply Path Inlet, !- Inlet Node Name", - " Main Zone Zone Equip Inlet; !- Outlet 1 Node Name", - - "AirLoopHVAC:ReturnPath,", - " VAV System Return Path, !- Name", - " VAV System Return Air Outlet, !- Return Air Path Outlet Node Name", - " AirLoopHVAC:ZoneMixer, !- Component 1 Object Type", - " VAV System Zone Mixer; !- Component 1 Name", - - "AirLoopHVAC:ZoneMixer,", - " VAV System Zone Mixer, !- Name", - " VAV System Return Air Outlet, !- Outlet Node Name", - " Main Zone Return Outlet; !- Inlet 1 Node Name", - - "AvailabilityManagerAssignmentList,", - " VAV System Availability Managers, !- Name", - " AvailabilityManager:NightCycle, !- Availability Manager 1 Object Type", - " VAV System Availability; !- Availability Manager 1 Name", - - "AvailabilityManager:NightCycle,", - " VAV System Availability, !- Name", - " Alwayson, !- Applicability Schedule Name", - " FanAvailSched, !- Fan Schedule Name", - " CycleOnAny, !- Control Type", - " 0.2, !- Thermostat Tolerance {deltaC}", - " FixedRunTime, !- Cycling Run Time Control Type", - " 3600; !- Cycling Run Time {s}", - - "SetpointManager:Warmest,", - " Setpoint Manager Warmest,!- Name", - " Temperature, !- Control Variable", - " VAV System, !- HVAC Air Loop Name", - " 12.78, !- Minimum Setpoint Temperature {C}", - " 18.3, !- Maximum Setpoint Temperature {C}", - " MaximumTemperature, !- Strategy", - " VAV System Supply Fan Outlet; !- Setpoint Node or NodeList Name", - - "Coil:Cooling:Water,", - " VAV System Cooling Coil, !- Name", - " , !- Availability Schedule Name", - " 1.12294E-003, !- Design Water Flow Rate {m3/s}", - " 1.13941, !- Design Air Flow Rate {m3/s}", - " 7.22000, !- Design Inlet Water Temperature {C}", - " 25.56582, !- Design Inlet Air Temperature {C}", - " 12.80000, !- Design Outlet Air Temperature {C}", - " 1.18139E-002, !- Design Inlet Air Humidity Ratio {kgWater/kgDryAir}", - " 8.47862E-003, !- Design Outlet Air Humidity Ratio {kgWater/kgDryAir}", - " VAV System Cooling Coil ChW Inlet, !- Water Inlet Node Name", - " VAV System Cooling Coil ChW Outlet, !- Water Outlet Node Name", - " VAV System Mixed Air Outlet, !- Air Inlet Node Name", - " VAV System Cooling Coil Outlet, !- Air Outlet Node Name", - " DetailedAnalysis, !- Type of Analysis", - " CrossFlow; !- Heat Exchanger Configuration", - - "Controller:WaterCoil,", - " VAV System Cooling Coil Controller, !- Name", - " Temperature, !- Control Variable", - " Reverse, !- Action", - " Flow, !- Actuator Variable", - " VAV System Cooling Coil Outlet, !- Sensor Node Name", - " VAV System Cooling Coil ChW Inlet, !- Actuator Node Name", - " 4.24056E-004, !- Controller Convergence Tolerance {deltaC}", - " 1.12294E-003, !- Maximum Actuated Flow {m3/s}", - " 0; !- Minimum Actuated Flow {m3/s}", - - "SetpointManager:MixedAir,", - " VAV System Cooling Coil Air Temp Manager, !- Name", - " Temperature, !- Control Variable", - " VAV System Supply Fan Outlet, !- Reference Setpoint Node Name", - " VAV System Cooling Coil Outlet, !- Fan Inlet Node Name", - " VAV System Supply Fan Outlet, !- Fan Outlet Node Name", - " VAV System Mixed Air Nodes; !- Setpoint Node or NodeList Name", - - "NodeList,", - " VAV System Mixed Air Nodes, !- Name", - " VAV System Cooling Coil Outlet, !- Node 1 Name", - " VAV System Mixed Air Outlet; !- Node 2 Name", - - "Branch,", - " VAV System Cooling Coil ChW Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Coil:Cooling:Water, !- Component 1 Object Type", - " VAV System Cooling Coil, !- Component 1 Name", - " VAV System Cooling Coil ChW Inlet, !- Component 1 Inlet Node Name", - " VAV System Cooling Coil ChW Outlet; !- Component 1 Outlet Node Name", - - "Fan:VariableVolume,", - " VAV System Supply Fan, !- Name", - " FanAvailSched, !- Availability Schedule Name", - " 0.7, !- Fan Total Efficiency", - " 600, !- Pressure Rise {Pa}", - " 1.13941, !- Maximum Flow Rate {m3/s}", - " Fraction, !- Fan Power Minimum Flow Rate Input Method", - " 0.25, !- Fan Power Minimum Flow Fraction", - " , !- Fan Power Minimum Air Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1, !- Motor In Airstream Fraction", - " 0.35071223, !- Fan Power Coefficient 1", - " 0.30850535, !- Fan Power Coefficient 2", - " -0.54137364, !- Fan Power Coefficient 3", - " 0.87198823, !- Fan Power Coefficient 4", - " 0, !- Fan Power Coefficient 5", - " VAV System Cooling Coil Outlet, !- Air Inlet Node Name", - " VAV System Supply Fan Outlet; !- Air Outlet Node Name", - - "OutdoorAir:NodeList,", - " VAV System Outside Air Inlet; !- Node or NodeList Name 1", - - "AirLoopHVAC:OutdoorAirSystem,", - " VAV System OA System, !- Name", - " VAV System OA System Controllers, !- Controller List Name", - " VAV System OA System Equipment, !- Outdoor Air Equipment List Name", - " VAV System Availability Managers; !- Availability Manager List Name", - - "AirLoopHVAC:ControllerList,", - " VAV System OA System Controllers, !- Name", - " Controller:OutdoorAir, !- Controller 1 Object Type", - " VAV System OA Controller;!- Controller 1 Name", - - "AirLoopHVAC:OutdoorAirSystem:EquipmentList,", - " VAV System OA System Equipment, !- Name", - " OutdoorAir:Mixer, !- Component 1 Object Type", - " VAV System OA Mixing Box;!- Component 1 Name", - - "OutdoorAir:Mixer,", - " VAV System OA Mixing Box,!- Name", - " VAV System Mixed Air Outlet, !- Mixed Air Node Name", - " VAV System Outside Air Inlet, !- Outdoor Air Stream Node Name", - " VAV System Relief Air Outlet, !- Relief Air Stream Node Name", - " VAV System Air Loop Inlet; !- Return Air Stream Node Name", - - "Controller:OutdoorAir,", - " VAV System OA Controller,!- Name", - " VAV System Relief Air Outlet, !- Relief Air Outlet Node Name", - " VAV System Air Loop Inlet, !- Return Air Node Name", - " VAV System Mixed Air Outlet, !- Mixed Air Node Name", - " VAV System Outside Air Inlet, !- Actuator Node Name", - " 0.18880, !- Minimum Outdoor Air Flow Rate {m3/s}", - " 1.13941, !- Maximum Outdoor Air Flow Rate {m3/s}", - " DifferentialDryBulb, !- Economizer Control Type", - " ModulateFlow, !- Economizer Control Action Type", - " 19, !- Economizer Maximum Limit Dry-Bulb Temperature {C}", - " , !- Economizer Maximum Limit Enthalpy {J/kg}", - " , !- Economizer Maximum Limit Dewpoint Temperature {C}", - " , !- Electronic Enthalpy Limit Curve Name", - " 4, !- Economizer Minimum Limit Dry-Bulb Temperature {C}", - " NoLockout, !- Lockout Type", - " FixedMinimum, !- Minimum Limit Type", - " Min OA Sched; !- Minimum Outdoor Air Schedule Name", - - "Chiller:Electric:EIR,", - " Main Chiller, !- Name", - " autosize, !- Reference Capacity {W}", - " 3.2, !- Reference COP {W/W}", - " 6.67, !- Reference Leaving Chilled Water Temperature {C}", - " 29.4, !- Reference Entering Condenser Fluid Temperature {C}", - " autosize, !- Reference Chilled Water Flow Rate {m3/s}", - " autosize, !- Reference Condenser Fluid Flow Rate {m3/s}", - " Main Chiller RecipCapFT, !- Cooling Capacity Function of Temperature Curve Name", - " Main Chiller RecipEIRFT, !- Electric Input to Cooling Output Ratio Function of Temperature Curve Name", - " Main Chiller RecipEIRFPLR, !- Electric Input to Cooling Output Ratio Function of Part Load Ratio Curve Name", - " 0.0, !- Minimum Part Load Ratio", - " 1.0, !- Maximum Part Load Ratio", - " 1.0, !- Optimum Part Load Ratio", - " 0.25, !- Minimum Unloading Ratio", - " Main Chiller ChW Inlet, !- Chilled Water Inlet Node Name", - " Main Chiller ChW Outlet, !- Chilled Water Outlet Node Name", - " Main Chiller Cnd Inlet, !- Condenser Inlet Node Name", - " Main Chiller Cnd Outlet, !- Condenser Outlet Node Name", - " AirCooled, !- Condenser Type", - " 0.035, !- Condenser Fan Power Ratio {W/W}", - " 1, !- Fraction of Compressor Electric Consumption Rejected by Condenser", - " 5.0, !- Leaving Chilled Water Lower Temperature Limit {C}", - " ConstantFlow, !- Chiller Flow Mode", - " 0, !- Design Heat Recovery Water Flow Rate {m3/s}", - " , !- Heat Recovery Inlet Node Name", - " , !- Heat Recovery Outlet Node Name", - " 1.0; !- Sizing Factor", - - "Branch,", - " Main Chiller ChW Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Chiller:Electric:EIR, !- Component 1 Object Type", - " Main Chiller, !- Component 1 Name", - " Main Chiller ChW Inlet, !- Component 1 Inlet Node Name", - " Main Chiller ChW Outlet; !- Component 1 Outlet Node Name", - - "Curve:Biquadratic,", - " Main Chiller RecipCapFT, !- Name", - " 0.507883, !- Coefficient1 Constant", - " 0.145228, !- Coefficient2 x", - " -0.00625644, !- Coefficient3 x**2", - " -0.0011178, !- Coefficient4 y", - " -0.0001296, !- Coefficient5 y**2", - " -0.00028188, !- Coefficient6 x*y", - " 5, !- Minimum Value of x", - " 10, !- Maximum Value of x", - " 24, !- Minimum Value of y", - " 35; !- Maximum Value of y", - - "Curve:Biquadratic,", - " Main Chiller RecipEIRFT, !- Name", - " 1.03076, !- Coefficient1 Constant", - " -0.103536, !- Coefficient2 x", - " 0.00710208, !- Coefficient3 x**2", - " 0.0093186, !- Coefficient4 y", - " 0.00031752, !- Coefficient5 y**2", - " -0.00104328, !- Coefficient6 x*y", - " 5, !- Minimum Value of x", - " 10, !- Maximum Value of x", - " 24, !- Minimum Value of y", - " 35; !- Maximum Value of y", - - "Curve:Quadratic,", - " Main Chiller RecipEIRFPLR, !- Name", - " 0.088065, !- Coefficient1 Constant", - " 1.137742, !- Coefficient2 x", - " -0.225806, !- Coefficient3 x**2", - " 0, !- Minimum Value of x", - " 1; !- Maximum Value of x", - - "OutdoorAir:Node,", - " Main Chiller Cnd Inlet, !- Name", - " -1; !- Height Above Ground {m}", - - "Sizing:Plant,", - " Chilled Water Loop Chilled Water Loop, !- Plant or Condenser Loop Name", - " Cooling, !- Loop Type", - " 7.22, !- Design Loop Exit Temperature {C}", - " 6.67; !- Loop Design Temperature Difference {deltaC}", - - "PlantLoop,", - " Chilled Water Loop Chilled Water Loop, !- Name", - " Water, !- Fluid Type", - " , !- User Defined Fluid Type", - " Chilled Water Loop Chiller Operation, !- Plant Equipment Operation Scheme Name", - " Chilled Water Loop ChW Supply Outlet, !- Loop Temperature Setpoint Node Name", - " 98, !- Maximum Loop Temperature {C}", - " 1, !- Minimum Loop Temperature {C}", - " autosize, !- Maximum Loop Flow Rate {m3/s}", - " 0, !- Minimum Loop Flow Rate {m3/s}", - " autosize, !- Plant Loop Volume {m3}", - " Chilled Water Loop ChW Supply Inlet, !- Plant Side Inlet Node Name", - " Chilled Water Loop ChW Supply Outlet, !- Plant Side Outlet Node Name", - " Chilled Water Loop ChW Supply Side Branches, !- Plant Side Branch List Name", - " Chilled Water Loop ChW Supply Side Connectors, !- Plant Side Connector List Name", - " Chilled Water Loop ChW Demand Inlet, !- Demand Side Inlet Node Name", - " Chilled Water Loop ChW Demand Outlet, !- Demand Side Outlet Node Name", - " Chilled Water Loop ChW Demand Side Branches, !- Demand Side Branch List Name", - " Chilled Water Loop ChW Demand Side Connectors, !- Demand Side Connector List Name", - " SequentialLoad, !- Load Distribution Scheme", - " Chilled Water Loop Availability List, !- Availability Manager List Name", - " SingleSetpoint, !- Plant Loop Demand Calculation Scheme", - " None; !- Common Pipe Simulation", - - "PlantEquipmentOperationSchemes,", - " Chilled Water Loop Chiller Operation, !- Name", - " PlantEquipmentOperation:CoolingLoad, !- Control Scheme 1 Object Type", - " Chilled Water Loop Chiller Operation All Hours, !- Control Scheme 1 Name", - " Alwayson; !- Control Scheme 1 Schedule Name", - - "PlantEquipmentOperation:CoolingLoad,", - " Chilled Water Loop Chiller Operation All Hours, !- Name", - " 0, !- Load Range 1 Lower Limit {W}", - " 1000000000000000, !- Load Range 1 Upper Limit {W}", - " Chilled Water Loop All Chillers; !- Range 1 Equipment List Name", - - "PlantEquipmentList,", - " Chilled Water Loop All Chillers, !- Name", - " Chiller:Electric:EIR, !- Equipment 1 Object Type", - " Main Chiller; !- Equipment 1 Name", - - "NodeList,", - " Chilled Water Loop ChW Supply Setpoint Nodes, !- Name", - " Main Chiller ChW Outlet, !- Node 1 Name", - " Chilled Water Loop ChW Supply Outlet; !- Node 2 Name", - - "Schedule:Compact,", - " HVACTemplate-Always 7.22,!- Name", - " ANY NUMBER, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00, 7.22; !- Field 4", - - "SetpointManager:Scheduled,", - " Chilled Water Loop ChW Temp Manager, !- Name", - " Temperature, !- Control Variable", - " HVACTemplate-Always 7.22,!- Schedule Name", - " Chilled Water Loop ChW Supply Setpoint Nodes; !- Setpoint Node or NodeList Name", - - "BranchList,", - " Chilled Water Loop ChW Supply Side Branches, !- Name", - " Chilled Water Loop ChW Supply Inlet Branch, !- Branch 1 Name", - " Main Chiller ChW Branch, !- Branch 2 Name", - " Chilled Water Loop ChW Supply Bypass Branch, !- Branch 3 Name", - " Chilled Water Loop ChW Supply Outlet Branch; !- Branch 4 Name", - - "ConnectorList,", - " Chilled Water Loop ChW Supply Side Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " Chilled Water Loop ChW Supply Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " Chilled Water Loop ChW Supply Mixer; !- Connector 2 Name", - - "Connector:Splitter,", - " Chilled Water Loop ChW Supply Splitter, !- Name", - " Chilled Water Loop ChW Supply Inlet Branch, !- Inlet Branch Name", - " Chilled Water Loop ChW Supply Bypass Branch, !- Outlet Branch 1 Name", - " Main Chiller ChW Branch; !- Outlet Branch 2 Name", - - "Connector:Mixer,", - " Chilled Water Loop ChW Supply Mixer, !- Name", - " Chilled Water Loop ChW Supply Outlet Branch, !- Outlet Branch Name", - " Chilled Water Loop ChW Supply Bypass Branch, !- Inlet Branch 1 Name", - " Main Chiller ChW Branch; !- Inlet Branch 2 Name", - - "Branch,", - " Chilled Water Loop ChW Supply Bypass Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " Chilled Water Loop ChW Supply Side Bypass Pipe, !- Component 1 Name", - " Chilled Water Loop ChW Supply Bypass Inlet, !- Component 1 Inlet Node Name", - " Chilled Water Loop ChW Supply Bypass Outlet; !- Component 1 Outlet Node Name", - - "Pipe:Adiabatic,", - " Chilled Water Loop ChW Supply Side Bypass Pipe, !- Name", - " Chilled Water Loop ChW Supply Bypass Inlet, !- Inlet Node Name", - " Chilled Water Loop ChW Supply Bypass Outlet; !- Outlet Node Name", - - "Pump:ConstantSpeed,", - " Chilled Water Loop ChW Supply Pump, !- Name", - " Chilled Water Loop ChW Supply Inlet, !- Inlet Node Name", - " Chilled Water Loop ChW Pump Outlet, !- Outlet Node Name", - " autosize, !- Design Flow Rate {m3/s}", - " 179352, !- Design Pump Head {Pa}", - " autosize, !- Design Power Consumption {W}", - " 0.9, !- Motor Efficiency", - " 0, !- Fraction of Motor Inefficiencies to Fluid Stream", - " INTERMITTENT; !- Pump Control Type", - - "Branch,", - " Chilled Water Loop ChW Supply Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pump:ConstantSpeed, !- Component 1 Object Type", - " Chilled Water Loop ChW Supply Pump, !- Component 1 Name", - " Chilled Water Loop ChW Supply Inlet, !- Component 1 Inlet Node Name", - " Chilled Water Loop ChW Pump Outlet; !- Component 1 Outlet Node Name", - - "Branch,", - " Chilled Water Loop ChW Supply Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " Chilled Water Loop ChW Supply Outlet Pipe, !- Component 1 Name", - " Chilled Water Loop ChW Supply Outlet Pipe Inlet, !- Component 1 Inlet Node Name", - " Chilled Water Loop ChW Supply Outlet; !- Component 1 Outlet Node Name", - - "Pipe:Adiabatic,", - " Chilled Water Loop ChW Supply Outlet Pipe, !- Name", - " Chilled Water Loop ChW Supply Outlet Pipe Inlet, !- Inlet Node Name", - " Chilled Water Loop ChW Supply Outlet; !- Outlet Node Name", - - "BranchList,", - " Chilled Water Loop ChW Demand Side Branches, !- Name", - " Chilled Water Loop ChW Demand Inlet Branch, !- Branch 1 Name", - " VAV System Cooling Coil ChW Branch, !- Branch 2 Name", - " Chilled Water Loop ChW Demand Bypass Branch, !- Branch 3 Name", - " Chilled Water Loop ChW Demand Outlet Branch; !- Branch 4 Name", - - "ConnectorList,", - " Chilled Water Loop ChW Demand Side Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " Chilled Water Loop ChW Demand Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " Chilled Water Loop ChW Demand Mixer; !- Connector 2 Name", - - "Connector:Splitter,", - " Chilled Water Loop ChW Demand Splitter, !- Name", - " Chilled Water Loop ChW Demand Inlet Branch, !- Inlet Branch Name", - " Chilled Water Loop ChW Demand Bypass Branch, !- Outlet Branch 1 Name", - " VAV System Cooling Coil ChW Branch; !- Outlet Branch 2 Name", - - "Connector:Mixer,", - " Chilled Water Loop ChW Demand Mixer, !- Name", - " Chilled Water Loop ChW Demand Outlet Branch, !- Outlet Branch Name", - " Chilled Water Loop ChW Demand Bypass Branch, !- Inlet Branch 1 Name", - " VAV System Cooling Coil ChW Branch; !- Inlet Branch 2 Name", - - "Branch,", - " Chilled Water Loop ChW Demand Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " Chilled Water Loop ChW Demand Inlet Pipe, !- Component 1 Name", - " Chilled Water Loop ChW Demand Inlet, !- Component 1 Inlet Node Name", - " Chilled Water Loop ChW Demand Inlet Pipe Outlet; !- Component 1 Outlet Node Name", - - "Pipe:Adiabatic,", - " Chilled Water Loop ChW Demand Inlet Pipe, !- Name", - " Chilled Water Loop ChW Demand Inlet, !- Inlet Node Name", - " Chilled Water Loop ChW Demand Inlet Pipe Outlet; !- Outlet Node Name", - - "Branch,", - " Chilled Water Loop ChW Demand Bypass Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " Chilled Water Loop ChW Demand Side Bypass Pipe, !- Component 1 Name", - " Chilled Water Loop ChW Demand Bypass Inlet, !- Component 1 Inlet Node Name", - " Chilled Water Loop ChW Demand Bypass Outlet; !- Component 1 Outlet Node Name", - - "Pipe:Adiabatic,", - " Chilled Water Loop ChW Demand Side Bypass Pipe, !- Name", - " Chilled Water Loop ChW Demand Bypass Inlet, !- Inlet Node Name", - " Chilled Water Loop ChW Demand Bypass Outlet; !- Outlet Node Name", - - "Branch,", - " Chilled Water Loop ChW Demand Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " Chilled Water Loop ChW Demand Outlet Pipe, !- Component 1 Name", - " Chilled Water Loop ChW Demand Outlet Pipe Inlet, !- Component 1 Inlet Node Name", - " Chilled Water Loop ChW Demand Outlet; !- Component 1 Outlet Node Name", - - "Pipe:Adiabatic,", - " Chilled Water Loop ChW Demand Outlet Pipe, !- Name", - " Chilled Water Loop ChW Demand Outlet Pipe Inlet, !- Inlet Node Name", - " Chilled Water Loop ChW Demand Outlet; !- Outlet Node Name", - - "AvailabilityManagerAssignmentList,", - " Chilled Water Loop Availability List, !- Name", - " AvailabilityManager:LowTemperatureTurnOff, !- Availability Manager 1 Object Type", - " Chilled Water Loop Availability Low Temp Off; !- Availability Manager 1 Name", - - "AvailabilityManager:LowTemperatureTurnOff,", - " Chilled Water Loop Availability Low Temp Off, !- Name", - " Chilled Water Loop Outside Air Sensor, !- Sensor Node Name", - " 7.22; !- Temperature {C}", - - "OutdoorAir:Node,", - " Chilled Water Loop Outside Air Sensor, !- Name", - " -1; !- Height Above Ground {m}", - } ); - ASSERT_TRUE( process_idf( idf_objects ) ); - - OutputProcessor::TimeValue.allocate( 2 ); - DataGlobals::DDOnlySimulation = true; - - ManageSimulation(); - - EXPECT_EQ( ZoneEquipList( 1 ).NumOfEquipTypes, 2 ); - // first priority zone equipment is zone ADU - EXPECT_EQ( ZoneEquipmentManager::PrioritySimOrder( 1 ).EquipType, "ZONEHVAC:AIRDISTRIBUTIONUNIT" ); - EXPECT_EQ( ZoneEquipmentManager::PrioritySimOrder( 1 ).EquipName, "MAIN ZONE ATU" ); - EXPECT_EQ( HeatingCoils::HeatingCoil( 1 ).Name, "MAIN ZONE REHEAT COIL" ); - // second priority zone equipment is unit heater - EXPECT_EQ( ZoneEquipmentManager::PrioritySimOrder( 2 ).EquipType, "ZONEHVAC:UNITHEATER" ); - EXPECT_EQ( ZoneEquipmentManager::PrioritySimOrder( 2 ).EquipName, "UNITHEATER" ); - EXPECT_EQ( HeatingCoils::HeatingCoil( 2 ).Name, "UNITHEATER_ELECTRICHEATER" ); - // check the reheat coil output - EXPECT_NEAR( HeatingCoils::HeatingCoil( 1 ).HeatingCoilRate, 7028.9, 1.0 ); - // check the unit heater heating coil output - EXPECT_EQ( HeatingCoils::HeatingCoil( 2 ).HeatingCoilRate, 0.0 ); - - // re-set the hour of the day - DataGlobals::TimeStep = 1; - DataGlobals::HourOfDay = 24; - DataGlobals::CurrentTime = 24.0; - // set zone air node condition - Node( ZoneEquipConfig( 1 ).ZoneNode ).Temp = 20.0; - Node( ZoneEquipConfig( 1 ).ZoneNode ).HumRat = 0.005; + std::string const idf_objects = delimited_string({ + "Version,8.9;", + + "Timestep,1;", + + "Building,", + " Bldg, !- Name", + " 0.0, !- North Axis {deg}", + " Suburbs, !- Terrain", + " 0.05, !- Loads Convergence Tolerance Value", + " 0.05, !- Temperature Convergence Tolerance Value {deltaC}", + " MinimalShadowing, !- Solar Distribution", + " 30, !- Maximum Number of Warmup Days", + " 6; !- Minimum Number of Warmup Days", + + "SurfaceConvectionAlgorithm:Inside,Simple;", + "SurfaceConvectionAlgorithm:Outside,SimpleCombined;", + "HeatBalanceAlgorithm,ConductionTransferFunction;", + + "SimulationControl,", + " No, !- Do Zone Sizing Calculation", + " No, !- Do System Sizing Calculation", + " No, !- Do Plant Sizing Calculation", + " Yes, !- Run Simulation for Sizing Periods", + " No; !- Run Simulation for Weather File Run Periods", + + " Site:Location,", + " CHICAGO_IL_USA TMY2-94846, !- Name", + " 41.78, !- Latitude {deg}", + " -87.75, !- Longitude {deg}", + " -6.00, !- Time Zone {hr}", + " 190.00; !- Elevation {m}", + + " SizingPeriod:DesignDay,", + " CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, !- Name", + " 1, !- Month", + " 21, !- Day of Month", + " WinterDesignDay, !- Day Type", + " -12.3, !- Maximum Dry-Bulb Temperature {C}", + " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 4.9, !- Wind Speed {m/s}", + " 270, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 0.0; !- Sky Clearness", + + " Site:GroundTemperature:BuildingSurface,21.5,21.4,21.5,21.5,22.0,22.9,23.0,23.1,23.1,22.2,21.7,21.6;", + + " Material:NoMass,", + " R13LAYER, !- Name", + " Rough, !- Roughness", + " 2.290965, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + "Material:NoMass,", + " R31LAYER, !- Name", + " Rough, !- Roughness", + " 5.456, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + "Material,", + " C5 - 4 IN HW CONCRETE, !- Name", + " MediumRough, !- Roughness", + " 0.1014984, !- Thickness {m}", + " 1.729577, !- Conductivity {W/m-K}", + " 2242.585, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + + "Construction,", + " R13WALL, !- Name", + " R13LAYER; !- Outside Layer", + + "Construction,", + " FLOOR, !- Name", + " C5 - 4 IN HW CONCRETE; !- Outside Layer", + + "Construction,", + " ROOF31, !- Name", + " R31LAYER; !- Outside Layer", + + "Zone,", + " Main Zone, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, 0, 0, !- X,Y,Z {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + "GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " CounterClockWise, !- Vertex Entry Direction", + " relative; !- Coordinate System", + + "BuildingSurface:Detailed,", + " Zn001:Wall001, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " Main Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0, 0, 4.572000, !- X,Y,Z 1 {m}", + " 0, 0, 0, !- X,Y,Z 2 {m}", + " 15.24000, 0, 0, !- X,Y,Z 3 {m}", + " 15.24000, 0, 4.572000; !- X,Y,Z 4 {m}", + + "BuildingSurface:Detailed,", + " Zn001:Wall002, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " Main Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000, 0, 4.572000, !- X,Y,Z 1 {m}", + " 15.24000, 0, 0, !- X,Y,Z 2 {m}", + " 15.24000, 15.24000, 0, !- X,Y,Z 3 {m}", + " 15.24000, 15.24000, 4.572000; !- X,Y,Z 4 {m}", + + "BuildingSurface:Detailed,", + " Zn001:Wall003, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " Main Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000, 15.24000, 4.572000, !- X,Y,Z 1 {m}", + " 15.24000, 15.24000, 0, !- X,Y,Z 2 {m}", + " 0, 15.24000, 0, !- X,Y,Z 3 {m}", + " 0, 15.24000, 4.572000; !- X,Y,Z 4 {m}", + + "BuildingSurface:Detailed,", + " Zn001:Wall004, !- Name", + " Wall, !- Surface Type", + " R13WALL, !- Construction Name", + " Main Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0, 15.24000, 4.572000, !- X,Y,Z 1 {m}", + " 0, 15.24000, 0, !- X,Y,Z 2 {m}", + " 0, 0, 0, !- X,Y,Z 3 {m}", + " 0, 0, 4.572000; !- X,Y,Z 4 {m}", + + "BuildingSurface:Detailed,", + " Zn001:Flr001, !- Name", + " Floor, !- Surface Type", + " FLOOR, !- Construction Name", + " Main Zone, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn001:Flr001, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 15.24000, 0.000000, 0.0, !- X,Y,Z 1 {m}", + " 0.000000, 0.000000, 0.0, !- X,Y,Z 2 {m}", + " 0.000000, 15.24000, 0.0, !- X,Y,Z 3 {m}", + " 15.24000, 15.24000, 0.0; !- X,Y,Z 4 {m}", + + "BuildingSurface:Detailed,", + " Zn001:Roof001, !- Name", + " Roof, !- Surface Type", + " ROOF31, !- Construction Name", + " Main Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.000000, 15.24000, 4.572, !- X,Y,Z 1 {m}", + " 0.000000, 0.000000, 4.572, !- X,Y,Z 2 {m}", + " 15.24000, 0.000000, 4.572, !- X,Y,Z 3 {m}", + " 15.24000, 15.24000, 4.572; !- X,Y,Z 4 {m}", + + "ScheduleTypeLimits,", + " Any Number; !- Name", + + "ScheduleTypeLimits,", + " Fraction, !- Name", + " 0.0, !- Lower Limit Value", + " 1.0, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + "ScheduleTypeLimits,", + " Temperature, !- Name", + " -60, !- Lower Limit Value", + " 200, !- Upper Limit Value", + " CONTINUOUS, !- Numeric Type", + " Temperature; !- Unit Type", + + "ScheduleTypeLimits,", + " Control Type, !- Name", + " 0, !- Lower Limit Value", + " 4, !- Upper Limit Value", + " DISCRETE; !- Numeric Type", + + "ScheduleTypeLimits,", + " On/Off, !- Name", + " 0, !- Lower Limit Value", + " 1, !- Upper Limit Value", + " DISCRETE; !- Numeric Type", + + "ScheduleTypeLimits,", + " FlowRate, !- Name", + " 0.0, !- Lower Limit Value", + " 10, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + "ScheduleTypeLimits,", + " Humidity, !- Name", + " 0, !- Lower Limit Value", + " 100, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + "Schedule:Compact,", + " OCCUPY-1, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", + " Until: 8:00, 0.0, !- Field 4", + " Until: 11:00, 1.00, !- Field 6", + " Until: 12:00, 0.80, !- Field 8", + " Until: 13:00, 0.40, !- Field 10", + " Until: 14:00, 0.80, !- Field 12", + " Until: 18:00, 1.00, !- Field 14", + " Until: 19:00, 0.50, !- Field 16", + " Until: 21:00, 0.10, !- Field 18", + " Until: 24:00, 0.0, !- Field 20", + " For: Weekends WinterDesignDay Holiday, !- Field 21", + " Until: 24:00, 0.0; !- Field 23", + + "Schedule:Compact,", + " LIGHTS-1, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", + " Until: 8:00, 0.05, !- Field 4", + " Until: 9:00, 0.9, !- Field 6", + " Until: 10:00, 0.95, !- Field 8", + " Until: 11:00, 1.00, !- Field 10", + " Until: 12:00, 0.95, !- Field 12", + " Until: 13:00, 0.8, !- Field 14", + " Until: 14:00, 0.9, !- Field 16", + " Until: 18:00, 1.00, !- Field 18", + " Until: 19:00, 0.60, !- Field 20", + " Until: 21:00, 0.20, !- Field 22", + " Until: 24:00, 0.05, !- Field 24", + " For: Weekends WinterDesignDay Holiday, !- Field 25", + " Until: 24:00, 0.05; !- Field 27", + + "Schedule:Compact,", + " EQUIP-1, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", + " Until: 8:00, 0.02, !- Field 4", + " Until: 9:00, 0.4, !- Field 6", + " Until: 14:00, 0.9, !- Field 8", + " Until: 15:00, 0.8, !- Field 10", + " Until: 16:00, 0.7, !- Field 12", + " Until: 18:00, 0.5, !- Field 14", + " Until: 20:00, 0.3, !- Field 16", + " Until: 24:00, 0.02, !- Field 18", + " For: Weekends WinterDesignDay Holiday, !- Field 19", + " Until: 24:00, 0.2; !- Field 21", + + "Schedule:Compact,", + " INFIL-SCH, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 3/31, !- Field 1", + " For: WeekDays SummerDesignDay CustomDay1 CustomDay2, !- Field 2", + " Until: 24:00, 1.0, !- Field 4", + " For: AllOtherDays, !- Field 5", + " Until: 24:00, 1.0, !- Field 7", + " Through: 9/30, !- Field 8", + " For: AllDays, !- Field 9", + " Until: 24:00, 0.7, !- Field 11", + " Through: 12/31, !- Field 12", + " For: AllDays, !- Field 13", + " Until: 24:00, 1.0, !- Field 15", + " For: AllOtherDays, !- Field 16", + " Until: 24:00, 0.2; !- Field 18", + + "Schedule:Compact,", + " ActSchd, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00, 117.239997864;", + + "Schedule:Compact,", + " Htg-SetP-Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 1", + " Until: 24:00, 21.1; !- Field 2", + + "Schedule:Compact,", + " Clg-SetP-Sch, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00, 23.9; !- Field 4", + + "Schedule:Compact,", + " Min OA Sched, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00, 0.5; !- Field 3", + + "Schedule:Compact,", + " FanAvailSched, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 3/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00, 1.0, !- Field 4", + " Through: 9/30, !- Field 5", + " For: WeekDays, !- Field 6", + " Until: 7:00, 0.0, !- Field 8", + " Until: 17:00, 1.0, !- Field 10", + " Until: 24:00, 0.0, !- Field 12", + " For: SummerDesignDay WinterDesignDay, !- Field 13", + " Until: 24:00, 1.0, !- Field 15", + " For: AllOtherDays, !- Field 16", + " Until: 24:00, 0.0, !- Field 18", + " Through: 12/31, !- Field 19", + " For: AllDays, !- Field 20", + " Until: 24:00, 1.0; !- Field 22", + + "Schedule:Compact,", + " AlwaysOn, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00, 1.0; !- Field 4", + + "People,", + " Main Zone People 1, !- Name", + " Main Zone, !- Zone or ZoneList Name", + " OCCUPY-1, !- Number of People Schedule Name", + " people, !- Number of People Calculation Method", + " 20, !- Number of People", + " , !- People per Zone Floor Area {person/m2}", + " , !- Zone Floor Area per Person {m2/person}", + " 0.3, !- Fraction Radiant", + " AutoCalculate, !- Sensible Heat Fraction", + " ActSchd; !- Activity Level Schedule Name", + + "Lights,", + " Main Zone Lights 1, !- Name", + " Main Zone, !- Zone or ZoneList Name", + " LIGHTS-1, !- Schedule Name", + " LightingLevel, !- Design Level Calculation Method", + " 2964, !- Lighting Level {W}", + " , !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.2, !- Return Air Fraction", + " 0.59, !- Fraction Radiant", + " 0.2, !- Fraction Visible", + " 0, !- Fraction Replaceable", + " GeneralLights; !- End-Use Subcategory", + + "ElectricEquipment,", + " Main Zone ElecEq 1, !- Name", + " Main Zone, !- Zone or ZoneList Name", + " EQUIP-1, !- Schedule Name", + " EquipmentLevel, !- Design Level Calculation Method", + " 19760, !- Design Level {W}", + " , !- Watts per Zone Floor Area {W/m2}", + " , !- Watts per Person {W/person}", + " 0.5, !- Fraction Latent", + " 0.3, !- Fraction Radiant", + " 0; !- Fraction Lost", + + "ZoneInfiltration:DesignFlowRate,", + " Main Zone Infil 1, !- Name", + " Main Zone, !- Zone or ZoneList Name", + " INFIL-SCH, !- Schedule Name", + " flow/zone, !- Design Flow Rate Calculation Method", + " 0.031089, !- Design Flow Rate {m3/s}", + " , !- Flow per Zone Floor Area {m3/s-m2}", + " , !- Flow per Exterior Surface Area {m3/s-m2}", + " , !- Air Changes per Hour {1/hr}", + " 0, !- Constant Term Coefficient", + " 0, !- Temperature Term Coefficient", + " 0.2237, !- Velocity Term Coefficient", + " 0; !- Velocity Squared Term Coefficient", + + "Sizing:Parameters,", + " 1.2, !- Heating Sizing Factor", + " 1.2; !- Cooling Sizing Factor", + + "ThermostatSetpoint:DualSetpoint,", + " All Zones Dual SP Control, !- Name", + " Htg-SetP-Sch, !- Heating Setpoint Temperature Schedule Name", + " Clg-SetP-Sch; !- Cooling Setpoint Temperature Schedule Name", + + "Schedule:Compact,", + " ZONE CONTROL TYPE SCHED, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00, 4; !- Field 4", + + "ZoneControl:Thermostat,", + " Main Zone Thermostat, !- Name", + " Main Zone, !- Zone or ZoneList Name", + " ZONE CONTROL TYPE SCHED, !- Control Type Schedule Name", + " ThermostatSetpoint:DualSetpoint, !- Control 1 Object Type", + " All Zones Dual SP Control; !- Control 1 Name", + + "ZoneHVAC:EquipmentConnections,", + " Main Zone, !- Zone Name", + " Main Zone Equipment, !- Zone Conditioning Equipment List Name", + " Main Zone Inlet Nodes, !- Zone Air Inlet Node or NodeList Name", + " Main Zone Exh Node List, !- Zone Air Exhaust Node or NodeList Name", + " Main Zone Zone Air Node, !- Zone Air Node Name", + " Main Zone Return Outlet; !- Zone Return Air Node Name", + + "NodeList,", + " Main Zone Inlet Nodes, !- Name", + " Main Zone Supply Inlet, !- Node 1 Name", + " Node 33; !- Node 2 Name", + + "NodeList,", + " Main Zone Exh Node List, !- Name", + " Node 32; !- Node 1 Name", + + "ZoneHVAC:EquipmentList,", + " Main Zone Equipment, !- Name", + " SequentialLoad, !- Load Distribution Scheme", + " ZoneHVAC:AirDistributionUnit, !- Zone Equipment 1 Object Type", + " Main Zone ATU, !- Zone Equipment 1 Name", + " 1, !- Zone Equipment 1 Cooling Sequence", + " 1, !- Zone Equipment 1 Heating or No-Load Sequence", + " ZoneHVAC:UnitHeater, !- Zone Equipment 2 Object Type", + " UnitHeater, !- Zone Equipment 2 Name", + " 2, !- Zone Equipment 2 Cooling Sequence", + " 2; !- Zone Equipment 2 Heating or No-Load Sequence", + + "ZoneHVAC:AirDistributionUnit,", + " Main Zone ATU, !- Name", + " Main Zone Supply Inlet, !- Air Distribution Unit Outlet Node Name", + " AirTerminal:SingleDuct:VAV:Reheat, !- Air Terminal Object Type", + " Main Zone VAV Reheat; !- Air Terminal Name", + + "AirTerminal:SingleDuct:VAV:Reheat,", + " Main Zone VAV Reheat, !- Name", + " , !- Availability Schedule Name", + " Main Zone Damper Outlet, !- Damper Air Outlet Node Name", + " Main Zone Zone Equip Inlet, !- Air Inlet Node Name", + " 1.13941, !- Maximum Air Flow Rate {m3/s}", + " Constant, !- Zone Minimum Air Flow Input Method", + " 0.3, !- Constant Minimum Air Flow Fraction", + " , !- Fixed Minimum Air Flow Rate {m3/s}", + " , !- Minimum Air Flow Fraction Schedule Name", + " Coil:Heating:Electric, !- Reheat Coil Object Type", + " Main Zone Reheat Coil, !- Reheat Coil Name", + " , !- Maximum Hot Water or Steam Flow Rate {m3/s}", + " , !- Minimum Hot Water or Steam Flow Rate {m3/s}", + " Main Zone Supply Inlet, !- Air Outlet Node Name", + " 0.001, !- Convergence Tolerance", + " Reverse, !- Damper Heating Action", + " , !- Maximum Flow per Zone Floor Area During Reheat {m3/s-m2}", + " ; !- Maximum Flow Fraction During Reheat", + + "Coil:Heating:Electric,", + " Main Zone Reheat Coil, !- Name", + " , !- Availability Schedule Name", + " 1, !- Efficiency", + " 17542.25595, !- Nominal Capacity {W}", + " Main Zone Damper Outlet, !- Air Inlet Node Name", + " Main Zone Supply Inlet; !- Air Outlet Node Name", + + "ZoneHVAC:UnitHeater,", + " UnitHeater, !- Name", + " Alwayson, !- Availability Schedule Name", + " Node 32, !- Air Inlet Node Name", + " Node 33, !- Air Outlet Node Name", + " Fan:OnOff, !- Supply Air Fan Object Type", + " UnitHeater_SupplyFan, !- Supply Air Fan Name", + " 0.18880, !- Maximum Supply Air Flow Rate {m3/s}", + " Coil:Heating:Electric, !- Heating Coil Object Type", + " UnitHeater_ElectricHeater, !- Heating Coil Name", + " , !- Supply Air Fan Operating Mode Schedule Name", + " No, !- Supply Air Fan Operation During No Heating", + " , !- Maximum Hot Water or Steam Flow Rate {m3/s}", + " 0, !- Minimum Hot Water or Steam Flow Rate {m3/s}", + " 0.001; !- Heating Convergence Tolerance", + + "Fan:OnOff,", + " UnitHeater_SupplyFan, !- Name", + " Alwayson, !- Availability Schedule Name", + " 0.5, !- Fan Total Efficiency", + " 250, !- Pressure Rise {Pa}", + " 0.18880, !- Maximum Flow Rate {m3/s}", + " 0.9, !- Motor Efficiency", + " 1, !- Motor In Airstream Fraction", + " Node 32, !- Air Inlet Node Name", + " UnitHeater_FanOutletNode,!- Air Outlet Node Name", + " , !- Fan Power Ratio Function of Speed Ratio Curve Name", + " , !- Fan Efficiency Ratio Function of Speed Ratio Curve Name", + " General; !- End-Use Subcategory", + + "Coil:Heating:Electric,", + " UnitHeater_ElectricHeater, !- Name", + " Alwayson, !- Availability Schedule Name", + " 1, !- Efficiency", + " 15235.58538, !- Nominal Capacity {W}", + " UnitHeater_FanOutletNode,!- Air Inlet Node Name", + " Node 33; !- Air Outlet Node Name", + + "AirLoopHVAC,", + " VAV System, !- Name", + " VAV System Controllers, !- Controller List Name", + " VAV System Availability Managers, !- Availability Manager List Name", + " 1.13941, !- Design Supply Air Flow Rate {m3/s}", + " VAV System Branches, !- Branch List Name", + " , !- Connector List Name", + " VAV System Air Loop Inlet, !- Supply Side Inlet Node Name", + " VAV System Return Air Outlet, !- Demand Side Outlet Node Name", + " VAV System Supply Path Inlet, !- Demand Side Inlet Node Names", + " VAV System Supply Fan Outlet; !- Supply Side Outlet Node Names", + + "AirLoopHVAC:ControllerList,", + " VAV System Controllers, !- Name", + " Controller:WaterCoil, !- Controller 1 Object Type", + " VAV System Cooling Coil Controller; !- Controller 1 Name", + + "BranchList,", + " VAV System Branches, !- Name", + " VAV System Main Branch; !- Branch 1 Name", + + "Branch,", + " VAV System Main Branch, !- Name", + " , !- Pressure Drop Curve Name", + " AirLoopHVAC:OutdoorAirSystem, !- Component 1 Object Type", + " VAV System OA System, !- Component 1 Name", + " VAV System Air Loop Inlet, !- Component 1 Inlet Node Name", + " VAV System Mixed Air Outlet, !- Component 1 Outlet Node Name", + " Coil:Cooling:Water, !- Component 2 Object Type", + " VAV System Cooling Coil, !- Component 2 Name", + " VAV System Mixed Air Outlet, !- Component 2 Inlet Node Name", + " VAV System Cooling Coil Outlet, !- Component 2 Outlet Node Name", + " Fan:VariableVolume, !- Component 3 Object Type", + " VAV System Supply Fan, !- Component 3 Name", + " VAV System Cooling Coil Outlet, !- Component 3 Inlet Node Name", + " VAV System Supply Fan Outlet; !- Component 3 Outlet Node Name", + + "AirLoopHVAC:SupplyPath,", + " VAV System Supply Path, !- Name", + " VAV System Supply Path Inlet, !- Supply Air Path Inlet Node Name", + " AirLoopHVAC:ZoneSplitter,!- Component 1 Object Type", + " VAV System Zone Splitter;!- Component 1 Name", + + "AirLoopHVAC:ZoneSplitter,", + " VAV System Zone Splitter,!- Name", + " VAV System Supply Path Inlet, !- Inlet Node Name", + " Main Zone Zone Equip Inlet; !- Outlet 1 Node Name", + + "AirLoopHVAC:ReturnPath,", + " VAV System Return Path, !- Name", + " VAV System Return Air Outlet, !- Return Air Path Outlet Node Name", + " AirLoopHVAC:ZoneMixer, !- Component 1 Object Type", + " VAV System Zone Mixer; !- Component 1 Name", + + "AirLoopHVAC:ZoneMixer,", + " VAV System Zone Mixer, !- Name", + " VAV System Return Air Outlet, !- Outlet Node Name", + " Main Zone Return Outlet; !- Inlet 1 Node Name", + + "AvailabilityManagerAssignmentList,", + " VAV System Availability Managers, !- Name", + " AvailabilityManager:NightCycle, !- Availability Manager 1 Object Type", + " VAV System Availability; !- Availability Manager 1 Name", + + "AvailabilityManager:NightCycle,", + " VAV System Availability, !- Name", + " Alwayson, !- Applicability Schedule Name", + " FanAvailSched, !- Fan Schedule Name", + " CycleOnAny, !- Control Type", + " 0.2, !- Thermostat Tolerance {deltaC}", + " FixedRunTime, !- Cycling Run Time Control Type", + " 3600; !- Cycling Run Time {s}", + + "SetpointManager:Warmest,", + " Setpoint Manager Warmest,!- Name", + " Temperature, !- Control Variable", + " VAV System, !- HVAC Air Loop Name", + " 12.78, !- Minimum Setpoint Temperature {C}", + " 18.3, !- Maximum Setpoint Temperature {C}", + " MaximumTemperature, !- Strategy", + " VAV System Supply Fan Outlet; !- Setpoint Node or NodeList Name", + + "Coil:Cooling:Water,", + " VAV System Cooling Coil, !- Name", + " , !- Availability Schedule Name", + " 1.12294E-003, !- Design Water Flow Rate {m3/s}", + " 1.13941, !- Design Air Flow Rate {m3/s}", + " 7.22000, !- Design Inlet Water Temperature {C}", + " 25.56582, !- Design Inlet Air Temperature {C}", + " 12.80000, !- Design Outlet Air Temperature {C}", + " 1.18139E-002, !- Design Inlet Air Humidity Ratio {kgWater/kgDryAir}", + " 8.47862E-003, !- Design Outlet Air Humidity Ratio {kgWater/kgDryAir}", + " VAV System Cooling Coil ChW Inlet, !- Water Inlet Node Name", + " VAV System Cooling Coil ChW Outlet, !- Water Outlet Node Name", + " VAV System Mixed Air Outlet, !- Air Inlet Node Name", + " VAV System Cooling Coil Outlet, !- Air Outlet Node Name", + " DetailedAnalysis, !- Type of Analysis", + " CrossFlow; !- Heat Exchanger Configuration", + + "Controller:WaterCoil,", + " VAV System Cooling Coil Controller, !- Name", + " Temperature, !- Control Variable", + " Reverse, !- Action", + " Flow, !- Actuator Variable", + " VAV System Cooling Coil Outlet, !- Sensor Node Name", + " VAV System Cooling Coil ChW Inlet, !- Actuator Node Name", + " 4.24056E-004, !- Controller Convergence Tolerance {deltaC}", + " 1.12294E-003, !- Maximum Actuated Flow {m3/s}", + " 0; !- Minimum Actuated Flow {m3/s}", + + "SetpointManager:MixedAir,", + " VAV System Cooling Coil Air Temp Manager, !- Name", + " Temperature, !- Control Variable", + " VAV System Supply Fan Outlet, !- Reference Setpoint Node Name", + " VAV System Cooling Coil Outlet, !- Fan Inlet Node Name", + " VAV System Supply Fan Outlet, !- Fan Outlet Node Name", + " VAV System Mixed Air Nodes; !- Setpoint Node or NodeList Name", + + "NodeList,", + " VAV System Mixed Air Nodes, !- Name", + " VAV System Cooling Coil Outlet, !- Node 1 Name", + " VAV System Mixed Air Outlet; !- Node 2 Name", + + "Branch,", + " VAV System Cooling Coil ChW Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Coil:Cooling:Water, !- Component 1 Object Type", + " VAV System Cooling Coil, !- Component 1 Name", + " VAV System Cooling Coil ChW Inlet, !- Component 1 Inlet Node Name", + " VAV System Cooling Coil ChW Outlet; !- Component 1 Outlet Node Name", + + "Fan:VariableVolume,", + " VAV System Supply Fan, !- Name", + " FanAvailSched, !- Availability Schedule Name", + " 0.7, !- Fan Total Efficiency", + " 600, !- Pressure Rise {Pa}", + " 1.13941, !- Maximum Flow Rate {m3/s}", + " Fraction, !- Fan Power Minimum Flow Rate Input Method", + " 0.25, !- Fan Power Minimum Flow Fraction", + " , !- Fan Power Minimum Air Flow Rate {m3/s}", + " 0.9, !- Motor Efficiency", + " 1, !- Motor In Airstream Fraction", + " 0.35071223, !- Fan Power Coefficient 1", + " 0.30850535, !- Fan Power Coefficient 2", + " -0.54137364, !- Fan Power Coefficient 3", + " 0.87198823, !- Fan Power Coefficient 4", + " 0, !- Fan Power Coefficient 5", + " VAV System Cooling Coil Outlet, !- Air Inlet Node Name", + " VAV System Supply Fan Outlet; !- Air Outlet Node Name", + + "OutdoorAir:NodeList,", + " VAV System Outside Air Inlet; !- Node or NodeList Name 1", + + "AirLoopHVAC:OutdoorAirSystem,", + " VAV System OA System, !- Name", + " VAV System OA System Controllers, !- Controller List Name", + " VAV System OA System Equipment, !- Outdoor Air Equipment List Name", + " VAV System Availability Managers; !- Availability Manager List Name", + + "AirLoopHVAC:ControllerList,", + " VAV System OA System Controllers, !- Name", + " Controller:OutdoorAir, !- Controller 1 Object Type", + " VAV System OA Controller;!- Controller 1 Name", + + "AirLoopHVAC:OutdoorAirSystem:EquipmentList,", + " VAV System OA System Equipment, !- Name", + " OutdoorAir:Mixer, !- Component 1 Object Type", + " VAV System OA Mixing Box;!- Component 1 Name", + + "OutdoorAir:Mixer,", + " VAV System OA Mixing Box,!- Name", + " VAV System Mixed Air Outlet, !- Mixed Air Node Name", + " VAV System Outside Air Inlet, !- Outdoor Air Stream Node Name", + " VAV System Relief Air Outlet, !- Relief Air Stream Node Name", + " VAV System Air Loop Inlet; !- Return Air Stream Node Name", + + "Controller:OutdoorAir,", + " VAV System OA Controller,!- Name", + " VAV System Relief Air Outlet, !- Relief Air Outlet Node Name", + " VAV System Air Loop Inlet, !- Return Air Node Name", + " VAV System Mixed Air Outlet, !- Mixed Air Node Name", + " VAV System Outside Air Inlet, !- Actuator Node Name", + " 0.18880, !- Minimum Outdoor Air Flow Rate {m3/s}", + " 1.13941, !- Maximum Outdoor Air Flow Rate {m3/s}", + " DifferentialDryBulb, !- Economizer Control Type", + " ModulateFlow, !- Economizer Control Action Type", + " 19, !- Economizer Maximum Limit Dry-Bulb Temperature {C}", + " , !- Economizer Maximum Limit Enthalpy {J/kg}", + " , !- Economizer Maximum Limit Dewpoint Temperature {C}", + " , !- Electronic Enthalpy Limit Curve Name", + " 4, !- Economizer Minimum Limit Dry-Bulb Temperature {C}", + " NoLockout, !- Lockout Type", + " FixedMinimum, !- Minimum Limit Type", + " Min OA Sched; !- Minimum Outdoor Air Schedule Name", + + "Chiller:Electric:EIR,", + " Main Chiller, !- Name", + " autosize, !- Reference Capacity {W}", + " 3.2, !- Reference COP {W/W}", + " 6.67, !- Reference Leaving Chilled Water Temperature {C}", + " 29.4, !- Reference Entering Condenser Fluid Temperature {C}", + " autosize, !- Reference Chilled Water Flow Rate {m3/s}", + " autosize, !- Reference Condenser Fluid Flow Rate {m3/s}", + " Main Chiller RecipCapFT, !- Cooling Capacity Function of Temperature Curve Name", + " Main Chiller RecipEIRFT, !- Electric Input to Cooling Output Ratio Function of Temperature Curve Name", + " Main Chiller RecipEIRFPLR, !- Electric Input to Cooling Output Ratio Function of Part Load Ratio Curve Name", + " 0.0, !- Minimum Part Load Ratio", + " 1.0, !- Maximum Part Load Ratio", + " 1.0, !- Optimum Part Load Ratio", + " 0.25, !- Minimum Unloading Ratio", + " Main Chiller ChW Inlet, !- Chilled Water Inlet Node Name", + " Main Chiller ChW Outlet, !- Chilled Water Outlet Node Name", + " Main Chiller Cnd Inlet, !- Condenser Inlet Node Name", + " Main Chiller Cnd Outlet, !- Condenser Outlet Node Name", + " AirCooled, !- Condenser Type", + " 0.035, !- Condenser Fan Power Ratio {W/W}", + " 1, !- Fraction of Compressor Electric Consumption Rejected by Condenser", + " 5.0, !- Leaving Chilled Water Lower Temperature Limit {C}", + " ConstantFlow, !- Chiller Flow Mode", + " 0, !- Design Heat Recovery Water Flow Rate {m3/s}", + " , !- Heat Recovery Inlet Node Name", + " , !- Heat Recovery Outlet Node Name", + " 1.0; !- Sizing Factor", + + "Branch,", + " Main Chiller ChW Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Chiller:Electric:EIR, !- Component 1 Object Type", + " Main Chiller, !- Component 1 Name", + " Main Chiller ChW Inlet, !- Component 1 Inlet Node Name", + " Main Chiller ChW Outlet; !- Component 1 Outlet Node Name", + + "Curve:Biquadratic,", + " Main Chiller RecipCapFT, !- Name", + " 0.507883, !- Coefficient1 Constant", + " 0.145228, !- Coefficient2 x", + " -0.00625644, !- Coefficient3 x**2", + " -0.0011178, !- Coefficient4 y", + " -0.0001296, !- Coefficient5 y**2", + " -0.00028188, !- Coefficient6 x*y", + " 5, !- Minimum Value of x", + " 10, !- Maximum Value of x", + " 24, !- Minimum Value of y", + " 35; !- Maximum Value of y", + + "Curve:Biquadratic,", + " Main Chiller RecipEIRFT, !- Name", + " 1.03076, !- Coefficient1 Constant", + " -0.103536, !- Coefficient2 x", + " 0.00710208, !- Coefficient3 x**2", + " 0.0093186, !- Coefficient4 y", + " 0.00031752, !- Coefficient5 y**2", + " -0.00104328, !- Coefficient6 x*y", + " 5, !- Minimum Value of x", + " 10, !- Maximum Value of x", + " 24, !- Minimum Value of y", + " 35; !- Maximum Value of y", + + "Curve:Quadratic,", + " Main Chiller RecipEIRFPLR, !- Name", + " 0.088065, !- Coefficient1 Constant", + " 1.137742, !- Coefficient2 x", + " -0.225806, !- Coefficient3 x**2", + " 0, !- Minimum Value of x", + " 1; !- Maximum Value of x", + + "OutdoorAir:Node,", + " Main Chiller Cnd Inlet, !- Name", + " -1; !- Height Above Ground {m}", + + "Sizing:Plant,", + " Chilled Water Loop Chilled Water Loop, !- Plant or Condenser Loop Name", + " Cooling, !- Loop Type", + " 7.22, !- Design Loop Exit Temperature {C}", + " 6.67; !- Loop Design Temperature Difference {deltaC}", + + "PlantLoop,", + " Chilled Water Loop Chilled Water Loop, !- Name", + " Water, !- Fluid Type", + " , !- User Defined Fluid Type", + " Chilled Water Loop Chiller Operation, !- Plant Equipment Operation Scheme Name", + " Chilled Water Loop ChW Supply Outlet, !- Loop Temperature Setpoint Node Name", + " 98, !- Maximum Loop Temperature {C}", + " 1, !- Minimum Loop Temperature {C}", + " autosize, !- Maximum Loop Flow Rate {m3/s}", + " 0, !- Minimum Loop Flow Rate {m3/s}", + " autosize, !- Plant Loop Volume {m3}", + " Chilled Water Loop ChW Supply Inlet, !- Plant Side Inlet Node Name", + " Chilled Water Loop ChW Supply Outlet, !- Plant Side Outlet Node Name", + " Chilled Water Loop ChW Supply Side Branches, !- Plant Side Branch List Name", + " Chilled Water Loop ChW Supply Side Connectors, !- Plant Side Connector List Name", + " Chilled Water Loop ChW Demand Inlet, !- Demand Side Inlet Node Name", + " Chilled Water Loop ChW Demand Outlet, !- Demand Side Outlet Node Name", + " Chilled Water Loop ChW Demand Side Branches, !- Demand Side Branch List Name", + " Chilled Water Loop ChW Demand Side Connectors, !- Demand Side Connector List Name", + " SequentialLoad, !- Load Distribution Scheme", + " Chilled Water Loop Availability List, !- Availability Manager List Name", + " SingleSetpoint, !- Plant Loop Demand Calculation Scheme", + " None; !- Common Pipe Simulation", + + "PlantEquipmentOperationSchemes,", + " Chilled Water Loop Chiller Operation, !- Name", + " PlantEquipmentOperation:CoolingLoad, !- Control Scheme 1 Object Type", + " Chilled Water Loop Chiller Operation All Hours, !- Control Scheme 1 Name", + " Alwayson; !- Control Scheme 1 Schedule Name", + + "PlantEquipmentOperation:CoolingLoad,", + " Chilled Water Loop Chiller Operation All Hours, !- Name", + " 0, !- Load Range 1 Lower Limit {W}", + " 1000000000000000, !- Load Range 1 Upper Limit {W}", + " Chilled Water Loop All Chillers; !- Range 1 Equipment List Name", + + "PlantEquipmentList,", + " Chilled Water Loop All Chillers, !- Name", + " Chiller:Electric:EIR, !- Equipment 1 Object Type", + " Main Chiller; !- Equipment 1 Name", + + "NodeList,", + " Chilled Water Loop ChW Supply Setpoint Nodes, !- Name", + " Main Chiller ChW Outlet, !- Node 1 Name", + " Chilled Water Loop ChW Supply Outlet; !- Node 2 Name", + + "Schedule:Compact,", + " HVACTemplate-Always 7.22,!- Name", + " ANY NUMBER, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00, 7.22; !- Field 4", + + "SetpointManager:Scheduled,", + " Chilled Water Loop ChW Temp Manager, !- Name", + " Temperature, !- Control Variable", + " HVACTemplate-Always 7.22,!- Schedule Name", + " Chilled Water Loop ChW Supply Setpoint Nodes; !- Setpoint Node or NodeList Name", + + "BranchList,", + " Chilled Water Loop ChW Supply Side Branches, !- Name", + " Chilled Water Loop ChW Supply Inlet Branch, !- Branch 1 Name", + " Main Chiller ChW Branch, !- Branch 2 Name", + " Chilled Water Loop ChW Supply Bypass Branch, !- Branch 3 Name", + " Chilled Water Loop ChW Supply Outlet Branch; !- Branch 4 Name", + + "ConnectorList,", + " Chilled Water Loop ChW Supply Side Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " Chilled Water Loop ChW Supply Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " Chilled Water Loop ChW Supply Mixer; !- Connector 2 Name", + + "Connector:Splitter,", + " Chilled Water Loop ChW Supply Splitter, !- Name", + " Chilled Water Loop ChW Supply Inlet Branch, !- Inlet Branch Name", + " Chilled Water Loop ChW Supply Bypass Branch, !- Outlet Branch 1 Name", + " Main Chiller ChW Branch; !- Outlet Branch 2 Name", + + "Connector:Mixer,", + " Chilled Water Loop ChW Supply Mixer, !- Name", + " Chilled Water Loop ChW Supply Outlet Branch, !- Outlet Branch Name", + " Chilled Water Loop ChW Supply Bypass Branch, !- Inlet Branch 1 Name", + " Main Chiller ChW Branch; !- Inlet Branch 2 Name", + + "Branch,", + " Chilled Water Loop ChW Supply Bypass Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " Chilled Water Loop ChW Supply Side Bypass Pipe, !- Component 1 Name", + " Chilled Water Loop ChW Supply Bypass Inlet, !- Component 1 Inlet Node Name", + " Chilled Water Loop ChW Supply Bypass Outlet; !- Component 1 Outlet Node Name", + + "Pipe:Adiabatic,", + " Chilled Water Loop ChW Supply Side Bypass Pipe, !- Name", + " Chilled Water Loop ChW Supply Bypass Inlet, !- Inlet Node Name", + " Chilled Water Loop ChW Supply Bypass Outlet; !- Outlet Node Name", + + "Pump:ConstantSpeed,", + " Chilled Water Loop ChW Supply Pump, !- Name", + " Chilled Water Loop ChW Supply Inlet, !- Inlet Node Name", + " Chilled Water Loop ChW Pump Outlet, !- Outlet Node Name", + " autosize, !- Design Flow Rate {m3/s}", + " 179352, !- Design Pump Head {Pa}", + " autosize, !- Design Power Consumption {W}", + " 0.9, !- Motor Efficiency", + " 0, !- Fraction of Motor Inefficiencies to Fluid Stream", + " INTERMITTENT; !- Pump Control Type", + + "Branch,", + " Chilled Water Loop ChW Supply Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pump:ConstantSpeed, !- Component 1 Object Type", + " Chilled Water Loop ChW Supply Pump, !- Component 1 Name", + " Chilled Water Loop ChW Supply Inlet, !- Component 1 Inlet Node Name", + " Chilled Water Loop ChW Pump Outlet; !- Component 1 Outlet Node Name", + + "Branch,", + " Chilled Water Loop ChW Supply Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " Chilled Water Loop ChW Supply Outlet Pipe, !- Component 1 Name", + " Chilled Water Loop ChW Supply Outlet Pipe Inlet, !- Component 1 Inlet Node Name", + " Chilled Water Loop ChW Supply Outlet; !- Component 1 Outlet Node Name", + + "Pipe:Adiabatic,", + " Chilled Water Loop ChW Supply Outlet Pipe, !- Name", + " Chilled Water Loop ChW Supply Outlet Pipe Inlet, !- Inlet Node Name", + " Chilled Water Loop ChW Supply Outlet; !- Outlet Node Name", + + "BranchList,", + " Chilled Water Loop ChW Demand Side Branches, !- Name", + " Chilled Water Loop ChW Demand Inlet Branch, !- Branch 1 Name", + " VAV System Cooling Coil ChW Branch, !- Branch 2 Name", + " Chilled Water Loop ChW Demand Bypass Branch, !- Branch 3 Name", + " Chilled Water Loop ChW Demand Outlet Branch; !- Branch 4 Name", + + "ConnectorList,", + " Chilled Water Loop ChW Demand Side Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " Chilled Water Loop ChW Demand Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " Chilled Water Loop ChW Demand Mixer; !- Connector 2 Name", + + "Connector:Splitter,", + " Chilled Water Loop ChW Demand Splitter, !- Name", + " Chilled Water Loop ChW Demand Inlet Branch, !- Inlet Branch Name", + " Chilled Water Loop ChW Demand Bypass Branch, !- Outlet Branch 1 Name", + " VAV System Cooling Coil ChW Branch; !- Outlet Branch 2 Name", + + "Connector:Mixer,", + " Chilled Water Loop ChW Demand Mixer, !- Name", + " Chilled Water Loop ChW Demand Outlet Branch, !- Outlet Branch Name", + " Chilled Water Loop ChW Demand Bypass Branch, !- Inlet Branch 1 Name", + " VAV System Cooling Coil ChW Branch; !- Inlet Branch 2 Name", + + "Branch,", + " Chilled Water Loop ChW Demand Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " Chilled Water Loop ChW Demand Inlet Pipe, !- Component 1 Name", + " Chilled Water Loop ChW Demand Inlet, !- Component 1 Inlet Node Name", + " Chilled Water Loop ChW Demand Inlet Pipe Outlet; !- Component 1 Outlet Node Name", + + "Pipe:Adiabatic,", + " Chilled Water Loop ChW Demand Inlet Pipe, !- Name", + " Chilled Water Loop ChW Demand Inlet, !- Inlet Node Name", + " Chilled Water Loop ChW Demand Inlet Pipe Outlet; !- Outlet Node Name", + + "Branch,", + " Chilled Water Loop ChW Demand Bypass Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " Chilled Water Loop ChW Demand Side Bypass Pipe, !- Component 1 Name", + " Chilled Water Loop ChW Demand Bypass Inlet, !- Component 1 Inlet Node Name", + " Chilled Water Loop ChW Demand Bypass Outlet; !- Component 1 Outlet Node Name", + + "Pipe:Adiabatic,", + " Chilled Water Loop ChW Demand Side Bypass Pipe, !- Name", + " Chilled Water Loop ChW Demand Bypass Inlet, !- Inlet Node Name", + " Chilled Water Loop ChW Demand Bypass Outlet; !- Outlet Node Name", + + "Branch,", + " Chilled Water Loop ChW Demand Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " Chilled Water Loop ChW Demand Outlet Pipe, !- Component 1 Name", + " Chilled Water Loop ChW Demand Outlet Pipe Inlet, !- Component 1 Inlet Node Name", + " Chilled Water Loop ChW Demand Outlet; !- Component 1 Outlet Node Name", + + "Pipe:Adiabatic,", + " Chilled Water Loop ChW Demand Outlet Pipe, !- Name", + " Chilled Water Loop ChW Demand Outlet Pipe Inlet, !- Inlet Node Name", + " Chilled Water Loop ChW Demand Outlet; !- Outlet Node Name", + + "AvailabilityManagerAssignmentList,", + " Chilled Water Loop Availability List, !- Name", + " AvailabilityManager:LowTemperatureTurnOff, !- Availability Manager 1 Object Type", + " Chilled Water Loop Availability Low Temp Off; !- Availability Manager 1 Name", + + "AvailabilityManager:LowTemperatureTurnOff,", + " Chilled Water Loop Availability Low Temp Off, !- Name", + " Chilled Water Loop Outside Air Sensor, !- Sensor Node Name", + " 7.22; !- Temperature {C}", + + "OutdoorAir:Node,", + " Chilled Water Loop Outside Air Sensor, !- Name", + " -1; !- Height Above Ground {m}", + }); + ASSERT_TRUE(process_idf(idf_objects)); + + OutputProcessor::TimeValue.allocate(2); + DataGlobals::DDOnlySimulation = true; + + ManageSimulation(); + + EXPECT_EQ(ZoneEquipList(1).NumOfEquipTypes, 2); + // first priority zone equipment is zone ADU + EXPECT_EQ(ZoneEquipmentManager::PrioritySimOrder(1).EquipType, "ZONEHVAC:AIRDISTRIBUTIONUNIT"); + EXPECT_EQ(ZoneEquipmentManager::PrioritySimOrder(1).EquipName, "MAIN ZONE ATU"); + EXPECT_EQ(HeatingCoils::HeatingCoil(1).Name, "MAIN ZONE REHEAT COIL"); + // second priority zone equipment is unit heater + EXPECT_EQ(ZoneEquipmentManager::PrioritySimOrder(2).EquipType, "ZONEHVAC:UNITHEATER"); + EXPECT_EQ(ZoneEquipmentManager::PrioritySimOrder(2).EquipName, "UNITHEATER"); + EXPECT_EQ(HeatingCoils::HeatingCoil(2).Name, "UNITHEATER_ELECTRICHEATER"); + // check the reheat coil output + EXPECT_NEAR(HeatingCoils::HeatingCoil(1).HeatingCoilRate, 7028.9, 1.0); + // check the unit heater heating coil output + EXPECT_EQ(HeatingCoils::HeatingCoil(2).HeatingCoilRate, 0.0); + + // re-set the hour of the day + DataGlobals::TimeStep = 1; + DataGlobals::HourOfDay = 24; + DataGlobals::CurrentTime = 24.0; + // set zone air node condition + Node(ZoneEquipConfig(1).ZoneNode).Temp = 20.0; + Node(ZoneEquipConfig(1).ZoneNode).HumRat = 0.005; Node(ZoneEquipConfig(1).ZoneNode).Enthalpy = Psychrometrics::PsyHFnTdbW(Node(ZoneEquipConfig(1).ZoneNode).Temp, Node(ZoneEquipConfig(1).ZoneNode).HumRat); - // set the zone loads - ZoneSysEnergyDemand( 1 ).TotalOutputRequired = 0.0; - ZoneSysEnergyDemand( 1 ).OutputRequiredToHeatingSP = 15000.0; - ZoneSysEnergyDemand( 1 ).OutputRequiredToCoolingSP = 20000.0; - // local variables - bool SimZoneEquipment = true; - bool SimAirLoops = true; - bool FirstHVACIteration = false; - // re-simulate the zone HVAC equipment per the priority order - ZoneEquipmentManager::ManageZoneEquipment( FirstHVACIteration, SimZoneEquipment, SimAirLoops ); - // check the reheat coil nominal capacity - EXPECT_NEAR( HeatingCoils::HeatingCoil( 1 ).NominalCapacity, 17542.3, 1.0 ); - // check the reheat coil outputis the full capacity - EXPECT_NEAR( HeatingCoils::HeatingCoil( 1 ).HeatingCoilRate, 17542.3, 1.0 ); - // check the unit heater heating coil is handling the remaining load - EXPECT_NEAR( HeatingCoils::HeatingCoil( 2 ).HeatingCoilRate, 213.9, 1.0 ); - // finaly check that RemaingingOutputRequired is zero - EXPECT_EQ( ZoneSysEnergyDemand( 1 ).RemainingOutputRequired, 0.0 ); + // set the zone loads + ZoneSysEnergyDemand(1).TotalOutputRequired = 0.0; + ZoneSysEnergyDemand(1).OutputRequiredToHeatingSP = 15000.0; + ZoneSysEnergyDemand(1).OutputRequiredToCoolingSP = 20000.0; + // local variables + bool SimZoneEquipment = true; + bool SimAirLoops = true; + bool FirstHVACIteration = false; + // re-simulate the zone HVAC equipment per the priority order + ZoneEquipmentManager::ManageZoneEquipment(FirstHVACIteration, SimZoneEquipment, SimAirLoops); + // check the reheat coil nominal capacity + EXPECT_NEAR(HeatingCoils::HeatingCoil(1).NominalCapacity, 17542.3, 1.0); + // check the reheat coil outputis the full capacity + EXPECT_NEAR(HeatingCoils::HeatingCoil(1).HeatingCoilRate, 17542.3, 1.0); + // check the unit heater heating coil is handling the remaining load + EXPECT_NEAR(HeatingCoils::HeatingCoil(2).HeatingCoilRate, 213.9, 1.0); + // finaly check that RemaingingOutputRequired is zero + EXPECT_EQ(ZoneSysEnergyDemand(1).RemainingOutputRequired, 0.0); } diff --git a/tst/EnergyPlus/unit/VentilatedSlab.unit.cc b/tst/EnergyPlus/unit/VentilatedSlab.unit.cc index 60ee57f87dc..aa92b1fb24a 100644 --- a/tst/EnergyPlus/unit/VentilatedSlab.unit.cc +++ b/tst/EnergyPlus/unit/VentilatedSlab.unit.cc @@ -75,2268 +75,2268 @@ using namespace EnergyPlus::HeatBalanceManager; using namespace EnergyPlus::ScheduleManager; using namespace EnergyPlus::SurfaceGeometry; -TEST_F( EnergyPlusFixture, VentilatedSlab_CalcVentilatedSlabCoilOutputTest ) +TEST_F(EnergyPlusFixture, VentilatedSlab_CalcVentilatedSlabCoilOutputTest) { - BeginEnvrnFlag = false; - Real64 PowerMet = 0.0; - Real64 LatOutputProvided = 0.0; - - NumOfVentSlabs = 1; - VentSlab.allocate( NumOfVentSlabs ); - int Item = 1; - int FanOutletNode = 1; - int OutletNode = 2; - VentSlab( Item ).FanOutletNode = FanOutletNode; - VentSlab( Item ).RadInNode = OutletNode; - Node.allocate( 2 ); - Node( OutletNode ).MassFlowRate = 0.5; - - // Calcs being tested - // VentSlab( Item ).HeatCoilPower = max( 0.0, QUnitOut ); - // VentSlab( Item ).SensCoolCoilPower = std::abs( min( 0.0, QUnitOut ) ); - // VentSlab( Item ).TotCoolCoilPower = std::abs( min( 0.0, QTotUnitOut ) ); - // VentSlab( Item ).LateCoolCoilPower = VentSlab( Item ).TotCoolCoilPower - VentSlab( Item ).SensCoolCoilPower; - // LatOutputProvided = AirMassFlow * ( SpecHumOut - SpecHumIn ); // Latent rate (kg/s), dehumid = negative - // PowerMet = QUnitOut; - - // Sensible Heating - Node( FanOutletNode ).Temp = 15.0; - Node( FanOutletNode ).HumRat = 0.003; - Node( OutletNode ).Temp = 20.0; - Node( OutletNode ).HumRat = 0.003; - CalcVentilatedSlabCoilOutput( Item, PowerMet, LatOutputProvided ); - - EXPECT_TRUE( VentSlab( Item ).HeatCoilPower > 0.0 ); - EXPECT_TRUE( VentSlab( Item ).SensCoolCoilPower == 0.0 ); - EXPECT_TRUE( VentSlab( Item ).TotCoolCoilPower == 0.0 ); - EXPECT_TRUE( VentSlab( Item ).LateCoolCoilPower == 0.0 ); - EXPECT_TRUE( LatOutputProvided == 0.0 ); - EXPECT_TRUE( PowerMet > 0.0 ); - - // Sensible Cooling - Node( FanOutletNode ).Temp = 25.0; - Node( FanOutletNode ).HumRat = 0.003; - Node( OutletNode ).Temp = 20.0; - Node( OutletNode ).HumRat = 0.003; - CalcVentilatedSlabCoilOutput( Item, PowerMet, LatOutputProvided ); - - EXPECT_TRUE( VentSlab( Item ).HeatCoilPower == 0.0 ); - EXPECT_TRUE( VentSlab( Item ).SensCoolCoilPower > 0.0 ); - EXPECT_TRUE( VentSlab( Item ).TotCoolCoilPower == VentSlab( Item ).SensCoolCoilPower ); - EXPECT_TRUE( VentSlab( Item ).LateCoolCoilPower == 0.0 ); - EXPECT_TRUE( LatOutputProvided == 0.0 ); - EXPECT_TRUE( PowerMet < 0.0 ); - - // Sensible and Latent Cooling - Node( FanOutletNode ).Temp = 25.0; - Node( FanOutletNode ).HumRat = 0.008; - Node( OutletNode ).Temp = 20.0; - Node( OutletNode ).HumRat = 0.003; - CalcVentilatedSlabCoilOutput( Item, PowerMet, LatOutputProvided ); - - EXPECT_TRUE( VentSlab( Item ).HeatCoilPower == 0.0 ); - EXPECT_TRUE( VentSlab( Item ).SensCoolCoilPower > 0.0 ); - EXPECT_TRUE( VentSlab( Item ).TotCoolCoilPower > VentSlab( Item ).SensCoolCoilPower ); - EXPECT_TRUE( VentSlab( Item ).LateCoolCoilPower > 0.0 ); - EXPECT_TRUE( LatOutputProvided < 0.0 ); - EXPECT_TRUE( PowerMet < 0.0 ); - - // Deallocate everything - VentSlab.deallocate(); - Node.deallocate(); + BeginEnvrnFlag = false; + Real64 PowerMet = 0.0; + Real64 LatOutputProvided = 0.0; + + NumOfVentSlabs = 1; + VentSlab.allocate(NumOfVentSlabs); + int Item = 1; + int FanOutletNode = 1; + int OutletNode = 2; + VentSlab(Item).FanOutletNode = FanOutletNode; + VentSlab(Item).RadInNode = OutletNode; + Node.allocate(2); + Node(OutletNode).MassFlowRate = 0.5; + + // Calcs being tested + // VentSlab( Item ).HeatCoilPower = max( 0.0, QUnitOut ); + // VentSlab( Item ).SensCoolCoilPower = std::abs( min( 0.0, QUnitOut ) ); + // VentSlab( Item ).TotCoolCoilPower = std::abs( min( 0.0, QTotUnitOut ) ); + // VentSlab( Item ).LateCoolCoilPower = VentSlab( Item ).TotCoolCoilPower - VentSlab( Item ).SensCoolCoilPower; + // LatOutputProvided = AirMassFlow * ( SpecHumOut - SpecHumIn ); // Latent rate (kg/s), dehumid = negative + // PowerMet = QUnitOut; + + // Sensible Heating + Node(FanOutletNode).Temp = 15.0; + Node(FanOutletNode).HumRat = 0.003; + Node(OutletNode).Temp = 20.0; + Node(OutletNode).HumRat = 0.003; + CalcVentilatedSlabCoilOutput(Item, PowerMet, LatOutputProvided); + + EXPECT_TRUE(VentSlab(Item).HeatCoilPower > 0.0); + EXPECT_TRUE(VentSlab(Item).SensCoolCoilPower == 0.0); + EXPECT_TRUE(VentSlab(Item).TotCoolCoilPower == 0.0); + EXPECT_TRUE(VentSlab(Item).LateCoolCoilPower == 0.0); + EXPECT_TRUE(LatOutputProvided == 0.0); + EXPECT_TRUE(PowerMet > 0.0); + + // Sensible Cooling + Node(FanOutletNode).Temp = 25.0; + Node(FanOutletNode).HumRat = 0.003; + Node(OutletNode).Temp = 20.0; + Node(OutletNode).HumRat = 0.003; + CalcVentilatedSlabCoilOutput(Item, PowerMet, LatOutputProvided); + + EXPECT_TRUE(VentSlab(Item).HeatCoilPower == 0.0); + EXPECT_TRUE(VentSlab(Item).SensCoolCoilPower > 0.0); + EXPECT_TRUE(VentSlab(Item).TotCoolCoilPower == VentSlab(Item).SensCoolCoilPower); + EXPECT_TRUE(VentSlab(Item).LateCoolCoilPower == 0.0); + EXPECT_TRUE(LatOutputProvided == 0.0); + EXPECT_TRUE(PowerMet < 0.0); + + // Sensible and Latent Cooling + Node(FanOutletNode).Temp = 25.0; + Node(FanOutletNode).HumRat = 0.008; + Node(OutletNode).Temp = 20.0; + Node(OutletNode).HumRat = 0.003; + CalcVentilatedSlabCoilOutput(Item, PowerMet, LatOutputProvided); + + EXPECT_TRUE(VentSlab(Item).HeatCoilPower == 0.0); + EXPECT_TRUE(VentSlab(Item).SensCoolCoilPower > 0.0); + EXPECT_TRUE(VentSlab(Item).TotCoolCoilPower > VentSlab(Item).SensCoolCoilPower); + EXPECT_TRUE(VentSlab(Item).LateCoolCoilPower > 0.0); + EXPECT_TRUE(LatOutputProvided < 0.0); + EXPECT_TRUE(PowerMet < 0.0); + + // Deallocate everything + VentSlab.deallocate(); + Node.deallocate(); } TEST_F(EnergyPlusFixture, VentilatedSlab_InitVentilatedSlabTest) { - BeginEnvrnFlag = false; - bool ErrorsFound( false ); // function returns true on error - int Item( 1 ); // index for the current ventilated slab - int VentSlabZoneNum( 1 ); // number of zone being served - bool FirstHVACIteration( true ); // TRUE if 1st HVAC simulation of system timestep - - std::string const idf_objects = delimited_string( { - " Version,8.4;", - - " SimulationControl,", - " No, !- Do Zone Sizing Calculation", - " No, !- Do System Sizing Calculation", - " No, !- Do Plant Sizing Calculation", - " Yes, !- Run Simulation for Sizing Periods", - " No; !- Run Simulation for Weather File Run Periods", - - " Building,", - " Building, !- Name", - " 30., !- North Axis {deg}", - " City, !- Terrain", - " 0.04, !- Loads Convergence Tolerance Value", - " 0.4, !- Temperature Convergence Tolerance Value {deltaC}", - " FullExterior, !- Solar Distribution", - " 25, !- Maximum Number of Warmup Days", - " 6; !- Minimum Number of Warmup Days", - - " Timestep,6;", - - " Site:Location,", - " CHICAGO_IL_USA TMY2-94846, !- Name", - " 41.78, !- Latitude {deg}", - " -87.75, !- Longitude {deg}", - " -6.00, !- Time Zone {hr}", - " 190.00; !- Elevation {m}", - - " SizingPeriod:DesignDay,", - " CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, !- Name", - " 1, !- Month", - " 21, !- Day of Month", - " WinterDesignDay, !- Day Type", - " -17.3, !- Maximum Dry-Bulb Temperature {C}", - " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 4.9, !- Wind Speed {m/s}", - " 270, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 1; !- Sky Clearness", - - " SizingPeriod:DesignDay,", - " CHICAGO_IL_USA Annual Cooling 1% Design Conditions DB/MCWB, !- Name", - " 7, !- Month", - " 21, !- Day of Month", - " SummerDesignDay, !- Day Type", - " 31.5, !- Maximum Dry-Bulb Temperature {C}", - " 10.7, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " 23.0, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 5.3, !- Wind Speed {m/s}", - " 230, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 1.0; !- Sky Clearness", - - " Site:GroundTemperature:BuildingSurface,20.03,20.03,20.13,20.30,20.43,20.52,20.62,20.77,20.78,20.55,20.44,20.20;", - - " ScheduleTypeLimits,", - " Any Number; !- Name", - - " ScheduleTypeLimits,", - " Fraction, !- Name", - " 0.0, !- Lower Limit Value", - " 1.0, !- Upper Limit Value", - " CONTINUOUS; !- Numeric Type", - - " ScheduleTypeLimits,", - " Temperature, !- Name", - " -60, !- Lower Limit Value", - " 200, !- Upper Limit Value", - " CONTINUOUS, !- Numeric Type", - " Temperature; !- Unit Type", - - " ScheduleTypeLimits,", - " Control Type, !- Name", - " 0, !- Lower Limit Value", - " 4, !- Upper Limit Value", - " DISCRETE; !- Numeric Type", - - " ScheduleTypeLimits,", - " On/Off, !- Name", - " 0, !- Lower Limit Value", - " 1, !- Upper Limit Value", - " DISCRETE; !- Numeric Type", - - " Schedule:Compact,", - " INFIL-SCH, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0; !- Field 3", - - " Schedule:Compact,", - " ON, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0; !- Field 3", - - " Schedule:Compact,", - " CW Loop Temp Schedule, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,6.67; !- Field 3", - - " Schedule:Compact,", - " HW Loop Temp Schedule, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,60.0; !- Field 3", - - " Schedule:Compact,", - " VentSlabMaxOA, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0; !- Field 3", - - " Schedule:Compact,", - " VentSlabHotHighAir, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,30; !- Field 3", - - " Schedule:Compact,", - " VentSlabHotLowAir, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,25; !- Field 3", - - " Schedule:Compact,", - " VentSlabHotLowControl, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,10; !- Field 3", - - " Schedule:Compact,", - " VentSlabHotHighControl, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,20; !- Field 3", - - " Schedule:Compact,", - " VentSlabCoolHighControl, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,30; !- Field 3", - - " Schedule:Compact,", - " VentSlabCoolHighAir, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,23; !- Field 3", - - " Schedule:Compact,", - " VentSlabCoolLowAir, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,17; !- Field 3", - - " Schedule:Compact,", - " FanAndCoilAvailSched, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,1.0; !- Field 3", - - " Schedule:Compact,", - " VentSlabCoolLowControl, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,26; !- Field 3", - - " Schedule:Compact,", - " VentSlabCoolLowControl2, !- Name", - " Temperature, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,20; !- Field 3", - - " Schedule:Compact,", - " ShadeTransSch, !- Name", - " Fraction, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00,0.0; !- Field 3", - - " Material,", - " WD10, !- Name", - " MediumSmooth, !- Roughness", - " 0.667, !- Thickness {m}", - " 0.115, !- Conductivity {W/m-K}", - " 513, !- Density {kg/m3}", - " 1381, !- Specific Heat {J/kg-K}", - " 0.9, !- Thermal Absorptance", - " 0.78, !- Solar Absorptance", - " 0.78; !- Visible Absorptance", - - " Material,", - " RG01, !- Name", - " Rough, !- Roughness", - " 1.2700000E-02, !- Thickness {m}", - " 1.442000, !- Conductivity {W/m-K}", - " 881.0000, !- Density {kg/m3}", - " 1674.000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - - " Material,", - " BR01, !- Name", - " VeryRough, !- Roughness", - " 0.009, !- Thickness {m}", - " 0.1620000, !- Conductivity {W/m-K}", - " 1121.000, !- Density {kg/m3}", - " 1464.000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7000000, !- Solar Absorptance", - " 0.7000000; !- Visible Absorptance", - - " Material,", - " IN46, !- Name", - " VeryRough, !- Roughness", - " 0.09, !- Thickness {m}", - " 2.3000000E-02, !- Conductivity {W/m-K}", - " 24.00000, !- Density {kg/m3}", - " 1590.000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.5000000, !- Solar Absorptance", - " 0.5000000; !- Visible Absorptance", - - " Material,", - " WD01, !- Name", - " MediumSmooth, !- Roughness", - " 1.9099999E-02, !- Thickness {m}", - " 0.1150000, !- Conductivity {W/m-K}", - " 513.0000, !- Density {kg/m3}", - " 1381.000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7800000, !- Solar Absorptance", - " 0.7800000; !- Visible Absorptance", - - " Material,", - " PW03, !- Name", - " MediumSmooth, !- Roughness", - " 1.2700000E-02, !- Thickness {m}", - " 0.1150000, !- Conductivity {W/m-K}", - " 545.0000, !- Density {kg/m3}", - " 1213.000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7800000, !- Solar Absorptance", - " 0.7800000; !- Visible Absorptance", - - " Material,", - " IN02, !- Name", - " Rough, !- Roughness", - " 9.0099998E-02, !- Thickness {m}", - " 4.3000001E-02, !- Conductivity {W/m-K}", - " 10.00000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " GP01, !- Name", - " MediumSmooth, !- Roughness", - " 1.2700000E-02, !- Thickness {m}", - " 0.1600000, !- Conductivity {W/m-K}", - " 801.0000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " GP02, !- Name", - " MediumSmooth, !- Roughness", - " 1.5900001E-02, !- Thickness {m}", - " 0.1600000, !- Conductivity {W/m-K}", - " 801.0000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " CC03, !- Name", - " MediumRough, !- Roughness", - " 0.1016000, !- Thickness {m}", - " 1.310000, !- Conductivity {W/m-K}", - " 2243.000, !- Density {kg/m3}", - " 837.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - - " Material,", - " COnc, !- Name", - " VeryRough, !- Roughness", - " 0.025, !- Thickness {m}", - " 0.72, !- Conductivity {W/m-K}", - " 1860, !- Density {kg/m3}", - " 780, !- Specific Heat {J/kg-K}", - " 0.9, !- Thermal Absorptance", - " 0.7, !- Solar Absorptance", - " 0.7; !- Visible Absorptance", - - " Material,", - " FINISH FLOORING - TILE 1 / 16 IN, !- Name", - " Smooth, !- Roughness", - " 1.6000000E-03, !- Thickness {m}", - " 0.1700000, !- Conductivity {W/m-K}", - " 1922.210, !- Density {kg/m3}", - " 1250.000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.5000000, !- Solar Absorptance", - " 0.5000000; !- Visible Absorptance", - - " Material,", - " GYP1, !- Name", - " MediumRough, !- Roughness", - " 1.2700000E-02, !- Thickness {m}", - " 7.8450000E-01, !- Conductivity {W/m-K}", - " 1842.1221, !- Density {kg/m3}", - " 988.000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.5000000, !- Solar Absorptance", - " 0.5000000; !- Visible Absorptance", - - " Material,", - " GYP2, !- Name", - " MediumRough, !- Roughness", - " 1.9050000E-02, !- Thickness {m}", - " 7.8450000E-01, !- Conductivity {W/m-K}", - " 1842.1221, !- Density {kg/m3}", - " 988.000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.5000000, !- Solar Absorptance", - " 0.5000000; !- Visible Absorptance", - - " Material,", - " INS - EXPANDED EXT POLYSTYRENE R12, !- Name", - " Rough, !- Roughness", - " 0.07, !- Thickness {m}", - " 2.0000000E-02, !- Conductivity {W/m-K}", - " 56.06000, !- Density {kg/m3}", - " 1210.000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.5000000, !- Solar Absorptance", - " 0.5000000; !- Visible Absorptance", - - " Material,", - " CONCRETE, !- Name", - " MediumRough, !- Roughness", - " 0.5000000, !- Thickness {m}", - " 1.290000, !- Conductivity {W/m-K}", - " 2242.580, !- Density {kg/m3}", - " 830.00000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6000000, !- Solar Absorptance", - " 0.6000000; !- Visible Absorptance", - - " Material,", - " CLN-INS, !- Name", - " Rough, !- Roughness", - " 0.005, !- Thickness {m}", - " 0.5, !- Conductivity {W/m-K}", - " 56.06000, !- Density {kg/m3}", - " 1210.000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.5000000, !- Solar Absorptance", - " 0.5000000; !- Visible Absorptance", - - " Material:NoMass,", - " CP01, !- Name", - " Rough, !- Roughness", - " 0.3670000, !- Thermal Resistance {m2-K/W}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material:NoMass,", - " MAT-SB-U, !- Name", - " Rough, !- Roughness", - " 0.117406666, !- Thermal Resistance {m2-K/W}", - " 0.65, !- Thermal Absorptance", - " 0.65, !- Solar Absorptance", - " 0.65; !- Visible Absorptance", - - " Material:NoMass,", - " MAT-CLNG-1, !- Name", - " Rough, !- Roughness", - " 0.652259290, !- Thermal Resistance {m2-K/W}", - " 0.65, !- Thermal Absorptance", - " 0.65, !- Solar Absorptance", - " 0.65; !- Visible Absorptance", - - " Material:NoMass,", - " MAT-FLOOR-1, !- Name", - " Rough, !- Roughness", - " 3.522199631, !- Thermal Resistance {m2-K/W}", - " 0.65, !- Thermal Absorptance", - " 0.65, !- Solar Absorptance", - " 0.65; !- Visible Absorptance", - - " Material:AirGap,", - " AL21, !- Name", - " 0.1570000; !- Thermal Resistance {m2-K/W}", - - " Material:AirGap,", - " AL23, !- Name", - " 0.1530000; !- Thermal Resistance {m2-K/W}", - - " WindowMaterial:Glazing,", - " CLEAR 3MM, !- Name", - " SpectralAverage, !- Optical Data Type", - " , !- Window Glass Spectral Data Set Name", - " 0.003, !- Thickness {m}", - " 0.837, !- Solar Transmittance at Normal Incidence", - " 0.075, !- Front Side Solar Reflectance at Normal Incidence", - " 0.075, !- Back Side Solar Reflectance at Normal Incidence", - " 0.898, !- Visible Transmittance at Normal Incidence", - " 0.081, !- Front Side Visible Reflectance at Normal Incidence", - " 0.081, !- Back Side Visible Reflectance at Normal Incidence", - " 0.0, !- Infrared Transmittance at Normal Incidence", - " 0.84, !- Front Side Infrared Hemispherical Emissivity", - " 0.84, !- Back Side Infrared Hemispherical Emissivity", - " 0.9; !- Conductivity {W/m-K}", - - " WindowMaterial:Glazing,", - " GREY 3MM, !- Name", - " SpectralAverage, !- Optical Data Type", - " , !- Window Glass Spectral Data Set Name", - " 0.003, !- Thickness {m}", - " 0.626, !- Solar Transmittance at Normal Incidence", - " 0.061, !- Front Side Solar Reflectance at Normal Incidence", - " 0.061, !- Back Side Solar Reflectance at Normal Incidence", - " 0.611, !- Visible Transmittance at Normal Incidence", - " 0.061, !- Front Side Visible Reflectance at Normal Incidence", - " 0.061, !- Back Side Visible Reflectance at Normal Incidence", - " 0.0, !- Infrared Transmittance at Normal Incidence", - " 0.84, !- Front Side Infrared Hemispherical Emissivity", - " 0.84, !- Back Side Infrared Hemispherical Emissivity", - " 0.9; !- Conductivity {W/m-K}", - - " WindowMaterial:Glazing,", - " CLEAR 6MM, !- Name", - " SpectralAverage, !- Optical Data Type", - " , !- Window Glass Spectral Data Set Name", - " 0.006, !- Thickness {m}", - " 0.775, !- Solar Transmittance at Normal Incidence", - " 0.071, !- Front Side Solar Reflectance at Normal Incidence", - " 0.071, !- Back Side Solar Reflectance at Normal Incidence", - " 0.881, !- Visible Transmittance at Normal Incidence", - " 0.080, !- Front Side Visible Reflectance at Normal Incidence", - " 0.080, !- Back Side Visible Reflectance at Normal Incidence", - " 0.0, !- Infrared Transmittance at Normal Incidence", - " 0.84, !- Front Side Infrared Hemispherical Emissivity", - " 0.84, !- Back Side Infrared Hemispherical Emissivity", - " 0.9; !- Conductivity {W/m-K}", - - " WindowMaterial:Glazing,", - " LoE CLEAR 6MM, !- Name", - " SpectralAverage, !- Optical Data Type", - " , !- Window Glass Spectral Data Set Name", - " 0.006, !- Thickness {m}", - " 0.600, !- Solar Transmittance at Normal Incidence", - " 0.170, !- Front Side Solar Reflectance at Normal Incidence", - " 0.220, !- Back Side Solar Reflectance at Normal Incidence", - " 0.840, !- Visible Transmittance at Normal Incidence", - " 0.055, !- Front Side Visible Reflectance at Normal Incidence", - " 0.078, !- Back Side Visible Reflectance at Normal Incidence", - " 0.0, !- Infrared Transmittance at Normal Incidence", - " 0.84, !- Front Side Infrared Hemispherical Emissivity", - " 0.10, !- Back Side Infrared Hemispherical Emissivity", - " 0.9; !- Conductivity {W/m-K}", - - " WindowMaterial:Gas,", - " AIR 6MM, !- Name", - " Air, !- Gas Type", - " 0.0063; !- Thickness {m}", - - " WindowMaterial:Gas,", - " AIR 13MM, !- Name", - " Air, !- Gas Type", - " 0.0127; !- Thickness {m}", - - " WindowMaterial:Gas,", - " ARGON 13MM, !- Name", - " Argon, !- Gas Type", - " 0.0127; !- Thickness {m}", - - " Construction,", - " ROOF-1, !- Name", - " RG01, !- Outside Layer", - " BR01, !- Layer 2", - " IN46, !- Layer 3", - " WD01; !- Layer 4", - - " Construction,", - " WALL-1, !- Name", - " WD01, !- Outside Layer", - " PW03, !- Layer 2", - " IN02, !- Layer 3", - " GP01; !- Layer 4", - - " Construction,", - " CLNG-1, !- Name", - " MAT-CLNG-1; !- Outside Layer", - - " Construction,", - " SB-U, !- Name", - " MAT-SB-U; !- Outside Layer", - - " Construction,", - " FLOOR-1, !- Name", - " MAT-FLOOR-1; !- Outside Layer", - - " Construction,", - " FLOOR-SLAB-1, !- Name", - " CONCRETE, !- Outside Layer", - " INS - EXPANDED EXT POLYSTYRENE R12, !- Layer 2", - " CONC, !- Layer 3", - " FINISH FLOORING - TILE 1 / 16 IN; !- Layer 4", - - " Construction,", - " INT-WALL-1, !- Name", - " GP02, !- Outside Layer", - " AL21, !- Layer 2", - " GP02; !- Layer 3", - - " Construction,", - " Dbl Clr 3mm/13mm Air, !- Name", - " CLEAR 3MM, !- Outside Layer", - " AIR 13MM, !- Layer 2", - " CLEAR 3MM; !- Layer 3", - - " Construction,", - " Dbl Clr 3mm/13mm Arg, !- Name", - " CLEAR 3MM, !- Outside Layer", - " ARGON 13MM, !- Layer 2", - " CLEAR 3MM; !- Layer 3", - - " Construction,", - " Sgl Grey 3mm, !- Name", - " GREY 3MM; !- Outside Layer", - - " Construction,", - " Dbl Clr 6mm/6mm Air, !- Name", - " CLEAR 6MM, !- Outside Layer", - " AIR 6MM, !- Layer 2", - " CLEAR 6MM; !- Layer 3", - - " Construction,", - " Dbl LoE (e2=.1) Clr 6mm/6mm Air, !- Name", - " LoE CLEAR 6MM, !- Outside Layer", - " AIR 6MM, !- Layer 2", - " CLEAR 6MM; !- Layer 3", - - " Construction:InternalSource,", - " Ceiling with Radiant, !- Name", - " 2, !- Source Present After Layer Number", - " 2, !- Temperature Calculation Requested After Layer Number", - " 1, !- Dimensions for the CTF Calculation", - " 0.1524, !- Tube Spacing {m}", - " CLN-INS, !- Outside Layer", - " GYP1, !- Layer 2", - " GYP2, !- Layer 3", - " MAT-CLNG-1; !- Layer 4", - - " Construction:InternalSource,", - " reverseCeiling with Radiant, !- Name", - " 2, !- Source Present After Layer Number", - " 2, !- Temperature Calculation Requested After Layer Number", - " 1, !- Dimensions for the CTF Calculation", - " 0.1524, !- Tube Spacing {m}", - " MAT-CLNG-1, !- Outside Layer", - " GYP2, !- Layer 2", - " GYP1, !- Layer 3", - " CLN-INS; !- Layer 4", - - " Construction:InternalSource,", - " Floor with Radiant, !- Name", - " 2, !- Source Present After Layer Number", - " 2, !- Temperature Calculation Requested After Layer Number", - " 1, !- Dimensions for the CTF Calculation", - " 0.1524, !- Tube Spacing {m}", - " INS - EXPANDED EXT POLYSTYRENE R12, !- Outside Layer", - " CONC, !- Layer 2", - " CONC, !- Layer 3", - " FINISH FLOORING - TILE 1 / 16 IN; !- Layer 4", - - " GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " CounterClockWise, !- Vertex Entry Direction", - " relative; !- Coordinate System", - - " Zone,", - " PLENUM-1, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " 0.609600067, !- Ceiling Height {m}", - " 283.2; !- Volume {m3}", - - " Zone,", - " SPACE1-1, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " 2.438400269, !- Ceiling Height {m}", - " 239.247360229; !- Volume {m3}", - - " Zone,", - " SPACE2-1, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " 2.438400269, !- Ceiling Height {m}", - " 103.311355591; !- Volume {m3}", - - " Zone,", - " SPACE3-1, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " 2.438400269, !- Ceiling Height {m}", - " 239.247360229; !- Volume {m3}", - - " Zone,", - " SPACE4-1, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " 2.438400269, !- Ceiling Height {m}", - " 103.311355591; !- Volume {m3}", - - " Zone,", - " SPACE5-1, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " 2.438400269, !- Ceiling Height {m}", - " 447.682556152; !- Volume {m3}", - - " BuildingSurface:Detailed,", - " WALL-1PF, !- Name", - " WALL, !- Surface Type", - " WALL-1, !- Construction Name", - " PLENUM-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.0,0.0,3.0, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 30.5,0.0,3.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " WALL-1PR, !- Name", - " WALL, !- Surface Type", - " WALL-1, !- Construction Name", - " PLENUM-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 30.5,0.0,3.0, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 30.5,15.2,3.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " WALL-1PB, !- Name", - " WALL, !- Surface Type", - " WALL-1, !- Construction Name", - " PLENUM-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 30.5,15.2,3.0, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 0.0,15.2,3.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " WALL-1PL, !- Name", - " WALL, !- Surface Type", - " WALL-1, !- Construction Name", - " PLENUM-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.0,15.2,3.0, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 0.0,0.0,3.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " TOP-1, !- Name", - " ROOF, !- Surface Type", - " ROOF-1, !- Construction Name", - " PLENUM-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.00000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.0,15.2,3.0, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,0.0,3.0, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,0.0,3.0, !- X,Y,Z ==> Vertex 3 {m}", - " 30.5,15.2,3.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " C1-1P, !- Name", - " FLOOR, !- Surface Type", - " reverseceiling with Radiant, !- Construction Name", - " PLENUM-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " C1-1, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " C2-1P, !- Name", - " FLOOR, !- Surface Type", - " reverseCeiling with Radiant, !- Construction Name", - " PLENUM-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " C2-1, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " C3-1P, !- Name", - " FLOOR, !- Surface Type", - " reverseCeiling with Radiant, !- Construction Name", - " PLENUM-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " C3-1, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 30.5,15.2,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " C4-1P, !- Name", - " FLOOR, !- Surface Type", - " reverseCeiling with Radiant, !- Construction Name", - " PLENUM-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " C4-1, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " C5-1P, !- Name", - " FLOOR, !- Surface Type", - " reverseceiling with Radiant, !- Construction Name", - " PLENUM-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " C5-1, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " FRONT-1, !- Name", - " WALL, !- Surface Type", - " WALL-1, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 30.5,0.0,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " C1-1, !- Name", - " CEILING, !- Surface Type", - " ceiling with Radiant, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " C1-1P, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " F1-1, !- Name", - " FLOOR, !- Surface Type", - " FLOOR-1, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Ground, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,3.7,0.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB12, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB21, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB14, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB41, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 0.0,0.0,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB15, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE1-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB51, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " RIGHT-1, !- Name", - " WALL, !- Surface Type", - " WALL-1, !- Construction Name", - " SPACE2-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 30.5,15.2,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " C2-1, !- Name", - " CEILING, !- Surface Type", - " Ceiling with Radiant, !- Construction Name", - " SPACE2-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " C2-1P, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " F2-1, !- Name", - " FLOOR, !- Surface Type", - " Floor with radiant, !- Construction Name", - " SPACE2-1, !- Zone Name", - " Ground, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,3.7,0.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB21, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE2-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB12, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 30.5,0.0,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB23, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE2-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB32, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB25, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE2-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB52, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " BACK-1, !- Name", - " WALL, !- Surface Type", - " WALL-1, !- Construction Name", - " SPACE3-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 0.0,15.2,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " C3-1, !- Name", - " CEILING, !- Surface Type", - " Ceiling with Radiant, !- Construction Name", - " SPACE3-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " C3-1P, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " F3-1, !- Name", - " FLOOR, !- Surface Type", - " FLOOR-1, !- Construction Name", - " SPACE3-1, !- Zone Name", - " Ground, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 1 {m}", - " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 30.5,15.2,0.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB32, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE3-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB23, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 30.5,15.2,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB34, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE3-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB43, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB35, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE3-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB53, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " LEFT-1, !- Name", - " WALL, !- Surface Type", - " WALL-1, !- Construction Name", - " SPACE4-1, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.50000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 0.0,0.0,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " C4-1, !- Name", - " CEILING, !- Surface Type", - " Ceiling with Radiant, !- Construction Name", - " SPACE4-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " C4-1P, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " F4-1, !- Name", - " FLOOR, !- Surface Type", - " FLOOR-1, !- Construction Name", - " SPACE4-1, !- Zone Name", - " Ground, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,11.6,0.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB41, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE4-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB14, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB43, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE4-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB34, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 0.0,15.2,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB45, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE4-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB54, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " C5-1, !- Name", - " CEILING, !- Surface Type", - " ceiling with Radiant, !- Construction Name", - " SPACE5-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " C5-1P, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 2 {m}", - " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " F5-1, !- Name", - " FLOOR, !- Surface Type", - " FLOOR-1, !- Construction Name", - " SPACE5-1, !- Zone Name", - " Ground, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 1 {m}", - " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,11.6,0.0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB51, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE5-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB15, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB52, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE5-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB25, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB53, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE5-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB35, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " SB54, !- Name", - " WALL, !- Surface Type", - " INT-WALL-1, !- Construction Name", - " SPACE5-1, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " SB45, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", - " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 3.7,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", - - " FenestrationSurface:Detailed,", - " WF-1, !- Name", - " WINDOW, !- Surface Type", - " Dbl Clr 3mm/13mm Air, !- Construction Name", - " FRONT-1, !- Building Surface Name", - " , !- Outside Boundary Condition Object", - " 0.50000, !- View Factor to Ground", - " , !- Shading Control Name", - " , !- Frame and Divider Name", - " 1, !- Multiplier", - " 4, !- Number of Vertices", - " 3.0,0.0,2.1, !- X,Y,Z ==> Vertex 1 {m}", - " 3.0,0.0,0.9, !- X,Y,Z ==> Vertex 2 {m}", - " 16.8,0.0,0.9, !- X,Y,Z ==> Vertex 3 {m}", - " 16.8,0.0,2.1; !- X,Y,Z ==> Vertex 4 {m}", - - " FenestrationSurface:Detailed,", - " DF-1, !- Name", - " GLASSDOOR, !- Surface Type", - " Sgl Grey 3mm, !- Construction Name", - " FRONT-1, !- Building Surface Name", - " , !- Outside Boundary Condition Object", - " 0.50000, !- View Factor to Ground", - " , !- Shading Control Name", - " , !- Frame and Divider Name", - " 1, !- Multiplier", - " 4, !- Number of Vertices", - " 21.3,0.0,2.1, !- X,Y,Z ==> Vertex 1 {m}", - " 21.3,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 23.8,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 23.8,0.0,2.1; !- X,Y,Z ==> Vertex 4 {m}", - - " FenestrationSurface:Detailed,", - " WR-1, !- Name", - " WINDOW, !- Surface Type", - " Dbl Clr 3mm/13mm Air, !- Construction Name", - " RIGHT-1, !- Building Surface Name", - " , !- Outside Boundary Condition Object", - " 0.50000, !- View Factor to Ground", - " , !- Shading Control Name", - " , !- Frame and Divider Name", - " 1, !- Multiplier", - " 4, !- Number of Vertices", - " 30.5,3.8,2.1, !- X,Y,Z ==> Vertex 1 {m}", - " 30.5,3.8,0.9, !- X,Y,Z ==> Vertex 2 {m}", - " 30.5,11.4,0.9, !- X,Y,Z ==> Vertex 3 {m}", - " 30.5,11.4,2.1; !- X,Y,Z ==> Vertex 4 {m}", - - " FenestrationSurface:Detailed,", - " WB-1, !- Name", - " WINDOW, !- Surface Type", - " Dbl Clr 3mm/13mm Air, !- Construction Name", - " BACK-1, !- Building Surface Name", - " , !- Outside Boundary Condition Object", - " 0.50000, !- View Factor to Ground", - " , !- Shading Control Name", - " , !- Frame and Divider Name", - " 1, !- Multiplier", - " 4, !- Number of Vertices", - " 27.4,15.2,2.1, !- X,Y,Z ==> Vertex 1 {m}", - " 27.4,15.2,0.9, !- X,Y,Z ==> Vertex 2 {m}", - " 13.7,15.2,0.9, !- X,Y,Z ==> Vertex 3 {m}", - " 13.7,15.2,2.1; !- X,Y,Z ==> Vertex 4 {m}", - - " FenestrationSurface:Detailed,", - " DB-1, !- Name", - " GLASSDOOR, !- Surface Type", - " Sgl Grey 3mm, !- Construction Name", - " BACK-1, !- Building Surface Name", - " , !- Outside Boundary Condition Object", - " 0.50000, !- View Factor to Ground", - " , !- Shading Control Name", - " , !- Frame and Divider Name", - " 1, !- Multiplier", - " 4, !- Number of Vertices", - " 9.1,15.2,2.1, !- X,Y,Z ==> Vertex 1 {m}", - " 9.1,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 7.0,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 7.0,15.2,2.1; !- X,Y,Z ==> Vertex 4 {m}", - - " FenestrationSurface:Detailed,", - " WL-1, !- Name", - " WINDOW, !- Surface Type", - " Dbl Clr 3mm/13mm Air, !- Construction Name", - " LEFT-1, !- Building Surface Name", - " , !- Outside Boundary Condition Object", - " 0.50000, !- View Factor to Ground", - " , !- Shading Control Name", - " , !- Frame and Divider Name", - " 1, !- Multiplier", - " 4, !- Number of Vertices", - " 0.0,11.4,2.1, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,11.4,0.9, !- X,Y,Z ==> Vertex 2 {m}", - " 0.0,3.8,0.9, !- X,Y,Z ==> Vertex 3 {m}", - " 0.0,3.8,2.1; !- X,Y,Z ==> Vertex 4 {m}", - - " Shading:Zone:Detailed,", - " Main South Overhang, !- Name", - " FRONT-1, !- Base Surface Name", - " ShadeTransSch, !- Transmittance Schedule Name", - " 4, !- Number of Vertices", - " 0.0,-1.3,2.2, !- X,Y,Z ==> Vertex 1 {m}", - " 0.0,0.0,2.2, !- X,Y,Z ==> Vertex 2 {m}", - " 19.8,0.0,2.2, !- X,Y,Z ==> Vertex 3 {m}", - " 19.8,-1.3,2.2; !- X,Y,Z ==> Vertex 4 {m}", - - " Shading:Zone:Detailed,", - " South Door Overhang, !- Name", - " FRONT-1, !- Base Surface Name", - " ShadeTransSch, !- Transmittance Schedule Name", - " 4, !- Number of Vertices", - " 21.0,-2.0,2.6, !- X,Y,Z ==> Vertex 1 {m}", - " 21.0,0.0,2.6, !- X,Y,Z ==> Vertex 2 {m}", - " 24.1,0.0,2.6, !- X,Y,Z ==> Vertex 3 {m}", - " 24.1,-2.0,2.6; !- X,Y,Z ==> Vertex 4 {m}", - - " ZoneHVAC:VentilatedSlab,", - " Zone1VentSlab, !- Name", - " FanAndCoilAvailSched, !- Availability Schedule Name", - " SPACE1-1, !- Zone Name", - " Z125, !- Surface Name or Radiant Surface Group Name", - " 0.84, !- Maximum Air Flow Rate {m3/s}", - " VariablePercent, !- Outdoor Air Control Type", - " 0.168, !- Minimum Outdoor Air Flow Rate {m3/s}", - " FanAndCoilAvailSched, !- Minimum Outdoor Air Schedule Name", - " 0.84, !- Maximum Outdoor Air Flow Rate {m3/s}", - " VentSlabMaxOA, !- Maximum Outdoor Air Fraction or Temperature Schedule Name", - " SeriesSlabs, !- System Configuration Type", - " 0, !- Hollow Core Inside Diameter {m}", - " 0, !- Hollow Core Length {m}", - " 0, !- Number of Cores", - " MeanAirTemperature, !- Temperature Control Type", - " VentSlabHotHighAir, !- Heating High Air Temperature Schedule Name", - " VentSlabHotLowAir, !- Heating Low Air Temperature Schedule Name", - " VentSlabHotHighControl, !- Heating High Control Temperature Schedule Name", - " VentSlabHotLowControl, !- Heating Low Control Temperature Schedule Name", - " VentSlabCoolHighAir, !- Cooling High Air Temperature Schedule Name", - " VentSlabCoolLowAir, !- Cooling Low Air Temperature Schedule Name", - " VentSlabCoolHighControl, !- Cooling High Control Temperature Schedule Name", - " VentSlabCoolLowControl, !- Cooling Low Control Temperature Schedule Name", - " Zone1VentSlabReturnAirNode, !- Return Air Node Name", - " Zone1VentslabSlabInNode, !- Slab In Node Name", - " , !- Zone Supply Air Node Name", - " Zone1VentSlabOAInNode, !- Outdoor Air Node Name", - " Zone1VentSlabExhNode, !- Relief Air Node Name", - " Zone1VentSlabOAMixerOutletNode, !- Outdoor Air Mixer Outlet Node Name", - " Zone1VentSlabFanOutletNode, !- Fan Outlet Node Name", - " Zone1VentSlabFan, !- Fan Name", - " HeatingAndCooling, !- Coil Option Type", - " Coil:Heating:Water, !- Heating Coil Object Type", - " Zone1VentSlabHeatingCoil,!- Heating Coil Name", - " Zone1VentSlabHwInLetNode,!- Hot Water or Steam Inlet Node Name", - " Coil:Cooling:Water, !- Cooling Coil Object Type", - " Zone1VentSlabCoolingCoil,!- Cooling Coil Name", - " Zone1VentSlabChWInletNode; !- Cold Water Inlet Node Name", - - " ZoneHVAC:VentilatedSlab,", - " Zone4VentSlab, !- Name", - " FanAndCoilAvailSched, !- Availability Schedule Name", - " SPACE4-1, !- Zone Name", - " Z43, !- Surface Name or Radiant Surface Group Name", - " 0.84, !- Maximum Air Flow Rate {m3/s}", - " VariablePercent, !- Outdoor Air Control Type", - " 0.168, !- Minimum Outdoor Air Flow Rate {m3/s}", - " FanAndCoilAvailSched, !- Minimum Outdoor Air Schedule Name", - " 0.84, !- Maximum Outdoor Air Flow Rate {m3/s}", - " VentSlabMaxOA, !- Maximum Outdoor Air Fraction or Temperature Schedule Name", - " SeriesSlabs, !- System Configuration Type", - " 0, !- Hollow Core Inside Diameter {m}", - " 0, !- Hollow Core Length {m}", - " 0, !- Number of Cores", - " OutdoorDryBulbTemperature, !- Temperature Control Type", - " VentSlabHotHighAir, !- Heating High Air Temperature Schedule Name", - " VentSlabHotLowAir, !- Heating Low Air Temperature Schedule Name", - " VentSlabHotHighControl, !- Heating High Control Temperature Schedule Name", - " VentSlabHotLowControl, !- Heating Low Control Temperature Schedule Name", - " VentSlabCoolHighAir, !- Cooling High Air Temperature Schedule Name", - " VentSlabCoolLowAir, !- Cooling Low Air Temperature Schedule Name", - " VentSlabCoolHighControl, !- Cooling High Control Temperature Schedule Name", - " VentSlabCoolLowControl2, !- Cooling Low Control Temperature Schedule Name", - " Zone4VentSlabReturnAirNode, !- Return Air Node Name", - " Zone4VentslabSlabInNode, !- Slab In Node Name", - " , !- Zone Supply Air Node Name", - " Zone4VentSlabOAInNode, !- Outdoor Air Node Name", - " Zone4VentSlabExhNode, !- Relief Air Node Name", - " Zone4VentSlabOAMixerOutletNode, !- Outdoor Air Mixer Outlet Node Name", - " Zone4VentSlabFanOutletNode, !- Fan Outlet Node Name", - " Zone4VentSlabFan, !- Fan Name", - " HeatingAndCooling, !- Coil Option Type", - " Coil:Heating:Electric, !- Heating Coil Object Type", - " Zone4VentSlabHeatingCoil,!- Heating Coil Name", - " , !- Hot Water or Steam Inlet Node Name", - " Coil:Cooling:Water, !- Cooling Coil Object Type", - " Zone4VentSlabCoolingCoil,!- Cooling Coil Name", - " Zone4VentSlabChWInletNode; !- Cold Water Inlet Node Name", - - " ZoneHVAC:VentilatedSlab:SlabGroup,", - " Z125, !- Name", - " SPACE1-1, !- Zone 1 Name", - " C1-1, !- Surface 1 Name", - " 0.05, !- Core Diameter for Surface 1 {m}", - " 30, !- Core Length for Surface 1 {m}", - " 20, !- Core Numbers for Surface 1", - " Z1VentslabIn, !- Slab Inlet Node Name for Surface 1", - " Z1VentSlabout, !- Slab Outlet Node Name for Surface 1", - " SPACE2-1, !- Zone 2 Name", - " C2-1, !- Surface 2 Name", - " 0.05, !- Core Diameter for Surface 2 {m}", - " 15, !- Core Length for Surface 2 {m}", - " 20, !- Core Numbers for Surface 2", - " Z2VentSlabIn, !- Slab Inlet Node Name for Surface 2", - " Z2VentSlabOut, !- Slab Outlet Node Name for Surface 2", - " SPACE5-1, !- Zone 3 Name", - " C5-1, !- Surface 3 Name", - " 0.05, !- Core Diameter for Surface 3 {m}", - " 30, !- Core Length for Surface 3 {m}", - " 20, !- Core Numbers for Surface 3", - " Z5VentSlabIn, !- Slab Inlet Node Name for Surface 3", - " Z5VentSlabOut; !- Slab Outlet Node Name for Surface 3", - - " ZoneHVAC:VentilatedSlab:SlabGroup,", - " Z43, !- Name", - " SPACE4-1, !- Zone 1 Name", - " C4-1, !- Surface 1 Name", - " 0.05, !- Core Diameter for Surface 1 {m}", - " 30, !- Core Length for Surface 1 {m}", - " 20, !- Core Numbers for Surface 1", - " Z4VentSlabIn, !- Slab Inlet Node Name for Surface 1", - " Z4VentSlabOut, !- Slab Outlet Node Name for Surface 1", - " SPACE3-1, !- Zone 2 Name", - " C3-1, !- Surface 2 Name", - " 0.05, !- Core Diameter for Surface 2 {m}", - " 30, !- Core Length for Surface 2 {m}", - " 20, !- Core Numbers for Surface 2", - " Z3VentSlabIn, !- Slab Inlet Node Name for Surface 2", - " Z3VentSlabOut; !- Slab Outlet Node Name for Surface 2", - - " ZoneHVAC:EquipmentList,", - " Zone1Equipment, !- Name", - " SequentialLoad, !- Load Distribution Scheme", - " ZoneHVAC:VentilatedSlab, !- Zone Equipment 1 Object Type", - " Zone1VentSlab, !- Zone Equipment 1 Name", - " 1, !- Zone Equipment 1 Cooling Sequence", - " 1; !- Zone Equipment 1 Heating or No-Load Sequence", - - " ZoneHVAC:EquipmentList,", - " Zone4Equipment, !- Name", - " SequentialLoad, !- Load Distribution Scheme", - " ZoneHVAC:VentilatedSlab, !- Zone Equipment 1 Object Type", - " Zone4VentSlab, !- Zone Equipment 1 Name", - " 1, !- Zone Equipment 1 Cooling Sequence", - " 1; !- Zone Equipment 1 Heating or No-Load Sequence", - - " ZoneHVAC:EquipmentConnections,", - " SPACE1-1, !- Zone Name", - " Zone1Equipment, !- Zone Conditioning Equipment List Name", - " , !- Zone Air Inlet Node or NodeList Name", - " , !- Zone Air Exhaust Node or NodeList Name", - " Zone 1 Node, !- Zone Air Node Name", - " Zone 1 Outlet Node; !- Zone Return Air Node Name", - - " ZoneHVAC:EquipmentConnections,", - " SPACE4-1, !- Zone Name", - " Zone4Equipment, !- Zone Conditioning Equipment List Name", - " , !- Zone Air Inlet Node or NodeList Name", - " , !- Zone Air Exhaust Node or NodeList Name", - " Zone 4 Node, !- Zone Air Node Name", - " Zone 4 Outlet Node; !- Zone Return Air Node Name", - - " Fan:ConstantVolume,", - " Zone1VentSlabFan, !- Name", - " FanAndCoilAvailSched, !- Availability Schedule Name", - " 0.5, !- Fan Total Efficiency", - " 75.0, !- Pressure Rise {Pa}", - " 0.84, !- Maximum Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1.0, !- Motor In Airstream Fraction", - " Zone1VentSlabOAMixerOutletNode, !- Air Inlet Node Name", - " Zone1VentSlabFanOutletNode; !- Air Outlet Node Name", - - " Fan:ConstantVolume,", - " Zone4VentSlabFan, !- Name", - " FanAndCoilAvailSched, !- Availability Schedule Name", - " 0.5, !- Fan Total Efficiency", - " 75.0, !- Pressure Rise {Pa}", - " 0.84, !- Maximum Flow Rate {m3/s}", - " 0.9, !- Motor Efficiency", - " 1.0, !- Motor In Airstream Fraction", - " Zone4VentSlabOAMixerOutletNode, !- Air Inlet Node Name", - " Zone4VentSlabFanOutletNode; !- Air Outlet Node Name", - - " Coil:Cooling:Water,", - " Zone1VentSlabCoolingCoil,!- Name", - " FanAndCoilAvailSched, !- Availability Schedule Name", - " 0.0010, !- Design Water Flow Rate {m3/s}", - " 0.84, !- Design Air Flow Rate {m3/s}", - " 6.67, !- Design Inlet Water Temperature {C}", - " 35, !- Design Inlet Air Temperature {C}", - " 13.23, !- Design Outlet Air Temperature {C}", - " 0.013, !- Design Inlet Air Humidity Ratio {kgWater/kgDryAir}", - " 0.0087138, !- Design Outlet Air Humidity Ratio {kgWater/kgDryAir}", - " Zone1VentSlabChWInletNode, !- Water Inlet Node Name", - " Zone1VentSlabChWOutletNode, !- Water Outlet Node Name", - " Zone1VentSlabFanOutletNode, !- Air Inlet Node Name", - " Zone1VentSlabCCoutletNode, !- Air Outlet Node Name", - " SimpleAnalysis, !- Type of Analysis", - " CrossFlow; !- Heat Exchanger Configuration", - - " Coil:Cooling:Water,", - " Zone4VentSlabCoolingCoil,!- Name", - " FanAndCoilAvailSched, !- Availability Schedule Name", - " 0.0010, !- Design Water Flow Rate {m3/s}", - " 0.84, !- Design Air Flow Rate {m3/s}", - " 6.67, !- Design Inlet Water Temperature {C}", - " 35, !- Design Inlet Air Temperature {C}", - " 13.23, !- Design Outlet Air Temperature {C}", - " 0.013, !- Design Inlet Air Humidity Ratio {kgWater/kgDryAir}", - " 0.0087138, !- Design Outlet Air Humidity Ratio {kgWater/kgDryAir}", - " Zone4VentSlabChWInletNode, !- Water Inlet Node Name", - " Zone4VentSlabChWOutletNode, !- Water Outlet Node Name", - " Zone4VentSlabFanOutletNode, !- Air Inlet Node Name", - " Zone4VentSlabCCoutletNode, !- Air Outlet Node Name", - " SimpleAnalysis, !- Type of Analysis", - " CrossFlow; !- Heat Exchanger Configuration", - - " Coil:Heating:Water,", - " Zone1VentSlabHeatingCoil,!- Name", - " FanAndCoilAvailSched, !- Availability Schedule Name", - " 400., !- U-Factor Times Area Value {W/K}", - " 0.8, !- Maximum Water Flow Rate {m3/s}", - " Zone1VentSlabHWInletNode,!- Water Inlet Node Name", - " Zone1VentSlabHWOutletNode, !- Water Outlet Node Name", - " Zone1VentSlabCCOutletNode, !- Air Inlet Node Name", - " Zone1VentslabSlabInNode, !- Air Outlet Node Name", - " NominalCapacity, !- Performance Input Method", - " 40000, !- Rated Capacity {W}", - " , !- Rated Inlet Water Temperature {C}", - " , !- Rated Inlet Air Temperature {C}", - " , !- Rated Outlet Water Temperature {C}", - " , !- Rated Outlet Air Temperature {C}", - " ; !- Rated Ratio for Air and Water Convection", - - " Coil:Heating:Electric,", - " Zone4VentSlabHeatingCoil,!- Name", - " FanAndCoilAvailSched, !- Availability Schedule Name", - " 0.99, !- Efficiency", - " 40000, !- Nominal Capacity {W}", - " Zone4VentSlabCCOutletNode, !- Air Inlet Node Name", - " Zone4VentSlabSlabInNode; !- Air Outlet Node Name", - - " Branch,", - " Cooling Supply Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pump:VariableSpeed, !- Component 1 Object Type", - " ChW Circ Pump, !- Component 1 Name", - " ChW Supply Inlet Node, !- Component 1 Inlet Node Name", - " ChW Pump Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " Cooling Purchased Chilled Water Branch, !- Name", - " , !- Pressure Drop Curve Name", - " DistrictCooling, !- Component 1 Object Type", - " Purchased Cooling, !- Component 1 Name", - " Purchased Cooling Inlet Node, !- Component 1 Inlet Node Name", - " Purchased Cooling Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " Cooling Supply Bypass Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " Cooling Supply Side Bypass, !- Component 1 Name", - " Cooling Supply Bypass Inlet Node, !- Component 1 Inlet Node Name", - " Cooling Supply Bypass Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " Cooling Supply Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " Cooling Supply Outlet, !- Component 1 Name", - " Cooling Supply Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", - " ChW Supply Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " ZonesChWInletBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " ZonesChWInletPipe, !- Component 1 Name", - " ChW Demand Inlet Node, !- Component 1 Inlet Node Name", - " ChW Demand Entrance Pipe Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " ZonesChWOutletBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " ZonesChWOutletPipe, !- Component 1 Name", - " ChW Demand Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", - " ChW Demand Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " Zone1ChWBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Coil:Cooling:Water, !- Component 1 Object Type", - " Zone1VentSlabCoolingCoil,!- Component 1 Name", - " Zone1VentSlabChWInletNode, !- Component 1 Inlet Node Name", - " Zone1VentSlabChWOutletNode; !- Component 1 Outlet Node Name", - - " Branch,", - " ZonesChWBypassBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " ZonesChWBypassPipe, !- Component 1 Name", - " ZonesChWBypassInletNode, !- Component 1 Inlet Node Name", - " ZonesChWBypassOutletNode;!- Component 1 Outlet Node Name", - - " Branch,", - " Heating Supply Inlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pump:VariableSpeed, !- Component 1 Object Type", - " HW Circ Pump, !- Component 1 Name", - " HW Supply Inlet Node, !- Component 1 Inlet Node Name", - " HW Pump Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " Heating Purchased Hot Water Branch, !- Name", - " , !- Pressure Drop Curve Name", - " DistrictHeating, !- Component 1 Object Type", - " Purchased Heating, !- Component 1 Name", - " Purchased Heat Inlet Node, !- Component 1 Inlet Node Name", - " Purchased Heat Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " Heating Supply Bypass Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " Heating Supply Side Bypass, !- Component 1 Name", - " Heating Supply Bypass Inlet Node, !- Component 1 Inlet Node Name", - " Heating Supply Bypass Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " Heating Supply Outlet Branch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " Heating Supply Outlet, !- Component 1 Name", - " Heating Supply Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", - " HW Supply Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " ZonesHWInletBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " ZonesHWInletPipe, !- Component 1 Name", - " HW Demand Inlet Node, !- Component 1 Inlet Node Name", - " HW Demand Entrance Pipe Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " ZonesHWOutletBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " ZonesHWOutletPipe, !- Component 1 Name", - " HW Demand Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", - " HW Demand Outlet Node; !- Component 1 Outlet Node Name", - - " Branch,", - " Zone1HWBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Coil:Heating:Water, !- Component 1 Object Type", - " Zone1VentSlabHeatingCoil,!- Component 1 Name", - " Zone1VentSlabHWInletNode,!- Component 1 Inlet Node Name", - " Zone1VentSlabHWOutletNode; !- Component 1 Outlet Node Name", - - " Branch,", - " ZonesHWBypassBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Pipe:Adiabatic, !- Component 1 Object Type", - " ZonesHWBypassPipe, !- Component 1 Name", - " ZonesHWBypassInletNode, !- Component 1 Inlet Node Name", - " ZonesHWBypassOutletNode; !- Component 1 Outlet Node Name", - - " Branch,", - " Zone4ChWBranch, !- Name", - " , !- Pressure Drop Curve Name", - " Coil:Cooling:Water, !- Component 1 Object Type", - " Zone4VentSlabCoolingCoil,!- Component 1 Name", - " Zone4VentSlabChWInletNode, !- Component 1 Inlet Node Name", - " Zone4VentSlabChWOutletNode; !- Component 1 Outlet Node Name", - - " BranchList,", - " Cooling Supply Side Branches, !- Name", - " Cooling Supply Inlet Branch, !- Branch 1 Name", - " Cooling Purchased Chilled Water Branch, !- Branch 2 Name", - " Cooling Supply Bypass Branch, !- Branch 3 Name", - " Cooling Supply Outlet Branch; !- Branch 4 Name", - - " BranchList,", - " Cooling Demand Side Branches, !- Name", - " ZonesChWInletBranch, !- Branch 1 Name", - " Zone1ChWBranch, !- Branch 2 Name", - " Zone4ChWBranch, !- Branch 3 Name", - " ZonesChWBypassBranch, !- Branch 4 Name", - " ZonesChWOutletBranch; !- Branch 5 Name", - - " BranchList,", - " Heating Supply Side Branches, !- Name", - " Heating Supply Inlet Branch, !- Branch 1 Name", - " Heating Purchased Hot Water Branch, !- Branch 2 Name", - " Heating Supply Bypass Branch, !- Branch 3 Name", - " Heating Supply Outlet Branch; !- Branch 4 Name", - - " BranchList,", - " Heating Demand Side Branches, !- Name", - " ZonesHWInletBranch, !- Branch 1 Name", - " Zone1HWBranch, !- Branch 2 Name", - " ZonesHWBypassBranch, !- Branch 3 Name", - " ZonesHWOutletBranch; !- Branch 4 Name", - - " Connector:Splitter,", - " Cooling Supply Splitter, !- Name", - " Cooling Supply Inlet Branch, !- Inlet Branch Name", - " Cooling Purchased Chilled Water Branch, !- Outlet Branch 1 Name", - " Cooling Supply Bypass Branch; !- Outlet Branch 2 Name", - - " Connector:Splitter,", - " Zones ChW Splitter, !- Name", - " ZonesChWInletBranch, !- Inlet Branch Name", - " Zone1ChWBranch, !- Outlet Branch 1 Name", - " Zone4ChWBranch, !- Outlet Branch 2 Name", - " ZonesChWBypassBranch; !- Outlet Branch 3 Name", - - " Connector:Splitter,", - " Heating Supply Splitter, !- Name", - " Heating Supply Inlet Branch, !- Inlet Branch Name", - " Heating Purchased Hot Water Branch, !- Outlet Branch 1 Name", - " Heating Supply Bypass Branch; !- Outlet Branch 2 Name", - - " Connector:Splitter,", - " Zones HW Splitter, !- Name", - " ZonesHWInletBranch, !- Inlet Branch Name", - " Zone1HWBranch, !- Outlet Branch 1 Name", - " ZonesHWBypassBranch; !- Outlet Branch 2 Name", - - " Connector:Mixer,", - " Cooling Supply Mixer, !- Name", - " Cooling Supply Outlet Branch, !- Outlet Branch Name", - " Cooling Purchased Chilled Water Branch, !- Inlet Branch 1 Name", - " Cooling Supply Bypass Branch; !- Inlet Branch 2 Name", - - " Connector:Mixer,", - " Zones ChW Mixer, !- Name", - " ZonesChWOutletBranch, !- Outlet Branch Name", - " Zone1ChWBranch, !- Inlet Branch 1 Name", - " Zone4ChWBranch, !- Inlet Branch 2 Name", - " ZonesChWBypassBranch; !- Inlet Branch 3 Name", - - " Connector:Mixer,", - " Heating Supply Mixer, !- Name", - " Heating Supply Outlet Branch, !- Outlet Branch Name", - " Heating Purchased Hot Water Branch, !- Inlet Branch 1 Name", - " Heating Supply Bypass Branch; !- Inlet Branch 2 Name", - - " Connector:Mixer,", - " Zones HW Mixer, !- Name", - " ZonesHWOutletBranch, !- Outlet Branch Name", - " Zone1HWBranch, !- Inlet Branch 1 Name", - " ZonesHWBypassBranch; !- Inlet Branch 2 Name", - - " ConnectorList,", - " Cooling Supply Side Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " Cooling Supply Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " Cooling Supply Mixer; !- Connector 2 Name", - - " ConnectorList,", - " Cooling Demand Side Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " Zones ChW Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " Zones ChW Mixer; !- Connector 2 Name", - - " ConnectorList,", - " Heating Supply Side Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " Heating Supply Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " Heating Supply Mixer; !- Connector 2 Name", - - " ConnectorList,", - " Heating Demand Side Connectors, !- Name", - " Connector:Splitter, !- Connector 1 Object Type", - " Zones HW Splitter, !- Connector 1 Name", - " Connector:Mixer, !- Connector 2 Object Type", - " Zones HW Mixer; !- Connector 2 Name", - - " NodeList,", - " Chilled Water Loop Setpoint Node List, !- Name", - " ChW Supply Outlet Node; !- Node 1 Name", - - " NodeList,", - " Hot Water Loop Setpoint Node List, !- Name", - " HW Supply Outlet Node; !- Node 1 Name", - - " OutdoorAir:Node,", - " Zone1VentSlabOAInNode, !- Name", - " -1.0; !- Height Above Ground {m}", - - " OutdoorAir:Node,", - " Zone4VentSlabOAInNode, !- Name", - " -1.0; !- Height Above Ground {m}", - - " Pump:VariableSpeed,", - " ChW Circ Pump, !- Name", - " ChW Supply Inlet Node, !- Inlet Node Name", - " ChW Pump Outlet Node, !- Outlet Node Name", - " 0.004, !- Rated Flow Rate {m3/s}", - " 300000, !- Rated Pump Head {Pa}", - " 1800, !- Rated Power Consumption {W}", - " 0.87, !- Motor Efficiency", - " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", - " 0, !- Coefficient 1 of the Part Load Performance Curve", - " 1, !- Coefficient 2 of the Part Load Performance Curve", - " 0, !- Coefficient 3 of the Part Load Performance Curve", - " 0, !- Coefficient 4 of the Part Load Performance Curve", - " 0, !- Minimum Flow Rate {m3/s}", - " INTERMITTENT; !- Pump Control Type", - - " Pump:VariableSpeed,", - " HW Circ Pump, !- Name", - " HW Supply Inlet Node, !- Inlet Node Name", - " HW Pump Outlet Node, !- Outlet Node Name", - " 0.002, !- Rated Flow Rate {m3/s}", - " 300000, !- Rated Pump Head {Pa}", - " 900, !- Rated Power Consumption {W}", - " 0.87, !- Motor Efficiency", - " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", - " 0, !- Coefficient 1 of the Part Load Performance Curve", - " 1, !- Coefficient 2 of the Part Load Performance Curve", - " 0, !- Coefficient 3 of the Part Load Performance Curve", - " 0, !- Coefficient 4 of the Part Load Performance Curve", - " 0, !- Minimum Flow Rate {m3/s}", - " INTERMITTENT; !- Pump Control Type", - - " DistrictCooling,", - " Purchased Cooling, !- Name", - " Purchased Cooling Inlet Node, !- Chilled Water Inlet Node Name", - " Purchased Cooling Outlet Node, !- Chilled Water Outlet Node Name", - " 1000000; !- Nominal Capacity {W}", - - " DistrictHeating,", - " Purchased Heating, !- Name", - " Purchased Heat Inlet Node, !- Hot Water Inlet Node Name", - " Purchased Heat Outlet Node, !- Hot Water Outlet Node Name", - " 1000000; !- Nominal Capacity {W}", - - " PlantLoop,", - " Chilled Water Loop, !- Name", - " Water, !- Fluid Type", - " , !- User Defined Fluid Type", - " Chilled Loop Operation, !- Plant Equipment Operation Scheme Name", - " ChW Supply Outlet Node, !- Loop Temperature Setpoint Node Name", - " 100, !- Maximum Loop Temperature {C}", - " 1, !- Minimum Loop Temperature {C}", - " 0.004, !- Maximum Loop Flow Rate {m3/s}", - " 0.0, !- Minimum Loop Flow Rate {m3/s}", - " autocalculate, !- Plant Loop Volume {m3}", - " ChW Supply Inlet Node, !- Plant Side Inlet Node Name", - " ChW Supply Outlet Node, !- Plant Side Outlet Node Name", - " Cooling Supply Side Branches, !- Plant Side Branch List Name", - " Cooling Supply Side Connectors, !- Plant Side Connector List Name", - " ChW Demand Inlet Node, !- Demand Side Inlet Node Name", - " ChW Demand Outlet Node, !- Demand Side Outlet Node Name", - " Cooling Demand Side Branches, !- Demand Side Branch List Name", - " Cooling Demand Side Connectors, !- Demand Side Connector List Name", - " Optimal, !- Load Distribution Scheme", - " , !- Availability Manager List Name", - " , !- Plant Loop Demand Calculation Scheme", - " , !- Common Pipe Simulation", - " , !- Pressure Simulation Type", - " 2.0; !- Loop Circulation Time {minutes}", - - " PlantLoop,", - " Hot Water Loop, !- Name", - " Water, !- Fluid Type", - " , !- User Defined Fluid Type", - " Hot Loop Operation, !- Plant Equipment Operation Scheme Name", - " HW Supply Outlet Node, !- Loop Temperature Setpoint Node Name", - " 100, !- Maximum Loop Temperature {C}", - " 10, !- Minimum Loop Temperature {C}", - " 0.002, !- Maximum Loop Flow Rate {m3/s}", - " 0.0, !- Minimum Loop Flow Rate {m3/s}", - " autocalculate, !- Plant Loop Volume {m3}", - " HW Supply Inlet Node, !- Plant Side Inlet Node Name", - " HW Supply Outlet Node, !- Plant Side Outlet Node Name", - " Heating Supply Side Branches, !- Plant Side Branch List Name", - " Heating Supply Side Connectors, !- Plant Side Connector List Name", - " HW Demand Inlet Node, !- Demand Side Inlet Node Name", - " HW Demand Outlet Node, !- Demand Side Outlet Node Name", - " Heating Demand Side Branches, !- Demand Side Branch List Name", - " Heating Demand Side Connectors, !- Demand Side Connector List Name", - " Optimal, !- Load Distribution Scheme", - " , !- Availability Manager List Name", - " , !- Plant Loop Demand Calculation Scheme", - " , !- Common Pipe Simulation", - " , !- Pressure Simulation Type", - " 2.0; !- Loop Circulation Time {minutes}", - - " Pipe:Adiabatic,", - " Cooling Supply Side Bypass, !- Name", - " Cooling Supply Bypass Inlet Node, !- Inlet Node Name", - " Cooling Supply Bypass Outlet Node; !- Outlet Node Name", - - " Pipe:Adiabatic,", - " Cooling Supply Outlet, !- Name", - " Cooling Supply Exit Pipe Inlet Node, !- Inlet Node Name", - " ChW Supply Outlet Node; !- Outlet Node Name", - - " Pipe:Adiabatic,", - " ZonesChWInletPipe, !- Name", - " ChW Demand Inlet Node, !- Inlet Node Name", - " ChW Demand Entrance Pipe Outlet Node; !- Outlet Node Name", - - " Pipe:Adiabatic,", - " ZonesChWOutletPipe, !- Name", - " ChW Demand Exit Pipe Inlet Node, !- Inlet Node Name", - " ChW Demand Outlet Node; !- Outlet Node Name", - - " Pipe:Adiabatic,", - " ZonesChWBypassPipe, !- Name", - " ZonesChWBypassInletNode, !- Inlet Node Name", - " ZonesChWBypassOutletNode;!- Outlet Node Name", - - " Pipe:Adiabatic,", - " Heating Supply Side Bypass, !- Name", - " Heating Supply Bypass Inlet Node, !- Inlet Node Name", - " Heating Supply Bypass Outlet Node; !- Outlet Node Name", - - " Pipe:Adiabatic,", - " Heating Supply Outlet, !- Name", - " Heating Supply Exit Pipe Inlet Node, !- Inlet Node Name", - " HW Supply Outlet Node; !- Outlet Node Name", - - " Pipe:Adiabatic,", - " ZonesHWInletPipe, !- Name", - " HW Demand Inlet Node, !- Inlet Node Name", - " HW Demand Entrance Pipe Outlet Node; !- Outlet Node Name", - - " Pipe:Adiabatic,", - " ZonesHWOutletPipe, !- Name", - " HW Demand Exit Pipe Inlet Node, !- Inlet Node Name", - " HW Demand Outlet Node; !- Outlet Node Name", - - " Pipe:Adiabatic,", - " ZonesHWBypassPipe, !- Name", - " ZonesHWBypassInletNode, !- Inlet Node Name", - " ZonesHWBypassOutletNode; !- Outlet Node Name", - - " PlantEquipmentList,", - " cooling plant, !- Name", - " DistrictCooling, !- Equipment 1 Object Type", - " Purchased Cooling; !- Equipment 1 Name", - - " PlantEquipmentList,", - " heating plant, !- Name", - " DistrictHeating, !- Equipment 1 Object Type", - " Purchased Heating; !- Equipment 1 Name", - - " PlantEquipmentOperation:CoolingLoad,", - " Purchased Cooling Only, !- Name", - " 0, !- Load Range 1 Lower Limit {W}", - " 1000000, !- Load Range 1 Upper Limit {W}", - " cooling plant; !- Range 1 Equipment List Name", - - " PlantEquipmentOperation:HeatingLoad,", - " Purchased Heating Only, !- Name", - " 0, !- Load Range 1 Lower Limit {W}", - " 1000000, !- Load Range 1 Upper Limit {W}", - " heating plant; !- Range 1 Equipment List Name", - - " PlantEquipmentOperationSchemes,", - " Chilled Loop Operation, !- Name", - " PlantEquipmentOperation:CoolingLoad, !- Control Scheme 1 Object Type", - " Purchased Cooling Only, !- Control Scheme 1 Name", - " ON; !- Control Scheme 1 Schedule Name", - - " PlantEquipmentOperationSchemes,", - " Hot Loop Operation, !- Name", - " PlantEquipmentOperation:HeatingLoad, !- Control Scheme 1 Object Type", - " Purchased Heating Only, !- Control Scheme 1 Name", - " ON; !- Control Scheme 1 Schedule Name", - - " SetpointManager:Scheduled,", - " Chilled Water Loop Setpoint Manager, !- Name", - " Temperature, !- Control Variable", - " CW Loop Temp Schedule, !- Schedule Name", - " Chilled Water Loop Setpoint Node List; !- Setpoint Node or NodeList Name", - - " SetpointManager:Scheduled,", - " Hot Water Loop Setpoint Manager, !- Name", - " Temperature, !- Control Variable", - " HW Loop Temp Schedule, !- Schedule Name", - " Hot Water Loop Setpoint Node List; !- Setpoint Node or NodeList Name", - } ); - ASSERT_TRUE( process_idf( idf_objects ) ); - - NumOfTimeStepInHour = 1; // must initialize this to get schedules initialized - MinutesPerTimeStep = 60; // must initialize this to get schedules initialized - ProcessScheduleInput(); // read schedule data - - ErrorsFound = false; - HeatBalanceManager::GetProjectControlData( ErrorsFound ); // read project control data - EXPECT_FALSE( ErrorsFound ); - - ErrorsFound = false; - HeatBalanceManager::GetZoneData( ErrorsFound ); // read zone data - EXPECT_FALSE( ErrorsFound ); - - ErrorsFound = false; - GetMaterialData( ErrorsFound ); // read construction material data - EXPECT_FALSE( ErrorsFound ); - - ErrorsFound = false; - HeatBalanceManager::GetConstructData( ErrorsFound ); // read construction data - EXPECT_FALSE( ErrorsFound ); - - ErrorsFound = false; - SetupZoneGeometry( ErrorsFound ); // read zone geometry data - EXPECT_FALSE( ErrorsFound ); - - ErrorsFound = false; - GetSurfaceListsInputs(); // read surface data - EXPECT_FALSE( ErrorsFound ); - - GetVentilatedSlabInput(); // read ventilated slab data - EXPECT_EQ( 2, NumOfVentSlabs ); - EXPECT_EQ( "ZONE1VENTSLAB", VentSlab( 1 ).Name ); - EXPECT_EQ( "ZONE4VENTSLAB", VentSlab( 2 ).Name ); - - InitVentilatedSlab( Item, VentSlabZoneNum, FirstHVACIteration ); - EXPECT_EQ( 324.38499999999999, VentSlab( 1 ).TotalSurfaceArea ); - EXPECT_EQ( 139.21499999999997, VentSlab( 2 ).TotalSurfaceArea ); + BeginEnvrnFlag = false; + bool ErrorsFound(false); // function returns true on error + int Item(1); // index for the current ventilated slab + int VentSlabZoneNum(1); // number of zone being served + bool FirstHVACIteration(true); // TRUE if 1st HVAC simulation of system timestep + + std::string const idf_objects = delimited_string({ + " Version,8.4;", + + " SimulationControl,", + " No, !- Do Zone Sizing Calculation", + " No, !- Do System Sizing Calculation", + " No, !- Do Plant Sizing Calculation", + " Yes, !- Run Simulation for Sizing Periods", + " No; !- Run Simulation for Weather File Run Periods", + + " Building,", + " Building, !- Name", + " 30., !- North Axis {deg}", + " City, !- Terrain", + " 0.04, !- Loads Convergence Tolerance Value", + " 0.4, !- Temperature Convergence Tolerance Value {deltaC}", + " FullExterior, !- Solar Distribution", + " 25, !- Maximum Number of Warmup Days", + " 6; !- Minimum Number of Warmup Days", + + " Timestep,6;", + + " Site:Location,", + " CHICAGO_IL_USA TMY2-94846, !- Name", + " 41.78, !- Latitude {deg}", + " -87.75, !- Longitude {deg}", + " -6.00, !- Time Zone {hr}", + " 190.00; !- Elevation {m}", + + " SizingPeriod:DesignDay,", + " CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, !- Name", + " 1, !- Month", + " 21, !- Day of Month", + " WinterDesignDay, !- Day Type", + " -17.3, !- Maximum Dry-Bulb Temperature {C}", + " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 4.9, !- Wind Speed {m/s}", + " 270, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 1; !- Sky Clearness", + + " SizingPeriod:DesignDay,", + " CHICAGO_IL_USA Annual Cooling 1% Design Conditions DB/MCWB, !- Name", + " 7, !- Month", + " 21, !- Day of Month", + " SummerDesignDay, !- Day Type", + " 31.5, !- Maximum Dry-Bulb Temperature {C}", + " 10.7, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " 23.0, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 5.3, !- Wind Speed {m/s}", + " 230, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 1.0; !- Sky Clearness", + + " Site:GroundTemperature:BuildingSurface,20.03,20.03,20.13,20.30,20.43,20.52,20.62,20.77,20.78,20.55,20.44,20.20;", + + " ScheduleTypeLimits,", + " Any Number; !- Name", + + " ScheduleTypeLimits,", + " Fraction, !- Name", + " 0.0, !- Lower Limit Value", + " 1.0, !- Upper Limit Value", + " CONTINUOUS; !- Numeric Type", + + " ScheduleTypeLimits,", + " Temperature, !- Name", + " -60, !- Lower Limit Value", + " 200, !- Upper Limit Value", + " CONTINUOUS, !- Numeric Type", + " Temperature; !- Unit Type", + + " ScheduleTypeLimits,", + " Control Type, !- Name", + " 0, !- Lower Limit Value", + " 4, !- Upper Limit Value", + " DISCRETE; !- Numeric Type", + + " ScheduleTypeLimits,", + " On/Off, !- Name", + " 0, !- Lower Limit Value", + " 1, !- Upper Limit Value", + " DISCRETE; !- Numeric Type", + + " Schedule:Compact,", + " INFIL-SCH, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0; !- Field 3", + + " Schedule:Compact,", + " ON, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0; !- Field 3", + + " Schedule:Compact,", + " CW Loop Temp Schedule, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,6.67; !- Field 3", + + " Schedule:Compact,", + " HW Loop Temp Schedule, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,60.0; !- Field 3", + + " Schedule:Compact,", + " VentSlabMaxOA, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0; !- Field 3", + + " Schedule:Compact,", + " VentSlabHotHighAir, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,30; !- Field 3", + + " Schedule:Compact,", + " VentSlabHotLowAir, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,25; !- Field 3", + + " Schedule:Compact,", + " VentSlabHotLowControl, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,10; !- Field 3", + + " Schedule:Compact,", + " VentSlabHotHighControl, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,20; !- Field 3", + + " Schedule:Compact,", + " VentSlabCoolHighControl, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,30; !- Field 3", + + " Schedule:Compact,", + " VentSlabCoolHighAir, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,23; !- Field 3", + + " Schedule:Compact,", + " VentSlabCoolLowAir, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,17; !- Field 3", + + " Schedule:Compact,", + " FanAndCoilAvailSched, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,1.0; !- Field 3", + + " Schedule:Compact,", + " VentSlabCoolLowControl, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,26; !- Field 3", + + " Schedule:Compact,", + " VentSlabCoolLowControl2, !- Name", + " Temperature, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,20; !- Field 3", + + " Schedule:Compact,", + " ShadeTransSch, !- Name", + " Fraction, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00,0.0; !- Field 3", + + " Material,", + " WD10, !- Name", + " MediumSmooth, !- Roughness", + " 0.667, !- Thickness {m}", + " 0.115, !- Conductivity {W/m-K}", + " 513, !- Density {kg/m3}", + " 1381, !- Specific Heat {J/kg-K}", + " 0.9, !- Thermal Absorptance", + " 0.78, !- Solar Absorptance", + " 0.78; !- Visible Absorptance", + + " Material,", + " RG01, !- Name", + " Rough, !- Roughness", + " 1.2700000E-02, !- Thickness {m}", + " 1.442000, !- Conductivity {W/m-K}", + " 881.0000, !- Density {kg/m3}", + " 1674.000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + + " Material,", + " BR01, !- Name", + " VeryRough, !- Roughness", + " 0.009, !- Thickness {m}", + " 0.1620000, !- Conductivity {W/m-K}", + " 1121.000, !- Density {kg/m3}", + " 1464.000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7000000, !- Solar Absorptance", + " 0.7000000; !- Visible Absorptance", + + " Material,", + " IN46, !- Name", + " VeryRough, !- Roughness", + " 0.09, !- Thickness {m}", + " 2.3000000E-02, !- Conductivity {W/m-K}", + " 24.00000, !- Density {kg/m3}", + " 1590.000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.5000000, !- Solar Absorptance", + " 0.5000000; !- Visible Absorptance", + + " Material,", + " WD01, !- Name", + " MediumSmooth, !- Roughness", + " 1.9099999E-02, !- Thickness {m}", + " 0.1150000, !- Conductivity {W/m-K}", + " 513.0000, !- Density {kg/m3}", + " 1381.000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7800000, !- Solar Absorptance", + " 0.7800000; !- Visible Absorptance", + + " Material,", + " PW03, !- Name", + " MediumSmooth, !- Roughness", + " 1.2700000E-02, !- Thickness {m}", + " 0.1150000, !- Conductivity {W/m-K}", + " 545.0000, !- Density {kg/m3}", + " 1213.000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7800000, !- Solar Absorptance", + " 0.7800000; !- Visible Absorptance", + + " Material,", + " IN02, !- Name", + " Rough, !- Roughness", + " 9.0099998E-02, !- Thickness {m}", + " 4.3000001E-02, !- Conductivity {W/m-K}", + " 10.00000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " GP01, !- Name", + " MediumSmooth, !- Roughness", + " 1.2700000E-02, !- Thickness {m}", + " 0.1600000, !- Conductivity {W/m-K}", + " 801.0000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " GP02, !- Name", + " MediumSmooth, !- Roughness", + " 1.5900001E-02, !- Thickness {m}", + " 0.1600000, !- Conductivity {W/m-K}", + " 801.0000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " CC03, !- Name", + " MediumRough, !- Roughness", + " 0.1016000, !- Thickness {m}", + " 1.310000, !- Conductivity {W/m-K}", + " 2243.000, !- Density {kg/m3}", + " 837.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + + " Material,", + " COnc, !- Name", + " VeryRough, !- Roughness", + " 0.025, !- Thickness {m}", + " 0.72, !- Conductivity {W/m-K}", + " 1860, !- Density {kg/m3}", + " 780, !- Specific Heat {J/kg-K}", + " 0.9, !- Thermal Absorptance", + " 0.7, !- Solar Absorptance", + " 0.7; !- Visible Absorptance", + + " Material,", + " FINISH FLOORING - TILE 1 / 16 IN, !- Name", + " Smooth, !- Roughness", + " 1.6000000E-03, !- Thickness {m}", + " 0.1700000, !- Conductivity {W/m-K}", + " 1922.210, !- Density {kg/m3}", + " 1250.000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.5000000, !- Solar Absorptance", + " 0.5000000; !- Visible Absorptance", + + " Material,", + " GYP1, !- Name", + " MediumRough, !- Roughness", + " 1.2700000E-02, !- Thickness {m}", + " 7.8450000E-01, !- Conductivity {W/m-K}", + " 1842.1221, !- Density {kg/m3}", + " 988.000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.5000000, !- Solar Absorptance", + " 0.5000000; !- Visible Absorptance", + + " Material,", + " GYP2, !- Name", + " MediumRough, !- Roughness", + " 1.9050000E-02, !- Thickness {m}", + " 7.8450000E-01, !- Conductivity {W/m-K}", + " 1842.1221, !- Density {kg/m3}", + " 988.000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.5000000, !- Solar Absorptance", + " 0.5000000; !- Visible Absorptance", + + " Material,", + " INS - EXPANDED EXT POLYSTYRENE R12, !- Name", + " Rough, !- Roughness", + " 0.07, !- Thickness {m}", + " 2.0000000E-02, !- Conductivity {W/m-K}", + " 56.06000, !- Density {kg/m3}", + " 1210.000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.5000000, !- Solar Absorptance", + " 0.5000000; !- Visible Absorptance", + + " Material,", + " CONCRETE, !- Name", + " MediumRough, !- Roughness", + " 0.5000000, !- Thickness {m}", + " 1.290000, !- Conductivity {W/m-K}", + " 2242.580, !- Density {kg/m3}", + " 830.00000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6000000, !- Solar Absorptance", + " 0.6000000; !- Visible Absorptance", + + " Material,", + " CLN-INS, !- Name", + " Rough, !- Roughness", + " 0.005, !- Thickness {m}", + " 0.5, !- Conductivity {W/m-K}", + " 56.06000, !- Density {kg/m3}", + " 1210.000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.5000000, !- Solar Absorptance", + " 0.5000000; !- Visible Absorptance", + + " Material:NoMass,", + " CP01, !- Name", + " Rough, !- Roughness", + " 0.3670000, !- Thermal Resistance {m2-K/W}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material:NoMass,", + " MAT-SB-U, !- Name", + " Rough, !- Roughness", + " 0.117406666, !- Thermal Resistance {m2-K/W}", + " 0.65, !- Thermal Absorptance", + " 0.65, !- Solar Absorptance", + " 0.65; !- Visible Absorptance", + + " Material:NoMass,", + " MAT-CLNG-1, !- Name", + " Rough, !- Roughness", + " 0.652259290, !- Thermal Resistance {m2-K/W}", + " 0.65, !- Thermal Absorptance", + " 0.65, !- Solar Absorptance", + " 0.65; !- Visible Absorptance", + + " Material:NoMass,", + " MAT-FLOOR-1, !- Name", + " Rough, !- Roughness", + " 3.522199631, !- Thermal Resistance {m2-K/W}", + " 0.65, !- Thermal Absorptance", + " 0.65, !- Solar Absorptance", + " 0.65; !- Visible Absorptance", + + " Material:AirGap,", + " AL21, !- Name", + " 0.1570000; !- Thermal Resistance {m2-K/W}", + + " Material:AirGap,", + " AL23, !- Name", + " 0.1530000; !- Thermal Resistance {m2-K/W}", + + " WindowMaterial:Glazing,", + " CLEAR 3MM, !- Name", + " SpectralAverage, !- Optical Data Type", + " , !- Window Glass Spectral Data Set Name", + " 0.003, !- Thickness {m}", + " 0.837, !- Solar Transmittance at Normal Incidence", + " 0.075, !- Front Side Solar Reflectance at Normal Incidence", + " 0.075, !- Back Side Solar Reflectance at Normal Incidence", + " 0.898, !- Visible Transmittance at Normal Incidence", + " 0.081, !- Front Side Visible Reflectance at Normal Incidence", + " 0.081, !- Back Side Visible Reflectance at Normal Incidence", + " 0.0, !- Infrared Transmittance at Normal Incidence", + " 0.84, !- Front Side Infrared Hemispherical Emissivity", + " 0.84, !- Back Side Infrared Hemispherical Emissivity", + " 0.9; !- Conductivity {W/m-K}", + + " WindowMaterial:Glazing,", + " GREY 3MM, !- Name", + " SpectralAverage, !- Optical Data Type", + " , !- Window Glass Spectral Data Set Name", + " 0.003, !- Thickness {m}", + " 0.626, !- Solar Transmittance at Normal Incidence", + " 0.061, !- Front Side Solar Reflectance at Normal Incidence", + " 0.061, !- Back Side Solar Reflectance at Normal Incidence", + " 0.611, !- Visible Transmittance at Normal Incidence", + " 0.061, !- Front Side Visible Reflectance at Normal Incidence", + " 0.061, !- Back Side Visible Reflectance at Normal Incidence", + " 0.0, !- Infrared Transmittance at Normal Incidence", + " 0.84, !- Front Side Infrared Hemispherical Emissivity", + " 0.84, !- Back Side Infrared Hemispherical Emissivity", + " 0.9; !- Conductivity {W/m-K}", + + " WindowMaterial:Glazing,", + " CLEAR 6MM, !- Name", + " SpectralAverage, !- Optical Data Type", + " , !- Window Glass Spectral Data Set Name", + " 0.006, !- Thickness {m}", + " 0.775, !- Solar Transmittance at Normal Incidence", + " 0.071, !- Front Side Solar Reflectance at Normal Incidence", + " 0.071, !- Back Side Solar Reflectance at Normal Incidence", + " 0.881, !- Visible Transmittance at Normal Incidence", + " 0.080, !- Front Side Visible Reflectance at Normal Incidence", + " 0.080, !- Back Side Visible Reflectance at Normal Incidence", + " 0.0, !- Infrared Transmittance at Normal Incidence", + " 0.84, !- Front Side Infrared Hemispherical Emissivity", + " 0.84, !- Back Side Infrared Hemispherical Emissivity", + " 0.9; !- Conductivity {W/m-K}", + + " WindowMaterial:Glazing,", + " LoE CLEAR 6MM, !- Name", + " SpectralAverage, !- Optical Data Type", + " , !- Window Glass Spectral Data Set Name", + " 0.006, !- Thickness {m}", + " 0.600, !- Solar Transmittance at Normal Incidence", + " 0.170, !- Front Side Solar Reflectance at Normal Incidence", + " 0.220, !- Back Side Solar Reflectance at Normal Incidence", + " 0.840, !- Visible Transmittance at Normal Incidence", + " 0.055, !- Front Side Visible Reflectance at Normal Incidence", + " 0.078, !- Back Side Visible Reflectance at Normal Incidence", + " 0.0, !- Infrared Transmittance at Normal Incidence", + " 0.84, !- Front Side Infrared Hemispherical Emissivity", + " 0.10, !- Back Side Infrared Hemispherical Emissivity", + " 0.9; !- Conductivity {W/m-K}", + + " WindowMaterial:Gas,", + " AIR 6MM, !- Name", + " Air, !- Gas Type", + " 0.0063; !- Thickness {m}", + + " WindowMaterial:Gas,", + " AIR 13MM, !- Name", + " Air, !- Gas Type", + " 0.0127; !- Thickness {m}", + + " WindowMaterial:Gas,", + " ARGON 13MM, !- Name", + " Argon, !- Gas Type", + " 0.0127; !- Thickness {m}", + + " Construction,", + " ROOF-1, !- Name", + " RG01, !- Outside Layer", + " BR01, !- Layer 2", + " IN46, !- Layer 3", + " WD01; !- Layer 4", + + " Construction,", + " WALL-1, !- Name", + " WD01, !- Outside Layer", + " PW03, !- Layer 2", + " IN02, !- Layer 3", + " GP01; !- Layer 4", + + " Construction,", + " CLNG-1, !- Name", + " MAT-CLNG-1; !- Outside Layer", + + " Construction,", + " SB-U, !- Name", + " MAT-SB-U; !- Outside Layer", + + " Construction,", + " FLOOR-1, !- Name", + " MAT-FLOOR-1; !- Outside Layer", + + " Construction,", + " FLOOR-SLAB-1, !- Name", + " CONCRETE, !- Outside Layer", + " INS - EXPANDED EXT POLYSTYRENE R12, !- Layer 2", + " CONC, !- Layer 3", + " FINISH FLOORING - TILE 1 / 16 IN; !- Layer 4", + + " Construction,", + " INT-WALL-1, !- Name", + " GP02, !- Outside Layer", + " AL21, !- Layer 2", + " GP02; !- Layer 3", + + " Construction,", + " Dbl Clr 3mm/13mm Air, !- Name", + " CLEAR 3MM, !- Outside Layer", + " AIR 13MM, !- Layer 2", + " CLEAR 3MM; !- Layer 3", + + " Construction,", + " Dbl Clr 3mm/13mm Arg, !- Name", + " CLEAR 3MM, !- Outside Layer", + " ARGON 13MM, !- Layer 2", + " CLEAR 3MM; !- Layer 3", + + " Construction,", + " Sgl Grey 3mm, !- Name", + " GREY 3MM; !- Outside Layer", + + " Construction,", + " Dbl Clr 6mm/6mm Air, !- Name", + " CLEAR 6MM, !- Outside Layer", + " AIR 6MM, !- Layer 2", + " CLEAR 6MM; !- Layer 3", + + " Construction,", + " Dbl LoE (e2=.1) Clr 6mm/6mm Air, !- Name", + " LoE CLEAR 6MM, !- Outside Layer", + " AIR 6MM, !- Layer 2", + " CLEAR 6MM; !- Layer 3", + + " Construction:InternalSource,", + " Ceiling with Radiant, !- Name", + " 2, !- Source Present After Layer Number", + " 2, !- Temperature Calculation Requested After Layer Number", + " 1, !- Dimensions for the CTF Calculation", + " 0.1524, !- Tube Spacing {m}", + " CLN-INS, !- Outside Layer", + " GYP1, !- Layer 2", + " GYP2, !- Layer 3", + " MAT-CLNG-1; !- Layer 4", + + " Construction:InternalSource,", + " reverseCeiling with Radiant, !- Name", + " 2, !- Source Present After Layer Number", + " 2, !- Temperature Calculation Requested After Layer Number", + " 1, !- Dimensions for the CTF Calculation", + " 0.1524, !- Tube Spacing {m}", + " MAT-CLNG-1, !- Outside Layer", + " GYP2, !- Layer 2", + " GYP1, !- Layer 3", + " CLN-INS; !- Layer 4", + + " Construction:InternalSource,", + " Floor with Radiant, !- Name", + " 2, !- Source Present After Layer Number", + " 2, !- Temperature Calculation Requested After Layer Number", + " 1, !- Dimensions for the CTF Calculation", + " 0.1524, !- Tube Spacing {m}", + " INS - EXPANDED EXT POLYSTYRENE R12, !- Outside Layer", + " CONC, !- Layer 2", + " CONC, !- Layer 3", + " FINISH FLOORING - TILE 1 / 16 IN; !- Layer 4", + + " GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " CounterClockWise, !- Vertex Entry Direction", + " relative; !- Coordinate System", + + " Zone,", + " PLENUM-1, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " 0.609600067, !- Ceiling Height {m}", + " 283.2; !- Volume {m3}", + + " Zone,", + " SPACE1-1, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " 2.438400269, !- Ceiling Height {m}", + " 239.247360229; !- Volume {m3}", + + " Zone,", + " SPACE2-1, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " 2.438400269, !- Ceiling Height {m}", + " 103.311355591; !- Volume {m3}", + + " Zone,", + " SPACE3-1, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " 2.438400269, !- Ceiling Height {m}", + " 239.247360229; !- Volume {m3}", + + " Zone,", + " SPACE4-1, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " 2.438400269, !- Ceiling Height {m}", + " 103.311355591; !- Volume {m3}", + + " Zone,", + " SPACE5-1, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " 2.438400269, !- Ceiling Height {m}", + " 447.682556152; !- Volume {m3}", + + " BuildingSurface:Detailed,", + " WALL-1PF, !- Name", + " WALL, !- Surface Type", + " WALL-1, !- Construction Name", + " PLENUM-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.0,0.0,3.0, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 30.5,0.0,3.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " WALL-1PR, !- Name", + " WALL, !- Surface Type", + " WALL-1, !- Construction Name", + " PLENUM-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 30.5,0.0,3.0, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 30.5,15.2,3.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " WALL-1PB, !- Name", + " WALL, !- Surface Type", + " WALL-1, !- Construction Name", + " PLENUM-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 30.5,15.2,3.0, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 0.0,15.2,3.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " WALL-1PL, !- Name", + " WALL, !- Surface Type", + " WALL-1, !- Construction Name", + " PLENUM-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.0,15.2,3.0, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 0.0,0.0,3.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " TOP-1, !- Name", + " ROOF, !- Surface Type", + " ROOF-1, !- Construction Name", + " PLENUM-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.00000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.0,15.2,3.0, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,0.0,3.0, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,0.0,3.0, !- X,Y,Z ==> Vertex 3 {m}", + " 30.5,15.2,3.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " C1-1P, !- Name", + " FLOOR, !- Surface Type", + " reverseceiling with Radiant, !- Construction Name", + " PLENUM-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " C1-1, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " C2-1P, !- Name", + " FLOOR, !- Surface Type", + " reverseCeiling with Radiant, !- Construction Name", + " PLENUM-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " C2-1, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " C3-1P, !- Name", + " FLOOR, !- Surface Type", + " reverseCeiling with Radiant, !- Construction Name", + " PLENUM-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " C3-1, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 30.5,15.2,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " C4-1P, !- Name", + " FLOOR, !- Surface Type", + " reverseCeiling with Radiant, !- Construction Name", + " PLENUM-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " C4-1, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " C5-1P, !- Name", + " FLOOR, !- Surface Type", + " reverseceiling with Radiant, !- Construction Name", + " PLENUM-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " C5-1, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " FRONT-1, !- Name", + " WALL, !- Surface Type", + " WALL-1, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 30.5,0.0,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " C1-1, !- Name", + " CEILING, !- Surface Type", + " ceiling with Radiant, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " C1-1P, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " F1-1, !- Name", + " FLOOR, !- Surface Type", + " FLOOR-1, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Ground, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,3.7,0.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB12, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB21, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB14, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB41, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 0.0,0.0,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB15, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE1-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB51, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " RIGHT-1, !- Name", + " WALL, !- Surface Type", + " WALL-1, !- Construction Name", + " SPACE2-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 30.5,15.2,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " C2-1, !- Name", + " CEILING, !- Surface Type", + " Ceiling with Radiant, !- Construction Name", + " SPACE2-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " C2-1P, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,0.0,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " F2-1, !- Name", + " FLOOR, !- Surface Type", + " Floor with radiant, !- Construction Name", + " SPACE2-1, !- Zone Name", + " Ground, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,3.7,0.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB21, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE2-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB12, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 30.5,0.0,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB23, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE2-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB32, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB25, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE2-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB52, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " BACK-1, !- Name", + " WALL, !- Surface Type", + " WALL-1, !- Construction Name", + " SPACE3-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 0.0,15.2,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " C3-1, !- Name", + " CEILING, !- Surface Type", + " Ceiling with Radiant, !- Construction Name", + " SPACE3-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " C3-1P, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 30.5,15.2,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " F3-1, !- Name", + " FLOOR, !- Surface Type", + " FLOOR-1, !- Construction Name", + " SPACE3-1, !- Zone Name", + " Ground, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 1 {m}", + " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 30.5,15.2,0.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB32, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE3-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB23, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 30.5,15.2,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB34, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE3-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB43, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB35, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE3-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB53, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " LEFT-1, !- Name", + " WALL, !- Surface Type", + " WALL-1, !- Construction Name", + " SPACE4-1, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.50000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 0.0,0.0,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " C4-1, !- Name", + " CEILING, !- Surface Type", + " Ceiling with Radiant, !- Construction Name", + " SPACE4-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " C4-1P, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,15.2,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " F4-1, !- Name", + " FLOOR, !- Surface Type", + " FLOOR-1, !- Construction Name", + " SPACE4-1, !- Zone Name", + " Ground, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,11.6,0.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB41, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE4-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB14, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.0,0.0,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB43, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE4-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB34, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 0.0,15.2,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB45, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE4-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB54, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " C5-1, !- Name", + " CEILING, !- Surface Type", + " ceiling with Radiant, !- Construction Name", + " SPACE5-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " C5-1P, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 2 {m}", + " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " F5-1, !- Name", + " FLOOR, !- Surface Type", + " FLOOR-1, !- Construction Name", + " SPACE5-1, !- Zone Name", + " Ground, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 1 {m}", + " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,11.6,0.0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB51, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE5-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB15, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 3.7,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB52, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE5-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB25, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,3.7,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 26.8,3.7,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 26.8,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB53, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE5-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB35, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 26.8,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 26.8,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,11.6,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " SB54, !- Name", + " WALL, !- Surface Type", + " INT-WALL-1, !- Construction Name", + " SPACE5-1, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " SB45, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 3.7,11.6,2.4, !- X,Y,Z ==> Vertex 1 {m}", + " 3.7,11.6,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 3.7,3.7,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 3.7,3.7,2.4; !- X,Y,Z ==> Vertex 4 {m}", + + " FenestrationSurface:Detailed,", + " WF-1, !- Name", + " WINDOW, !- Surface Type", + " Dbl Clr 3mm/13mm Air, !- Construction Name", + " FRONT-1, !- Building Surface Name", + " , !- Outside Boundary Condition Object", + " 0.50000, !- View Factor to Ground", + " , !- Shading Control Name", + " , !- Frame and Divider Name", + " 1, !- Multiplier", + " 4, !- Number of Vertices", + " 3.0,0.0,2.1, !- X,Y,Z ==> Vertex 1 {m}", + " 3.0,0.0,0.9, !- X,Y,Z ==> Vertex 2 {m}", + " 16.8,0.0,0.9, !- X,Y,Z ==> Vertex 3 {m}", + " 16.8,0.0,2.1; !- X,Y,Z ==> Vertex 4 {m}", + + " FenestrationSurface:Detailed,", + " DF-1, !- Name", + " GLASSDOOR, !- Surface Type", + " Sgl Grey 3mm, !- Construction Name", + " FRONT-1, !- Building Surface Name", + " , !- Outside Boundary Condition Object", + " 0.50000, !- View Factor to Ground", + " , !- Shading Control Name", + " , !- Frame and Divider Name", + " 1, !- Multiplier", + " 4, !- Number of Vertices", + " 21.3,0.0,2.1, !- X,Y,Z ==> Vertex 1 {m}", + " 21.3,0.0,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 23.8,0.0,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 23.8,0.0,2.1; !- X,Y,Z ==> Vertex 4 {m}", + + " FenestrationSurface:Detailed,", + " WR-1, !- Name", + " WINDOW, !- Surface Type", + " Dbl Clr 3mm/13mm Air, !- Construction Name", + " RIGHT-1, !- Building Surface Name", + " , !- Outside Boundary Condition Object", + " 0.50000, !- View Factor to Ground", + " , !- Shading Control Name", + " , !- Frame and Divider Name", + " 1, !- Multiplier", + " 4, !- Number of Vertices", + " 30.5,3.8,2.1, !- X,Y,Z ==> Vertex 1 {m}", + " 30.5,3.8,0.9, !- X,Y,Z ==> Vertex 2 {m}", + " 30.5,11.4,0.9, !- X,Y,Z ==> Vertex 3 {m}", + " 30.5,11.4,2.1; !- X,Y,Z ==> Vertex 4 {m}", + + " FenestrationSurface:Detailed,", + " WB-1, !- Name", + " WINDOW, !- Surface Type", + " Dbl Clr 3mm/13mm Air, !- Construction Name", + " BACK-1, !- Building Surface Name", + " , !- Outside Boundary Condition Object", + " 0.50000, !- View Factor to Ground", + " , !- Shading Control Name", + " , !- Frame and Divider Name", + " 1, !- Multiplier", + " 4, !- Number of Vertices", + " 27.4,15.2,2.1, !- X,Y,Z ==> Vertex 1 {m}", + " 27.4,15.2,0.9, !- X,Y,Z ==> Vertex 2 {m}", + " 13.7,15.2,0.9, !- X,Y,Z ==> Vertex 3 {m}", + " 13.7,15.2,2.1; !- X,Y,Z ==> Vertex 4 {m}", + + " FenestrationSurface:Detailed,", + " DB-1, !- Name", + " GLASSDOOR, !- Surface Type", + " Sgl Grey 3mm, !- Construction Name", + " BACK-1, !- Building Surface Name", + " , !- Outside Boundary Condition Object", + " 0.50000, !- View Factor to Ground", + " , !- Shading Control Name", + " , !- Frame and Divider Name", + " 1, !- Multiplier", + " 4, !- Number of Vertices", + " 9.1,15.2,2.1, !- X,Y,Z ==> Vertex 1 {m}", + " 9.1,15.2,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 7.0,15.2,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 7.0,15.2,2.1; !- X,Y,Z ==> Vertex 4 {m}", + + " FenestrationSurface:Detailed,", + " WL-1, !- Name", + " WINDOW, !- Surface Type", + " Dbl Clr 3mm/13mm Air, !- Construction Name", + " LEFT-1, !- Building Surface Name", + " , !- Outside Boundary Condition Object", + " 0.50000, !- View Factor to Ground", + " , !- Shading Control Name", + " , !- Frame and Divider Name", + " 1, !- Multiplier", + " 4, !- Number of Vertices", + " 0.0,11.4,2.1, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,11.4,0.9, !- X,Y,Z ==> Vertex 2 {m}", + " 0.0,3.8,0.9, !- X,Y,Z ==> Vertex 3 {m}", + " 0.0,3.8,2.1; !- X,Y,Z ==> Vertex 4 {m}", + + " Shading:Zone:Detailed,", + " Main South Overhang, !- Name", + " FRONT-1, !- Base Surface Name", + " ShadeTransSch, !- Transmittance Schedule Name", + " 4, !- Number of Vertices", + " 0.0,-1.3,2.2, !- X,Y,Z ==> Vertex 1 {m}", + " 0.0,0.0,2.2, !- X,Y,Z ==> Vertex 2 {m}", + " 19.8,0.0,2.2, !- X,Y,Z ==> Vertex 3 {m}", + " 19.8,-1.3,2.2; !- X,Y,Z ==> Vertex 4 {m}", + + " Shading:Zone:Detailed,", + " South Door Overhang, !- Name", + " FRONT-1, !- Base Surface Name", + " ShadeTransSch, !- Transmittance Schedule Name", + " 4, !- Number of Vertices", + " 21.0,-2.0,2.6, !- X,Y,Z ==> Vertex 1 {m}", + " 21.0,0.0,2.6, !- X,Y,Z ==> Vertex 2 {m}", + " 24.1,0.0,2.6, !- X,Y,Z ==> Vertex 3 {m}", + " 24.1,-2.0,2.6; !- X,Y,Z ==> Vertex 4 {m}", + + " ZoneHVAC:VentilatedSlab,", + " Zone1VentSlab, !- Name", + " FanAndCoilAvailSched, !- Availability Schedule Name", + " SPACE1-1, !- Zone Name", + " Z125, !- Surface Name or Radiant Surface Group Name", + " 0.84, !- Maximum Air Flow Rate {m3/s}", + " VariablePercent, !- Outdoor Air Control Type", + " 0.168, !- Minimum Outdoor Air Flow Rate {m3/s}", + " FanAndCoilAvailSched, !- Minimum Outdoor Air Schedule Name", + " 0.84, !- Maximum Outdoor Air Flow Rate {m3/s}", + " VentSlabMaxOA, !- Maximum Outdoor Air Fraction or Temperature Schedule Name", + " SeriesSlabs, !- System Configuration Type", + " 0, !- Hollow Core Inside Diameter {m}", + " 0, !- Hollow Core Length {m}", + " 0, !- Number of Cores", + " MeanAirTemperature, !- Temperature Control Type", + " VentSlabHotHighAir, !- Heating High Air Temperature Schedule Name", + " VentSlabHotLowAir, !- Heating Low Air Temperature Schedule Name", + " VentSlabHotHighControl, !- Heating High Control Temperature Schedule Name", + " VentSlabHotLowControl, !- Heating Low Control Temperature Schedule Name", + " VentSlabCoolHighAir, !- Cooling High Air Temperature Schedule Name", + " VentSlabCoolLowAir, !- Cooling Low Air Temperature Schedule Name", + " VentSlabCoolHighControl, !- Cooling High Control Temperature Schedule Name", + " VentSlabCoolLowControl, !- Cooling Low Control Temperature Schedule Name", + " Zone1VentSlabReturnAirNode, !- Return Air Node Name", + " Zone1VentslabSlabInNode, !- Slab In Node Name", + " , !- Zone Supply Air Node Name", + " Zone1VentSlabOAInNode, !- Outdoor Air Node Name", + " Zone1VentSlabExhNode, !- Relief Air Node Name", + " Zone1VentSlabOAMixerOutletNode, !- Outdoor Air Mixer Outlet Node Name", + " Zone1VentSlabFanOutletNode, !- Fan Outlet Node Name", + " Zone1VentSlabFan, !- Fan Name", + " HeatingAndCooling, !- Coil Option Type", + " Coil:Heating:Water, !- Heating Coil Object Type", + " Zone1VentSlabHeatingCoil,!- Heating Coil Name", + " Zone1VentSlabHwInLetNode,!- Hot Water or Steam Inlet Node Name", + " Coil:Cooling:Water, !- Cooling Coil Object Type", + " Zone1VentSlabCoolingCoil,!- Cooling Coil Name", + " Zone1VentSlabChWInletNode; !- Cold Water Inlet Node Name", + + " ZoneHVAC:VentilatedSlab,", + " Zone4VentSlab, !- Name", + " FanAndCoilAvailSched, !- Availability Schedule Name", + " SPACE4-1, !- Zone Name", + " Z43, !- Surface Name or Radiant Surface Group Name", + " 0.84, !- Maximum Air Flow Rate {m3/s}", + " VariablePercent, !- Outdoor Air Control Type", + " 0.168, !- Minimum Outdoor Air Flow Rate {m3/s}", + " FanAndCoilAvailSched, !- Minimum Outdoor Air Schedule Name", + " 0.84, !- Maximum Outdoor Air Flow Rate {m3/s}", + " VentSlabMaxOA, !- Maximum Outdoor Air Fraction or Temperature Schedule Name", + " SeriesSlabs, !- System Configuration Type", + " 0, !- Hollow Core Inside Diameter {m}", + " 0, !- Hollow Core Length {m}", + " 0, !- Number of Cores", + " OutdoorDryBulbTemperature, !- Temperature Control Type", + " VentSlabHotHighAir, !- Heating High Air Temperature Schedule Name", + " VentSlabHotLowAir, !- Heating Low Air Temperature Schedule Name", + " VentSlabHotHighControl, !- Heating High Control Temperature Schedule Name", + " VentSlabHotLowControl, !- Heating Low Control Temperature Schedule Name", + " VentSlabCoolHighAir, !- Cooling High Air Temperature Schedule Name", + " VentSlabCoolLowAir, !- Cooling Low Air Temperature Schedule Name", + " VentSlabCoolHighControl, !- Cooling High Control Temperature Schedule Name", + " VentSlabCoolLowControl2, !- Cooling Low Control Temperature Schedule Name", + " Zone4VentSlabReturnAirNode, !- Return Air Node Name", + " Zone4VentslabSlabInNode, !- Slab In Node Name", + " , !- Zone Supply Air Node Name", + " Zone4VentSlabOAInNode, !- Outdoor Air Node Name", + " Zone4VentSlabExhNode, !- Relief Air Node Name", + " Zone4VentSlabOAMixerOutletNode, !- Outdoor Air Mixer Outlet Node Name", + " Zone4VentSlabFanOutletNode, !- Fan Outlet Node Name", + " Zone4VentSlabFan, !- Fan Name", + " HeatingAndCooling, !- Coil Option Type", + " Coil:Heating:Electric, !- Heating Coil Object Type", + " Zone4VentSlabHeatingCoil,!- Heating Coil Name", + " , !- Hot Water or Steam Inlet Node Name", + " Coil:Cooling:Water, !- Cooling Coil Object Type", + " Zone4VentSlabCoolingCoil,!- Cooling Coil Name", + " Zone4VentSlabChWInletNode; !- Cold Water Inlet Node Name", + + " ZoneHVAC:VentilatedSlab:SlabGroup,", + " Z125, !- Name", + " SPACE1-1, !- Zone 1 Name", + " C1-1, !- Surface 1 Name", + " 0.05, !- Core Diameter for Surface 1 {m}", + " 30, !- Core Length for Surface 1 {m}", + " 20, !- Core Numbers for Surface 1", + " Z1VentslabIn, !- Slab Inlet Node Name for Surface 1", + " Z1VentSlabout, !- Slab Outlet Node Name for Surface 1", + " SPACE2-1, !- Zone 2 Name", + " C2-1, !- Surface 2 Name", + " 0.05, !- Core Diameter for Surface 2 {m}", + " 15, !- Core Length for Surface 2 {m}", + " 20, !- Core Numbers for Surface 2", + " Z2VentSlabIn, !- Slab Inlet Node Name for Surface 2", + " Z2VentSlabOut, !- Slab Outlet Node Name for Surface 2", + " SPACE5-1, !- Zone 3 Name", + " C5-1, !- Surface 3 Name", + " 0.05, !- Core Diameter for Surface 3 {m}", + " 30, !- Core Length for Surface 3 {m}", + " 20, !- Core Numbers for Surface 3", + " Z5VentSlabIn, !- Slab Inlet Node Name for Surface 3", + " Z5VentSlabOut; !- Slab Outlet Node Name for Surface 3", + + " ZoneHVAC:VentilatedSlab:SlabGroup,", + " Z43, !- Name", + " SPACE4-1, !- Zone 1 Name", + " C4-1, !- Surface 1 Name", + " 0.05, !- Core Diameter for Surface 1 {m}", + " 30, !- Core Length for Surface 1 {m}", + " 20, !- Core Numbers for Surface 1", + " Z4VentSlabIn, !- Slab Inlet Node Name for Surface 1", + " Z4VentSlabOut, !- Slab Outlet Node Name for Surface 1", + " SPACE3-1, !- Zone 2 Name", + " C3-1, !- Surface 2 Name", + " 0.05, !- Core Diameter for Surface 2 {m}", + " 30, !- Core Length for Surface 2 {m}", + " 20, !- Core Numbers for Surface 2", + " Z3VentSlabIn, !- Slab Inlet Node Name for Surface 2", + " Z3VentSlabOut; !- Slab Outlet Node Name for Surface 2", + + " ZoneHVAC:EquipmentList,", + " Zone1Equipment, !- Name", + " SequentialLoad, !- Load Distribution Scheme", + " ZoneHVAC:VentilatedSlab, !- Zone Equipment 1 Object Type", + " Zone1VentSlab, !- Zone Equipment 1 Name", + " 1, !- Zone Equipment 1 Cooling Sequence", + " 1; !- Zone Equipment 1 Heating or No-Load Sequence", + + " ZoneHVAC:EquipmentList,", + " Zone4Equipment, !- Name", + " SequentialLoad, !- Load Distribution Scheme", + " ZoneHVAC:VentilatedSlab, !- Zone Equipment 1 Object Type", + " Zone4VentSlab, !- Zone Equipment 1 Name", + " 1, !- Zone Equipment 1 Cooling Sequence", + " 1; !- Zone Equipment 1 Heating or No-Load Sequence", + + " ZoneHVAC:EquipmentConnections,", + " SPACE1-1, !- Zone Name", + " Zone1Equipment, !- Zone Conditioning Equipment List Name", + " , !- Zone Air Inlet Node or NodeList Name", + " , !- Zone Air Exhaust Node or NodeList Name", + " Zone 1 Node, !- Zone Air Node Name", + " Zone 1 Outlet Node; !- Zone Return Air Node Name", + + " ZoneHVAC:EquipmentConnections,", + " SPACE4-1, !- Zone Name", + " Zone4Equipment, !- Zone Conditioning Equipment List Name", + " , !- Zone Air Inlet Node or NodeList Name", + " , !- Zone Air Exhaust Node or NodeList Name", + " Zone 4 Node, !- Zone Air Node Name", + " Zone 4 Outlet Node; !- Zone Return Air Node Name", + + " Fan:ConstantVolume,", + " Zone1VentSlabFan, !- Name", + " FanAndCoilAvailSched, !- Availability Schedule Name", + " 0.5, !- Fan Total Efficiency", + " 75.0, !- Pressure Rise {Pa}", + " 0.84, !- Maximum Flow Rate {m3/s}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Airstream Fraction", + " Zone1VentSlabOAMixerOutletNode, !- Air Inlet Node Name", + " Zone1VentSlabFanOutletNode; !- Air Outlet Node Name", + + " Fan:ConstantVolume,", + " Zone4VentSlabFan, !- Name", + " FanAndCoilAvailSched, !- Availability Schedule Name", + " 0.5, !- Fan Total Efficiency", + " 75.0, !- Pressure Rise {Pa}", + " 0.84, !- Maximum Flow Rate {m3/s}", + " 0.9, !- Motor Efficiency", + " 1.0, !- Motor In Airstream Fraction", + " Zone4VentSlabOAMixerOutletNode, !- Air Inlet Node Name", + " Zone4VentSlabFanOutletNode; !- Air Outlet Node Name", + + " Coil:Cooling:Water,", + " Zone1VentSlabCoolingCoil,!- Name", + " FanAndCoilAvailSched, !- Availability Schedule Name", + " 0.0010, !- Design Water Flow Rate {m3/s}", + " 0.84, !- Design Air Flow Rate {m3/s}", + " 6.67, !- Design Inlet Water Temperature {C}", + " 35, !- Design Inlet Air Temperature {C}", + " 13.23, !- Design Outlet Air Temperature {C}", + " 0.013, !- Design Inlet Air Humidity Ratio {kgWater/kgDryAir}", + " 0.0087138, !- Design Outlet Air Humidity Ratio {kgWater/kgDryAir}", + " Zone1VentSlabChWInletNode, !- Water Inlet Node Name", + " Zone1VentSlabChWOutletNode, !- Water Outlet Node Name", + " Zone1VentSlabFanOutletNode, !- Air Inlet Node Name", + " Zone1VentSlabCCoutletNode, !- Air Outlet Node Name", + " SimpleAnalysis, !- Type of Analysis", + " CrossFlow; !- Heat Exchanger Configuration", + + " Coil:Cooling:Water,", + " Zone4VentSlabCoolingCoil,!- Name", + " FanAndCoilAvailSched, !- Availability Schedule Name", + " 0.0010, !- Design Water Flow Rate {m3/s}", + " 0.84, !- Design Air Flow Rate {m3/s}", + " 6.67, !- Design Inlet Water Temperature {C}", + " 35, !- Design Inlet Air Temperature {C}", + " 13.23, !- Design Outlet Air Temperature {C}", + " 0.013, !- Design Inlet Air Humidity Ratio {kgWater/kgDryAir}", + " 0.0087138, !- Design Outlet Air Humidity Ratio {kgWater/kgDryAir}", + " Zone4VentSlabChWInletNode, !- Water Inlet Node Name", + " Zone4VentSlabChWOutletNode, !- Water Outlet Node Name", + " Zone4VentSlabFanOutletNode, !- Air Inlet Node Name", + " Zone4VentSlabCCoutletNode, !- Air Outlet Node Name", + " SimpleAnalysis, !- Type of Analysis", + " CrossFlow; !- Heat Exchanger Configuration", + + " Coil:Heating:Water,", + " Zone1VentSlabHeatingCoil,!- Name", + " FanAndCoilAvailSched, !- Availability Schedule Name", + " 400., !- U-Factor Times Area Value {W/K}", + " 0.8, !- Maximum Water Flow Rate {m3/s}", + " Zone1VentSlabHWInletNode,!- Water Inlet Node Name", + " Zone1VentSlabHWOutletNode, !- Water Outlet Node Name", + " Zone1VentSlabCCOutletNode, !- Air Inlet Node Name", + " Zone1VentslabSlabInNode, !- Air Outlet Node Name", + " NominalCapacity, !- Performance Input Method", + " 40000, !- Rated Capacity {W}", + " , !- Rated Inlet Water Temperature {C}", + " , !- Rated Inlet Air Temperature {C}", + " , !- Rated Outlet Water Temperature {C}", + " , !- Rated Outlet Air Temperature {C}", + " ; !- Rated Ratio for Air and Water Convection", + + " Coil:Heating:Electric,", + " Zone4VentSlabHeatingCoil,!- Name", + " FanAndCoilAvailSched, !- Availability Schedule Name", + " 0.99, !- Efficiency", + " 40000, !- Nominal Capacity {W}", + " Zone4VentSlabCCOutletNode, !- Air Inlet Node Name", + " Zone4VentSlabSlabInNode; !- Air Outlet Node Name", + + " Branch,", + " Cooling Supply Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pump:VariableSpeed, !- Component 1 Object Type", + " ChW Circ Pump, !- Component 1 Name", + " ChW Supply Inlet Node, !- Component 1 Inlet Node Name", + " ChW Pump Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " Cooling Purchased Chilled Water Branch, !- Name", + " , !- Pressure Drop Curve Name", + " DistrictCooling, !- Component 1 Object Type", + " Purchased Cooling, !- Component 1 Name", + " Purchased Cooling Inlet Node, !- Component 1 Inlet Node Name", + " Purchased Cooling Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " Cooling Supply Bypass Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " Cooling Supply Side Bypass, !- Component 1 Name", + " Cooling Supply Bypass Inlet Node, !- Component 1 Inlet Node Name", + " Cooling Supply Bypass Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " Cooling Supply Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " Cooling Supply Outlet, !- Component 1 Name", + " Cooling Supply Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", + " ChW Supply Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " ZonesChWInletBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " ZonesChWInletPipe, !- Component 1 Name", + " ChW Demand Inlet Node, !- Component 1 Inlet Node Name", + " ChW Demand Entrance Pipe Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " ZonesChWOutletBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " ZonesChWOutletPipe, !- Component 1 Name", + " ChW Demand Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", + " ChW Demand Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " Zone1ChWBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Coil:Cooling:Water, !- Component 1 Object Type", + " Zone1VentSlabCoolingCoil,!- Component 1 Name", + " Zone1VentSlabChWInletNode, !- Component 1 Inlet Node Name", + " Zone1VentSlabChWOutletNode; !- Component 1 Outlet Node Name", + + " Branch,", + " ZonesChWBypassBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " ZonesChWBypassPipe, !- Component 1 Name", + " ZonesChWBypassInletNode, !- Component 1 Inlet Node Name", + " ZonesChWBypassOutletNode;!- Component 1 Outlet Node Name", + + " Branch,", + " Heating Supply Inlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pump:VariableSpeed, !- Component 1 Object Type", + " HW Circ Pump, !- Component 1 Name", + " HW Supply Inlet Node, !- Component 1 Inlet Node Name", + " HW Pump Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " Heating Purchased Hot Water Branch, !- Name", + " , !- Pressure Drop Curve Name", + " DistrictHeating, !- Component 1 Object Type", + " Purchased Heating, !- Component 1 Name", + " Purchased Heat Inlet Node, !- Component 1 Inlet Node Name", + " Purchased Heat Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " Heating Supply Bypass Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " Heating Supply Side Bypass, !- Component 1 Name", + " Heating Supply Bypass Inlet Node, !- Component 1 Inlet Node Name", + " Heating Supply Bypass Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " Heating Supply Outlet Branch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " Heating Supply Outlet, !- Component 1 Name", + " Heating Supply Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", + " HW Supply Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " ZonesHWInletBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " ZonesHWInletPipe, !- Component 1 Name", + " HW Demand Inlet Node, !- Component 1 Inlet Node Name", + " HW Demand Entrance Pipe Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " ZonesHWOutletBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " ZonesHWOutletPipe, !- Component 1 Name", + " HW Demand Exit Pipe Inlet Node, !- Component 1 Inlet Node Name", + " HW Demand Outlet Node; !- Component 1 Outlet Node Name", + + " Branch,", + " Zone1HWBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Coil:Heating:Water, !- Component 1 Object Type", + " Zone1VentSlabHeatingCoil,!- Component 1 Name", + " Zone1VentSlabHWInletNode,!- Component 1 Inlet Node Name", + " Zone1VentSlabHWOutletNode; !- Component 1 Outlet Node Name", + + " Branch,", + " ZonesHWBypassBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Pipe:Adiabatic, !- Component 1 Object Type", + " ZonesHWBypassPipe, !- Component 1 Name", + " ZonesHWBypassInletNode, !- Component 1 Inlet Node Name", + " ZonesHWBypassOutletNode; !- Component 1 Outlet Node Name", + + " Branch,", + " Zone4ChWBranch, !- Name", + " , !- Pressure Drop Curve Name", + " Coil:Cooling:Water, !- Component 1 Object Type", + " Zone4VentSlabCoolingCoil,!- Component 1 Name", + " Zone4VentSlabChWInletNode, !- Component 1 Inlet Node Name", + " Zone4VentSlabChWOutletNode; !- Component 1 Outlet Node Name", + + " BranchList,", + " Cooling Supply Side Branches, !- Name", + " Cooling Supply Inlet Branch, !- Branch 1 Name", + " Cooling Purchased Chilled Water Branch, !- Branch 2 Name", + " Cooling Supply Bypass Branch, !- Branch 3 Name", + " Cooling Supply Outlet Branch; !- Branch 4 Name", + + " BranchList,", + " Cooling Demand Side Branches, !- Name", + " ZonesChWInletBranch, !- Branch 1 Name", + " Zone1ChWBranch, !- Branch 2 Name", + " Zone4ChWBranch, !- Branch 3 Name", + " ZonesChWBypassBranch, !- Branch 4 Name", + " ZonesChWOutletBranch; !- Branch 5 Name", + + " BranchList,", + " Heating Supply Side Branches, !- Name", + " Heating Supply Inlet Branch, !- Branch 1 Name", + " Heating Purchased Hot Water Branch, !- Branch 2 Name", + " Heating Supply Bypass Branch, !- Branch 3 Name", + " Heating Supply Outlet Branch; !- Branch 4 Name", + + " BranchList,", + " Heating Demand Side Branches, !- Name", + " ZonesHWInletBranch, !- Branch 1 Name", + " Zone1HWBranch, !- Branch 2 Name", + " ZonesHWBypassBranch, !- Branch 3 Name", + " ZonesHWOutletBranch; !- Branch 4 Name", + + " Connector:Splitter,", + " Cooling Supply Splitter, !- Name", + " Cooling Supply Inlet Branch, !- Inlet Branch Name", + " Cooling Purchased Chilled Water Branch, !- Outlet Branch 1 Name", + " Cooling Supply Bypass Branch; !- Outlet Branch 2 Name", + + " Connector:Splitter,", + " Zones ChW Splitter, !- Name", + " ZonesChWInletBranch, !- Inlet Branch Name", + " Zone1ChWBranch, !- Outlet Branch 1 Name", + " Zone4ChWBranch, !- Outlet Branch 2 Name", + " ZonesChWBypassBranch; !- Outlet Branch 3 Name", + + " Connector:Splitter,", + " Heating Supply Splitter, !- Name", + " Heating Supply Inlet Branch, !- Inlet Branch Name", + " Heating Purchased Hot Water Branch, !- Outlet Branch 1 Name", + " Heating Supply Bypass Branch; !- Outlet Branch 2 Name", + + " Connector:Splitter,", + " Zones HW Splitter, !- Name", + " ZonesHWInletBranch, !- Inlet Branch Name", + " Zone1HWBranch, !- Outlet Branch 1 Name", + " ZonesHWBypassBranch; !- Outlet Branch 2 Name", + + " Connector:Mixer,", + " Cooling Supply Mixer, !- Name", + " Cooling Supply Outlet Branch, !- Outlet Branch Name", + " Cooling Purchased Chilled Water Branch, !- Inlet Branch 1 Name", + " Cooling Supply Bypass Branch; !- Inlet Branch 2 Name", + + " Connector:Mixer,", + " Zones ChW Mixer, !- Name", + " ZonesChWOutletBranch, !- Outlet Branch Name", + " Zone1ChWBranch, !- Inlet Branch 1 Name", + " Zone4ChWBranch, !- Inlet Branch 2 Name", + " ZonesChWBypassBranch; !- Inlet Branch 3 Name", + + " Connector:Mixer,", + " Heating Supply Mixer, !- Name", + " Heating Supply Outlet Branch, !- Outlet Branch Name", + " Heating Purchased Hot Water Branch, !- Inlet Branch 1 Name", + " Heating Supply Bypass Branch; !- Inlet Branch 2 Name", + + " Connector:Mixer,", + " Zones HW Mixer, !- Name", + " ZonesHWOutletBranch, !- Outlet Branch Name", + " Zone1HWBranch, !- Inlet Branch 1 Name", + " ZonesHWBypassBranch; !- Inlet Branch 2 Name", + + " ConnectorList,", + " Cooling Supply Side Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " Cooling Supply Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " Cooling Supply Mixer; !- Connector 2 Name", + + " ConnectorList,", + " Cooling Demand Side Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " Zones ChW Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " Zones ChW Mixer; !- Connector 2 Name", + + " ConnectorList,", + " Heating Supply Side Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " Heating Supply Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " Heating Supply Mixer; !- Connector 2 Name", + + " ConnectorList,", + " Heating Demand Side Connectors, !- Name", + " Connector:Splitter, !- Connector 1 Object Type", + " Zones HW Splitter, !- Connector 1 Name", + " Connector:Mixer, !- Connector 2 Object Type", + " Zones HW Mixer; !- Connector 2 Name", + + " NodeList,", + " Chilled Water Loop Setpoint Node List, !- Name", + " ChW Supply Outlet Node; !- Node 1 Name", + + " NodeList,", + " Hot Water Loop Setpoint Node List, !- Name", + " HW Supply Outlet Node; !- Node 1 Name", + + " OutdoorAir:Node,", + " Zone1VentSlabOAInNode, !- Name", + " -1.0; !- Height Above Ground {m}", + + " OutdoorAir:Node,", + " Zone4VentSlabOAInNode, !- Name", + " -1.0; !- Height Above Ground {m}", + + " Pump:VariableSpeed,", + " ChW Circ Pump, !- Name", + " ChW Supply Inlet Node, !- Inlet Node Name", + " ChW Pump Outlet Node, !- Outlet Node Name", + " 0.004, !- Rated Flow Rate {m3/s}", + " 300000, !- Rated Pump Head {Pa}", + " 1800, !- Rated Power Consumption {W}", + " 0.87, !- Motor Efficiency", + " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", + " 0, !- Coefficient 1 of the Part Load Performance Curve", + " 1, !- Coefficient 2 of the Part Load Performance Curve", + " 0, !- Coefficient 3 of the Part Load Performance Curve", + " 0, !- Coefficient 4 of the Part Load Performance Curve", + " 0, !- Minimum Flow Rate {m3/s}", + " INTERMITTENT; !- Pump Control Type", + + " Pump:VariableSpeed,", + " HW Circ Pump, !- Name", + " HW Supply Inlet Node, !- Inlet Node Name", + " HW Pump Outlet Node, !- Outlet Node Name", + " 0.002, !- Rated Flow Rate {m3/s}", + " 300000, !- Rated Pump Head {Pa}", + " 900, !- Rated Power Consumption {W}", + " 0.87, !- Motor Efficiency", + " 0.0, !- Fraction of Motor Inefficiencies to Fluid Stream", + " 0, !- Coefficient 1 of the Part Load Performance Curve", + " 1, !- Coefficient 2 of the Part Load Performance Curve", + " 0, !- Coefficient 3 of the Part Load Performance Curve", + " 0, !- Coefficient 4 of the Part Load Performance Curve", + " 0, !- Minimum Flow Rate {m3/s}", + " INTERMITTENT; !- Pump Control Type", + + " DistrictCooling,", + " Purchased Cooling, !- Name", + " Purchased Cooling Inlet Node, !- Chilled Water Inlet Node Name", + " Purchased Cooling Outlet Node, !- Chilled Water Outlet Node Name", + " 1000000; !- Nominal Capacity {W}", + + " DistrictHeating,", + " Purchased Heating, !- Name", + " Purchased Heat Inlet Node, !- Hot Water Inlet Node Name", + " Purchased Heat Outlet Node, !- Hot Water Outlet Node Name", + " 1000000; !- Nominal Capacity {W}", + + " PlantLoop,", + " Chilled Water Loop, !- Name", + " Water, !- Fluid Type", + " , !- User Defined Fluid Type", + " Chilled Loop Operation, !- Plant Equipment Operation Scheme Name", + " ChW Supply Outlet Node, !- Loop Temperature Setpoint Node Name", + " 100, !- Maximum Loop Temperature {C}", + " 1, !- Minimum Loop Temperature {C}", + " 0.004, !- Maximum Loop Flow Rate {m3/s}", + " 0.0, !- Minimum Loop Flow Rate {m3/s}", + " autocalculate, !- Plant Loop Volume {m3}", + " ChW Supply Inlet Node, !- Plant Side Inlet Node Name", + " ChW Supply Outlet Node, !- Plant Side Outlet Node Name", + " Cooling Supply Side Branches, !- Plant Side Branch List Name", + " Cooling Supply Side Connectors, !- Plant Side Connector List Name", + " ChW Demand Inlet Node, !- Demand Side Inlet Node Name", + " ChW Demand Outlet Node, !- Demand Side Outlet Node Name", + " Cooling Demand Side Branches, !- Demand Side Branch List Name", + " Cooling Demand Side Connectors, !- Demand Side Connector List Name", + " Optimal, !- Load Distribution Scheme", + " , !- Availability Manager List Name", + " , !- Plant Loop Demand Calculation Scheme", + " , !- Common Pipe Simulation", + " , !- Pressure Simulation Type", + " 2.0; !- Loop Circulation Time {minutes}", + + " PlantLoop,", + " Hot Water Loop, !- Name", + " Water, !- Fluid Type", + " , !- User Defined Fluid Type", + " Hot Loop Operation, !- Plant Equipment Operation Scheme Name", + " HW Supply Outlet Node, !- Loop Temperature Setpoint Node Name", + " 100, !- Maximum Loop Temperature {C}", + " 10, !- Minimum Loop Temperature {C}", + " 0.002, !- Maximum Loop Flow Rate {m3/s}", + " 0.0, !- Minimum Loop Flow Rate {m3/s}", + " autocalculate, !- Plant Loop Volume {m3}", + " HW Supply Inlet Node, !- Plant Side Inlet Node Name", + " HW Supply Outlet Node, !- Plant Side Outlet Node Name", + " Heating Supply Side Branches, !- Plant Side Branch List Name", + " Heating Supply Side Connectors, !- Plant Side Connector List Name", + " HW Demand Inlet Node, !- Demand Side Inlet Node Name", + " HW Demand Outlet Node, !- Demand Side Outlet Node Name", + " Heating Demand Side Branches, !- Demand Side Branch List Name", + " Heating Demand Side Connectors, !- Demand Side Connector List Name", + " Optimal, !- Load Distribution Scheme", + " , !- Availability Manager List Name", + " , !- Plant Loop Demand Calculation Scheme", + " , !- Common Pipe Simulation", + " , !- Pressure Simulation Type", + " 2.0; !- Loop Circulation Time {minutes}", + + " Pipe:Adiabatic,", + " Cooling Supply Side Bypass, !- Name", + " Cooling Supply Bypass Inlet Node, !- Inlet Node Name", + " Cooling Supply Bypass Outlet Node; !- Outlet Node Name", + + " Pipe:Adiabatic,", + " Cooling Supply Outlet, !- Name", + " Cooling Supply Exit Pipe Inlet Node, !- Inlet Node Name", + " ChW Supply Outlet Node; !- Outlet Node Name", + + " Pipe:Adiabatic,", + " ZonesChWInletPipe, !- Name", + " ChW Demand Inlet Node, !- Inlet Node Name", + " ChW Demand Entrance Pipe Outlet Node; !- Outlet Node Name", + + " Pipe:Adiabatic,", + " ZonesChWOutletPipe, !- Name", + " ChW Demand Exit Pipe Inlet Node, !- Inlet Node Name", + " ChW Demand Outlet Node; !- Outlet Node Name", + + " Pipe:Adiabatic,", + " ZonesChWBypassPipe, !- Name", + " ZonesChWBypassInletNode, !- Inlet Node Name", + " ZonesChWBypassOutletNode;!- Outlet Node Name", + + " Pipe:Adiabatic,", + " Heating Supply Side Bypass, !- Name", + " Heating Supply Bypass Inlet Node, !- Inlet Node Name", + " Heating Supply Bypass Outlet Node; !- Outlet Node Name", + + " Pipe:Adiabatic,", + " Heating Supply Outlet, !- Name", + " Heating Supply Exit Pipe Inlet Node, !- Inlet Node Name", + " HW Supply Outlet Node; !- Outlet Node Name", + + " Pipe:Adiabatic,", + " ZonesHWInletPipe, !- Name", + " HW Demand Inlet Node, !- Inlet Node Name", + " HW Demand Entrance Pipe Outlet Node; !- Outlet Node Name", + + " Pipe:Adiabatic,", + " ZonesHWOutletPipe, !- Name", + " HW Demand Exit Pipe Inlet Node, !- Inlet Node Name", + " HW Demand Outlet Node; !- Outlet Node Name", + + " Pipe:Adiabatic,", + " ZonesHWBypassPipe, !- Name", + " ZonesHWBypassInletNode, !- Inlet Node Name", + " ZonesHWBypassOutletNode; !- Outlet Node Name", + + " PlantEquipmentList,", + " cooling plant, !- Name", + " DistrictCooling, !- Equipment 1 Object Type", + " Purchased Cooling; !- Equipment 1 Name", + + " PlantEquipmentList,", + " heating plant, !- Name", + " DistrictHeating, !- Equipment 1 Object Type", + " Purchased Heating; !- Equipment 1 Name", + + " PlantEquipmentOperation:CoolingLoad,", + " Purchased Cooling Only, !- Name", + " 0, !- Load Range 1 Lower Limit {W}", + " 1000000, !- Load Range 1 Upper Limit {W}", + " cooling plant; !- Range 1 Equipment List Name", + + " PlantEquipmentOperation:HeatingLoad,", + " Purchased Heating Only, !- Name", + " 0, !- Load Range 1 Lower Limit {W}", + " 1000000, !- Load Range 1 Upper Limit {W}", + " heating plant; !- Range 1 Equipment List Name", + + " PlantEquipmentOperationSchemes,", + " Chilled Loop Operation, !- Name", + " PlantEquipmentOperation:CoolingLoad, !- Control Scheme 1 Object Type", + " Purchased Cooling Only, !- Control Scheme 1 Name", + " ON; !- Control Scheme 1 Schedule Name", + + " PlantEquipmentOperationSchemes,", + " Hot Loop Operation, !- Name", + " PlantEquipmentOperation:HeatingLoad, !- Control Scheme 1 Object Type", + " Purchased Heating Only, !- Control Scheme 1 Name", + " ON; !- Control Scheme 1 Schedule Name", + + " SetpointManager:Scheduled,", + " Chilled Water Loop Setpoint Manager, !- Name", + " Temperature, !- Control Variable", + " CW Loop Temp Schedule, !- Schedule Name", + " Chilled Water Loop Setpoint Node List; !- Setpoint Node or NodeList Name", + + " SetpointManager:Scheduled,", + " Hot Water Loop Setpoint Manager, !- Name", + " Temperature, !- Control Variable", + " HW Loop Temp Schedule, !- Schedule Name", + " Hot Water Loop Setpoint Node List; !- Setpoint Node or NodeList Name", + }); + ASSERT_TRUE(process_idf(idf_objects)); + + NumOfTimeStepInHour = 1; // must initialize this to get schedules initialized + MinutesPerTimeStep = 60; // must initialize this to get schedules initialized + ProcessScheduleInput(); // read schedule data + + ErrorsFound = false; + HeatBalanceManager::GetProjectControlData(ErrorsFound); // read project control data + EXPECT_FALSE(ErrorsFound); + + ErrorsFound = false; + HeatBalanceManager::GetZoneData(ErrorsFound); // read zone data + EXPECT_FALSE(ErrorsFound); + + ErrorsFound = false; + GetMaterialData(ErrorsFound); // read construction material data + EXPECT_FALSE(ErrorsFound); + + ErrorsFound = false; + HeatBalanceManager::GetConstructData(ErrorsFound); // read construction data + EXPECT_FALSE(ErrorsFound); + + ErrorsFound = false; + SetupZoneGeometry(ErrorsFound); // read zone geometry data + EXPECT_FALSE(ErrorsFound); + + ErrorsFound = false; + GetSurfaceListsInputs(); // read surface data + EXPECT_FALSE(ErrorsFound); + + GetVentilatedSlabInput(); // read ventilated slab data + EXPECT_EQ(2, NumOfVentSlabs); + EXPECT_EQ("ZONE1VENTSLAB", VentSlab(1).Name); + EXPECT_EQ("ZONE4VENTSLAB", VentSlab(2).Name); + + InitVentilatedSlab(Item, VentSlabZoneNum, FirstHVACIteration); + EXPECT_EQ(324.38499999999999, VentSlab(1).TotalSurfaceArea); + EXPECT_EQ(139.21499999999997, VentSlab(2).TotalSurfaceArea); } diff --git a/tst/EnergyPlus/unit/WeatherManager.unit.cc b/tst/EnergyPlus/unit/WeatherManager.unit.cc index 9e1bae6581f..ec96234dce2 100644 --- a/tst/EnergyPlus/unit/WeatherManager.unit.cc +++ b/tst/EnergyPlus/unit/WeatherManager.unit.cc @@ -68,222 +68,222 @@ using namespace EnergyPlus; using namespace EnergyPlus::WeatherManager; using namespace EnergyPlus::ScheduleManager; -TEST_F(EnergyPlusFixture, SkyTempTest ) +TEST_F(EnergyPlusFixture, SkyTempTest) { - std::string const idf_objects = delimited_string({ - "Version,", - "8.3;", - "SimulationControl, NO, NO, NO, YES, YES;", - "Timestep,4;", - "RunPeriod,", - ", !- Name", - "2, !- Begin Month", - "27, !- Begin Day of Month", - ", !- Begin Year", - "3, !- End Month", - "3, !- End Day of Month", - ", !- End Year", - "Tuesday, !- Day of Week for Start Day", - "Yes, !- Use Weather File Holidays and Special Days", - "Yes, !- Use Weather File Daylight Saving Period", - "No, !- Apply Weekend Holiday Rule", - "Yes, !- Use Weather File Rain Indicators", - "Yes; !- Use Weather File Snow Indicators", - "BUILDING, Simple One Zone (Wireframe DXF), 0.0, Suburbs, .04, .004, MinimalShadowing, 30, 6;", - "Schedule:Compact,", - "TskySchedule, !- Name", - ", !- Schedule Type Limits Name", - "Through: 2/26, For: AllOtherDays, Until: 24:00, 2.26,", - "Through: 2/27, For: AllOtherDays, Until: 24:00, 2.27,", - "Through: 2/28, For: AllOtherDays, Until: 24:00, 2.28,", - "Through: 3/1, For: AllOtherDays, Until: 24:00, 3.01,", - "Through: 3/2, For: AllOtherDays, Until: 24:00, 3.02,", - "Through: 12/31, For: AllOtherDays, Until: 24:00, 12.31;", - "WeatherProperty:SkyTemperature,", - ", !- Name", - "ScheduleValue, !- Calculation Type", - "TskySchedule; !- Schedule Name", - "Site:WaterMainsTemperature,", - "Schedule, !- Calculation Method", - "TskySchedule, !- Temperature Schedule Name", - ", !- Annual Average Outdoor Air Temperature{ C }", - "; !- Maximum Difference In Monthly Average Outdoor Air Temperatures{ deltaC }", - "Output:Variable,*,Schedule Value,hourly;", - "Output:Variable,*,Site Sky Temperature,hourly;", - "Output:Variable,*,Site Mains Water Temperature,hourly; !- Zone Average[C]", - " Site:Location,", - " USA IL-CHICAGO-OHARE, !- Name", - " 41.77, !- Latitude {deg}", - " -87.75, !- Longitude {deg}", - " -6.00, !- Time Zone {hr}", - " 190; !- Elevation {m}", - }); - - ASSERT_TRUE(process_idf(idf_objects)); - Array2D< Real64 > TomorrowSkyTemp; // Sky temperature - DataGlobals::NumOfTimeStepInHour = 4; - DataGlobals::MinutesPerTimeStep = 60 / DataGlobals::NumOfTimeStepInHour; - TomorrowSkyTemp.allocate( DataGlobals::NumOfTimeStepInHour, 24 ); - TomorrowSkyTemp = 0.0; - - //Febuary 27 - ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 58, 3); - EXPECT_NEAR(2.27, TomorrowSkyTemp(1,1), .001); - - //Febuary 28 - ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 59, 4); - EXPECT_NEAR(2.28, TomorrowSkyTemp(1, 1), .001); - - //March 1 - ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 60, 5); - EXPECT_NEAR(3.01, TomorrowSkyTemp(1, 1), .001); - - //Not March 2, this "Day" is ignored unless its a leap year, otherwise same data as March 1 - ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 61, 6); - EXPECT_NEAR(3.01, TomorrowSkyTemp(1, 1), .001); - - //March 2 - ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 62, 6); - EXPECT_NEAR(3.02, TomorrowSkyTemp(1, 1), .001); + std::string const idf_objects = delimited_string({ + "Version,", + "8.3;", + "SimulationControl, NO, NO, NO, YES, YES;", + "Timestep,4;", + "RunPeriod,", + ", !- Name", + "2, !- Begin Month", + "27, !- Begin Day of Month", + ", !- Begin Year", + "3, !- End Month", + "3, !- End Day of Month", + ", !- End Year", + "Tuesday, !- Day of Week for Start Day", + "Yes, !- Use Weather File Holidays and Special Days", + "Yes, !- Use Weather File Daylight Saving Period", + "No, !- Apply Weekend Holiday Rule", + "Yes, !- Use Weather File Rain Indicators", + "Yes; !- Use Weather File Snow Indicators", + "BUILDING, Simple One Zone (Wireframe DXF), 0.0, Suburbs, .04, .004, MinimalShadowing, 30, 6;", + "Schedule:Compact,", + "TskySchedule, !- Name", + ", !- Schedule Type Limits Name", + "Through: 2/26, For: AllOtherDays, Until: 24:00, 2.26,", + "Through: 2/27, For: AllOtherDays, Until: 24:00, 2.27,", + "Through: 2/28, For: AllOtherDays, Until: 24:00, 2.28,", + "Through: 3/1, For: AllOtherDays, Until: 24:00, 3.01,", + "Through: 3/2, For: AllOtherDays, Until: 24:00, 3.02,", + "Through: 12/31, For: AllOtherDays, Until: 24:00, 12.31;", + "WeatherProperty:SkyTemperature,", + ", !- Name", + "ScheduleValue, !- Calculation Type", + "TskySchedule; !- Schedule Name", + "Site:WaterMainsTemperature,", + "Schedule, !- Calculation Method", + "TskySchedule, !- Temperature Schedule Name", + ", !- Annual Average Outdoor Air Temperature{ C }", + "; !- Maximum Difference In Monthly Average Outdoor Air Temperatures{ deltaC }", + "Output:Variable,*,Schedule Value,hourly;", + "Output:Variable,*,Site Sky Temperature,hourly;", + "Output:Variable,*,Site Mains Water Temperature,hourly; !- Zone Average[C]", + " Site:Location,", + " USA IL-CHICAGO-OHARE, !- Name", + " 41.77, !- Latitude {deg}", + " -87.75, !- Longitude {deg}", + " -6.00, !- Time Zone {hr}", + " 190; !- Elevation {m}", + }); + + ASSERT_TRUE(process_idf(idf_objects)); + Array2D TomorrowSkyTemp; // Sky temperature + DataGlobals::NumOfTimeStepInHour = 4; + DataGlobals::MinutesPerTimeStep = 60 / DataGlobals::NumOfTimeStepInHour; + TomorrowSkyTemp.allocate(DataGlobals::NumOfTimeStepInHour, 24); + TomorrowSkyTemp = 0.0; + + // Febuary 27 + ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 58, 3); + EXPECT_NEAR(2.27, TomorrowSkyTemp(1, 1), .001); + + // Febuary 28 + ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 59, 4); + EXPECT_NEAR(2.28, TomorrowSkyTemp(1, 1), .001); + + // March 1 + ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 60, 5); + EXPECT_NEAR(3.01, TomorrowSkyTemp(1, 1), .001); + + // Not March 2, this "Day" is ignored unless its a leap year, otherwise same data as March 1 + ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 61, 6); + EXPECT_NEAR(3.01, TomorrowSkyTemp(1, 1), .001); + + // March 2 + ScheduleManager::GetScheduleValuesForDay(1, TomorrowSkyTemp, 62, 6); + EXPECT_NEAR(3.02, TomorrowSkyTemp(1, 1), .001); } TEST_F(EnergyPlusFixture, WaterMainsCorrelationTest) { - using DataEnvironment::DayOfYear; + using DataEnvironment::DayOfYear; using DataEnvironment::Latitude; using DataEnvironment::WaterMainsTemp; - WaterMainsTempsMethod = WeatherManager::CorrelationMethod; - WaterMainsTempsAnnualAvgAirTemp = 9.69; - WaterMainsTempsMaxDiffAirTemp = 28.1; - DayOfYear = 50; + WaterMainsTempsMethod = WeatherManager::CorrelationMethod; + WaterMainsTempsAnnualAvgAirTemp = 9.69; + WaterMainsTempsMaxDiffAirTemp = 28.1; + DayOfYear = 50; - Latitude = 40.0; - CalcWaterMainsTemp(); - EXPECT_NEAR(WaterMainsTemp, 6.6667, 0.0001); + Latitude = 40.0; + CalcWaterMainsTemp(); + EXPECT_NEAR(WaterMainsTemp, 6.6667, 0.0001); - Latitude = -40.0; - CalcWaterMainsTemp(); - EXPECT_NEAR(WaterMainsTemp, 19.3799, 0.0001); + Latitude = -40.0; + CalcWaterMainsTemp(); + EXPECT_NEAR(WaterMainsTemp, 19.3799, 0.0001); } -TEST_F( EnergyPlusFixture, JGDate_Test ) +TEST_F(EnergyPlusFixture, JGDate_Test) { - // used http://aa.usno.navy.mil/data/docs/JulianDate.php - // - int julianDate; - int gregorianYear; - int gregorianMonth; - int gregorianDay; - - gregorianYear = 2016; // when test was made - gregorianMonth = 5; - gregorianDay = 25; - JGDate( GregorianToJulian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); - EXPECT_EQ( 2457534, julianDate ); - JGDate( JulianToGregorian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); - EXPECT_EQ( 2016, gregorianYear ); - EXPECT_EQ( 5, gregorianMonth ); - EXPECT_EQ( 25, gregorianDay ); - - gregorianYear = 2015; // a year before when test was made - gregorianMonth = 5; - gregorianDay = 25; - JGDate( GregorianToJulian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); - EXPECT_EQ( 2457168, julianDate ); - JGDate( JulianToGregorian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); - EXPECT_EQ( 2015, gregorianYear ); - EXPECT_EQ( 5, gregorianMonth ); - EXPECT_EQ( 25, gregorianDay ); - - gregorianYear = 1966; // a fine date in history - gregorianMonth = 7; - gregorianDay = 16; - JGDate( GregorianToJulian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); - EXPECT_EQ( 2439323, julianDate ); - JGDate( JulianToGregorian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); - EXPECT_EQ( 1966, gregorianYear ); - EXPECT_EQ( 7, gregorianMonth ); - EXPECT_EQ( 16, gregorianDay ); - - gregorianYear = 2000; //complex leap year - gregorianMonth = 12; - gregorianDay = 31; - JGDate( GregorianToJulian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); - EXPECT_EQ( 2451910, julianDate ); - JGDate( JulianToGregorian, julianDate, gregorianYear, gregorianMonth, gregorianDay ); - EXPECT_EQ( 2000, gregorianYear ); - EXPECT_EQ( 12, gregorianMonth ); - EXPECT_EQ( 31, gregorianDay ); + // used http://aa.usno.navy.mil/data/docs/JulianDate.php + // + int julianDate; + int gregorianYear; + int gregorianMonth; + int gregorianDay; + + gregorianYear = 2016; // when test was made + gregorianMonth = 5; + gregorianDay = 25; + JGDate(GregorianToJulian, julianDate, gregorianYear, gregorianMonth, gregorianDay); + EXPECT_EQ(2457534, julianDate); + JGDate(JulianToGregorian, julianDate, gregorianYear, gregorianMonth, gregorianDay); + EXPECT_EQ(2016, gregorianYear); + EXPECT_EQ(5, gregorianMonth); + EXPECT_EQ(25, gregorianDay); + + gregorianYear = 2015; // a year before when test was made + gregorianMonth = 5; + gregorianDay = 25; + JGDate(GregorianToJulian, julianDate, gregorianYear, gregorianMonth, gregorianDay); + EXPECT_EQ(2457168, julianDate); + JGDate(JulianToGregorian, julianDate, gregorianYear, gregorianMonth, gregorianDay); + EXPECT_EQ(2015, gregorianYear); + EXPECT_EQ(5, gregorianMonth); + EXPECT_EQ(25, gregorianDay); + + gregorianYear = 1966; // a fine date in history + gregorianMonth = 7; + gregorianDay = 16; + JGDate(GregorianToJulian, julianDate, gregorianYear, gregorianMonth, gregorianDay); + EXPECT_EQ(2439323, julianDate); + JGDate(JulianToGregorian, julianDate, gregorianYear, gregorianMonth, gregorianDay); + EXPECT_EQ(1966, gregorianYear); + EXPECT_EQ(7, gregorianMonth); + EXPECT_EQ(16, gregorianDay); + + gregorianYear = 2000; // complex leap year + gregorianMonth = 12; + gregorianDay = 31; + JGDate(GregorianToJulian, julianDate, gregorianYear, gregorianMonth, gregorianDay); + EXPECT_EQ(2451910, julianDate); + JGDate(JulianToGregorian, julianDate, gregorianYear, gregorianMonth, gregorianDay); + EXPECT_EQ(2000, gregorianYear); + EXPECT_EQ(12, gregorianMonth); + EXPECT_EQ(31, gregorianDay); } -TEST_F( EnergyPlusFixture, interpolateWindDirectionTest ) +TEST_F(EnergyPlusFixture, interpolateWindDirectionTest) { - // simple test in each quadrant - EXPECT_EQ( interpolateWindDirection( 0, 90, 0.5 ), 45. ); - EXPECT_EQ( interpolateWindDirection( 10, 80, 0.5 ), 45. ); - EXPECT_EQ( interpolateWindDirection( 20, 80, 0.7 ), 62. ); - EXPECT_EQ( interpolateWindDirection( 20, 80, 0.3 ), 38. ); - - EXPECT_EQ( interpolateWindDirection( 90, 180, 0.5 ), 135. ); - EXPECT_EQ( interpolateWindDirection( 100, 170, 0.5 ), 135. ); - EXPECT_EQ( interpolateWindDirection( 110, 170, 0.7 ), 152. ); - EXPECT_EQ( interpolateWindDirection( 110, 170, 0.3 ), 128. ); - - EXPECT_EQ( interpolateWindDirection( 180, 270, 0.5 ), 225. ); - EXPECT_EQ( interpolateWindDirection( 190, 260, 0.5 ), 225. ); - EXPECT_EQ( interpolateWindDirection( 200, 260, 0.7 ), 242. ); - EXPECT_EQ( interpolateWindDirection( 200, 260, 0.3 ), 218. ); - - EXPECT_EQ( interpolateWindDirection( 270, 360, 0.5 ), 315. ); - EXPECT_EQ( interpolateWindDirection( 280, 350, 0.5 ), 315. ); - EXPECT_EQ( interpolateWindDirection( 290, 350, 0.7 ), 332. ); - EXPECT_EQ( interpolateWindDirection( 290, 350, 0.3 ), 308. ); - - // tests across 180 degree angle - EXPECT_EQ( interpolateWindDirection( 170, 190, 0.7 ), 184. ); - EXPECT_EQ( interpolateWindDirection( 170, 190, 0.3 ), 176. ); - EXPECT_EQ( interpolateWindDirection( 100, 260, 0.7 ), 212. ); - EXPECT_EQ( interpolateWindDirection( 100, 260, 0.3 ), 148. ); - - // tests across 0 degree angle (which was issue #5682) - EXPECT_EQ( interpolateWindDirection( 350, 10, 0.7 ), 4. ); - EXPECT_EQ( interpolateWindDirection( 350, 10, 0.3 ), 356. ); - EXPECT_EQ( interpolateWindDirection( 300, 80, 0.7 ), 38. ); - EXPECT_EQ( interpolateWindDirection( 300, 80, 0.3 ), 342. ); - - EXPECT_EQ( interpolateWindDirection( 350, 10, 0.5 ), 0. ); - EXPECT_EQ( interpolateWindDirection( 340, 10, 0.5 ), 355. ); - EXPECT_EQ( interpolateWindDirection( 280, 10, 0.5 ), 325. ); - EXPECT_EQ( interpolateWindDirection( 260, 10, 0.5 ), 315. ); - EXPECT_EQ( interpolateWindDirection( 200, 10, 0.7 ), 319. ); - EXPECT_EQ( interpolateWindDirection( 200, 10, 0.3 ), 251. ); - EXPECT_EQ( interpolateWindDirection( 350, 160, 0.7 ), 109. ); - EXPECT_EQ( interpolateWindDirection( 350, 160, 0.3 ), 41. ); - - // tests for new failures - EXPECT_EQ( interpolateWindDirection( 70, 30, 0.25 ), 60. ); - - // tests across 180 degree angle (reversed) - EXPECT_EQ( interpolateWindDirection( 190, 170, 0.3 ), 184. ); - EXPECT_EQ( interpolateWindDirection( 190, 170, 0.7 ), 176. ); - EXPECT_EQ( interpolateWindDirection( 260, 100, 0.3 ), 212. ); - EXPECT_EQ( interpolateWindDirection( 260, 100, 0.7 ), 148. ); - - // tests across 0 degree angle (reversed) - EXPECT_EQ( interpolateWindDirection( 10, 350, 0.3 ), 4. ); - EXPECT_EQ( interpolateWindDirection( 10, 350, 0.7 ), 356. ); - EXPECT_EQ( interpolateWindDirection( 80, 300, 0.3 ), 38. ); - EXPECT_EQ( interpolateWindDirection( 80, 300, 0.7 ), 342. ); - - EXPECT_EQ( interpolateWindDirection( 10, 350, 0.5 ), 0. ); - EXPECT_EQ( interpolateWindDirection( 10, 340, 0.5 ), 355. ); - EXPECT_EQ( interpolateWindDirection( 10, 280, 0.5 ), 325. ); - EXPECT_EQ( interpolateWindDirection( 10, 260, 0.5 ), 315. ); - EXPECT_EQ( interpolateWindDirection( 10, 200, 0.3 ), 319. ); - EXPECT_EQ( interpolateWindDirection( 10, 200, 0.7 ), 251. ); - EXPECT_EQ( interpolateWindDirection( 160, 350, 0.3 ), 109. ); - EXPECT_EQ( interpolateWindDirection( 160, 350, 0.7 ), 41. ); + // simple test in each quadrant + EXPECT_EQ(interpolateWindDirection(0, 90, 0.5), 45.); + EXPECT_EQ(interpolateWindDirection(10, 80, 0.5), 45.); + EXPECT_EQ(interpolateWindDirection(20, 80, 0.7), 62.); + EXPECT_EQ(interpolateWindDirection(20, 80, 0.3), 38.); + + EXPECT_EQ(interpolateWindDirection(90, 180, 0.5), 135.); + EXPECT_EQ(interpolateWindDirection(100, 170, 0.5), 135.); + EXPECT_EQ(interpolateWindDirection(110, 170, 0.7), 152.); + EXPECT_EQ(interpolateWindDirection(110, 170, 0.3), 128.); + + EXPECT_EQ(interpolateWindDirection(180, 270, 0.5), 225.); + EXPECT_EQ(interpolateWindDirection(190, 260, 0.5), 225.); + EXPECT_EQ(interpolateWindDirection(200, 260, 0.7), 242.); + EXPECT_EQ(interpolateWindDirection(200, 260, 0.3), 218.); + + EXPECT_EQ(interpolateWindDirection(270, 360, 0.5), 315.); + EXPECT_EQ(interpolateWindDirection(280, 350, 0.5), 315.); + EXPECT_EQ(interpolateWindDirection(290, 350, 0.7), 332.); + EXPECT_EQ(interpolateWindDirection(290, 350, 0.3), 308.); + + // tests across 180 degree angle + EXPECT_EQ(interpolateWindDirection(170, 190, 0.7), 184.); + EXPECT_EQ(interpolateWindDirection(170, 190, 0.3), 176.); + EXPECT_EQ(interpolateWindDirection(100, 260, 0.7), 212.); + EXPECT_EQ(interpolateWindDirection(100, 260, 0.3), 148.); + + // tests across 0 degree angle (which was issue #5682) + EXPECT_EQ(interpolateWindDirection(350, 10, 0.7), 4.); + EXPECT_EQ(interpolateWindDirection(350, 10, 0.3), 356.); + EXPECT_EQ(interpolateWindDirection(300, 80, 0.7), 38.); + EXPECT_EQ(interpolateWindDirection(300, 80, 0.3), 342.); + + EXPECT_EQ(interpolateWindDirection(350, 10, 0.5), 0.); + EXPECT_EQ(interpolateWindDirection(340, 10, 0.5), 355.); + EXPECT_EQ(interpolateWindDirection(280, 10, 0.5), 325.); + EXPECT_EQ(interpolateWindDirection(260, 10, 0.5), 315.); + EXPECT_EQ(interpolateWindDirection(200, 10, 0.7), 319.); + EXPECT_EQ(interpolateWindDirection(200, 10, 0.3), 251.); + EXPECT_EQ(interpolateWindDirection(350, 160, 0.7), 109.); + EXPECT_EQ(interpolateWindDirection(350, 160, 0.3), 41.); + + // tests for new failures + EXPECT_EQ(interpolateWindDirection(70, 30, 0.25), 60.); + + // tests across 180 degree angle (reversed) + EXPECT_EQ(interpolateWindDirection(190, 170, 0.3), 184.); + EXPECT_EQ(interpolateWindDirection(190, 170, 0.7), 176.); + EXPECT_EQ(interpolateWindDirection(260, 100, 0.3), 212.); + EXPECT_EQ(interpolateWindDirection(260, 100, 0.7), 148.); + + // tests across 0 degree angle (reversed) + EXPECT_EQ(interpolateWindDirection(10, 350, 0.3), 4.); + EXPECT_EQ(interpolateWindDirection(10, 350, 0.7), 356.); + EXPECT_EQ(interpolateWindDirection(80, 300, 0.3), 38.); + EXPECT_EQ(interpolateWindDirection(80, 300, 0.7), 342.); + + EXPECT_EQ(interpolateWindDirection(10, 350, 0.5), 0.); + EXPECT_EQ(interpolateWindDirection(10, 340, 0.5), 355.); + EXPECT_EQ(interpolateWindDirection(10, 280, 0.5), 325.); + EXPECT_EQ(interpolateWindDirection(10, 260, 0.5), 315.); + EXPECT_EQ(interpolateWindDirection(10, 200, 0.3), 319.); + EXPECT_EQ(interpolateWindDirection(10, 200, 0.7), 251.); + EXPECT_EQ(interpolateWindDirection(160, 350, 0.3), 109.); + EXPECT_EQ(interpolateWindDirection(160, 350, 0.7), 41.); } TEST_F(EnergyPlusFixture, UnderwaterBoundaryConditionFullyPopulated) @@ -291,56 +291,56 @@ TEST_F(EnergyPlusFixture, UnderwaterBoundaryConditionFullyPopulated) std::string const idf_objects = delimited_string({"SurfaceProperty:Underwater, UnderwaterSurfaceName, 31.4159, WaterTempSchedule, WaterVelocitySchedule;", - "Schedule:Constant, WaterTempSchedule, , 30;", - "Schedule:Constant, WaterVelocitySchedule, , 3.0;" + "Schedule:Constant, WaterTempSchedule, , 30;", + "Schedule:Constant, WaterVelocitySchedule, , 3.0;" "SurfaceProperty:OtherSideConditionsModel, UnderwaterSurfaceName, ConvectiveUnderwater;"}); - ASSERT_TRUE(process_idf(idf_objects)); - - // need to populate the OSCM array by calling the get input for it - bool errorsFound = false; - SurfaceGeometry::GetOSCMData(errorsFound); - EXPECT_FALSE(errorsFound); - EXPECT_EQ(DataSurfaces::TotOSCM, 1); - - // then process the input for this underwater surface - bool shouldBeTrue = WeatherManager::CheckIfAnyUnderwaterBoundaries(); - EXPECT_TRUE(shouldBeTrue); - EXPECT_EQ(WeatherManager::underwaterBoundaries[0].Name, "UNDERWATERSURFACENAME"); - EXPECT_NEAR(WeatherManager::underwaterBoundaries[0].distanceFromLeadingEdge, 31.4159, 0.0001); - EXPECT_EQ(WeatherManager::underwaterBoundaries[0].OSCMIndex, 1); - EXPECT_EQ(WeatherManager::underwaterBoundaries[0].WaterTempScheduleIndex, 1); - EXPECT_EQ(WeatherManager::underwaterBoundaries[0].VelocityScheduleIndex, 2); + ASSERT_TRUE(process_idf(idf_objects)); + + // need to populate the OSCM array by calling the get input for it + bool errorsFound = false; + SurfaceGeometry::GetOSCMData(errorsFound); + EXPECT_FALSE(errorsFound); + EXPECT_EQ(DataSurfaces::TotOSCM, 1); + + // then process the input for this underwater surface + bool shouldBeTrue = WeatherManager::CheckIfAnyUnderwaterBoundaries(); + EXPECT_TRUE(shouldBeTrue); + EXPECT_EQ(WeatherManager::underwaterBoundaries[0].Name, "UNDERWATERSURFACENAME"); + EXPECT_NEAR(WeatherManager::underwaterBoundaries[0].distanceFromLeadingEdge, 31.4159, 0.0001); + EXPECT_EQ(WeatherManager::underwaterBoundaries[0].OSCMIndex, 1); + EXPECT_EQ(WeatherManager::underwaterBoundaries[0].WaterTempScheduleIndex, 1); + EXPECT_EQ(WeatherManager::underwaterBoundaries[0].VelocityScheduleIndex, 2); } TEST_F(EnergyPlusFixture, UnderwaterBoundaryConditionMissingVelocityOK) { std::string const idf_objects = delimited_string({"SurfaceProperty:Underwater, UnderwaterSurfaceName, 31.4159, WaterTempSchedule, ;", - "Schedule:Constant, WaterTempSchedule, , 30;", + "Schedule:Constant, WaterTempSchedule, , 30;", "SurfaceProperty:OtherSideConditionsModel, UnderwaterSurfaceName, ConvectiveUnderwater;"}); - ASSERT_TRUE(process_idf(idf_objects)); - - // need to populate the OSCM array by calling the get input for it - bool errorsFound = false; - SurfaceGeometry::GetOSCMData(errorsFound); - EXPECT_FALSE(errorsFound); - EXPECT_EQ(DataSurfaces::TotOSCM, 1); - - // then process the input for this underwater surface - bool shouldBeTrue = WeatherManager::CheckIfAnyUnderwaterBoundaries(); - EXPECT_TRUE(shouldBeTrue); - EXPECT_EQ(WeatherManager::underwaterBoundaries[0].Name, "UNDERWATERSURFACENAME"); - EXPECT_NEAR(WeatherManager::underwaterBoundaries[0].distanceFromLeadingEdge, 31.4159, 0.0001); - EXPECT_EQ(WeatherManager::underwaterBoundaries[0].OSCMIndex, 1); - EXPECT_EQ(WeatherManager::underwaterBoundaries[0].WaterTempScheduleIndex, 1); - EXPECT_EQ(WeatherManager::underwaterBoundaries[0].VelocityScheduleIndex, 0); + ASSERT_TRUE(process_idf(idf_objects)); + + // need to populate the OSCM array by calling the get input for it + bool errorsFound = false; + SurfaceGeometry::GetOSCMData(errorsFound); + EXPECT_FALSE(errorsFound); + EXPECT_EQ(DataSurfaces::TotOSCM, 1); + + // then process the input for this underwater surface + bool shouldBeTrue = WeatherManager::CheckIfAnyUnderwaterBoundaries(); + EXPECT_TRUE(shouldBeTrue); + EXPECT_EQ(WeatherManager::underwaterBoundaries[0].Name, "UNDERWATERSURFACENAME"); + EXPECT_NEAR(WeatherManager::underwaterBoundaries[0].distanceFromLeadingEdge, 31.4159, 0.0001); + EXPECT_EQ(WeatherManager::underwaterBoundaries[0].OSCMIndex, 1); + EXPECT_EQ(WeatherManager::underwaterBoundaries[0].WaterTempScheduleIndex, 1); + EXPECT_EQ(WeatherManager::underwaterBoundaries[0].VelocityScheduleIndex, 0); } TEST_F(EnergyPlusFixture, UnderwaterBoundaryConditionConvectionCoefficients) { - EXPECT_NEAR(2483.702, WeatherManager::calculateWaterBoundaryConvectionCoefficient(30.0, 3.0, 30.0), 0.01); - EXPECT_NEAR(2162.188, WeatherManager::calculateWaterBoundaryConvectionCoefficient(30.0, 3.0, 60.0), 0.01); - EXPECT_NEAR(1993.771, WeatherManager::calculateWaterBoundaryConvectionCoefficient(30.0, 3.0, 90.0), 0.01); - EXPECT_NEAR(1882.294, WeatherManager::calculateWaterBoundaryConvectionCoefficient(30.0, 3.0, 120.0), 0.01); - EXPECT_NEAR(1800.136, WeatherManager::calculateWaterBoundaryConvectionCoefficient(30.0, 3.0, 150.0), 0.01); + EXPECT_NEAR(2483.702, WeatherManager::calculateWaterBoundaryConvectionCoefficient(30.0, 3.0, 30.0), 0.01); + EXPECT_NEAR(2162.188, WeatherManager::calculateWaterBoundaryConvectionCoefficient(30.0, 3.0, 60.0), 0.01); + EXPECT_NEAR(1993.771, WeatherManager::calculateWaterBoundaryConvectionCoefficient(30.0, 3.0, 90.0), 0.01); + EXPECT_NEAR(1882.294, WeatherManager::calculateWaterBoundaryConvectionCoefficient(30.0, 3.0, 120.0), 0.01); + EXPECT_NEAR(1800.136, WeatherManager::calculateWaterBoundaryConvectionCoefficient(30.0, 3.0, 150.0), 0.01); } diff --git a/tst/EnergyPlus/unit/WindowManager.unit.cc b/tst/EnergyPlus/unit/WindowManager.unit.cc index fc50894fd7b..c9c23b394dd 100644 --- a/tst/EnergyPlus/unit/WindowManager.unit.cc +++ b/tst/EnergyPlus/unit/WindowManager.unit.cc @@ -84,2593 +84,2593 @@ using namespace EnergyPlus; using namespace EnergyPlus::WindowManager; -TEST_F(EnergyPlusFixture, WindowFrameTest ) +TEST_F(EnergyPlusFixture, WindowFrameTest) { - DataIPShortCuts::lAlphaFieldBlanks = true; + DataIPShortCuts::lAlphaFieldBlanks = true; std::string const idf_objects = delimited_string({"Version,8.4;", - "Material,", - " Concrete Block, !- Name", - " MediumRough, !- Roughness", - " 0.1014984, !- Thickness {m}", - " 0.3805070, !- Conductivity {W/m-K}", - " 608.7016, !- Density {kg/m3}", - " 836.8000; !- Specific Heat {J/kg-K}", - "Construction,", - " WallConstruction, !- Name", - " Concrete Block; !- Outside Layer", - "WindowMaterial:SimpleGlazingSystem,", - " WindowMaterial, !- Name", - " 5.778, !- U-Factor {W/m2-K}", - " 0.819, !- Solar Heat Gain Coefficient", - " 0.881; !- Visible Transmittance", - "Construction,", - " WindowConstruction, !- Name", - " WindowMaterial; !- Outside Layer", - "WindowProperty:FrameAndDivider,", - " WindowFrame, !- Name", - " 0.05, !- Frame Width {m}", - " 0.00, !- Frame Outside Projection {m}", - " 0.00, !- Frame Inside Projection {m}", - " 5.0, !- Frame Conductance {W/m2-K}", - " 1.2, !- Ratio of Frame-Edge Glass Conductance to Center-Of-Glass Conductance", - " 0.8, !- Frame Solar Absorptance", - " 0.8, !- Frame Visible Absorptance", - " 0.9, !- Frame Thermal Hemispherical Emissivity", - " DividedLite, !- Divider Type", - " 0.02, !- Divider Width {m}", - " 2, !- Number of Horizontal Dividers", - " 2, !- Number of Vertical Dividers", - " 0.00, !- Divider Outside Projection {m}", - " 0.00, !- Divider Inside Projection {m}", - " 5.0, !- Divider Conductance {W/m2-K}", - " 1.2, !- Ratio of Divider-Edge Glass Conductance to Center-Of-Glass Conductance", - " 0.8, !- Divider Solar Absorptance", - " 0.8, !- Divider Visible Absorptance", - " 0.9; !- Divider Thermal Hemispherical Emissivity", - "FenestrationSurface:Detailed,", - " FenestrationSurface, !- Name", - " Window, !- Surface Type", - " WindowConstruction, !- Construction Name", - " Wall, !- Building Surface Name", - " , !- Outside Boundary Condition Object", - " 0.5000000, !- View Factor to Ground", - " , !- Shading Control Name", - " WindowFrame, !- Frame and Divider Name", - " 1.0, !- Multiplier", - " 4, !- Number of Vertices", - " 0.200000,0.000000,9.900000, !- X,Y,Z ==> Vertex 1 {m}", - " 0.200000,0.000000,0.1000000, !- X,Y,Z ==> Vertex 2 {m}", - " 9.900000,0.000000,0.1000000, !- X,Y,Z ==> Vertex 3 {m}", - " 9.900000,0.000000,9.900000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed," - " Wall, !- Name", - " Wall, !- Surface Type", - " WallConstruction, !- Construction Name", - " Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.000000,0.000000,10.00000, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000,0.000000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 10.00000,0.000000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 10.00000,0.000000,10.00000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed," - " Floor, !- Name", - " Floor, !- Surface Type", - " WallConstruction, !- Construction Name", - " Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.000000,0.000000,0, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000,10.000000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 10.00000,10.000000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 10.00000,0.000000,0; !- X,Y,Z ==> Vertex 4 {m}", - "Zone," - " Zone, !- Name", - " 0, !- Direction of Relative North {deg}", - " 6.000000, !- X Origin {m}", - " 6.000000, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", + "Material,", + " Concrete Block, !- Name", + " MediumRough, !- Roughness", + " 0.1014984, !- Thickness {m}", + " 0.3805070, !- Conductivity {W/m-K}", + " 608.7016, !- Density {kg/m3}", + " 836.8000; !- Specific Heat {J/kg-K}", + "Construction,", + " WallConstruction, !- Name", + " Concrete Block; !- Outside Layer", + "WindowMaterial:SimpleGlazingSystem,", + " WindowMaterial, !- Name", + " 5.778, !- U-Factor {W/m2-K}", + " 0.819, !- Solar Heat Gain Coefficient", + " 0.881; !- Visible Transmittance", + "Construction,", + " WindowConstruction, !- Name", + " WindowMaterial; !- Outside Layer", + "WindowProperty:FrameAndDivider,", + " WindowFrame, !- Name", + " 0.05, !- Frame Width {m}", + " 0.00, !- Frame Outside Projection {m}", + " 0.00, !- Frame Inside Projection {m}", + " 5.0, !- Frame Conductance {W/m2-K}", + " 1.2, !- Ratio of Frame-Edge Glass Conductance to Center-Of-Glass Conductance", + " 0.8, !- Frame Solar Absorptance", + " 0.8, !- Frame Visible Absorptance", + " 0.9, !- Frame Thermal Hemispherical Emissivity", + " DividedLite, !- Divider Type", + " 0.02, !- Divider Width {m}", + " 2, !- Number of Horizontal Dividers", + " 2, !- Number of Vertical Dividers", + " 0.00, !- Divider Outside Projection {m}", + " 0.00, !- Divider Inside Projection {m}", + " 5.0, !- Divider Conductance {W/m2-K}", + " 1.2, !- Ratio of Divider-Edge Glass Conductance to Center-Of-Glass Conductance", + " 0.8, !- Divider Solar Absorptance", + " 0.8, !- Divider Visible Absorptance", + " 0.9; !- Divider Thermal Hemispherical Emissivity", + "FenestrationSurface:Detailed,", + " FenestrationSurface, !- Name", + " Window, !- Surface Type", + " WindowConstruction, !- Construction Name", + " Wall, !- Building Surface Name", + " , !- Outside Boundary Condition Object", + " 0.5000000, !- View Factor to Ground", + " , !- Shading Control Name", + " WindowFrame, !- Frame and Divider Name", + " 1.0, !- Multiplier", + " 4, !- Number of Vertices", + " 0.200000,0.000000,9.900000, !- X,Y,Z ==> Vertex 1 {m}", + " 0.200000,0.000000,0.1000000, !- X,Y,Z ==> Vertex 2 {m}", + " 9.900000,0.000000,0.1000000, !- X,Y,Z ==> Vertex 3 {m}", + " 9.900000,0.000000,9.900000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed," + " Wall, !- Name", + " Wall, !- Surface Type", + " WallConstruction, !- Construction Name", + " Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.000000,0.000000,10.00000, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000,0.000000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 10.00000,0.000000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 10.00000,0.000000,10.00000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed," + " Floor, !- Name", + " Floor, !- Surface Type", + " WallConstruction, !- Construction Name", + " Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.000000,0.000000,0, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000,10.000000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 10.00000,10.000000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 10.00000,0.000000,0; !- X,Y,Z ==> Vertex 4 {m}", + "Zone," + " Zone, !- Name", + " 0, !- Direction of Relative North {deg}", + " 6.000000, !- X Origin {m}", + " 6.000000, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", " autocalculate; !- Volume {m3}"}); - ASSERT_TRUE(process_idf(idf_objects)); + ASSERT_TRUE(process_idf(idf_objects)); - DataHeatBalance::ZoneIntGain.allocate(1); + DataHeatBalance::ZoneIntGain.allocate(1); - createFacilityElectricPowerServiceObject(); - HeatBalanceManager::SetPreConstructionInputParameters(); + createFacilityElectricPowerServiceObject(); + HeatBalanceManager::SetPreConstructionInputParameters(); - Psychrometrics::InitializePsychRoutines(); + Psychrometrics::InitializePsychRoutines(); - DataGlobals::TimeStep = 1; - DataGlobals::TimeStepZone = 1; - DataGlobals::HourOfDay = 1; - DataGlobals::NumOfTimeStepInHour = 1; - DataGlobals::BeginSimFlag = true; - DataGlobals::BeginEnvrnFlag = true; - DataEnvironment::OutBaroPress = 100000; + DataGlobals::TimeStep = 1; + DataGlobals::TimeStepZone = 1; + DataGlobals::HourOfDay = 1; + DataGlobals::NumOfTimeStepInHour = 1; + DataGlobals::BeginSimFlag = true; + DataGlobals::BeginEnvrnFlag = true; + DataEnvironment::OutBaroPress = 100000; - HeatBalanceManager::ManageHeatBalance(); + HeatBalanceManager::ManageHeatBalance(); - // This test will emulate NFRC 100 U-factor test - int winNum; + // This test will emulate NFRC 100 U-factor test + int winNum; - for (size_t i = 1; i <= DataSurfaces::Surface.size(); ++i) { - if (DataSurfaces::Surface( i ).Class == DataSurfaces::SurfaceClass_Window) { - winNum = i; - } - } + for (size_t i = 1; i <= DataSurfaces::Surface.size(); ++i) { + if (DataSurfaces::Surface(i).Class == DataSurfaces::SurfaceClass_Window) { + winNum = i; + } + } - int cNum; + int cNum; - for (size_t i = 1; i <= DataHeatBalance::Construct.size(); ++i) { - if (DataHeatBalance::Construct( i ).TypeIsWindow) { - cNum = i; - } - } + for (size_t i = 1; i <= DataHeatBalance::Construct.size(); ++i) { + if (DataHeatBalance::Construct(i).TypeIsWindow) { + cNum = i; + } + } - Real64 T_in = 21.0; - Real64 T_out = -18.0; - Real64 I_s = 0.0; - Real64 v_ws = 5.5; + Real64 T_in = 21.0; + Real64 T_out = -18.0; + Real64 I_s = 0.0; + Real64 v_ws = 5.5; - // Overrides for testing - DataHeatBalance::CosIncAng.dimension( 1, 1, 3, 1.0 ); - DataHeatBalance::SunlitFrac.dimension( 1, 1, 3, 1.0 ); - DataHeatBalance::SunlitFracWithoutReveal.dimension( 1, 1, 3, 1.0 ); + // Overrides for testing + DataHeatBalance::CosIncAng.dimension(1, 1, 3, 1.0); + DataHeatBalance::SunlitFrac.dimension(1, 1, 3, 1.0); + DataHeatBalance::SunlitFracWithoutReveal.dimension(1, 1, 3, 1.0); - DataSurfaces::Surface( winNum ).OutDryBulbTemp = T_out; - DataHeatBalance::TempEffBulkAir( winNum ) = T_in; - DataSurfaces::SurfaceWindow( winNum ).IRfromParentZone = DataGlobals::StefanBoltzmann*std::pow(T_in + DataGlobals::KelvinConv,4); - DataHeatBalFanSys::ZoneAirHumRatAvg.dimension(1, 0.01); - DataHeatBalFanSys::ZoneAirHumRat.dimension(1, 0.01); - DataHeatBalFanSys::MAT.dimension(1, T_in); + DataSurfaces::Surface(winNum).OutDryBulbTemp = T_out; + DataHeatBalance::TempEffBulkAir(winNum) = T_in; + DataSurfaces::SurfaceWindow(winNum).IRfromParentZone = DataGlobals::StefanBoltzmann * std::pow(T_in + DataGlobals::KelvinConv, 4); + DataHeatBalFanSys::ZoneAirHumRatAvg.dimension(1, 0.01); + DataHeatBalFanSys::ZoneAirHumRat.dimension(1, 0.01); + DataHeatBalFanSys::MAT.dimension(1, T_in); - // initial guess temperatures - int numTemps = 2 + 2*DataHeatBalance::Construct( cNum ).TotGlassLayers; - Real64 inSurfTemp = T_in - (1.0/(numTemps-1))*(T_in - T_out); - Real64 outSurfTemp = T_out + (1.0/(numTemps-1))*(T_in - T_out); + // initial guess temperatures + int numTemps = 2 + 2 * DataHeatBalance::Construct(cNum).TotGlassLayers; + Real64 inSurfTemp = T_in - (1.0 / (numTemps - 1)) * (T_in - T_out); + Real64 outSurfTemp = T_out + (1.0 / (numTemps - 1)) * (T_in - T_out); - Real64 h_exterior_f = 4 + v_ws*4; - Real64 h_exterior; + Real64 h_exterior_f = 4 + v_ws * 4; + Real64 h_exterior; - DataEnvironment::BeamSolarRad = I_s; + DataEnvironment::BeamSolarRad = I_s; - if ( I_s > 0.0 ) { - DataEnvironment::SunIsUp = true; - } + if (I_s > 0.0) { + DataEnvironment::SunIsUp = true; + } - HeatBalanceSurfaceManager::InitSolarHeatGains(); - SolarShading::CalcInteriorSolarDistribution(); + HeatBalanceSurfaceManager::InitSolarHeatGains(); + SolarShading::CalcInteriorSolarDistribution(); - // Calculate heat balance (iteratively solve for surface temperatures) - Real64 outSurfTempPrev = outSurfTemp; - Real64 inSurfTempPrev = inSurfTemp; + // Calculate heat balance (iteratively solve for surface temperatures) + Real64 outSurfTempPrev = outSurfTemp; + Real64 inSurfTempPrev = inSurfTemp; - Real64 outSurfTempDiff; - Real64 inSurfTempDiff; + Real64 outSurfTempDiff; + Real64 inSurfTempDiff; - int maxIterations = 20; - Real64 tolerance = 0.1; // deg C + int maxIterations = 20; + Real64 tolerance = 0.1; // deg C - // Save tilt information for natural convection calculations - Real64 tiltSave = DataSurfaces::Surface( winNum ).Tilt; + // Save tilt information for natural convection calculations + Real64 tiltSave = DataSurfaces::Surface(winNum).Tilt; - for (int i = 0; i < maxIterations; i++) { + for (int i = 0; i < maxIterations; i++) { - // Use complementary angle for exterior natural convection calculations - DataSurfaces::Surface( 1 ).Tilt = 180 - tiltSave; - DataSurfaces::Surface( 1 ).CosTilt = cos(DataSurfaces::Surface( winNum ).Tilt*DataGlobals::Pi/180); - DataSurfaces::Surface( 1 ).SinTilt = sin(DataSurfaces::Surface( winNum ).Tilt*DataGlobals::Pi/180); + // Use complementary angle for exterior natural convection calculations + DataSurfaces::Surface(1).Tilt = 180 - tiltSave; + DataSurfaces::Surface(1).CosTilt = cos(DataSurfaces::Surface(winNum).Tilt * DataGlobals::Pi / 180); + DataSurfaces::Surface(1).SinTilt = sin(DataSurfaces::Surface(winNum).Tilt * DataGlobals::Pi / 180); ConvectionCoefficients::CalcISO15099WindowIntConvCoeff( winNum, outSurfTemp, T_out); // This subroutine sets the global HConvIn( 1 ) variable. We will use it to set the exterior natural convection. - h_exterior = h_exterior_f + DataHeatBalance::HConvIn( winNum ); // add natural convection + h_exterior = h_exterior_f + DataHeatBalance::HConvIn(winNum); // add natural convection - // revert tilt for interior natural convection calculations - DataSurfaces::Surface( 1 ).Tilt = tiltSave; - DataSurfaces::Surface( 1 ).CosTilt = cos(tiltSave*DataGlobals::Pi/180); - DataSurfaces::Surface( 1 ).SinTilt = sin(tiltSave*DataGlobals::Pi/180); + // revert tilt for interior natural convection calculations + DataSurfaces::Surface(1).Tilt = tiltSave; + DataSurfaces::Surface(1).CosTilt = cos(tiltSave * DataGlobals::Pi / 180); + DataSurfaces::Surface(1).SinTilt = sin(tiltSave * DataGlobals::Pi / 180); ConvectionCoefficients::CalcISO15099WindowIntConvCoeff( winNum, inSurfTemp, T_in); // This time it's actually being used as intended. HConvIn( 1 ) is referenced from the actual heat balance calculation. - WindowManager::CalcWindowHeatBalance( winNum, h_exterior, inSurfTemp, outSurfTemp ); + WindowManager::CalcWindowHeatBalance(winNum, h_exterior, inSurfTemp, outSurfTemp); - outSurfTempDiff = std::fabs(outSurfTemp - outSurfTempPrev); - inSurfTempDiff = std::fabs(inSurfTemp - inSurfTempPrev); + outSurfTempDiff = std::fabs(outSurfTemp - outSurfTempPrev); + inSurfTempDiff = std::fabs(inSurfTemp - inSurfTempPrev); - if ( (outSurfTempDiff < tolerance) && (inSurfTempDiff < tolerance) ) { - break; - } + if ((outSurfTempDiff < tolerance) && (inSurfTempDiff < tolerance)) { + break; + } - outSurfTempPrev = outSurfTemp; - inSurfTempPrev = inSurfTemp; - } + outSurfTempPrev = outSurfTemp; + inSurfTempPrev = inSurfTemp; + } - EXPECT_GT(DataSurfaces::WinHeatLossRep( winNum ), DataSurfaces::WinHeatTransfer( winNum )); + EXPECT_GT(DataSurfaces::WinHeatLossRep(winNum), DataSurfaces::WinHeatTransfer(winNum)); } TEST_F(EnergyPlusFixture, WindowManager_TransAndReflAtPhi) { - Real64 const cs = 0.86603; // Cosine of incidence angle - Real64 const tf0 = 0.8980; // Transmittance at zero incidence angle - Real64 const rf0 = 0.0810; // Front reflectance at zero incidence angle - Real64 const rb0 = 0.0810; // Back reflectance at zero incidence angle + Real64 const cs = 0.86603; // Cosine of incidence angle + Real64 const tf0 = 0.8980; // Transmittance at zero incidence angle + Real64 const rf0 = 0.0810; // Front reflectance at zero incidence angle + Real64 const rb0 = 0.0810; // Back reflectance at zero incidence angle - Real64 tfp = 0.; // Transmittance at cs - Real64 rfp = 0.; // Front reflectance at cs - Real64 rbp = 0.; // Back reflectance at cs + Real64 tfp = 0.; // Transmittance at cs + Real64 rfp = 0.; // Front reflectance at cs + Real64 rbp = 0.; // Back reflectance at cs - bool const SimpleGlazingSystem = false; // .TRUE. if simple block model being used - Real64 const SimpleGlazingSHGC = 0.; // SHGC value to use in alternate model for simple glazing system - Real64 const SimpleGlazingU = 0.; // U-factor value to use in alternate model for simple glazing system + bool const SimpleGlazingSystem = false; // .TRUE. if simple block model being used + Real64 const SimpleGlazingSHGC = 0.; // SHGC value to use in alternate model for simple glazing system + Real64 const SimpleGlazingU = 0.; // U-factor value to use in alternate model for simple glazing system - TransAndReflAtPhi(cs, tf0, rf0, rb0, tfp, rfp, rbp, SimpleGlazingSystem, SimpleGlazingSHGC, SimpleGlazingU); + TransAndReflAtPhi(cs, tf0, rf0, rb0, tfp, rfp, rbp, SimpleGlazingSystem, SimpleGlazingSHGC, SimpleGlazingU); - EXPECT_NEAR(tfp, 0.89455, 0.0001); - EXPECT_NEAR(rfp, 0.08323, 0.0001); - EXPECT_NEAR(rbp, 0.08323, 0.0001); + EXPECT_NEAR(tfp, 0.89455, 0.0001); + EXPECT_NEAR(rfp, 0.08323, 0.0001); + EXPECT_NEAR(rbp, 0.08323, 0.0001); } -TEST_F( EnergyPlusFixture, WindowManager_RefAirTempTest ) +TEST_F(EnergyPlusFixture, WindowManager_RefAirTempTest) { - // GitHub issue 6037 - bool ErrorsFound( false ); + // GitHub issue 6037 + bool ErrorsFound(false); std::string const idf_objects = delimited_string({"Version,8.4;", - "Material,", - " Concrete Block, !- Name", - " MediumRough, !- Roughness", - " 0.1014984, !- Thickness {m}", - " 0.3805070, !- Conductivity {W/m-K}", - " 608.7016, !- Density {kg/m3}", - " 836.8000; !- Specific Heat {J/kg-K}", - "Construction,", - " WallConstruction, !- Name", - " Concrete Block; !- Outside Layer", - "WindowMaterial:SimpleGlazingSystem,", - " WindowMaterial, !- Name", - " 5.778, !- U-Factor {W/m2-K}", - " 0.819, !- Solar Heat Gain Coefficient", - " 0.881; !- Visible Transmittance", - "Construction,", - " WindowConstruction, !- Name", - " WindowMaterial; !- Outside Layer", - "WindowProperty:FrameAndDivider,", - " WindowFrame, !- Name", - " 0.05, !- Frame Width {m}", - " 0.00, !- Frame Outside Projection {m}", - " 0.00, !- Frame Inside Projection {m}", - " 5.0, !- Frame Conductance {W/m2-K}", - " 1.2, !- Ratio of Frame-Edge Glass Conductance to Center-Of-Glass Conductance", - " 0.8, !- Frame Solar Absorptance", - " 0.8, !- Frame Visible Absorptance", - " 0.9, !- Frame Thermal Hemispherical Emissivity", - " DividedLite, !- Divider Type", - " 0.02, !- Divider Width {m}", - " 2, !- Number of Horizontal Dividers", - " 2, !- Number of Vertical Dividers", - " 0.00, !- Divider Outside Projection {m}", - " 0.00, !- Divider Inside Projection {m}", - " 5.0, !- Divider Conductance {W/m2-K}", - " 1.2, !- Ratio of Divider-Edge Glass Conductance to Center-Of-Glass Conductance", - " 0.8, !- Divider Solar Absorptance", - " 0.8, !- Divider Visible Absorptance", - " 0.9; !- Divider Thermal Hemispherical Emissivity", - "FenestrationSurface:Detailed,", - " FenestrationSurface, !- Name", - " Window, !- Surface Type", - " WindowConstruction, !- Construction Name", - " Wall, !- Building Surface Name", - " , !- Outside Boundary Condition Object", - " 0.5000000, !- View Factor to Ground", - " , !- Shading Control Name", - " WindowFrame, !- Frame and Divider Name", - " 1.0, !- Multiplier", - " 4, !- Number of Vertices", - " 0.200000,0.000000,9.900000, !- X,Y,Z ==> Vertex 1 {m}", - " 0.200000,0.000000,0.1000000, !- X,Y,Z ==> Vertex 2 {m}", - " 9.900000,0.000000,0.1000000, !- X,Y,Z ==> Vertex 3 {m}", - " 9.900000,0.000000,9.900000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed," - " Wall, !- Name", - " Wall, !- Surface Type", - " WallConstruction, !- Construction Name", - " Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.000000,0.000000,10.00000, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000,0.000000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 10.00000,0.000000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 10.00000,0.000000,10.00000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed," - " Floor, !- Name", - " Floor, !- Surface Type", - " WallConstruction, !- Construction Name", - " Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.000000,0.000000,0, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000,10.000000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 10.00000,10.000000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 10.00000,0.000000,0; !- X,Y,Z ==> Vertex 4 {m}", - "Zone," - " Zone, !- Name", - " 0, !- Direction of Relative North {deg}", - " 6.000000, !- X Origin {m}", - " 6.000000, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", + "Material,", + " Concrete Block, !- Name", + " MediumRough, !- Roughness", + " 0.1014984, !- Thickness {m}", + " 0.3805070, !- Conductivity {W/m-K}", + " 608.7016, !- Density {kg/m3}", + " 836.8000; !- Specific Heat {J/kg-K}", + "Construction,", + " WallConstruction, !- Name", + " Concrete Block; !- Outside Layer", + "WindowMaterial:SimpleGlazingSystem,", + " WindowMaterial, !- Name", + " 5.778, !- U-Factor {W/m2-K}", + " 0.819, !- Solar Heat Gain Coefficient", + " 0.881; !- Visible Transmittance", + "Construction,", + " WindowConstruction, !- Name", + " WindowMaterial; !- Outside Layer", + "WindowProperty:FrameAndDivider,", + " WindowFrame, !- Name", + " 0.05, !- Frame Width {m}", + " 0.00, !- Frame Outside Projection {m}", + " 0.00, !- Frame Inside Projection {m}", + " 5.0, !- Frame Conductance {W/m2-K}", + " 1.2, !- Ratio of Frame-Edge Glass Conductance to Center-Of-Glass Conductance", + " 0.8, !- Frame Solar Absorptance", + " 0.8, !- Frame Visible Absorptance", + " 0.9, !- Frame Thermal Hemispherical Emissivity", + " DividedLite, !- Divider Type", + " 0.02, !- Divider Width {m}", + " 2, !- Number of Horizontal Dividers", + " 2, !- Number of Vertical Dividers", + " 0.00, !- Divider Outside Projection {m}", + " 0.00, !- Divider Inside Projection {m}", + " 5.0, !- Divider Conductance {W/m2-K}", + " 1.2, !- Ratio of Divider-Edge Glass Conductance to Center-Of-Glass Conductance", + " 0.8, !- Divider Solar Absorptance", + " 0.8, !- Divider Visible Absorptance", + " 0.9; !- Divider Thermal Hemispherical Emissivity", + "FenestrationSurface:Detailed,", + " FenestrationSurface, !- Name", + " Window, !- Surface Type", + " WindowConstruction, !- Construction Name", + " Wall, !- Building Surface Name", + " , !- Outside Boundary Condition Object", + " 0.5000000, !- View Factor to Ground", + " , !- Shading Control Name", + " WindowFrame, !- Frame and Divider Name", + " 1.0, !- Multiplier", + " 4, !- Number of Vertices", + " 0.200000,0.000000,9.900000, !- X,Y,Z ==> Vertex 1 {m}", + " 0.200000,0.000000,0.1000000, !- X,Y,Z ==> Vertex 2 {m}", + " 9.900000,0.000000,0.1000000, !- X,Y,Z ==> Vertex 3 {m}", + " 9.900000,0.000000,9.900000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed," + " Wall, !- Name", + " Wall, !- Surface Type", + " WallConstruction, !- Construction Name", + " Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.000000,0.000000,10.00000, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000,0.000000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 10.00000,0.000000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 10.00000,0.000000,10.00000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed," + " Floor, !- Name", + " Floor, !- Surface Type", + " WallConstruction, !- Construction Name", + " Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.000000,0.000000,0, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000,10.000000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 10.00000,10.000000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 10.00000,0.000000,0; !- X,Y,Z ==> Vertex 4 {m}", + "Zone," + " Zone, !- Name", + " 0, !- Direction of Relative North {deg}", + " 6.000000, !- X Origin {m}", + " 6.000000, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", " autocalculate; !- Volume {m3}"}); - ASSERT_TRUE( process_idf( idf_objects ) ); - - DataHeatBalance::ZoneIntGain.allocate( 1 ); - - createFacilityElectricPowerServiceObject( ); - HeatBalanceManager::SetPreConstructionInputParameters( ); - HeatBalanceManager::GetProjectControlData( ErrorsFound ); - HeatBalanceManager::GetFrameAndDividerData( ErrorsFound ); - HeatBalanceManager::GetMaterialData( ErrorsFound ); - HeatBalanceManager::GetConstructData( ErrorsFound ); - HeatBalanceManager::GetBuildingData( ErrorsFound ); - - Psychrometrics::InitializePsychRoutines( ); - - DataGlobals::TimeStep = 1; - DataGlobals::TimeStepZone = 1; - DataGlobals::HourOfDay = 1; - DataGlobals::NumOfTimeStepInHour = 1; - DataGlobals::BeginSimFlag = true; - DataGlobals::BeginEnvrnFlag = true; - DataEnvironment::OutBaroPress = 100000; - - DataZoneEquipment::ZoneEquipConfig.allocate( 1 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).ZoneName = "Zone"; - DataZoneEquipment::ZoneEquipConfig( 1 ).ActualZoneNum = 1; - DataHeatBalance::Zone( 1 ).ZoneEqNum = 1; - DataHeatBalance::Zone( 1 ).IsControlled = true; - DataZoneEquipment::ZoneEquipConfig( 1 ).NumInletNodes = 2; - DataZoneEquipment::ZoneEquipConfig( 1 ).InletNode.allocate( 2 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).InletNode( 1 ) = 1; - DataZoneEquipment::ZoneEquipConfig( 1 ).InletNode( 2 ) = 2; - DataZoneEquipment::ZoneEquipConfig( 1 ).NumExhaustNodes = 1; - DataZoneEquipment::ZoneEquipConfig( 1 ).ExhaustNode.allocate( 1 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).ExhaustNode( 1 ) = 3; - DataZoneEquipment::ZoneEquipConfig( 1 ).NumReturnNodes = 1; - DataZoneEquipment::ZoneEquipConfig( 1 ).ReturnNode.allocate( 1 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).ReturnNode( 1 ) = 4; - - DataLoopNode::Node.allocate( 4 ); - DataHeatBalance::TempEffBulkAir.allocate( 3 ); - DataHeatBalSurface::TempSurfInTmp.allocate( 3 ); - - DataSurfaces::Surface( 1 ).HeatTransSurf = true; - DataSurfaces::Surface( 2 ).HeatTransSurf = true; - DataSurfaces::Surface( 3 ).HeatTransSurf = true; - DataSurfaces::Surface( 1 ).Area = 10.0; - DataSurfaces::Surface( 2 ).Area = 10.0; - DataSurfaces::Surface( 3 ).Area = 10.0; - DataSurfaces::Surface( 1 ).TAirRef = DataSurfaces::ZoneMeanAirTemp; - DataSurfaces::Surface( 2 ).TAirRef = DataSurfaces::ZoneSupplyAirTemp; - DataSurfaces::Surface( 3 ).TAirRef = DataSurfaces::AdjacentAirTemp; - DataHeatBalSurface::TempSurfInTmp( 1 ) = 15.0; - DataHeatBalSurface::TempSurfInTmp( 2 ) = 20.0; - DataHeatBalSurface::TempSurfInTmp( 3 ) = 25.0; - DataHeatBalance::TempEffBulkAir( 1 ) = 10.0; - DataHeatBalance::TempEffBulkAir( 2 ) = 10.0; - DataHeatBalance::TempEffBulkAir( 3 ) = 10.0; - - DataLoopNode::Node( 1 ).Temp = 20.0; - DataLoopNode::Node( 2 ).Temp = 20.0; - DataLoopNode::Node( 3 ).Temp = 20.0; - DataLoopNode::Node( 4 ).Temp = 20.0; - DataLoopNode::Node( 1 ).MassFlowRate = 0.1; - DataLoopNode::Node( 2 ).MassFlowRate = 0.1; - DataLoopNode::Node( 3 ).MassFlowRate = 0.1; - DataLoopNode::Node( 4 ).MassFlowRate = 0.1; - - DataHeatBalance::HConvIn.allocate( 3 ); - DataHeatBalance::HConvIn( 1 ) = 0.5; - DataHeatBalance::HConvIn( 2 ) = 0.5; - DataHeatBalance::HConvIn( 3 ) = 0.5; - DataHeatBalance::Zone( 1 ).IsControlled = true; - DataHeatBalFanSys::ZoneAirHumRat.allocate( 1 ); - DataHeatBalFanSys::ZoneAirHumRat( 1 ) = 0.011; - DataHeatBalFanSys::ZoneAirHumRatAvg.allocate( 1 ); - DataHeatBalFanSys::ZoneAirHumRatAvg( 1 ) = DataHeatBalFanSys::ZoneAirHumRat( 1 ) = 0.011; - - DataHeatBalFanSys::MAT.allocate( 1 ); - DataHeatBalFanSys::MAT( 1 ) = 25.0; - DataHeatBalFanSys::QHTRadSysSurf.allocate( 3 ); - DataHeatBalFanSys::QHWBaseboardSurf.allocate( 3 ); - DataHeatBalFanSys::QSteamBaseboardSurf.allocate( 3 ); - DataHeatBalFanSys::QElecBaseboardSurf.allocate( 3 ); - DataHeatBalance::QRadSWwinAbs.allocate( 1, 3 ); - DataHeatBalance::QRadThermInAbs.allocate( 3 ); - DataHeatBalance::QRadSWOutIncident.allocate( 3 ); - DataSurfaces::WinTransSolar.allocate( 3 ); - DataHeatBalance::ZoneWinHeatGain.allocate( 1 ); - DataHeatBalance::ZoneWinHeatGainRep.allocate( 1 ); - DataHeatBalance::ZoneWinHeatGainRepEnergy.allocate( 1 ); - DataSurfaces::WinHeatGain.allocate( 3 ); - DataSurfaces::WinHeatTransfer.allocate( 3 ); - DataSurfaces::WinGainConvGlazToZoneRep.allocate( 3 ); - DataSurfaces::WinGainIRGlazToZoneRep.allocate( 3 ); - DataSurfaces::WinGapConvHtFlowRep.allocate( 3 ); - DataSurfaces::WinGapConvHtFlowRepEnergy.allocate( 3 ); - DataHeatBalance::QS.allocate( 1 ); - DataSurfaces::WinLossSWZoneToOutWinRep.allocate( 3 ); - DataSurfaces::WinSysSolTransmittance.allocate( 3 ); - DataSurfaces::WinSysSolAbsorptance.allocate( 3 ); - DataSurfaces::WinSysSolReflectance.allocate( 3 ); - DataSurfaces::InsideGlassCondensationFlag.allocate( 3 ); - DataSurfaces::WinGainFrameDividerToZoneRep.allocate( 3 ); - DataSurfaces::InsideFrameCondensationFlag.allocate( 3 ); - DataSurfaces::InsideDividerCondensationFlag.allocate( 3 ); - - DataHeatBalSurface::QdotConvOutRep.allocate( 3 ); - DataHeatBalSurface::QdotConvOutRepPerArea.allocate( 3 ); - DataHeatBalSurface::QConvOutReport.allocate( 3 ); - DataHeatBalSurface::QdotRadOutRep.allocate( 3 ); - DataHeatBalSurface::QdotRadOutRepPerArea.allocate( 3 ); - DataHeatBalSurface::QRadOutReport.allocate( 3 ); - DataHeatBalSurface::QRadLWOutSrdSurfs.allocate( 3 ); - - DataHeatBalance::QRadSWOutIncident = 0.0; - DataHeatBalance::QRadSWwinAbs = 0.0; - DataHeatBalance::QRadThermInAbs = 0.0; - - DataHeatBalFanSys::QHTRadSysSurf = 0.0; - DataHeatBalFanSys::QHWBaseboardSurf = 0.0; - DataHeatBalFanSys::QSteamBaseboardSurf = 0.0; - DataHeatBalFanSys::QElecBaseboardSurf = 0.0; - DataSurfaces::WinTransSolar = 0.0; - DataHeatBalance::QS = 0.0; - - Real64 inSurfTemp; - Real64 outSurfTemp; - - // Claculate temperature based on supply flow rate - WindowManager::CalcWindowHeatBalance( 2, DataHeatBalance::HConvIn( 2 ), inSurfTemp, outSurfTemp ); - EXPECT_NEAR( 20.0, DataHeatBalance::TempEffBulkAir( 2 ), 0.0001 ); - // Claculate temperature based on zone temperature with supply flow rate = 0 - DataLoopNode::Node( 1 ).MassFlowRate = 0.0; - DataLoopNode::Node( 2 ).MassFlowRate = 0.0; - WindowManager::CalcWindowHeatBalance( 2, DataHeatBalance::HConvIn( 2 ), inSurfTemp, outSurfTemp ); - EXPECT_NEAR( 25.0, DataHeatBalance::TempEffBulkAir( 2 ), 0.0001 ); - - // Adjacent surface - DataLoopNode::Node( 1 ).MassFlowRate = 0.1; - DataLoopNode::Node( 2 ).MassFlowRate = 0.1; - DataSurfaces::Surface( 1 ).ExtBoundCond = 2; - WindowManager::CalcWindowHeatBalance( 2, DataHeatBalance::HConvIn( 2 ), inSurfTemp, outSurfTemp ); - EXPECT_NEAR( 20.0, DataHeatBalance::TempEffBulkAir( 2 ), 0.0001 ); - - DataLoopNode::Node( 1 ).MassFlowRate = 0.0; - DataLoopNode::Node( 2 ).MassFlowRate = 0.0; - DataSurfaces::Surface( 1 ).ExtBoundCond = 2; - DataSurfaces::Surface( 2 ).ExtBoundCond = 1; - DataSurfaces::Surface( 1 ).TAirRef = DataSurfaces::ZoneSupplyAirTemp; - WindowManager::CalcWindowHeatBalance( 2, DataHeatBalance::HConvIn( 2 ), inSurfTemp, outSurfTemp ); - EXPECT_NEAR( 25.0, DataHeatBalance::TempEffBulkAir( 2 ), 0.0001 ); + ASSERT_TRUE(process_idf(idf_objects)); + + DataHeatBalance::ZoneIntGain.allocate(1); + + createFacilityElectricPowerServiceObject(); + HeatBalanceManager::SetPreConstructionInputParameters(); + HeatBalanceManager::GetProjectControlData(ErrorsFound); + HeatBalanceManager::GetFrameAndDividerData(ErrorsFound); + HeatBalanceManager::GetMaterialData(ErrorsFound); + HeatBalanceManager::GetConstructData(ErrorsFound); + HeatBalanceManager::GetBuildingData(ErrorsFound); + + Psychrometrics::InitializePsychRoutines(); + + DataGlobals::TimeStep = 1; + DataGlobals::TimeStepZone = 1; + DataGlobals::HourOfDay = 1; + DataGlobals::NumOfTimeStepInHour = 1; + DataGlobals::BeginSimFlag = true; + DataGlobals::BeginEnvrnFlag = true; + DataEnvironment::OutBaroPress = 100000; + + DataZoneEquipment::ZoneEquipConfig.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).ZoneName = "Zone"; + DataZoneEquipment::ZoneEquipConfig(1).ActualZoneNum = 1; + DataHeatBalance::Zone(1).ZoneEqNum = 1; + DataHeatBalance::Zone(1).IsControlled = true; + DataZoneEquipment::ZoneEquipConfig(1).NumInletNodes = 2; + DataZoneEquipment::ZoneEquipConfig(1).InletNode.allocate(2); + DataZoneEquipment::ZoneEquipConfig(1).InletNode(1) = 1; + DataZoneEquipment::ZoneEquipConfig(1).InletNode(2) = 2; + DataZoneEquipment::ZoneEquipConfig(1).NumExhaustNodes = 1; + DataZoneEquipment::ZoneEquipConfig(1).ExhaustNode.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).ExhaustNode(1) = 3; + DataZoneEquipment::ZoneEquipConfig(1).NumReturnNodes = 1; + DataZoneEquipment::ZoneEquipConfig(1).ReturnNode.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).ReturnNode(1) = 4; + + DataLoopNode::Node.allocate(4); + DataHeatBalance::TempEffBulkAir.allocate(3); + DataHeatBalSurface::TempSurfInTmp.allocate(3); + + DataSurfaces::Surface(1).HeatTransSurf = true; + DataSurfaces::Surface(2).HeatTransSurf = true; + DataSurfaces::Surface(3).HeatTransSurf = true; + DataSurfaces::Surface(1).Area = 10.0; + DataSurfaces::Surface(2).Area = 10.0; + DataSurfaces::Surface(3).Area = 10.0; + DataSurfaces::Surface(1).TAirRef = DataSurfaces::ZoneMeanAirTemp; + DataSurfaces::Surface(2).TAirRef = DataSurfaces::ZoneSupplyAirTemp; + DataSurfaces::Surface(3).TAirRef = DataSurfaces::AdjacentAirTemp; + DataHeatBalSurface::TempSurfInTmp(1) = 15.0; + DataHeatBalSurface::TempSurfInTmp(2) = 20.0; + DataHeatBalSurface::TempSurfInTmp(3) = 25.0; + DataHeatBalance::TempEffBulkAir(1) = 10.0; + DataHeatBalance::TempEffBulkAir(2) = 10.0; + DataHeatBalance::TempEffBulkAir(3) = 10.0; + + DataLoopNode::Node(1).Temp = 20.0; + DataLoopNode::Node(2).Temp = 20.0; + DataLoopNode::Node(3).Temp = 20.0; + DataLoopNode::Node(4).Temp = 20.0; + DataLoopNode::Node(1).MassFlowRate = 0.1; + DataLoopNode::Node(2).MassFlowRate = 0.1; + DataLoopNode::Node(3).MassFlowRate = 0.1; + DataLoopNode::Node(4).MassFlowRate = 0.1; + + DataHeatBalance::HConvIn.allocate(3); + DataHeatBalance::HConvIn(1) = 0.5; + DataHeatBalance::HConvIn(2) = 0.5; + DataHeatBalance::HConvIn(3) = 0.5; + DataHeatBalance::Zone(1).IsControlled = true; + DataHeatBalFanSys::ZoneAirHumRat.allocate(1); + DataHeatBalFanSys::ZoneAirHumRat(1) = 0.011; + DataHeatBalFanSys::ZoneAirHumRatAvg.allocate(1); + DataHeatBalFanSys::ZoneAirHumRatAvg(1) = DataHeatBalFanSys::ZoneAirHumRat(1) = 0.011; + + DataHeatBalFanSys::MAT.allocate(1); + DataHeatBalFanSys::MAT(1) = 25.0; + DataHeatBalFanSys::QHTRadSysSurf.allocate(3); + DataHeatBalFanSys::QHWBaseboardSurf.allocate(3); + DataHeatBalFanSys::QSteamBaseboardSurf.allocate(3); + DataHeatBalFanSys::QElecBaseboardSurf.allocate(3); + DataHeatBalance::QRadSWwinAbs.allocate(1, 3); + DataHeatBalance::QRadThermInAbs.allocate(3); + DataHeatBalance::QRadSWOutIncident.allocate(3); + DataSurfaces::WinTransSolar.allocate(3); + DataHeatBalance::ZoneWinHeatGain.allocate(1); + DataHeatBalance::ZoneWinHeatGainRep.allocate(1); + DataHeatBalance::ZoneWinHeatGainRepEnergy.allocate(1); + DataSurfaces::WinHeatGain.allocate(3); + DataSurfaces::WinHeatTransfer.allocate(3); + DataSurfaces::WinGainConvGlazToZoneRep.allocate(3); + DataSurfaces::WinGainIRGlazToZoneRep.allocate(3); + DataSurfaces::WinGapConvHtFlowRep.allocate(3); + DataSurfaces::WinGapConvHtFlowRepEnergy.allocate(3); + DataHeatBalance::QS.allocate(1); + DataSurfaces::WinLossSWZoneToOutWinRep.allocate(3); + DataSurfaces::WinSysSolTransmittance.allocate(3); + DataSurfaces::WinSysSolAbsorptance.allocate(3); + DataSurfaces::WinSysSolReflectance.allocate(3); + DataSurfaces::InsideGlassCondensationFlag.allocate(3); + DataSurfaces::WinGainFrameDividerToZoneRep.allocate(3); + DataSurfaces::InsideFrameCondensationFlag.allocate(3); + DataSurfaces::InsideDividerCondensationFlag.allocate(3); + + DataHeatBalSurface::QdotConvOutRep.allocate(3); + DataHeatBalSurface::QdotConvOutRepPerArea.allocate(3); + DataHeatBalSurface::QConvOutReport.allocate(3); + DataHeatBalSurface::QdotRadOutRep.allocate(3); + DataHeatBalSurface::QdotRadOutRepPerArea.allocate(3); + DataHeatBalSurface::QRadOutReport.allocate(3); + DataHeatBalSurface::QRadLWOutSrdSurfs.allocate(3); + + DataHeatBalance::QRadSWOutIncident = 0.0; + DataHeatBalance::QRadSWwinAbs = 0.0; + DataHeatBalance::QRadThermInAbs = 0.0; + + DataHeatBalFanSys::QHTRadSysSurf = 0.0; + DataHeatBalFanSys::QHWBaseboardSurf = 0.0; + DataHeatBalFanSys::QSteamBaseboardSurf = 0.0; + DataHeatBalFanSys::QElecBaseboardSurf = 0.0; + DataSurfaces::WinTransSolar = 0.0; + DataHeatBalance::QS = 0.0; + + Real64 inSurfTemp; + Real64 outSurfTemp; + + // Claculate temperature based on supply flow rate + WindowManager::CalcWindowHeatBalance(2, DataHeatBalance::HConvIn(2), inSurfTemp, outSurfTemp); + EXPECT_NEAR(20.0, DataHeatBalance::TempEffBulkAir(2), 0.0001); + // Claculate temperature based on zone temperature with supply flow rate = 0 + DataLoopNode::Node(1).MassFlowRate = 0.0; + DataLoopNode::Node(2).MassFlowRate = 0.0; + WindowManager::CalcWindowHeatBalance(2, DataHeatBalance::HConvIn(2), inSurfTemp, outSurfTemp); + EXPECT_NEAR(25.0, DataHeatBalance::TempEffBulkAir(2), 0.0001); + + // Adjacent surface + DataLoopNode::Node(1).MassFlowRate = 0.1; + DataLoopNode::Node(2).MassFlowRate = 0.1; + DataSurfaces::Surface(1).ExtBoundCond = 2; + WindowManager::CalcWindowHeatBalance(2, DataHeatBalance::HConvIn(2), inSurfTemp, outSurfTemp); + EXPECT_NEAR(20.0, DataHeatBalance::TempEffBulkAir(2), 0.0001); + + DataLoopNode::Node(1).MassFlowRate = 0.0; + DataLoopNode::Node(2).MassFlowRate = 0.0; + DataSurfaces::Surface(1).ExtBoundCond = 2; + DataSurfaces::Surface(2).ExtBoundCond = 1; + DataSurfaces::Surface(1).TAirRef = DataSurfaces::ZoneSupplyAirTemp; + WindowManager::CalcWindowHeatBalance(2, DataHeatBalance::HConvIn(2), inSurfTemp, outSurfTemp); + EXPECT_NEAR(25.0, DataHeatBalance::TempEffBulkAir(2), 0.0001); } -TEST_F( EnergyPlusFixture, SpectralAngularPropertyTest ) +TEST_F(EnergyPlusFixture, SpectralAngularPropertyTest) { - DataIPShortCuts::lAlphaFieldBlanks = true; - - std::string const idf_objects = delimited_string( { - - " Version,8.9;", - - " Building,", - " Small Office with AirflowNetwork model, !- Name", - " 0, !- North Axis {deg}", - " Suburbs, !- Terrain", - " 0.001, !- Loads Convergence Tolerance Value", - " 0.0050000, !- Temperature Convergence Tolerance Value {deltaC}", - " FullInteriorAndExterior, !- Solar Distribution", - " 25, !- Maximum Number of Warmup Days", - " 6; !- Minimum Number of Warmup Days", - - " Timestep,6;", - - " SurfaceConvectionAlgorithm:Inside,TARP;", - - " SurfaceConvectionAlgorithm:Outside,DOE-2;", - - " HeatBalanceAlgorithm,ConductionTransferFunction;", - - " Output:DebuggingData,0,0;", - - " ZoneCapacitanceMultiplier:ResearchSpecial,", - " Multiplier, !- Name", - " , !- Zone or ZoneList Name", - " 1.0, !- Temperature Capacity Multiplier", - " 1.0, !- Humidity Capacity Multiplier", - " 1.0, !- Carbon Dioxide Capacity Multiplier", - " ; !- Generic Contaminant Capacity Multiplier", - - " SimulationControl,", - " No, !- Do Zone Sizing Calculation", - " No, !- Do System Sizing Calculation", - " No, !- Do Plant Sizing Calculation", - " Yes, !- Run Simulation for Sizing Periods", - " No; !- Run Simulation for Weather File Run Periods", - - " RunPeriod,", - " , !- Name", - " 1, !- Begin Month", - " 14, !- Begin Day of Month", - " , !- Begin Year", - " 1, !- End Month", - " 14, !- End Day of Month", - " , !- End Year", - " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " Yes; !- Use Weather File Snow Indicators", - - " RunPeriod,", - " , !- Name", - " 7, !- Begin Month", - " 7, !- Begin Day of Month", - " , !- Begin Year", - " 7, !- End Month", - " 7, !- End Day of Month", - " , !- End Year", - " Tuesday, !- Day of Week for Start Day", - " Yes, !- Use Weather File Holidays and Special Days", - " Yes, !- Use Weather File Daylight Saving Period", - " No, !- Apply Weekend Holiday Rule", - " Yes, !- Use Weather File Rain Indicators", - " No; !- Use Weather File Snow Indicators", - - " Site:Location,", - " CHICAGO_IL_USA TMY2-94846, !- Name", - " 41.78, !- Latitude {deg}", - " -87.75, !- Longitude {deg}", - " -6.00, !- Time Zone {hr}", - " 190.00; !- Elevation {m}", - - " SizingPeriod:DesignDay,", - " CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, !- Name", - " 1, !- Month", - " 21, !- Day of Month", - " WinterDesignDay, !- Day Type", - " -17.3, !- Maximum Dry-Bulb Temperature {C}", - " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 4.9, !- Wind Speed {m/s}", - " 270, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 0.0; !- Sky Clearness", - - " SizingPeriod:DesignDay,", - " CHICAGO_IL_USA Annual Cooling 1% Design Conditions DB/MCWB, !- Name", - " 7, !- Month", - " 21, !- Day of Month", - " SummerDesignDay, !- Day Type", - " 31.5, !- Maximum Dry-Bulb Temperature {C}", - " 10.7, !- Daily Dry-Bulb Temperature Range {deltaC}", - " , !- Dry-Bulb Temperature Range Modifier Type", - " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", - " Wetbulb, !- Humidity Condition Type", - " 23.0, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", - " , !- Humidity Condition Day Schedule Name", - " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", - " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", - " , !- Daily Wet-Bulb Temperature Range {deltaC}", - " 99063., !- Barometric Pressure {Pa}", - " 5.3, !- Wind Speed {m/s}", - " 230, !- Wind Direction {deg}", - " No, !- Rain Indicator", - " No, !- Snow Indicator", - " No, !- Daylight Saving Time Indicator", - " ASHRAEClearSky, !- Solar Model Indicator", - " , !- Beam Solar Day Schedule Name", - " , !- Diffuse Solar Day Schedule Name", - " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", - " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", - " 1.0; !- Sky Clearness", - - " Site:GroundTemperature:BuildingSurface,20.03,20.03,20.13,20.30,20.43,20.52,20.62,20.77,20.78,20.55,20.44,20.20;", - - " Material,", - " A1 - 1 IN STUCCO, !- Name", - " Smooth, !- Roughness", - " 2.5389841E-02, !- Thickness {m}", - " 0.6918309, !- Conductivity {W/m-K}", - " 1858.142, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.9200000, !- Solar Absorptance", - " 0.9200000; !- Visible Absorptance", - - " Material,", - " C4 - 4 IN COMMON BRICK, !- Name", - " Rough, !- Roughness", - " 0.1014984, !- Thickness {m}", - " 0.7264224, !- Conductivity {W/m-K}", - " 1922.216, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7600000, !- Solar Absorptance", - " 0.7600000; !- Visible Absorptance", - - " Material,", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Name", - " Smooth, !- Roughness", - " 1.9050000E-02, !- Thickness {m}", - " 0.7264224, !- Conductivity {W/m-K}", - " 1601.846, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.9200000, !- Solar Absorptance", - " 0.9200000; !- Visible Absorptance", - - " Material,", - " C6 - 8 IN CLAY TILE, !- Name", - " Smooth, !- Roughness", - " 0.2033016, !- Thickness {m}", - " 0.5707605, !- Conductivity {W/m-K}", - " 1121.292, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.8200000, !- Solar Absorptance", - " 0.8200000; !- Visible Absorptance", - - " Material,", - " C10 - 8 IN HW CONCRETE, !- Name", - " MediumRough, !- Roughness", - " 0.2033016, !- Thickness {m}", - " 1.729577, !- Conductivity {W/m-K}", - " 2242.585, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - - " Material,", - " E2 - 1 / 2 IN SLAG OR STONE, !- Name", - " Rough, !- Roughness", - " 1.2710161E-02, !- Thickness {m}", - " 1.435549, !- Conductivity {W/m-K}", - " 881.0155, !- Density {kg/m3}", - " 1673.600, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.5500000, !- Solar Absorptance", - " 0.5500000; !- Visible Absorptance", - - " Material,", - " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Name", - " Rough, !- Roughness", - " 9.5402403E-03, !- Thickness {m}", - " 0.1902535, !- Conductivity {W/m-K}", - " 1121.292, !- Density {kg/m3}", - " 1673.600, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.7500000, !- Solar Absorptance", - " 0.7500000; !- Visible Absorptance", - - " Material,", - " B5 - 1 IN DENSE INSULATION, !- Name", - " VeryRough, !- Roughness", - " 2.5389841E-02, !- Thickness {m}", - " 4.3239430E-02, !- Conductivity {W/m-K}", - " 91.30524, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.5000000, !- Solar Absorptance", - " 0.5000000; !- Visible Absorptance", - - " Material,", - " C12 - 2 IN HW CONCRETE, !- Name", - " MediumRough, !- Roughness", - " 5.0901599E-02, !- Thickness {m}", - " 1.729577, !- Conductivity {W/m-K}", - " 2242.585, !- Density {kg/m3}", - " 836.8000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.6500000, !- Solar Absorptance", - " 0.6500000; !- Visible Absorptance", - - " Material,", - " 1.375in-Solid-Core, !- Name", - " Smooth, !- Roughness", - " 3.4925E-02, !- Thickness {m}", - " 0.1525000, !- Conductivity {W/m-K}", - " 614.5000, !- Density {kg/m3}", - " 1630.0000, !- Specific Heat {J/kg-K}", - " 0.9000000, !- Thermal Absorptance", - " 0.9200000, !- Solar Absorptance", - " 0.9200000; !- Visible Absorptance", - - " WindowMaterial:Glazing,", - " SPECTRAL GLASS INNER PANE, !- Name", - " Spectral, !- Optical Data Type", - " TestSpectralDataSet, !- Window Glass Spectral Data Set Name", - " 0.0099, !- Thickness {m}", - " 0.0, !- Solar Transmittance at Normal Incidence", - " 0.0, !- Front Side Solar Reflectance at Normal Incidence", - " 0.0, !- Back Side Solar Reflectance at Normal Incidence", - " 0.0, !- Visible Transmittance at Normal Incidence", - " 0.0, !- Front Side Visible Reflectance at Normal Incidence", - " 0.0, !- Back Side Visible Reflectance at Normal Incidence", - " 0.0, !- Infrared Transmittance at Normal Incidence", - " 0.84, !- Front Side Infrared Hemispherical Emissivity", - " 0.84, !- Back Side Infrared Hemispherical Emissivity", - " 0.798; !- Conductivity {W/m-K}", - - " WindowMaterial:Glazing,", - " ELECTRO GLASS DARK STATE,!- Name", - " SpectralAverage, !- Optical Data Type", - " , !- Window Glass Spectral Data Set Name", - " 0.006, !- Thickness {m}", - " 0.111, !- Solar Transmittance at Normal Incidence", - " 0.179, !- Front Side Solar Reflectance at Normal Incidence", - " 0.179, !- Back Side Solar Reflectance at Normal Incidence", - " 0.128, !- Visible Transmittance at Normal Incidence", - " 0.081, !- Front Side Visible Reflectance at Normal Incidence", - " 0.081, !- Back Side Visible Reflectance at Normal Incidence", - " 0.0, !- Infrared Transmittance at Normal Incidence", - " 0.84, !- Front Side Infrared Hemispherical Emissivity", - " 0.84, !- Back Side Infrared Hemispherical Emissivity", - " 0.9; !- Conductivity {W/m-K}", - - " WindowMaterial:Glazing,", - " ELECTRO GLASS LIGHT STATE, !- Name", - " SpectralAndAngle, !- Optical Data Type", - " , !- Window Glass Spectral Data Set Name", - " 0.0099, !- Thickness {m}", - " 0.0, !- Solar Transmittance at Normal Incidence", - " 0.0, !- Front Side Solar Reflectance at Normal Incidence", - " 0.0, !- Back Side Solar Reflectance at Normal Incidence", - " 0.0, !- Visible Transmittance at Normal Incidence", - " 0.0, !- Front Side Visible Reflectance at Normal Incidence", - " 0.0, !- Back Side Visible Reflectance at Normal Incidence", - " 0.0, !- Infrared Transmittance at Normal Incidence", - " 0.84, !- Front Side Infrared Hemispherical Emissivity", - " 0.84, !- Back Side Infrared Hemispherical Emissivity", - " 0.798, !- Conductivity {W/m-K}", - " , !- Dirt Correction Factor for Solar and Visible Transmittance", - " , !- Solar Diffusing", - " , !- Young's modulus", - " , !- Poisson's ratio", - " TransmittanceData, !- Window Glass Spectral and Incident Angle Transmittance Data Set Table Name", - " FrontReflectanceData, !- Window Glass Spectral and Incident Angle Front Reflectance Data Set Table Name", - " BackRefelectanceData; !- Window Glass Spectral and Incident Angle Back Reflectance Data Set Table Name", - - "Table:TwoIndependentVariables,", - " TransmittanceData, !- Name", - " BiQuadratic, !- Curve Type", - " LinearInterpolationOfTable,!- Interpolation Type", - " 0.0, !- Minimum Value of x,", - " 90.0, !- Maximum Value of x,", - " 0.30, !- Minimum Value of y,", - " 2.50, !- Maximum Value of y,", - " 0.0, !- Minimum Table Output", - " 1.0, !- Maximum Table Output", - " Angle, !- Input Unit Type for x", - " Wavelength, !- Input Unit Type for y", - " Dimensionless, !- Output Unit Type", - " 1.0, !- Normalization Point", - " , !- External File Name", - " 0.0, 0.300, 0.00100,", - " 0.0, 0.310, 0.00100,", - " 0.0, 0.320, 0.00100,", - " 0.0, 0.330, 0.00100,", - " 0.0, 0.340, 0.00100,", - " 0.0, 0.350, 0.00100,", - " 0.0, 0.360, 0.00900,", - " 0.0, 0.370, 0.12000,", - " 0.0, 0.380, 0.49200,", - " 0.0, 0.390, 0.78200,", - " 0.0, 0.400, 0.85600,", - " 0.0, 0.410, 0.85800,", - " 0.0, 0.420, 0.85800,", - " 0.0, 0.430, 0.86000,", - " 0.0, 0.440, 0.86100,", - " 0.0, 0.450, 0.87100,", - " 0.0, 0.460, 0.88000,", - " 0.0, 0.470, 0.88300,", - " 0.0, 0.480, 0.88700,", - " 0.0, 0.490, 0.89000,", - " 0.0, 0.500, 0.89000,", - " 0.0, 0.510, 0.89100,", - " 0.0, 0.520, 0.88700,", - " 0.0, 0.530, 0.89000,", - " 0.0, 0.540, 0.88300,", - " 0.0, 0.550, 0.88800,", - " 0.0, 0.560, 0.88200,", - " 0.0, 0.570, 0.88100,", - " 0.0, 0.580, 0.86500,", - " 0.0, 0.590, 0.85800,", - " 0.0, 0.600, 0.86500,", - " 0.0, 0.610, 0.85600,", - " 0.0, 0.620, 0.84500,", - " 0.0, 0.630, 0.83700,", - " 0.0, 0.640, 0.82700,", - " 0.0, 0.650, 0.82000,", - " 0.0, 0.660, 0.80700,", - " 0.0, 0.670, 0.79800,", - " 0.0, 0.680, 0.79100,", - " 0.0, 0.690, 0.78100,", - " 0.0, 0.700, 0.76800,", - " 0.0, 0.710, 0.76100,", - " 0.0, 0.720, 0.74400,", - " 0.0, 0.730, 0.71300,", - " 0.0, 0.740, 0.70300,", - " 0.0, 0.750, 0.69400,", - " 0.0, 0.760, 0.68500,", - " 0.0, 0.770, 0.67500,", - " 0.0, 0.780, 0.66700,", - " 0.0, 0.790, 0.65500,", - " 0.0, 0.800, 0.64600,", - " 0.0, 0.810, 0.63800,", - " 0.0, 0.820, 0.62900,", - " 0.0, 0.830, 0.62300,", - " 0.0, 0.840, 0.61400,", - " 0.0, 0.850, 0.60800,", - " 0.0, 0.860, 0.60100,", - " 0.0, 0.870, 0.59700,", - " 0.0, 0.880, 0.59200,", - " 0.0, 0.890, 0.58700,", - " 0.0, 0.900, 0.58200,", - " 0.0, 0.950, 0.56800,", - " 0.0, 1.000, 0.56200,", - " 0.0, 1.050, 0.55600,", - " 0.0, 1.100, 0.56300,", - " 0.0, 1.150, 0.55600,", - " 0.0, 1.200, 0.54700,", - " 0.0, 1.250, 0.57700,", - " 0.0, 1.300, 0.59800,", - " 0.0, 1.350, 0.60800,", - " 0.0, 1.400, 0.60300,", - " 0.0, 1.450, 0.61400,", - " 0.0, 1.500, 0.64800,", - " 0.0, 1.550, 0.68000,", - " 0.0, 1.600, 0.69900,", - " 0.0, 1.650, 0.70600,", - " 0.0, 1.700, 0.57000,", - " 0.0, 1.750, 0.58500,", - " 0.0, 1.800, 0.63700,", - " 0.0, 1.850, 0.65500,", - " 0.0, 1.900, 0.63700,", - " 0.0, 1.950, 0.63400,", - " 0.0, 2.000, 0.63400,", - " 0.0, 2.050, 0.58600,", - " 0.0, 2.100, 0.58800,", - " 0.0, 2.150, 0.59700,", - " 0.0, 2.200, 0.57600,", - " 0.0, 2.250, 0.40400,", - " 0.0, 2.300, 0.17900,", - " 0.0, 2.350, 0.21900,", - " 0.0, 2.400, 0.24000,", - " 0.0, 2.450, 0.20000,", - " 0.0, 2.500, 0.21400,", - "90.0, 0.300, 0.00000,", - "90.0, 0.310, 0.00000,", - "90.0, 0.320, 0.00000,", - "90.0, 0.330, 0.00000,", - "90.0, 0.340, 0.00000,", - "90.0, 0.350, 0.00000,", - "90.0, 0.360, 0.00000,", - "90.0, 0.370, 0.00000,", - "90.0, 0.380, 0.00000,", - "90.0, 0.390, 0.00000,", - "90.0, 0.400, 0.00000,", - "90.0, 0.410, 0.00000,", - "90.0, 0.420, 0.00000,", - "90.0, 0.430, 0.00000,", - "90.0, 0.440, 0.00000,", - "90.0, 0.450, 0.00000,", - "90.0, 0.460, 0.00000,", - "90.0, 0.470, 0.00000,", - "90.0, 0.480, 0.00000,", - "90.0, 0.490, 0.00000,", - "90.0, 0.500, 0.00000,", - "90.0, 0.510, 0.00000,", - "90.0, 0.520, 0.00000,", - "90.0, 0.530, 0.00000,", - "90.0, 0.540, 0.00000,", - "90.0, 0.550, 0.00000,", - "90.0, 0.560, 0.00000,", - "90.0, 0.570, 0.00000,", - "90.0, 0.580, 0.00000,", - "90.0, 0.590, 0.00000,", - "90.0, 0.600, 0.00000,", - "90.0, 0.610, 0.00000,", - "90.0, 0.620, 0.00000,", - "90.0, 0.630, 0.00000,", - "90.0, 0.640, 0.00000,", - "90.0, 0.650, 0.00000,", - "90.0, 0.660, 0.00000,", - "90.0, 0.670, 0.00000,", - "90.0, 0.680, 0.00000,", - "90.0, 0.690, 0.00000,", - "90.0, 0.700, 0.00000,", - "90.0, 0.710, 0.00000,", - "90.0, 0.720, 0.00000,", - "90.0, 0.730, 0.00000,", - "90.0, 0.740, 0.00000,", - "90.0, 0.750, 0.00000,", - "90.0, 0.760, 0.00000,", - "90.0, 0.770, 0.00000,", - "90.0, 0.780, 0.00000,", - "90.0, 0.790, 0.00000,", - "90.0, 0.800, 0.00000,", - "90.0, 0.810, 0.00000,", - "90.0, 0.820, 0.00000,", - "90.0, 0.830, 0.00000,", - "90.0, 0.840, 0.00000,", - "90.0, 0.850, 0.00000,", - "90.0, 0.860, 0.00000,", - "90.0, 0.870, 0.00000,", - "90.0, 0.880, 0.00000,", - "90.0, 0.890, 0.00000,", - "90.0, 0.900, 0.00000,", - "90.0, 0.950, 0.00000,", - "90.0, 1.000, 0.00000,", - "90.0, 1.050, 0.00000,", - "90.0, 1.100, 0.00000,", - "90.0, 1.150, 0.00000,", - "90.0, 1.200, 0.00000,", - "90.0, 1.250, 0.00000,", - "90.0, 1.300, 0.00000,", - "90.0, 1.350, 0.00000,", - "90.0, 1.400, 0.00000,", - "90.0, 1.450, 0.00000,", - "90.0, 1.500, 0.00000,", - "90.0, 1.550, 0.00000,", - "90.0, 1.600, 0.00000,", - "90.0, 1.650, 0.00000,", - "90.0, 1.700, 0.00000,", - "90.0, 1.750, 0.00000,", - "90.0, 1.800, 0.00000,", - "90.0, 1.850, 0.00000,", - "90.0, 1.900, 0.00000,", - "90.0, 1.950, 0.00000,", - "90.0, 2.000, 0.00000,", - "90.0, 2.050, 0.00000,", - "90.0, 2.100, 0.00000,", - "90.0, 2.150, 0.00000,", - "90.0, 2.200, 0.00000,", - "90.0, 2.250, 0.00000,", - "90.0, 2.300, 0.00000,", - "90.0, 2.350, 0.00000,", - "90.0, 2.400, 0.00000,", - "90.0, 2.450, 0.00000,", - "90.0, 2.500, 0.00000;", - - "Table:TwoIndependentVariables,", - " FrontReflectanceData, !- Name", - " BiQuadratic, !- Curve Type", - " LinearInterpolationOfTable,!- Interpolation Type", - " 0.0, !- Minimum Value of x,", - " 90.0, !- Maximum Value of x,", - " 0.30, !- Minimum Value of y,", - " 2.50, !- Maximum Value of y,", - " 0.0, !- Minimum Table Output", - " 1.0, !- Maximum Table Output", - " Angle, !- Input Unit Type for x", - " Wavelength, !- Input Unit Type for y", - " Dimensionless, !- Output Unit Type", - " 1.0, !- Normalization Point", - " , !- External File Name", - " 0.0, 0.300, 0.04500,", - " 0.0, 0.310, 0.04400,", - " 0.0, 0.320, 0.04400,", - " 0.0, 0.330, 0.04200,", - " 0.0, 0.340, 0.04100,", - " 0.0, 0.350, 0.04000,", - " 0.0, 0.360, 0.04000,", - " 0.0, 0.370, 0.04000,", - " 0.0, 0.380, 0.05100,", - " 0.0, 0.390, 0.07000,", - " 0.0, 0.400, 0.07500,", - " 0.0, 0.410, 0.07500,", - " 0.0, 0.420, 0.07500,", - " 0.0, 0.430, 0.07500,", - " 0.0, 0.440, 0.07500,", - " 0.0, 0.450, 0.07500,", - " 0.0, 0.460, 0.07600,", - " 0.0, 0.470, 0.07500,", - " 0.0, 0.480, 0.07600,", - " 0.0, 0.490, 0.07500,", - " 0.0, 0.500, 0.07500,", - " 0.0, 0.510, 0.07500,", - " 0.0, 0.520, 0.07500,", - " 0.0, 0.530, 0.07500,", - " 0.0, 0.540, 0.07400,", - " 0.0, 0.550, 0.07400,", - " 0.0, 0.560, 0.07400,", - " 0.0, 0.570, 0.07400,", - " 0.0, 0.580, 0.07100,", - " 0.0, 0.590, 0.07000,", - " 0.0, 0.600, 0.07000,", - " 0.0, 0.610, 0.07000,", - " 0.0, 0.620, 0.07000,", - " 0.0, 0.630, 0.07000,", - " 0.0, 0.640, 0.06900,", - " 0.0, 0.650, 0.06700,", - " 0.0, 0.660, 0.06700,", - " 0.0, 0.670, 0.06500,", - " 0.0, 0.680, 0.06500,", - " 0.0, 0.690, 0.06500,", - " 0.0, 0.700, 0.06400,", - " 0.0, 0.710, 0.06400,", - " 0.0, 0.720, 0.06200,", - " 0.0, 0.730, 0.06400,", - " 0.0, 0.740, 0.06200,", - " 0.0, 0.750, 0.06100,", - " 0.0, 0.760, 0.06100,", - " 0.0, 0.770, 0.06000,", - " 0.0, 0.780, 0.06000,", - " 0.0, 0.790, 0.06000,", - " 0.0, 0.800, 0.05900,", - " 0.0, 0.810, 0.05900,", - " 0.0, 0.820, 0.05700,", - " 0.0, 0.830, 0.05700,", - " 0.0, 0.840, 0.05600,", - " 0.0, 0.850, 0.05600,", - " 0.0, 0.860, 0.05500,", - " 0.0, 0.870, 0.05400,", - " 0.0, 0.880, 0.05400,", - " 0.0, 0.890, 0.05400,", - " 0.0, 0.900, 0.05500,", - " 0.0, 0.950, 0.05100,", - " 0.0, 1.000, 0.05100,", - " 0.0, 1.050, 0.05000,", - " 0.0, 1.100, 0.05100,", - " 0.0, 1.150, 0.05000,", - " 0.0, 1.200, 0.05000,", - " 0.0, 1.250, 0.05100,", - " 0.0, 1.300, 0.05400,", - " 0.0, 1.350, 0.05500,", - " 0.0, 1.400, 0.05200,", - " 0.0, 1.450, 0.05500,", - " 0.0, 1.500, 0.05700,", - " 0.0, 1.550, 0.05900,", - " 0.0, 1.600, 0.06000,", - " 0.0, 1.650, 0.06000,", - " 0.0, 1.700, 0.05100,", - " 0.0, 1.750, 0.05100,", - " 0.0, 1.800, 0.05500,", - " 0.0, 1.850, 0.05700,", - " 0.0, 1.900, 0.05700,", - " 0.0, 1.950, 0.05700,", - " 0.0, 2.000, 0.05700,", - " 0.0, 2.050, 0.05200,", - " 0.0, 2.100, 0.05400,", - " 0.0, 2.150, 0.05400,", - " 0.0, 2.200, 0.05100,", - " 0.0, 2.250, 0.04500,", - " 0.0, 2.300, 0.03700,", - " 0.0, 2.350, 0.03700,", - " 0.0, 2.400, 0.03900,", - " 0.0, 2.450, 0.04000,", - " 0.0, 2.500, 0.03900,", - "90.0, 0.300, 1.00000,", - "90.0, 0.310, 1.00000,", - "90.0, 0.320, 1.00000,", - "90.0, 0.330, 1.00000,", - "90.0, 0.340, 1.00000,", - "90.0, 0.350, 1.00000,", - "90.0, 0.360, 1.00000,", - "90.0, 0.370, 1.00000,", - "90.0, 0.380, 1.00000,", - "90.0, 0.390, 1.00000,", - "90.0, 0.400, 1.00000,", - "90.0, 0.410, 1.00000,", - "90.0, 0.420, 1.00000,", - "90.0, 0.430, 1.00000,", - "90.0, 0.440, 1.00000,", - "90.0, 0.450, 1.00000,", - "90.0, 0.460, 1.00000,", - "90.0, 0.470, 1.00000,", - "90.0, 0.480, 1.00000,", - "90.0, 0.490, 1.00000,", - "90.0, 0.500, 1.00000,", - "90.0, 0.510, 1.00000,", - "90.0, 0.520, 1.00000,", - "90.0, 0.530, 1.00000,", - "90.0, 0.540, 1.00000,", - "90.0, 0.550, 1.00000,", - "90.0, 0.560, 1.00000,", - "90.0, 0.570, 1.00000,", - "90.0, 0.580, 1.00000,", - "90.0, 0.590, 1.00000,", - "90.0, 0.600, 1.00000,", - "90.0, 0.610, 1.00000,", - "90.0, 0.620, 1.00000,", - "90.0, 0.630, 1.00000,", - "90.0, 0.640, 1.00000,", - "90.0, 0.650, 1.00000,", - "90.0, 0.660, 1.00000,", - "90.0, 0.670, 1.00000,", - "90.0, 0.680, 1.00000,", - "90.0, 0.690, 1.00000,", - "90.0, 0.700, 1.00000,", - "90.0, 0.710, 1.00000,", - "90.0, 0.720, 1.00000,", - "90.0, 0.730, 1.00000,", - "90.0, 0.740, 1.00000,", - "90.0, 0.750, 1.00000,", - "90.0, 0.760, 1.00000,", - "90.0, 0.770, 1.00000,", - "90.0, 0.780, 1.00000,", - "90.0, 0.790, 1.00000,", - "90.0, 0.800, 1.00000,", - "90.0, 0.810, 1.00000,", - "90.0, 0.820, 1.00000,", - "90.0, 0.830, 1.00000,", - "90.0, 0.840, 1.00000,", - "90.0, 0.850, 1.00000,", - "90.0, 0.860, 1.00000,", - "90.0, 0.870, 1.00000,", - "90.0, 0.880, 1.00000,", - "90.0, 0.890, 1.00000,", - "90.0, 0.900, 1.00000,", - "90.0, 0.950, 1.00000,", - "90.0, 1.000, 1.00000,", - "90.0, 1.050, 1.00000,", - "90.0, 1.100, 1.00000,", - "90.0, 1.150, 1.00000,", - "90.0, 1.200, 1.00000,", - "90.0, 1.250, 1.00000,", - "90.0, 1.300, 1.00000,", - "90.0, 1.350, 1.00000,", - "90.0, 1.400, 1.00000,", - "90.0, 1.450, 1.00000,", - "90.0, 1.500, 1.00000,", - "90.0, 1.550, 1.00000,", - "90.0, 1.600, 1.00000,", - "90.0, 1.650, 1.00000,", - "90.0, 1.700, 1.00000,", - "90.0, 1.750, 1.00000,", - "90.0, 1.800, 1.00000,", - "90.0, 1.850, 1.00000,", - "90.0, 1.900, 1.00000,", - "90.0, 1.950, 1.00000,", - "90.0, 2.000, 1.00000,", - "90.0, 2.050, 1.00000,", - "90.0, 2.100, 1.00000,", - "90.0, 2.150, 1.00000,", - "90.0, 2.200, 1.00000,", - "90.0, 2.250, 1.00000,", - "90.0, 2.300, 1.00000,", - "90.0, 2.350, 1.00000,", - "90.0, 2.400, 1.00000,", - "90.0, 2.450, 1.00000,", - "90.0, 2.500, 1.00000;", - - "Table:TwoIndependentVariables,", - " BackRefelectanceData, !- Name", - " BiQuadratic, !- Curve Type", - " LinearInterpolationOfTable,!- Interpolation Type", - " 0.0, !- Minimum Value of x,", - " 90.0, !- Maximum Value of x,", - " 0.30, !- Minimum Value of y,", - " 2.50, !- Maximum Value of y,", - " 0.0, !- Minimum Table Output", - " 1.0, !- Maximum Table Output", - " Angle, !- Input Unit Type for x", - " Wavelength, !- Input Unit Type for y", - " Dimensionless, !- Output Unit Type", - " 1.0, !- Normalization Point", - " , !- External File Name", - " 0.0, 0.300, 0.04500,", - " 0.0, 0.310, 0.04400,", - " 0.0, 0.320, 0.04400,", - " 0.0, 0.330, 0.04200,", - " 0.0, 0.340, 0.04100,", - " 0.0, 0.350, 0.04000,", - " 0.0, 0.360, 0.04000,", - " 0.0, 0.370, 0.04000,", - " 0.0, 0.380, 0.05100,", - " 0.0, 0.390, 0.07000,", - " 0.0, 0.400, 0.07500,", - " 0.0, 0.410, 0.07500,", - " 0.0, 0.420, 0.07500,", - " 0.0, 0.430, 0.07500,", - " 0.0, 0.440, 0.07500,", - " 0.0, 0.450, 0.07500,", - " 0.0, 0.460, 0.07600,", - " 0.0, 0.470, 0.07500,", - " 0.0, 0.480, 0.07600,", - " 0.0, 0.490, 0.07500,", - " 0.0, 0.500, 0.07500,", - " 0.0, 0.510, 0.07500,", - " 0.0, 0.520, 0.07500,", - " 0.0, 0.530, 0.07500,", - " 0.0, 0.540, 0.07400,", - " 0.0, 0.550, 0.07400,", - " 0.0, 0.560, 0.07400,", - " 0.0, 0.570, 0.07400,", - " 0.0, 0.580, 0.07100,", - " 0.0, 0.590, 0.07000,", - " 0.0, 0.600, 0.07000,", - " 0.0, 0.610, 0.07000,", - " 0.0, 0.620, 0.07000,", - " 0.0, 0.630, 0.07000,", - " 0.0, 0.640, 0.06900,", - " 0.0, 0.650, 0.06700,", - " 0.0, 0.660, 0.06700,", - " 0.0, 0.670, 0.06500,", - " 0.0, 0.680, 0.06500,", - " 0.0, 0.690, 0.06500,", - " 0.0, 0.700, 0.06400,", - " 0.0, 0.710, 0.06400,", - " 0.0, 0.720, 0.06200,", - " 0.0, 0.730, 0.06400,", - " 0.0, 0.740, 0.06200,", - " 0.0, 0.750, 0.06100,", - " 0.0, 0.760, 0.06100,", - " 0.0, 0.770, 0.06000,", - " 0.0, 0.780, 0.06000,", - " 0.0, 0.790, 0.06000,", - " 0.0, 0.800, 0.05900,", - " 0.0, 0.810, 0.05900,", - " 0.0, 0.820, 0.05700,", - " 0.0, 0.830, 0.05700,", - " 0.0, 0.840, 0.05600,", - " 0.0, 0.850, 0.05600,", - " 0.0, 0.860, 0.05500,", - " 0.0, 0.870, 0.05400,", - " 0.0, 0.880, 0.05400,", - " 0.0, 0.890, 0.05400,", - " 0.0, 0.900, 0.05500,", - " 0.0, 0.950, 0.05100,", - " 0.0, 1.000, 0.05100,", - " 0.0, 1.050, 0.05000,", - " 0.0, 1.100, 0.05100,", - " 0.0, 1.150, 0.05000,", - " 0.0, 1.200, 0.05000,", - " 0.0, 1.250, 0.05100,", - " 0.0, 1.300, 0.05400,", - " 0.0, 1.350, 0.05500,", - " 0.0, 1.400, 0.05200,", - " 0.0, 1.450, 0.05500,", - " 0.0, 1.500, 0.05700,", - " 0.0, 1.550, 0.05900,", - " 0.0, 1.600, 0.06000,", - " 0.0, 1.650, 0.06000,", - " 0.0, 1.700, 0.05100,", - " 0.0, 1.750, 0.05100,", - " 0.0, 1.800, 0.05500,", - " 0.0, 1.850, 0.05700,", - " 0.0, 1.900, 0.05700,", - " 0.0, 1.950, 0.05700,", - " 0.0, 2.000, 0.05700,", - " 0.0, 2.050, 0.05200,", - " 0.0, 2.100, 0.05400,", - " 0.0, 2.150, 0.05400,", - " 0.0, 2.200, 0.05100,", - " 0.0, 2.250, 0.04500,", - " 0.0, 2.300, 0.03700,", - " 0.0, 2.350, 0.03700,", - " 0.0, 2.400, 0.03900,", - " 0.0, 2.450, 0.04000,", - " 0.0, 2.500, 0.03900,", - "90.0, 0.300, 1.00000,", - "90.0, 0.310, 1.00000,", - "90.0, 0.320, 1.00000,", - "90.0, 0.330, 1.00000,", - "90.0, 0.340, 1.00000,", - "90.0, 0.350, 1.00000,", - "90.0, 0.360, 1.00000,", - "90.0, 0.370, 1.00000,", - "90.0, 0.380, 1.00000,", - "90.0, 0.390, 1.00000,", - "90.0, 0.400, 1.00000,", - "90.0, 0.410, 1.00000,", - "90.0, 0.420, 1.00000,", - "90.0, 0.430, 1.00000,", - "90.0, 0.440, 1.00000,", - "90.0, 0.450, 1.00000,", - "90.0, 0.460, 1.00000,", - "90.0, 0.470, 1.00000,", - "90.0, 0.480, 1.00000,", - "90.0, 0.490, 1.00000,", - "90.0, 0.500, 1.00000,", - "90.0, 0.510, 1.00000,", - "90.0, 0.520, 1.00000,", - "90.0, 0.530, 1.00000,", - "90.0, 0.540, 1.00000,", - "90.0, 0.550, 1.00000,", - "90.0, 0.560, 1.00000,", - "90.0, 0.570, 1.00000,", - "90.0, 0.580, 1.00000,", - "90.0, 0.590, 1.00000,", - "90.0, 0.600, 1.00000,", - "90.0, 0.610, 1.00000,", - "90.0, 0.620, 1.00000,", - "90.0, 0.630, 1.00000,", - "90.0, 0.640, 1.00000,", - "90.0, 0.650, 1.00000,", - "90.0, 0.660, 1.00000,", - "90.0, 0.670, 1.00000,", - "90.0, 0.680, 1.00000,", - "90.0, 0.690, 1.00000,", - "90.0, 0.700, 1.00000,", - "90.0, 0.710, 1.00000,", - "90.0, 0.720, 1.00000,", - "90.0, 0.730, 1.00000,", - "90.0, 0.740, 1.00000,", - "90.0, 0.750, 1.00000,", - "90.0, 0.760, 1.00000,", - "90.0, 0.770, 1.00000,", - "90.0, 0.780, 1.00000,", - "90.0, 0.790, 1.00000,", - "90.0, 0.800, 1.00000,", - "90.0, 0.810, 1.00000,", - "90.0, 0.820, 1.00000,", - "90.0, 0.830, 1.00000,", - "90.0, 0.840, 1.00000,", - "90.0, 0.850, 1.00000,", - "90.0, 0.860, 1.00000,", - "90.0, 0.870, 1.00000,", - "90.0, 0.880, 1.00000,", - "90.0, 0.890, 1.00000,", - "90.0, 0.900, 1.00000,", - "90.0, 0.950, 1.00000,", - "90.0, 1.000, 1.00000,", - "90.0, 1.050, 1.00000,", - "90.0, 1.100, 1.00000,", - "90.0, 1.150, 1.00000,", - "90.0, 1.200, 1.00000,", - "90.0, 1.250, 1.00000,", - "90.0, 1.300, 1.00000,", - "90.0, 1.350, 1.00000,", - "90.0, 1.400, 1.00000,", - "90.0, 1.450, 1.00000,", - "90.0, 1.500, 1.00000,", - "90.0, 1.550, 1.00000,", - "90.0, 1.600, 1.00000,", - "90.0, 1.650, 1.00000,", - "90.0, 1.700, 1.00000,", - "90.0, 1.750, 1.00000,", - "90.0, 1.800, 1.00000,", - "90.0, 1.850, 1.00000,", - "90.0, 1.900, 1.00000,", - "90.0, 1.950, 1.00000,", - "90.0, 2.000, 1.00000,", - "90.0, 2.050, 1.00000,", - "90.0, 2.100, 1.00000,", - "90.0, 2.150, 1.00000,", - "90.0, 2.200, 1.00000,", - "90.0, 2.250, 1.00000,", - "90.0, 2.300, 1.00000,", - "90.0, 2.350, 1.00000,", - "90.0, 2.400, 1.00000,", - "90.0, 2.450, 1.00000,", - "90.0, 2.500, 1.00000;", - - " WindowMaterial:Gas,", - " WinAirGap, !- Name", - " AIR, !- Gas Type", - " 0.013; !- Thickness {m}", - - " MaterialProperty:GlazingSpectralData,", - " TestSpectralDataSet, !- Name", - " 0.300,0.000,0.045,0.045,", - " 0.310,0.000,0.044,0.044,", - " 0.320,0.000,0.044,0.044,", - " 0.330,0.000,0.042,0.042,", - " 0.340,0.000,0.041,0.041,", - " 0.350,0.000,0.040,0.040,", - " 0.360,0.009,0.040,0.040,", - " 0.370,0.120,0.040,0.040,", - " 0.380,0.492,0.051,0.051,", - " 0.390,0.782,0.070,0.070,", - " 0.400,0.856,0.075,0.075,", - " 0.410,0.858,0.075,0.075,", - " 0.420,0.858,0.075,0.075,", - " 0.430,0.860,0.075,0.075,", - " 0.440,0.861,0.075,0.075,", - " 0.450,0.871,0.075,0.075,", - " 0.460,0.880,0.076,0.076,", - " 0.470,0.883,0.075,0.075,", - " 0.480,0.887,0.076,0.076,", - " 0.490,0.890,0.075,0.075,", - " 0.500,0.890,0.075,0.075,", - " 0.510,0.891,0.075,0.075,", - " 0.520,0.887,0.075,0.075,", - " 0.530,0.890,0.075,0.075,", - " 0.540,0.883,0.074,0.074,", - " 0.550,0.888,0.074,0.074,", - " 0.560,0.882,0.074,0.074,", - " 0.570,0.881,0.074,0.074,", - " 0.580,0.865,0.071,0.071,", - " 0.590,0.858,0.070,0.070,", - " 0.600,0.865,0.070,0.070,", - " 0.610,0.856,0.070,0.070,", - " 0.620,0.845,0.070,0.070,", - " 0.630,0.837,0.070,0.070,", - " 0.640,0.827,0.069,0.069,", - " 0.650,0.820,0.067,0.067,", - " 0.660,0.807,0.067,0.067,", - " 0.670,0.798,0.065,0.065,", - " 0.680,0.791,0.065,0.065,", - " 0.690,0.781,0.065,0.065,", - " 0.700,0.768,0.064,0.064,", - " 0.710,0.761,0.064,0.064,", - " 0.720,0.744,0.062,0.062,", - " 0.730,0.713,0.064,0.064,", - " 0.740,0.703,0.062,0.062,", - " 0.750,0.694,0.061,0.061,", - " 0.760,0.685,0.061,0.061,", - " 0.770,0.675,0.060,0.060,", - " 0.780,0.667,0.060,0.060,", - " 0.790,0.655,0.060,0.060,", - " 0.800,0.646,0.059,0.059,", - " 0.810,0.638,0.059,0.059,", - " 0.820,0.629,0.057,0.057,", - " 0.830,0.623,0.057,0.057,", - " 0.840,0.614,0.056,0.056,", - " 0.850,0.608,0.056,0.056,", - " 0.860,0.601,0.055,0.055,", - " 0.870,0.597,0.054,0.054,", - " 0.880,0.592,0.054,0.054,", - " 0.890,0.587,0.054,0.054,", - " 0.900,0.582,0.055,0.055,", - " 0.950,0.568,0.051,0.051,", - " 1.000,0.562,0.051,0.051,", - " 1.050,0.556,0.050,0.050,", - " 1.100,0.563,0.051,0.051,", - " 1.150,0.556,0.050,0.050,", - " 1.200,0.547,0.050,0.050,", - " 1.250,0.577,0.051,0.051,", - " 1.300,0.598,0.054,0.054,", - " 1.350,0.608,0.055,0.055,", - " 1.400,0.603,0.052,0.052,", - " 1.450,0.614,0.055,0.055,", - " 1.500,0.648,0.057,0.057,", - " 1.550,0.680,0.059,0.059,", - " 1.600,0.699,0.060,0.060,", - " 1.650,0.706,0.060,0.060,", - " 1.700,0.570,0.051,0.051,", - " 1.750,0.585,0.051,0.051,", - " 1.800,0.637,0.055,0.055,", - " 1.850,0.655,0.057,0.057,", - " 1.900,0.637,0.057,0.057,", - " 1.950,0.634,0.057,0.057,", - " 2.000,0.634,0.057,0.057,", - " 2.050,0.586,0.052,0.052,", - " 2.100,0.588,0.054,0.054,", - " 2.150,0.597,0.054,0.054,", - " 2.200,0.576,0.051,0.051,", - " 2.250,0.404,0.045,0.045,", - " 2.300,0.179,0.037,0.037,", - " 2.350,0.219,0.037,0.037,", - " 2.400,0.240,0.039,0.039,", - " 2.450,0.200,0.040,0.040,", - " 2.500,0.214,0.039,0.039;", - " Construction,", - " EXTWALL80, !- Name", - " A1 - 1 IN STUCCO, !- Outside Layer", - " C4 - 4 IN COMMON BRICK, !- Layer 2", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", - - " Construction,", - " PARTITION06, !- Name", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer", - " C6 - 8 IN CLAY TILE, !- Layer 2", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", - - " Construction,", - " FLOOR SLAB 8 IN, !- Name", - " C10 - 8 IN HW CONCRETE; !- Outside Layer", - - " Construction,", - " ROOF34, !- Name", - " E2 - 1 / 2 IN SLAG OR STONE, !- Outside Layer", - " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Layer 2", - " C12 - 2 IN HW CONCRETE; !- Layer 3", - - " Construction,", - " CEILING:ZONE, !- Name", - " B5 - 1 IN DENSE INSULATION, !- Outside Layer", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 2", - - " Construction,", - " CEILING:ATTIC, !- Name", - " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer", - " B5 - 1 IN DENSE INSULATION; !- Layer 2", - - " Construction,", - " ELECTRO-CON-LIGHT, !- Name", - " ELECTRO GLASS LIGHT STATE, !- Outside Layer", - " WinAirGap, !- Layer 2", - " SPECTRAL GLASS INNER PANE; !- Layer 3", - - " Construction,", - " ELECTRO-CON-DARK, !- Name", - " ELECTRO GLASS LIGHT STATE, !- Outside Layer", - " WinAirGap, !- Layer 2", - " SPECTRAL GLASS INNER PANE; !- Layer 3", - - " Construction,", - " DOOR-CON, !- Name", - " 1.375in-Solid-Core; !- Outside Layer", - - " Zone,", - " West Zone, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " Zone,", - " EAST ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " Zone,", - " NORTH ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " Zone,", - " ATTIC ZONE, !- Name", - " 0, !- Direction of Relative North {deg}", - " 0, !- X Origin {m}", - " 0, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", - " autocalculate; !- Volume {m3}", - - " GlobalGeometryRules,", - " UpperLeftCorner, !- Starting Vertex Position", - " CounterClockWise, !- Vertex Entry Direction", - " World; !- Coordinate System", - - " BuildingSurface:Detailed,", - " Zn001:Wall001, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " West Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall002, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " West Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall003, !- Name", - " Wall, !- Surface Type", - " PARTITION06, !- Construction Name", - " West Zone, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn003:Wall004, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Wall004, !- Name", - " Wall, !- Surface Type", - " PARTITION06, !- Construction Name", - " West Zone, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn002:Wall004, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Flr001, !- Name", - " Floor, !- Surface Type", - " FLOOR SLAB 8 IN, !- Construction Name", - " West Zone, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn001:Flr001, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,0, !- X,Y,Z ==> Vertex 1 {m}", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,0,0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn001:Ceil001, !- Name", - " CEILING, !- Surface Type", - " CEILING:ZONE, !- Construction Name", - " West Zone, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn004:Flr001, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn002:Wall001, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " EAST ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 9.144000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 9.144000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn002:Wall002, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " EAST ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn002:Wall003, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " EAST ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 12.19200,0,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn002:Wall004, !- Name", - " Wall, !- Surface Type", - " PARTITION06, !- Construction Name", - " EAST ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn001:Wall004, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn002:Wall005, !- Name", - " Wall, !- Surface Type", - " PARTITION06, !- Construction Name", - " EAST ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn003:Wall005, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 9.144000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn002:Flr001, !- Name", - " Floor, !- Surface Type", - " FLOOR SLAB 8 IN, !- Construction Name", - " EAST ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn002:Flr001, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,0,0, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,0,0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn002:Ceil001, !- Name", - " CEILING, !- Surface Type", - " CEILING:ZONE, !- Construction Name", - " EAST ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn004:Flr002, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn003:Wall001, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " NORTH ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn003:Wall002, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " NORTH ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 9.144000,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 9.144000,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", - " 0,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", - " 0,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn003:Wall003, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " NORTH ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 9.144000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 9.144000,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", - " 9.144000,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn003:Wall004, !- Name", - " Wall, !- Surface Type", - " PARTITION06, !- Construction Name", - " NORTH ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn001:Wall003, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn003:Wall005, !- Name", - " Wall, !- Surface Type", - " PARTITION06, !- Construction Name", - " NORTH ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn002:Wall005, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 9.144000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 9.144000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn003:Flr001, !- Name", - " Floor, !- Surface Type", - " FLOOR SLAB 8 IN, !- Construction Name", - " NORTH ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn003:Flr001, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,6.096000,0, !- X,Y,Z ==> Vertex 1 {m}", - " 0,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", - " 9.144000,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", - " 9.144000,6.096000,0; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn003:Ceil001, !- Name", - " CEILING, !- Surface Type", - " CEILING:ZONE, !- Construction Name", - " NORTH ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn004:Flr003, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 9.144000,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Wall001, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,3.962400, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,0,3.962400; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Wall002, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,0,3.962400, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,0,3.962400; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Wall003, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 12.19200,0,3.962400, !- X,Y,Z ==> Vertex 1 {m}", - " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,6.096000,3.962400; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Wall004, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 12.19200,6.096000,3.962400, !- X,Y,Z ==> Vertex 1 {m}", - " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 9.144000,6.096000,3.962400; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Wall005, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 9.144000,6.096000,3.962400, !- X,Y,Z ==> Vertex 1 {m}", - " 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 9.144000,12.19200,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 9.144000,12.19200,3.962400; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Wall006, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 9.144000,12.19200,3.962400, !- X,Y,Z ==> Vertex 1 {m}", - " 9.144000,12.19200,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 0,12.19200,3.962400; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Wall007, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,12.19200,3.962400, !- X,Y,Z ==> Vertex 1 {m}", - " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 0,6.096000,3.962400; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Wall008, !- Name", - " Wall, !- Surface Type", - " EXTWALL80, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,6.096000,3.962400, !- X,Y,Z ==> Vertex 1 {m}", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 0,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 0,0,3.962400; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Roof001, !- Name", - " Roof, !- Surface Type", - " ROOF34, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,6.096000,3.962400, !- X,Y,Z ==> Vertex 1 {m}", - " 0,0,3.962400, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,0,3.962400, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,6.096000,3.962400; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Roof002, !- Name", - " Roof, !- Surface Type", - " ROOF34, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,6.096000,3.962400, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,0,3.962400, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,0,3.962400, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,6.096000,3.962400; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Roof003, !- Name", - " Roof, !- Surface Type", - " ROOF34, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,12.19200,3.962400, !- X,Y,Z ==> Vertex 1 {m}", - " 0,6.096000,3.962400, !- X,Y,Z ==> Vertex 2 {m}", - " 9.144000,6.096000,3.962400, !- X,Y,Z ==> Vertex 3 {m}", - " 9.144000,12.19200,3.962400; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Flr001, !- Name", - " Floor, !- Surface Type", - " CEILING:ATTIC, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn001:Ceil001, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 6.096000,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Flr002, !- Name", - " Floor, !- Surface Type", - " CEILING:ATTIC, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn002:Ceil001, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 12.19200,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " BuildingSurface:Detailed,", - " Zn004:Flr003, !- Name", - " Floor, !- Surface Type", - " CEILING:ATTIC, !- Construction Name", - " ATTIC ZONE, !- Zone Name", - " Surface, !- Outside Boundary Condition", - " Zn003:Ceil001, !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", - " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 2 {m}", - " 9.144000,12.19200,3.048000, !- X,Y,Z ==> Vertex 3 {m}", - " 9.144000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", - - " FenestrationSurface:Detailed,", - " Zn001:Wall001:Win001, !- Name", - " Window, !- Surface Type", - " ELECTRO-CON-LIGHT, !- Construction Name", - " Zn001:Wall001, !- Building Surface Name", - " , !- Outside Boundary Condition Object", - " 0.5000000, !- View Factor to Ground", - " WIN-CONTROL-GLARE, !- Shading Control Name", - " TestFrameAndDivider, !- Frame and Divider Name", - " 1.0, !- Multiplier", - " 4, !- Number of Vertices", - " 0.548000,0,2.5000, !- X,Y,Z ==> Vertex 1 {m}", - " 0.548000,0,0.5000, !- X,Y,Z ==> Vertex 2 {m}", - " 5.548000,0,0.5000, !- X,Y,Z ==> Vertex 3 {m}", - " 5.548000,0,2.5000; !- X,Y,Z ==> Vertex 4 {m}", - - " FenestrationSurface:Detailed,", - " Zn001:Wall003:Door001, !- Name", - " DOOR, !- Surface Type", - " DOOR-CON, !- Construction Name", - " Zn001:Wall003, !- Building Surface Name", - " Zn003:Wall004:Door001, !- Outside Boundary Condition Object", - " 0.5000000, !- View Factor to Ground", - " , !- Shading Control Name", - " , !- Frame and Divider Name", - " 1.0, !- Multiplier", - " 4, !- Number of Vertices", - " 3.500,6.096000,2.0, !- X,Y,Z ==> Vertex 1 {m}", - " 3.500,6.096000,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 2.500,6.096000,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 2.500,6.096000,2.0; !- X,Y,Z ==> Vertex 4 {m}", - - " FenestrationSurface:Detailed,", - " Zn003:Wall002:Win001, !- Name", - " Window, !- Surface Type", - " ELECTRO-CON-LIGHT, !- Construction Name", - " Zn003:Wall002, !- Building Surface Name", - " , !- Outside Boundary Condition Object", - " 0.5000000, !- View Factor to Ground", - " , !- Shading Control Name", - " TestFrameAndDivider, !- Frame and Divider Name", - " 1.0, !- Multiplier", - " 4, !- Number of Vertices", - " 5.548000,12.19200,2.5000, !- X,Y,Z ==> Vertex 1 {m}", - " 5.548000,12.19200,0.5000, !- X,Y,Z ==> Vertex 2 {m}", - " 0.548000,12.19200,0.5000, !- X,Y,Z ==> Vertex 3 {m}", - " 0.548000,12.19200,2.5000; !- X,Y,Z ==> Vertex 4 {m}", - - " FenestrationSurface:Detailed,", - " Zn003:Wall004:Door001, !- Name", - " DOOR, !- Surface Type", - " DOOR-CON, !- Construction Name", - " Zn003:Wall004, !- Building Surface Name", - " Zn001:Wall003:Door001, !- Outside Boundary Condition Object", - " 0.5000000, !- View Factor to Ground", - " , !- Shading Control Name", - " , !- Frame and Divider Name", - " 1.0, !- Multiplier", - " 4, !- Number of Vertices", - " 2.500,6.096000,2.0, !- X,Y,Z ==> Vertex 1 {m}", - " 2.500,6.096000,0.0, !- X,Y,Z ==> Vertex 2 {m}", - " 3.500,6.096000,0.0, !- X,Y,Z ==> Vertex 3 {m}", - " 3.500,6.096000,2.0; !- X,Y,Z ==> Vertex 4 {m}", - - " WindowProperty:ShadingControl,", - " WIN-CONTROL-GLARE, !- Name", - " SwitchableGlazing, !- Shading Type", - " ELECTRO-CON-DARK, !- Construction with Shading Name", - " OnIfHighGlare, !- Shading Control Type", - " , !- Schedule Name", - " 0.0, !- Setpoint {W/m2, W or deg C}", - " No, !- Shading Control Is Scheduled", - " YES, !- Glare Control Is Active", - " , !- Shading Device Material Name", - " FixedSlatAngle, !- Type of Slat Angle Control for Blinds", - " ; !- Slat Angle Schedule Name", - - " WindowProperty:FrameAndDivider,", - " TestFrameAndDivider, !- Name", - " 0.05, !- Frame Width {m}", - " 0.05, !- Frame Outside Projection {m}", - " 0.05, !- Frame Inside Projection {m}", - " 5.0, !- Frame Conductance {W/m2-K}", - " 1.2, !- Ratio of Frame-Edge Glass Conductance to Center-Of-Glass Conductance", - " 0.8, !- Frame Solar Absorptance", - " 0.8, !- Frame Visible Absorptance", - " 0.9, !- Frame Thermal Hemispherical Emissivity", - " DividedLite, !- Divider Type", - " 0.02, !- Divider Width {m}", - " 2, !- Number of Horizontal Dividers", - " 2, !- Number of Vertical Dividers", - " 0.02, !- Divider Outside Projection {m}", - " 0.02, !- Divider Inside Projection {m}", - " 5.0, !- Divider Conductance {W/m2-K}", - " 1.2, !- Ratio of Divider-Edge Glass Conductance to Center-Of-Glass Conductance", - " 0.8, !- Divider Solar Absorptance", - " 0.8, !- Divider Visible Absorptance", - " 0.9; !- Divider Thermal Hemispherical Emissivity", - }); - - ASSERT_TRUE( process_idf( idf_objects ) ); - - SimulationManager::GetProjectData( ); - bool FoundError = false; - - HeatBalanceManager::GetProjectControlData( FoundError ); // read project control data - EXPECT_FALSE( FoundError ); // expect no errors - - HeatBalanceManager::SetPreConstructionInputParameters( ); - CurveManager::GetCurveInput( ); - CurveManager::GetCurvesInputFlag = false; - - HeatBalanceManager::GetWindowGlassSpectralData( FoundError ); - EXPECT_FALSE( FoundError ); - HeatBalanceManager::GetMaterialData( FoundError ); - EXPECT_FALSE( FoundError ); - - HeatBalanceManager::GetFrameAndDividerData( FoundError ); - EXPECT_FALSE( FoundError ); - - HeatBalanceManager::GetConstructData( FoundError ); - EXPECT_FALSE( FoundError ); - - HeatBalanceManager::GetZoneData( FoundError ); // Read Zone data from input file - EXPECT_FALSE( FoundError ); - - SurfaceGeometry::GetGeometryParameters( FoundError ); - EXPECT_FALSE( FoundError ); - - SurfaceGeometry::CosZoneRelNorth.allocate( 4 ); - SurfaceGeometry::SinZoneRelNorth.allocate( 4 ); - - SurfaceGeometry::CosZoneRelNorth( 1 ) = std::cos( -DataHeatBalance::Zone( 1 ).RelNorth * DataGlobals::DegToRadians ); - SurfaceGeometry::CosZoneRelNorth( 2 ) = std::cos( -DataHeatBalance::Zone( 2 ).RelNorth * DataGlobals::DegToRadians ); - SurfaceGeometry::CosZoneRelNorth( 3 ) = std::cos( -DataHeatBalance::Zone( 3 ).RelNorth * DataGlobals::DegToRadians ); - SurfaceGeometry::CosZoneRelNorth( 4 ) = std::cos( -DataHeatBalance::Zone( 4 ).RelNorth * DataGlobals::DegToRadians ); - SurfaceGeometry::SinZoneRelNorth( 1 ) = std::sin( -DataHeatBalance::Zone( 1 ).RelNorth * DataGlobals::DegToRadians ); - SurfaceGeometry::SinZoneRelNorth( 2 ) = std::sin( -DataHeatBalance::Zone( 2 ).RelNorth * DataGlobals::DegToRadians ); - SurfaceGeometry::SinZoneRelNorth( 3 ) = std::sin( -DataHeatBalance::Zone( 3 ).RelNorth * DataGlobals::DegToRadians ); - SurfaceGeometry::SinZoneRelNorth( 4 ) = std::sin( -DataHeatBalance::Zone( 4 ).RelNorth * DataGlobals::DegToRadians ); - - SurfaceGeometry::CosBldgRelNorth = 1.0; - SurfaceGeometry::SinBldgRelNorth = 0.0; - - SurfaceGeometry::CosBldgRotAppGonly = 1.0; - SurfaceGeometry::SinBldgRotAppGonly = 0.0; - - SurfaceGeometry::GetSurfaceData( FoundError ); // setup zone geometry and get zone data - EXPECT_FALSE( FoundError ); // expect no errors - - WindowManager::InitGlassOpticalCalculations( ); - - int NumAngles = 10 ; // Number of incident angles - Real64 sum; - // total transmittance + DataIPShortCuts::lAlphaFieldBlanks = true; + + std::string const idf_objects = delimited_string({ + + " Version,8.9;", + + " Building,", + " Small Office with AirflowNetwork model, !- Name", + " 0, !- North Axis {deg}", + " Suburbs, !- Terrain", + " 0.001, !- Loads Convergence Tolerance Value", + " 0.0050000, !- Temperature Convergence Tolerance Value {deltaC}", + " FullInteriorAndExterior, !- Solar Distribution", + " 25, !- Maximum Number of Warmup Days", + " 6; !- Minimum Number of Warmup Days", + + " Timestep,6;", + + " SurfaceConvectionAlgorithm:Inside,TARP;", + + " SurfaceConvectionAlgorithm:Outside,DOE-2;", + + " HeatBalanceAlgorithm,ConductionTransferFunction;", + + " Output:DebuggingData,0,0;", + + " ZoneCapacitanceMultiplier:ResearchSpecial,", + " Multiplier, !- Name", + " , !- Zone or ZoneList Name", + " 1.0, !- Temperature Capacity Multiplier", + " 1.0, !- Humidity Capacity Multiplier", + " 1.0, !- Carbon Dioxide Capacity Multiplier", + " ; !- Generic Contaminant Capacity Multiplier", + + " SimulationControl,", + " No, !- Do Zone Sizing Calculation", + " No, !- Do System Sizing Calculation", + " No, !- Do Plant Sizing Calculation", + " Yes, !- Run Simulation for Sizing Periods", + " No; !- Run Simulation for Weather File Run Periods", + + " RunPeriod,", + " , !- Name", + " 1, !- Begin Month", + " 14, !- Begin Day of Month", + " , !- Begin Year", + " 1, !- End Month", + " 14, !- End Day of Month", + " , !- End Year", + " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " Yes; !- Use Weather File Snow Indicators", + + " RunPeriod,", + " , !- Name", + " 7, !- Begin Month", + " 7, !- Begin Day of Month", + " , !- Begin Year", + " 7, !- End Month", + " 7, !- End Day of Month", + " , !- End Year", + " Tuesday, !- Day of Week for Start Day", + " Yes, !- Use Weather File Holidays and Special Days", + " Yes, !- Use Weather File Daylight Saving Period", + " No, !- Apply Weekend Holiday Rule", + " Yes, !- Use Weather File Rain Indicators", + " No; !- Use Weather File Snow Indicators", + + " Site:Location,", + " CHICAGO_IL_USA TMY2-94846, !- Name", + " 41.78, !- Latitude {deg}", + " -87.75, !- Longitude {deg}", + " -6.00, !- Time Zone {hr}", + " 190.00; !- Elevation {m}", + + " SizingPeriod:DesignDay,", + " CHICAGO_IL_USA Annual Heating 99% Design Conditions DB, !- Name", + " 1, !- Month", + " 21, !- Day of Month", + " WinterDesignDay, !- Day Type", + " -17.3, !- Maximum Dry-Bulb Temperature {C}", + " 0.0, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " -17.3, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 4.9, !- Wind Speed {m/s}", + " 270, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 0.0; !- Sky Clearness", + + " SizingPeriod:DesignDay,", + " CHICAGO_IL_USA Annual Cooling 1% Design Conditions DB/MCWB, !- Name", + " 7, !- Month", + " 21, !- Day of Month", + " SummerDesignDay, !- Day Type", + " 31.5, !- Maximum Dry-Bulb Temperature {C}", + " 10.7, !- Daily Dry-Bulb Temperature Range {deltaC}", + " , !- Dry-Bulb Temperature Range Modifier Type", + " , !- Dry-Bulb Temperature Range Modifier Day Schedule Name", + " Wetbulb, !- Humidity Condition Type", + " 23.0, !- Wetbulb or DewPoint at Maximum Dry-Bulb {C}", + " , !- Humidity Condition Day Schedule Name", + " , !- Humidity Ratio at Maximum Dry-Bulb {kgWater/kgDryAir}", + " , !- Enthalpy at Maximum Dry-Bulb {J/kg}", + " , !- Daily Wet-Bulb Temperature Range {deltaC}", + " 99063., !- Barometric Pressure {Pa}", + " 5.3, !- Wind Speed {m/s}", + " 230, !- Wind Direction {deg}", + " No, !- Rain Indicator", + " No, !- Snow Indicator", + " No, !- Daylight Saving Time Indicator", + " ASHRAEClearSky, !- Solar Model Indicator", + " , !- Beam Solar Day Schedule Name", + " , !- Diffuse Solar Day Schedule Name", + " , !- ASHRAE Clear Sky Optical Depth for Beam Irradiance (taub) {dimensionless}", + " , !- ASHRAE Clear Sky Optical Depth for Diffuse Irradiance (taud) {dimensionless}", + " 1.0; !- Sky Clearness", + + " Site:GroundTemperature:BuildingSurface,20.03,20.03,20.13,20.30,20.43,20.52,20.62,20.77,20.78,20.55,20.44,20.20;", + + " Material,", + " A1 - 1 IN STUCCO, !- Name", + " Smooth, !- Roughness", + " 2.5389841E-02, !- Thickness {m}", + " 0.6918309, !- Conductivity {W/m-K}", + " 1858.142, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.9200000, !- Solar Absorptance", + " 0.9200000; !- Visible Absorptance", + + " Material,", + " C4 - 4 IN COMMON BRICK, !- Name", + " Rough, !- Roughness", + " 0.1014984, !- Thickness {m}", + " 0.7264224, !- Conductivity {W/m-K}", + " 1922.216, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7600000, !- Solar Absorptance", + " 0.7600000; !- Visible Absorptance", + + " Material,", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Name", + " Smooth, !- Roughness", + " 1.9050000E-02, !- Thickness {m}", + " 0.7264224, !- Conductivity {W/m-K}", + " 1601.846, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.9200000, !- Solar Absorptance", + " 0.9200000; !- Visible Absorptance", + + " Material,", + " C6 - 8 IN CLAY TILE, !- Name", + " Smooth, !- Roughness", + " 0.2033016, !- Thickness {m}", + " 0.5707605, !- Conductivity {W/m-K}", + " 1121.292, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.8200000, !- Solar Absorptance", + " 0.8200000; !- Visible Absorptance", + + " Material,", + " C10 - 8 IN HW CONCRETE, !- Name", + " MediumRough, !- Roughness", + " 0.2033016, !- Thickness {m}", + " 1.729577, !- Conductivity {W/m-K}", + " 2242.585, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + + " Material,", + " E2 - 1 / 2 IN SLAG OR STONE, !- Name", + " Rough, !- Roughness", + " 1.2710161E-02, !- Thickness {m}", + " 1.435549, !- Conductivity {W/m-K}", + " 881.0155, !- Density {kg/m3}", + " 1673.600, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.5500000, !- Solar Absorptance", + " 0.5500000; !- Visible Absorptance", + + " Material,", + " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Name", + " Rough, !- Roughness", + " 9.5402403E-03, !- Thickness {m}", + " 0.1902535, !- Conductivity {W/m-K}", + " 1121.292, !- Density {kg/m3}", + " 1673.600, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.7500000, !- Solar Absorptance", + " 0.7500000; !- Visible Absorptance", + + " Material,", + " B5 - 1 IN DENSE INSULATION, !- Name", + " VeryRough, !- Roughness", + " 2.5389841E-02, !- Thickness {m}", + " 4.3239430E-02, !- Conductivity {W/m-K}", + " 91.30524, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.5000000, !- Solar Absorptance", + " 0.5000000; !- Visible Absorptance", + + " Material,", + " C12 - 2 IN HW CONCRETE, !- Name", + " MediumRough, !- Roughness", + " 5.0901599E-02, !- Thickness {m}", + " 1.729577, !- Conductivity {W/m-K}", + " 2242.585, !- Density {kg/m3}", + " 836.8000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.6500000, !- Solar Absorptance", + " 0.6500000; !- Visible Absorptance", + + " Material,", + " 1.375in-Solid-Core, !- Name", + " Smooth, !- Roughness", + " 3.4925E-02, !- Thickness {m}", + " 0.1525000, !- Conductivity {W/m-K}", + " 614.5000, !- Density {kg/m3}", + " 1630.0000, !- Specific Heat {J/kg-K}", + " 0.9000000, !- Thermal Absorptance", + " 0.9200000, !- Solar Absorptance", + " 0.9200000; !- Visible Absorptance", + + " WindowMaterial:Glazing,", + " SPECTRAL GLASS INNER PANE, !- Name", + " Spectral, !- Optical Data Type", + " TestSpectralDataSet, !- Window Glass Spectral Data Set Name", + " 0.0099, !- Thickness {m}", + " 0.0, !- Solar Transmittance at Normal Incidence", + " 0.0, !- Front Side Solar Reflectance at Normal Incidence", + " 0.0, !- Back Side Solar Reflectance at Normal Incidence", + " 0.0, !- Visible Transmittance at Normal Incidence", + " 0.0, !- Front Side Visible Reflectance at Normal Incidence", + " 0.0, !- Back Side Visible Reflectance at Normal Incidence", + " 0.0, !- Infrared Transmittance at Normal Incidence", + " 0.84, !- Front Side Infrared Hemispherical Emissivity", + " 0.84, !- Back Side Infrared Hemispherical Emissivity", + " 0.798; !- Conductivity {W/m-K}", + + " WindowMaterial:Glazing,", + " ELECTRO GLASS DARK STATE,!- Name", + " SpectralAverage, !- Optical Data Type", + " , !- Window Glass Spectral Data Set Name", + " 0.006, !- Thickness {m}", + " 0.111, !- Solar Transmittance at Normal Incidence", + " 0.179, !- Front Side Solar Reflectance at Normal Incidence", + " 0.179, !- Back Side Solar Reflectance at Normal Incidence", + " 0.128, !- Visible Transmittance at Normal Incidence", + " 0.081, !- Front Side Visible Reflectance at Normal Incidence", + " 0.081, !- Back Side Visible Reflectance at Normal Incidence", + " 0.0, !- Infrared Transmittance at Normal Incidence", + " 0.84, !- Front Side Infrared Hemispherical Emissivity", + " 0.84, !- Back Side Infrared Hemispherical Emissivity", + " 0.9; !- Conductivity {W/m-K}", + + " WindowMaterial:Glazing,", + " ELECTRO GLASS LIGHT STATE, !- Name", + " SpectralAndAngle, !- Optical Data Type", + " , !- Window Glass Spectral Data Set Name", + " 0.0099, !- Thickness {m}", + " 0.0, !- Solar Transmittance at Normal Incidence", + " 0.0, !- Front Side Solar Reflectance at Normal Incidence", + " 0.0, !- Back Side Solar Reflectance at Normal Incidence", + " 0.0, !- Visible Transmittance at Normal Incidence", + " 0.0, !- Front Side Visible Reflectance at Normal Incidence", + " 0.0, !- Back Side Visible Reflectance at Normal Incidence", + " 0.0, !- Infrared Transmittance at Normal Incidence", + " 0.84, !- Front Side Infrared Hemispherical Emissivity", + " 0.84, !- Back Side Infrared Hemispherical Emissivity", + " 0.798, !- Conductivity {W/m-K}", + " , !- Dirt Correction Factor for Solar and Visible Transmittance", + " , !- Solar Diffusing", + " , !- Young's modulus", + " , !- Poisson's ratio", + " TransmittanceData, !- Window Glass Spectral and Incident Angle Transmittance Data Set Table Name", + " FrontReflectanceData, !- Window Glass Spectral and Incident Angle Front Reflectance Data Set Table Name", + " BackRefelectanceData; !- Window Glass Spectral and Incident Angle Back Reflectance Data Set Table Name", + + "Table:TwoIndependentVariables,", + " TransmittanceData, !- Name", + " BiQuadratic, !- Curve Type", + " LinearInterpolationOfTable,!- Interpolation Type", + " 0.0, !- Minimum Value of x,", + " 90.0, !- Maximum Value of x,", + " 0.30, !- Minimum Value of y,", + " 2.50, !- Maximum Value of y,", + " 0.0, !- Minimum Table Output", + " 1.0, !- Maximum Table Output", + " Angle, !- Input Unit Type for x", + " Wavelength, !- Input Unit Type for y", + " Dimensionless, !- Output Unit Type", + " 1.0, !- Normalization Point", + " , !- External File Name", + " 0.0, 0.300, 0.00100,", + " 0.0, 0.310, 0.00100,", + " 0.0, 0.320, 0.00100,", + " 0.0, 0.330, 0.00100,", + " 0.0, 0.340, 0.00100,", + " 0.0, 0.350, 0.00100,", + " 0.0, 0.360, 0.00900,", + " 0.0, 0.370, 0.12000,", + " 0.0, 0.380, 0.49200,", + " 0.0, 0.390, 0.78200,", + " 0.0, 0.400, 0.85600,", + " 0.0, 0.410, 0.85800,", + " 0.0, 0.420, 0.85800,", + " 0.0, 0.430, 0.86000,", + " 0.0, 0.440, 0.86100,", + " 0.0, 0.450, 0.87100,", + " 0.0, 0.460, 0.88000,", + " 0.0, 0.470, 0.88300,", + " 0.0, 0.480, 0.88700,", + " 0.0, 0.490, 0.89000,", + " 0.0, 0.500, 0.89000,", + " 0.0, 0.510, 0.89100,", + " 0.0, 0.520, 0.88700,", + " 0.0, 0.530, 0.89000,", + " 0.0, 0.540, 0.88300,", + " 0.0, 0.550, 0.88800,", + " 0.0, 0.560, 0.88200,", + " 0.0, 0.570, 0.88100,", + " 0.0, 0.580, 0.86500,", + " 0.0, 0.590, 0.85800,", + " 0.0, 0.600, 0.86500,", + " 0.0, 0.610, 0.85600,", + " 0.0, 0.620, 0.84500,", + " 0.0, 0.630, 0.83700,", + " 0.0, 0.640, 0.82700,", + " 0.0, 0.650, 0.82000,", + " 0.0, 0.660, 0.80700,", + " 0.0, 0.670, 0.79800,", + " 0.0, 0.680, 0.79100,", + " 0.0, 0.690, 0.78100,", + " 0.0, 0.700, 0.76800,", + " 0.0, 0.710, 0.76100,", + " 0.0, 0.720, 0.74400,", + " 0.0, 0.730, 0.71300,", + " 0.0, 0.740, 0.70300,", + " 0.0, 0.750, 0.69400,", + " 0.0, 0.760, 0.68500,", + " 0.0, 0.770, 0.67500,", + " 0.0, 0.780, 0.66700,", + " 0.0, 0.790, 0.65500,", + " 0.0, 0.800, 0.64600,", + " 0.0, 0.810, 0.63800,", + " 0.0, 0.820, 0.62900,", + " 0.0, 0.830, 0.62300,", + " 0.0, 0.840, 0.61400,", + " 0.0, 0.850, 0.60800,", + " 0.0, 0.860, 0.60100,", + " 0.0, 0.870, 0.59700,", + " 0.0, 0.880, 0.59200,", + " 0.0, 0.890, 0.58700,", + " 0.0, 0.900, 0.58200,", + " 0.0, 0.950, 0.56800,", + " 0.0, 1.000, 0.56200,", + " 0.0, 1.050, 0.55600,", + " 0.0, 1.100, 0.56300,", + " 0.0, 1.150, 0.55600,", + " 0.0, 1.200, 0.54700,", + " 0.0, 1.250, 0.57700,", + " 0.0, 1.300, 0.59800,", + " 0.0, 1.350, 0.60800,", + " 0.0, 1.400, 0.60300,", + " 0.0, 1.450, 0.61400,", + " 0.0, 1.500, 0.64800,", + " 0.0, 1.550, 0.68000,", + " 0.0, 1.600, 0.69900,", + " 0.0, 1.650, 0.70600,", + " 0.0, 1.700, 0.57000,", + " 0.0, 1.750, 0.58500,", + " 0.0, 1.800, 0.63700,", + " 0.0, 1.850, 0.65500,", + " 0.0, 1.900, 0.63700,", + " 0.0, 1.950, 0.63400,", + " 0.0, 2.000, 0.63400,", + " 0.0, 2.050, 0.58600,", + " 0.0, 2.100, 0.58800,", + " 0.0, 2.150, 0.59700,", + " 0.0, 2.200, 0.57600,", + " 0.0, 2.250, 0.40400,", + " 0.0, 2.300, 0.17900,", + " 0.0, 2.350, 0.21900,", + " 0.0, 2.400, 0.24000,", + " 0.0, 2.450, 0.20000,", + " 0.0, 2.500, 0.21400,", + "90.0, 0.300, 0.00000,", + "90.0, 0.310, 0.00000,", + "90.0, 0.320, 0.00000,", + "90.0, 0.330, 0.00000,", + "90.0, 0.340, 0.00000,", + "90.0, 0.350, 0.00000,", + "90.0, 0.360, 0.00000,", + "90.0, 0.370, 0.00000,", + "90.0, 0.380, 0.00000,", + "90.0, 0.390, 0.00000,", + "90.0, 0.400, 0.00000,", + "90.0, 0.410, 0.00000,", + "90.0, 0.420, 0.00000,", + "90.0, 0.430, 0.00000,", + "90.0, 0.440, 0.00000,", + "90.0, 0.450, 0.00000,", + "90.0, 0.460, 0.00000,", + "90.0, 0.470, 0.00000,", + "90.0, 0.480, 0.00000,", + "90.0, 0.490, 0.00000,", + "90.0, 0.500, 0.00000,", + "90.0, 0.510, 0.00000,", + "90.0, 0.520, 0.00000,", + "90.0, 0.530, 0.00000,", + "90.0, 0.540, 0.00000,", + "90.0, 0.550, 0.00000,", + "90.0, 0.560, 0.00000,", + "90.0, 0.570, 0.00000,", + "90.0, 0.580, 0.00000,", + "90.0, 0.590, 0.00000,", + "90.0, 0.600, 0.00000,", + "90.0, 0.610, 0.00000,", + "90.0, 0.620, 0.00000,", + "90.0, 0.630, 0.00000,", + "90.0, 0.640, 0.00000,", + "90.0, 0.650, 0.00000,", + "90.0, 0.660, 0.00000,", + "90.0, 0.670, 0.00000,", + "90.0, 0.680, 0.00000,", + "90.0, 0.690, 0.00000,", + "90.0, 0.700, 0.00000,", + "90.0, 0.710, 0.00000,", + "90.0, 0.720, 0.00000,", + "90.0, 0.730, 0.00000,", + "90.0, 0.740, 0.00000,", + "90.0, 0.750, 0.00000,", + "90.0, 0.760, 0.00000,", + "90.0, 0.770, 0.00000,", + "90.0, 0.780, 0.00000,", + "90.0, 0.790, 0.00000,", + "90.0, 0.800, 0.00000,", + "90.0, 0.810, 0.00000,", + "90.0, 0.820, 0.00000,", + "90.0, 0.830, 0.00000,", + "90.0, 0.840, 0.00000,", + "90.0, 0.850, 0.00000,", + "90.0, 0.860, 0.00000,", + "90.0, 0.870, 0.00000,", + "90.0, 0.880, 0.00000,", + "90.0, 0.890, 0.00000,", + "90.0, 0.900, 0.00000,", + "90.0, 0.950, 0.00000,", + "90.0, 1.000, 0.00000,", + "90.0, 1.050, 0.00000,", + "90.0, 1.100, 0.00000,", + "90.0, 1.150, 0.00000,", + "90.0, 1.200, 0.00000,", + "90.0, 1.250, 0.00000,", + "90.0, 1.300, 0.00000,", + "90.0, 1.350, 0.00000,", + "90.0, 1.400, 0.00000,", + "90.0, 1.450, 0.00000,", + "90.0, 1.500, 0.00000,", + "90.0, 1.550, 0.00000,", + "90.0, 1.600, 0.00000,", + "90.0, 1.650, 0.00000,", + "90.0, 1.700, 0.00000,", + "90.0, 1.750, 0.00000,", + "90.0, 1.800, 0.00000,", + "90.0, 1.850, 0.00000,", + "90.0, 1.900, 0.00000,", + "90.0, 1.950, 0.00000,", + "90.0, 2.000, 0.00000,", + "90.0, 2.050, 0.00000,", + "90.0, 2.100, 0.00000,", + "90.0, 2.150, 0.00000,", + "90.0, 2.200, 0.00000,", + "90.0, 2.250, 0.00000,", + "90.0, 2.300, 0.00000,", + "90.0, 2.350, 0.00000,", + "90.0, 2.400, 0.00000,", + "90.0, 2.450, 0.00000,", + "90.0, 2.500, 0.00000;", + + "Table:TwoIndependentVariables,", + " FrontReflectanceData, !- Name", + " BiQuadratic, !- Curve Type", + " LinearInterpolationOfTable,!- Interpolation Type", + " 0.0, !- Minimum Value of x,", + " 90.0, !- Maximum Value of x,", + " 0.30, !- Minimum Value of y,", + " 2.50, !- Maximum Value of y,", + " 0.0, !- Minimum Table Output", + " 1.0, !- Maximum Table Output", + " Angle, !- Input Unit Type for x", + " Wavelength, !- Input Unit Type for y", + " Dimensionless, !- Output Unit Type", + " 1.0, !- Normalization Point", + " , !- External File Name", + " 0.0, 0.300, 0.04500,", + " 0.0, 0.310, 0.04400,", + " 0.0, 0.320, 0.04400,", + " 0.0, 0.330, 0.04200,", + " 0.0, 0.340, 0.04100,", + " 0.0, 0.350, 0.04000,", + " 0.0, 0.360, 0.04000,", + " 0.0, 0.370, 0.04000,", + " 0.0, 0.380, 0.05100,", + " 0.0, 0.390, 0.07000,", + " 0.0, 0.400, 0.07500,", + " 0.0, 0.410, 0.07500,", + " 0.0, 0.420, 0.07500,", + " 0.0, 0.430, 0.07500,", + " 0.0, 0.440, 0.07500,", + " 0.0, 0.450, 0.07500,", + " 0.0, 0.460, 0.07600,", + " 0.0, 0.470, 0.07500,", + " 0.0, 0.480, 0.07600,", + " 0.0, 0.490, 0.07500,", + " 0.0, 0.500, 0.07500,", + " 0.0, 0.510, 0.07500,", + " 0.0, 0.520, 0.07500,", + " 0.0, 0.530, 0.07500,", + " 0.0, 0.540, 0.07400,", + " 0.0, 0.550, 0.07400,", + " 0.0, 0.560, 0.07400,", + " 0.0, 0.570, 0.07400,", + " 0.0, 0.580, 0.07100,", + " 0.0, 0.590, 0.07000,", + " 0.0, 0.600, 0.07000,", + " 0.0, 0.610, 0.07000,", + " 0.0, 0.620, 0.07000,", + " 0.0, 0.630, 0.07000,", + " 0.0, 0.640, 0.06900,", + " 0.0, 0.650, 0.06700,", + " 0.0, 0.660, 0.06700,", + " 0.0, 0.670, 0.06500,", + " 0.0, 0.680, 0.06500,", + " 0.0, 0.690, 0.06500,", + " 0.0, 0.700, 0.06400,", + " 0.0, 0.710, 0.06400,", + " 0.0, 0.720, 0.06200,", + " 0.0, 0.730, 0.06400,", + " 0.0, 0.740, 0.06200,", + " 0.0, 0.750, 0.06100,", + " 0.0, 0.760, 0.06100,", + " 0.0, 0.770, 0.06000,", + " 0.0, 0.780, 0.06000,", + " 0.0, 0.790, 0.06000,", + " 0.0, 0.800, 0.05900,", + " 0.0, 0.810, 0.05900,", + " 0.0, 0.820, 0.05700,", + " 0.0, 0.830, 0.05700,", + " 0.0, 0.840, 0.05600,", + " 0.0, 0.850, 0.05600,", + " 0.0, 0.860, 0.05500,", + " 0.0, 0.870, 0.05400,", + " 0.0, 0.880, 0.05400,", + " 0.0, 0.890, 0.05400,", + " 0.0, 0.900, 0.05500,", + " 0.0, 0.950, 0.05100,", + " 0.0, 1.000, 0.05100,", + " 0.0, 1.050, 0.05000,", + " 0.0, 1.100, 0.05100,", + " 0.0, 1.150, 0.05000,", + " 0.0, 1.200, 0.05000,", + " 0.0, 1.250, 0.05100,", + " 0.0, 1.300, 0.05400,", + " 0.0, 1.350, 0.05500,", + " 0.0, 1.400, 0.05200,", + " 0.0, 1.450, 0.05500,", + " 0.0, 1.500, 0.05700,", + " 0.0, 1.550, 0.05900,", + " 0.0, 1.600, 0.06000,", + " 0.0, 1.650, 0.06000,", + " 0.0, 1.700, 0.05100,", + " 0.0, 1.750, 0.05100,", + " 0.0, 1.800, 0.05500,", + " 0.0, 1.850, 0.05700,", + " 0.0, 1.900, 0.05700,", + " 0.0, 1.950, 0.05700,", + " 0.0, 2.000, 0.05700,", + " 0.0, 2.050, 0.05200,", + " 0.0, 2.100, 0.05400,", + " 0.0, 2.150, 0.05400,", + " 0.0, 2.200, 0.05100,", + " 0.0, 2.250, 0.04500,", + " 0.0, 2.300, 0.03700,", + " 0.0, 2.350, 0.03700,", + " 0.0, 2.400, 0.03900,", + " 0.0, 2.450, 0.04000,", + " 0.0, 2.500, 0.03900,", + "90.0, 0.300, 1.00000,", + "90.0, 0.310, 1.00000,", + "90.0, 0.320, 1.00000,", + "90.0, 0.330, 1.00000,", + "90.0, 0.340, 1.00000,", + "90.0, 0.350, 1.00000,", + "90.0, 0.360, 1.00000,", + "90.0, 0.370, 1.00000,", + "90.0, 0.380, 1.00000,", + "90.0, 0.390, 1.00000,", + "90.0, 0.400, 1.00000,", + "90.0, 0.410, 1.00000,", + "90.0, 0.420, 1.00000,", + "90.0, 0.430, 1.00000,", + "90.0, 0.440, 1.00000,", + "90.0, 0.450, 1.00000,", + "90.0, 0.460, 1.00000,", + "90.0, 0.470, 1.00000,", + "90.0, 0.480, 1.00000,", + "90.0, 0.490, 1.00000,", + "90.0, 0.500, 1.00000,", + "90.0, 0.510, 1.00000,", + "90.0, 0.520, 1.00000,", + "90.0, 0.530, 1.00000,", + "90.0, 0.540, 1.00000,", + "90.0, 0.550, 1.00000,", + "90.0, 0.560, 1.00000,", + "90.0, 0.570, 1.00000,", + "90.0, 0.580, 1.00000,", + "90.0, 0.590, 1.00000,", + "90.0, 0.600, 1.00000,", + "90.0, 0.610, 1.00000,", + "90.0, 0.620, 1.00000,", + "90.0, 0.630, 1.00000,", + "90.0, 0.640, 1.00000,", + "90.0, 0.650, 1.00000,", + "90.0, 0.660, 1.00000,", + "90.0, 0.670, 1.00000,", + "90.0, 0.680, 1.00000,", + "90.0, 0.690, 1.00000,", + "90.0, 0.700, 1.00000,", + "90.0, 0.710, 1.00000,", + "90.0, 0.720, 1.00000,", + "90.0, 0.730, 1.00000,", + "90.0, 0.740, 1.00000,", + "90.0, 0.750, 1.00000,", + "90.0, 0.760, 1.00000,", + "90.0, 0.770, 1.00000,", + "90.0, 0.780, 1.00000,", + "90.0, 0.790, 1.00000,", + "90.0, 0.800, 1.00000,", + "90.0, 0.810, 1.00000,", + "90.0, 0.820, 1.00000,", + "90.0, 0.830, 1.00000,", + "90.0, 0.840, 1.00000,", + "90.0, 0.850, 1.00000,", + "90.0, 0.860, 1.00000,", + "90.0, 0.870, 1.00000,", + "90.0, 0.880, 1.00000,", + "90.0, 0.890, 1.00000,", + "90.0, 0.900, 1.00000,", + "90.0, 0.950, 1.00000,", + "90.0, 1.000, 1.00000,", + "90.0, 1.050, 1.00000,", + "90.0, 1.100, 1.00000,", + "90.0, 1.150, 1.00000,", + "90.0, 1.200, 1.00000,", + "90.0, 1.250, 1.00000,", + "90.0, 1.300, 1.00000,", + "90.0, 1.350, 1.00000,", + "90.0, 1.400, 1.00000,", + "90.0, 1.450, 1.00000,", + "90.0, 1.500, 1.00000,", + "90.0, 1.550, 1.00000,", + "90.0, 1.600, 1.00000,", + "90.0, 1.650, 1.00000,", + "90.0, 1.700, 1.00000,", + "90.0, 1.750, 1.00000,", + "90.0, 1.800, 1.00000,", + "90.0, 1.850, 1.00000,", + "90.0, 1.900, 1.00000,", + "90.0, 1.950, 1.00000,", + "90.0, 2.000, 1.00000,", + "90.0, 2.050, 1.00000,", + "90.0, 2.100, 1.00000,", + "90.0, 2.150, 1.00000,", + "90.0, 2.200, 1.00000,", + "90.0, 2.250, 1.00000,", + "90.0, 2.300, 1.00000,", + "90.0, 2.350, 1.00000,", + "90.0, 2.400, 1.00000,", + "90.0, 2.450, 1.00000,", + "90.0, 2.500, 1.00000;", + + "Table:TwoIndependentVariables,", + " BackRefelectanceData, !- Name", + " BiQuadratic, !- Curve Type", + " LinearInterpolationOfTable,!- Interpolation Type", + " 0.0, !- Minimum Value of x,", + " 90.0, !- Maximum Value of x,", + " 0.30, !- Minimum Value of y,", + " 2.50, !- Maximum Value of y,", + " 0.0, !- Minimum Table Output", + " 1.0, !- Maximum Table Output", + " Angle, !- Input Unit Type for x", + " Wavelength, !- Input Unit Type for y", + " Dimensionless, !- Output Unit Type", + " 1.0, !- Normalization Point", + " , !- External File Name", + " 0.0, 0.300, 0.04500,", + " 0.0, 0.310, 0.04400,", + " 0.0, 0.320, 0.04400,", + " 0.0, 0.330, 0.04200,", + " 0.0, 0.340, 0.04100,", + " 0.0, 0.350, 0.04000,", + " 0.0, 0.360, 0.04000,", + " 0.0, 0.370, 0.04000,", + " 0.0, 0.380, 0.05100,", + " 0.0, 0.390, 0.07000,", + " 0.0, 0.400, 0.07500,", + " 0.0, 0.410, 0.07500,", + " 0.0, 0.420, 0.07500,", + " 0.0, 0.430, 0.07500,", + " 0.0, 0.440, 0.07500,", + " 0.0, 0.450, 0.07500,", + " 0.0, 0.460, 0.07600,", + " 0.0, 0.470, 0.07500,", + " 0.0, 0.480, 0.07600,", + " 0.0, 0.490, 0.07500,", + " 0.0, 0.500, 0.07500,", + " 0.0, 0.510, 0.07500,", + " 0.0, 0.520, 0.07500,", + " 0.0, 0.530, 0.07500,", + " 0.0, 0.540, 0.07400,", + " 0.0, 0.550, 0.07400,", + " 0.0, 0.560, 0.07400,", + " 0.0, 0.570, 0.07400,", + " 0.0, 0.580, 0.07100,", + " 0.0, 0.590, 0.07000,", + " 0.0, 0.600, 0.07000,", + " 0.0, 0.610, 0.07000,", + " 0.0, 0.620, 0.07000,", + " 0.0, 0.630, 0.07000,", + " 0.0, 0.640, 0.06900,", + " 0.0, 0.650, 0.06700,", + " 0.0, 0.660, 0.06700,", + " 0.0, 0.670, 0.06500,", + " 0.0, 0.680, 0.06500,", + " 0.0, 0.690, 0.06500,", + " 0.0, 0.700, 0.06400,", + " 0.0, 0.710, 0.06400,", + " 0.0, 0.720, 0.06200,", + " 0.0, 0.730, 0.06400,", + " 0.0, 0.740, 0.06200,", + " 0.0, 0.750, 0.06100,", + " 0.0, 0.760, 0.06100,", + " 0.0, 0.770, 0.06000,", + " 0.0, 0.780, 0.06000,", + " 0.0, 0.790, 0.06000,", + " 0.0, 0.800, 0.05900,", + " 0.0, 0.810, 0.05900,", + " 0.0, 0.820, 0.05700,", + " 0.0, 0.830, 0.05700,", + " 0.0, 0.840, 0.05600,", + " 0.0, 0.850, 0.05600,", + " 0.0, 0.860, 0.05500,", + " 0.0, 0.870, 0.05400,", + " 0.0, 0.880, 0.05400,", + " 0.0, 0.890, 0.05400,", + " 0.0, 0.900, 0.05500,", + " 0.0, 0.950, 0.05100,", + " 0.0, 1.000, 0.05100,", + " 0.0, 1.050, 0.05000,", + " 0.0, 1.100, 0.05100,", + " 0.0, 1.150, 0.05000,", + " 0.0, 1.200, 0.05000,", + " 0.0, 1.250, 0.05100,", + " 0.0, 1.300, 0.05400,", + " 0.0, 1.350, 0.05500,", + " 0.0, 1.400, 0.05200,", + " 0.0, 1.450, 0.05500,", + " 0.0, 1.500, 0.05700,", + " 0.0, 1.550, 0.05900,", + " 0.0, 1.600, 0.06000,", + " 0.0, 1.650, 0.06000,", + " 0.0, 1.700, 0.05100,", + " 0.0, 1.750, 0.05100,", + " 0.0, 1.800, 0.05500,", + " 0.0, 1.850, 0.05700,", + " 0.0, 1.900, 0.05700,", + " 0.0, 1.950, 0.05700,", + " 0.0, 2.000, 0.05700,", + " 0.0, 2.050, 0.05200,", + " 0.0, 2.100, 0.05400,", + " 0.0, 2.150, 0.05400,", + " 0.0, 2.200, 0.05100,", + " 0.0, 2.250, 0.04500,", + " 0.0, 2.300, 0.03700,", + " 0.0, 2.350, 0.03700,", + " 0.0, 2.400, 0.03900,", + " 0.0, 2.450, 0.04000,", + " 0.0, 2.500, 0.03900,", + "90.0, 0.300, 1.00000,", + "90.0, 0.310, 1.00000,", + "90.0, 0.320, 1.00000,", + "90.0, 0.330, 1.00000,", + "90.0, 0.340, 1.00000,", + "90.0, 0.350, 1.00000,", + "90.0, 0.360, 1.00000,", + "90.0, 0.370, 1.00000,", + "90.0, 0.380, 1.00000,", + "90.0, 0.390, 1.00000,", + "90.0, 0.400, 1.00000,", + "90.0, 0.410, 1.00000,", + "90.0, 0.420, 1.00000,", + "90.0, 0.430, 1.00000,", + "90.0, 0.440, 1.00000,", + "90.0, 0.450, 1.00000,", + "90.0, 0.460, 1.00000,", + "90.0, 0.470, 1.00000,", + "90.0, 0.480, 1.00000,", + "90.0, 0.490, 1.00000,", + "90.0, 0.500, 1.00000,", + "90.0, 0.510, 1.00000,", + "90.0, 0.520, 1.00000,", + "90.0, 0.530, 1.00000,", + "90.0, 0.540, 1.00000,", + "90.0, 0.550, 1.00000,", + "90.0, 0.560, 1.00000,", + "90.0, 0.570, 1.00000,", + "90.0, 0.580, 1.00000,", + "90.0, 0.590, 1.00000,", + "90.0, 0.600, 1.00000,", + "90.0, 0.610, 1.00000,", + "90.0, 0.620, 1.00000,", + "90.0, 0.630, 1.00000,", + "90.0, 0.640, 1.00000,", + "90.0, 0.650, 1.00000,", + "90.0, 0.660, 1.00000,", + "90.0, 0.670, 1.00000,", + "90.0, 0.680, 1.00000,", + "90.0, 0.690, 1.00000,", + "90.0, 0.700, 1.00000,", + "90.0, 0.710, 1.00000,", + "90.0, 0.720, 1.00000,", + "90.0, 0.730, 1.00000,", + "90.0, 0.740, 1.00000,", + "90.0, 0.750, 1.00000,", + "90.0, 0.760, 1.00000,", + "90.0, 0.770, 1.00000,", + "90.0, 0.780, 1.00000,", + "90.0, 0.790, 1.00000,", + "90.0, 0.800, 1.00000,", + "90.0, 0.810, 1.00000,", + "90.0, 0.820, 1.00000,", + "90.0, 0.830, 1.00000,", + "90.0, 0.840, 1.00000,", + "90.0, 0.850, 1.00000,", + "90.0, 0.860, 1.00000,", + "90.0, 0.870, 1.00000,", + "90.0, 0.880, 1.00000,", + "90.0, 0.890, 1.00000,", + "90.0, 0.900, 1.00000,", + "90.0, 0.950, 1.00000,", + "90.0, 1.000, 1.00000,", + "90.0, 1.050, 1.00000,", + "90.0, 1.100, 1.00000,", + "90.0, 1.150, 1.00000,", + "90.0, 1.200, 1.00000,", + "90.0, 1.250, 1.00000,", + "90.0, 1.300, 1.00000,", + "90.0, 1.350, 1.00000,", + "90.0, 1.400, 1.00000,", + "90.0, 1.450, 1.00000,", + "90.0, 1.500, 1.00000,", + "90.0, 1.550, 1.00000,", + "90.0, 1.600, 1.00000,", + "90.0, 1.650, 1.00000,", + "90.0, 1.700, 1.00000,", + "90.0, 1.750, 1.00000,", + "90.0, 1.800, 1.00000,", + "90.0, 1.850, 1.00000,", + "90.0, 1.900, 1.00000,", + "90.0, 1.950, 1.00000,", + "90.0, 2.000, 1.00000,", + "90.0, 2.050, 1.00000,", + "90.0, 2.100, 1.00000,", + "90.0, 2.150, 1.00000,", + "90.0, 2.200, 1.00000,", + "90.0, 2.250, 1.00000,", + "90.0, 2.300, 1.00000,", + "90.0, 2.350, 1.00000,", + "90.0, 2.400, 1.00000,", + "90.0, 2.450, 1.00000,", + "90.0, 2.500, 1.00000;", + + " WindowMaterial:Gas,", + " WinAirGap, !- Name", + " AIR, !- Gas Type", + " 0.013; !- Thickness {m}", + + " MaterialProperty:GlazingSpectralData,", + " TestSpectralDataSet, !- Name", + " 0.300,0.000,0.045,0.045,", + " 0.310,0.000,0.044,0.044,", + " 0.320,0.000,0.044,0.044,", + " 0.330,0.000,0.042,0.042,", + " 0.340,0.000,0.041,0.041,", + " 0.350,0.000,0.040,0.040,", + " 0.360,0.009,0.040,0.040,", + " 0.370,0.120,0.040,0.040,", + " 0.380,0.492,0.051,0.051,", + " 0.390,0.782,0.070,0.070,", + " 0.400,0.856,0.075,0.075,", + " 0.410,0.858,0.075,0.075,", + " 0.420,0.858,0.075,0.075,", + " 0.430,0.860,0.075,0.075,", + " 0.440,0.861,0.075,0.075,", + " 0.450,0.871,0.075,0.075,", + " 0.460,0.880,0.076,0.076,", + " 0.470,0.883,0.075,0.075,", + " 0.480,0.887,0.076,0.076,", + " 0.490,0.890,0.075,0.075,", + " 0.500,0.890,0.075,0.075,", + " 0.510,0.891,0.075,0.075,", + " 0.520,0.887,0.075,0.075,", + " 0.530,0.890,0.075,0.075,", + " 0.540,0.883,0.074,0.074,", + " 0.550,0.888,0.074,0.074,", + " 0.560,0.882,0.074,0.074,", + " 0.570,0.881,0.074,0.074,", + " 0.580,0.865,0.071,0.071,", + " 0.590,0.858,0.070,0.070,", + " 0.600,0.865,0.070,0.070,", + " 0.610,0.856,0.070,0.070,", + " 0.620,0.845,0.070,0.070,", + " 0.630,0.837,0.070,0.070,", + " 0.640,0.827,0.069,0.069,", + " 0.650,0.820,0.067,0.067,", + " 0.660,0.807,0.067,0.067,", + " 0.670,0.798,0.065,0.065,", + " 0.680,0.791,0.065,0.065,", + " 0.690,0.781,0.065,0.065,", + " 0.700,0.768,0.064,0.064,", + " 0.710,0.761,0.064,0.064,", + " 0.720,0.744,0.062,0.062,", + " 0.730,0.713,0.064,0.064,", + " 0.740,0.703,0.062,0.062,", + " 0.750,0.694,0.061,0.061,", + " 0.760,0.685,0.061,0.061,", + " 0.770,0.675,0.060,0.060,", + " 0.780,0.667,0.060,0.060,", + " 0.790,0.655,0.060,0.060,", + " 0.800,0.646,0.059,0.059,", + " 0.810,0.638,0.059,0.059,", + " 0.820,0.629,0.057,0.057,", + " 0.830,0.623,0.057,0.057,", + " 0.840,0.614,0.056,0.056,", + " 0.850,0.608,0.056,0.056,", + " 0.860,0.601,0.055,0.055,", + " 0.870,0.597,0.054,0.054,", + " 0.880,0.592,0.054,0.054,", + " 0.890,0.587,0.054,0.054,", + " 0.900,0.582,0.055,0.055,", + " 0.950,0.568,0.051,0.051,", + " 1.000,0.562,0.051,0.051,", + " 1.050,0.556,0.050,0.050,", + " 1.100,0.563,0.051,0.051,", + " 1.150,0.556,0.050,0.050,", + " 1.200,0.547,0.050,0.050,", + " 1.250,0.577,0.051,0.051,", + " 1.300,0.598,0.054,0.054,", + " 1.350,0.608,0.055,0.055,", + " 1.400,0.603,0.052,0.052,", + " 1.450,0.614,0.055,0.055,", + " 1.500,0.648,0.057,0.057,", + " 1.550,0.680,0.059,0.059,", + " 1.600,0.699,0.060,0.060,", + " 1.650,0.706,0.060,0.060,", + " 1.700,0.570,0.051,0.051,", + " 1.750,0.585,0.051,0.051,", + " 1.800,0.637,0.055,0.055,", + " 1.850,0.655,0.057,0.057,", + " 1.900,0.637,0.057,0.057,", + " 1.950,0.634,0.057,0.057,", + " 2.000,0.634,0.057,0.057,", + " 2.050,0.586,0.052,0.052,", + " 2.100,0.588,0.054,0.054,", + " 2.150,0.597,0.054,0.054,", + " 2.200,0.576,0.051,0.051,", + " 2.250,0.404,0.045,0.045,", + " 2.300,0.179,0.037,0.037,", + " 2.350,0.219,0.037,0.037,", + " 2.400,0.240,0.039,0.039,", + " 2.450,0.200,0.040,0.040,", + " 2.500,0.214,0.039,0.039;", + " Construction,", + " EXTWALL80, !- Name", + " A1 - 1 IN STUCCO, !- Outside Layer", + " C4 - 4 IN COMMON BRICK, !- Layer 2", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", + + " Construction,", + " PARTITION06, !- Name", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer", + " C6 - 8 IN CLAY TILE, !- Layer 2", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 3", + + " Construction,", + " FLOOR SLAB 8 IN, !- Name", + " C10 - 8 IN HW CONCRETE; !- Outside Layer", + + " Construction,", + " ROOF34, !- Name", + " E2 - 1 / 2 IN SLAG OR STONE, !- Outside Layer", + " E3 - 3 / 8 IN FELT AND MEMBRANE, !- Layer 2", + " C12 - 2 IN HW CONCRETE; !- Layer 3", + + " Construction,", + " CEILING:ZONE, !- Name", + " B5 - 1 IN DENSE INSULATION, !- Outside Layer", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD; !- Layer 2", + + " Construction,", + " CEILING:ATTIC, !- Name", + " E1 - 3 / 4 IN PLASTER OR GYP BOARD, !- Outside Layer", + " B5 - 1 IN DENSE INSULATION; !- Layer 2", + + " Construction,", + " ELECTRO-CON-LIGHT, !- Name", + " ELECTRO GLASS LIGHT STATE, !- Outside Layer", + " WinAirGap, !- Layer 2", + " SPECTRAL GLASS INNER PANE; !- Layer 3", + + " Construction,", + " ELECTRO-CON-DARK, !- Name", + " ELECTRO GLASS LIGHT STATE, !- Outside Layer", + " WinAirGap, !- Layer 2", + " SPECTRAL GLASS INNER PANE; !- Layer 3", + + " Construction,", + " DOOR-CON, !- Name", + " 1.375in-Solid-Core; !- Outside Layer", + + " Zone,", + " West Zone, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " Zone,", + " EAST ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " Zone,", + " NORTH ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " Zone,", + " ATTIC ZONE, !- Name", + " 0, !- Direction of Relative North {deg}", + " 0, !- X Origin {m}", + " 0, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", + " autocalculate; !- Volume {m3}", + + " GlobalGeometryRules,", + " UpperLeftCorner, !- Starting Vertex Position", + " CounterClockWise, !- Vertex Entry Direction", + " World; !- Coordinate System", + + " BuildingSurface:Detailed,", + " Zn001:Wall001, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " West Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall002, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " West Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall003, !- Name", + " Wall, !- Surface Type", + " PARTITION06, !- Construction Name", + " West Zone, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn003:Wall004, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Wall004, !- Name", + " Wall, !- Surface Type", + " PARTITION06, !- Construction Name", + " West Zone, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn002:Wall004, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Flr001, !- Name", + " Floor, !- Surface Type", + " FLOOR SLAB 8 IN, !- Construction Name", + " West Zone, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn001:Flr001, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,0, !- X,Y,Z ==> Vertex 1 {m}", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,0,0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn001:Ceil001, !- Name", + " CEILING, !- Surface Type", + " CEILING:ZONE, !- Construction Name", + " West Zone, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn004:Flr001, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn002:Wall001, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " EAST ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 9.144000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 9.144000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn002:Wall002, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " EAST ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn002:Wall003, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " EAST ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 12.19200,0,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn002:Wall004, !- Name", + " Wall, !- Surface Type", + " PARTITION06, !- Construction Name", + " EAST ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn001:Wall004, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn002:Wall005, !- Name", + " Wall, !- Surface Type", + " PARTITION06, !- Construction Name", + " EAST ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn003:Wall005, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 9.144000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn002:Flr001, !- Name", + " Floor, !- Surface Type", + " FLOOR SLAB 8 IN, !- Construction Name", + " EAST ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn002:Flr001, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,0,0, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,0,0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn002:Ceil001, !- Name", + " CEILING, !- Surface Type", + " CEILING:ZONE, !- Construction Name", + " EAST ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn004:Flr002, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn003:Wall001, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " NORTH ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn003:Wall002, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " NORTH ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 9.144000,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 9.144000,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", + " 0,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", + " 0,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn003:Wall003, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " NORTH ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 9.144000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 9.144000,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", + " 9.144000,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn003:Wall004, !- Name", + " Wall, !- Surface Type", + " PARTITION06, !- Construction Name", + " NORTH ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn001:Wall003, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn003:Wall005, !- Name", + " Wall, !- Surface Type", + " PARTITION06, !- Construction Name", + " NORTH ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn002:Wall005, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 9.144000,6.096000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 9.144000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn003:Flr001, !- Name", + " Floor, !- Surface Type", + " FLOOR SLAB 8 IN, !- Construction Name", + " NORTH ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn003:Flr001, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,6.096000,0, !- X,Y,Z ==> Vertex 1 {m}", + " 0,12.19200,0, !- X,Y,Z ==> Vertex 2 {m}", + " 9.144000,12.19200,0, !- X,Y,Z ==> Vertex 3 {m}", + " 9.144000,6.096000,0; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn003:Ceil001, !- Name", + " CEILING, !- Surface Type", + " CEILING:ZONE, !- Construction Name", + " NORTH ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn004:Flr003, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 9.144000,12.19200,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Wall001, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,3.962400, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,0,3.962400; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Wall002, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,0,3.962400, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,0,3.962400; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Wall003, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 12.19200,0,3.962400, !- X,Y,Z ==> Vertex 1 {m}", + " 12.19200,0,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,6.096000,3.962400; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Wall004, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 12.19200,6.096000,3.962400, !- X,Y,Z ==> Vertex 1 {m}", + " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 9.144000,6.096000,3.962400; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Wall005, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 9.144000,6.096000,3.962400, !- X,Y,Z ==> Vertex 1 {m}", + " 9.144000,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 9.144000,12.19200,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 9.144000,12.19200,3.962400; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Wall006, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 9.144000,12.19200,3.962400, !- X,Y,Z ==> Vertex 1 {m}", + " 9.144000,12.19200,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 0,12.19200,3.962400; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Wall007, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,12.19200,3.962400, !- X,Y,Z ==> Vertex 1 {m}", + " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 0,6.096000,3.962400; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Wall008, !- Name", + " Wall, !- Surface Type", + " EXTWALL80, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,6.096000,3.962400, !- X,Y,Z ==> Vertex 1 {m}", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 0,0,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 0,0,3.962400; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Roof001, !- Name", + " Roof, !- Surface Type", + " ROOF34, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,6.096000,3.962400, !- X,Y,Z ==> Vertex 1 {m}", + " 0,0,3.962400, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,0,3.962400, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,6.096000,3.962400; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Roof002, !- Name", + " Roof, !- Surface Type", + " ROOF34, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,6.096000,3.962400, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,0,3.962400, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,0,3.962400, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,6.096000,3.962400; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Roof003, !- Name", + " Roof, !- Surface Type", + " ROOF34, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,12.19200,3.962400, !- X,Y,Z ==> Vertex 1 {m}", + " 0,6.096000,3.962400, !- X,Y,Z ==> Vertex 2 {m}", + " 9.144000,6.096000,3.962400, !- X,Y,Z ==> Vertex 3 {m}", + " 9.144000,12.19200,3.962400; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Flr001, !- Name", + " Floor, !- Surface Type", + " CEILING:ATTIC, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn001:Ceil001, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 6.096000,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Flr002, !- Name", + " Floor, !- Surface Type", + " CEILING:ATTIC, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn002:Ceil001, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 6.096000,0,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 6.096000,6.096000,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 12.19200,6.096000,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 12.19200,0,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " BuildingSurface:Detailed,", + " Zn004:Flr003, !- Name", + " Floor, !- Surface Type", + " CEILING:ATTIC, !- Construction Name", + " ATTIC ZONE, !- Zone Name", + " Surface, !- Outside Boundary Condition", + " Zn003:Ceil001, !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0,6.096000,3.048000, !- X,Y,Z ==> Vertex 1 {m}", + " 0,12.19200,3.048000, !- X,Y,Z ==> Vertex 2 {m}", + " 9.144000,12.19200,3.048000, !- X,Y,Z ==> Vertex 3 {m}", + " 9.144000,6.096000,3.048000; !- X,Y,Z ==> Vertex 4 {m}", + + " FenestrationSurface:Detailed,", + " Zn001:Wall001:Win001, !- Name", + " Window, !- Surface Type", + " ELECTRO-CON-LIGHT, !- Construction Name", + " Zn001:Wall001, !- Building Surface Name", + " , !- Outside Boundary Condition Object", + " 0.5000000, !- View Factor to Ground", + " WIN-CONTROL-GLARE, !- Shading Control Name", + " TestFrameAndDivider, !- Frame and Divider Name", + " 1.0, !- Multiplier", + " 4, !- Number of Vertices", + " 0.548000,0,2.5000, !- X,Y,Z ==> Vertex 1 {m}", + " 0.548000,0,0.5000, !- X,Y,Z ==> Vertex 2 {m}", + " 5.548000,0,0.5000, !- X,Y,Z ==> Vertex 3 {m}", + " 5.548000,0,2.5000; !- X,Y,Z ==> Vertex 4 {m}", + + " FenestrationSurface:Detailed,", + " Zn001:Wall003:Door001, !- Name", + " DOOR, !- Surface Type", + " DOOR-CON, !- Construction Name", + " Zn001:Wall003, !- Building Surface Name", + " Zn003:Wall004:Door001, !- Outside Boundary Condition Object", + " 0.5000000, !- View Factor to Ground", + " , !- Shading Control Name", + " , !- Frame and Divider Name", + " 1.0, !- Multiplier", + " 4, !- Number of Vertices", + " 3.500,6.096000,2.0, !- X,Y,Z ==> Vertex 1 {m}", + " 3.500,6.096000,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 2.500,6.096000,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 2.500,6.096000,2.0; !- X,Y,Z ==> Vertex 4 {m}", + + " FenestrationSurface:Detailed,", + " Zn003:Wall002:Win001, !- Name", + " Window, !- Surface Type", + " ELECTRO-CON-LIGHT, !- Construction Name", + " Zn003:Wall002, !- Building Surface Name", + " , !- Outside Boundary Condition Object", + " 0.5000000, !- View Factor to Ground", + " , !- Shading Control Name", + " TestFrameAndDivider, !- Frame and Divider Name", + " 1.0, !- Multiplier", + " 4, !- Number of Vertices", + " 5.548000,12.19200,2.5000, !- X,Y,Z ==> Vertex 1 {m}", + " 5.548000,12.19200,0.5000, !- X,Y,Z ==> Vertex 2 {m}", + " 0.548000,12.19200,0.5000, !- X,Y,Z ==> Vertex 3 {m}", + " 0.548000,12.19200,2.5000; !- X,Y,Z ==> Vertex 4 {m}", + + " FenestrationSurface:Detailed,", + " Zn003:Wall004:Door001, !- Name", + " DOOR, !- Surface Type", + " DOOR-CON, !- Construction Name", + " Zn003:Wall004, !- Building Surface Name", + " Zn001:Wall003:Door001, !- Outside Boundary Condition Object", + " 0.5000000, !- View Factor to Ground", + " , !- Shading Control Name", + " , !- Frame and Divider Name", + " 1.0, !- Multiplier", + " 4, !- Number of Vertices", + " 2.500,6.096000,2.0, !- X,Y,Z ==> Vertex 1 {m}", + " 2.500,6.096000,0.0, !- X,Y,Z ==> Vertex 2 {m}", + " 3.500,6.096000,0.0, !- X,Y,Z ==> Vertex 3 {m}", + " 3.500,6.096000,2.0; !- X,Y,Z ==> Vertex 4 {m}", + + " WindowProperty:ShadingControl,", + " WIN-CONTROL-GLARE, !- Name", + " SwitchableGlazing, !- Shading Type", + " ELECTRO-CON-DARK, !- Construction with Shading Name", + " OnIfHighGlare, !- Shading Control Type", + " , !- Schedule Name", + " 0.0, !- Setpoint {W/m2, W or deg C}", + " No, !- Shading Control Is Scheduled", + " YES, !- Glare Control Is Active", + " , !- Shading Device Material Name", + " FixedSlatAngle, !- Type of Slat Angle Control for Blinds", + " ; !- Slat Angle Schedule Name", + + " WindowProperty:FrameAndDivider,", + " TestFrameAndDivider, !- Name", + " 0.05, !- Frame Width {m}", + " 0.05, !- Frame Outside Projection {m}", + " 0.05, !- Frame Inside Projection {m}", + " 5.0, !- Frame Conductance {W/m2-K}", + " 1.2, !- Ratio of Frame-Edge Glass Conductance to Center-Of-Glass Conductance", + " 0.8, !- Frame Solar Absorptance", + " 0.8, !- Frame Visible Absorptance", + " 0.9, !- Frame Thermal Hemispherical Emissivity", + " DividedLite, !- Divider Type", + " 0.02, !- Divider Width {m}", + " 2, !- Number of Horizontal Dividers", + " 2, !- Number of Vertical Dividers", + " 0.02, !- Divider Outside Projection {m}", + " 0.02, !- Divider Inside Projection {m}", + " 5.0, !- Divider Conductance {W/m2-K}", + " 1.2, !- Ratio of Divider-Edge Glass Conductance to Center-Of-Glass Conductance", + " 0.8, !- Divider Solar Absorptance", + " 0.8, !- Divider Visible Absorptance", + " 0.9; !- Divider Thermal Hemispherical Emissivity", + }); + + ASSERT_TRUE(process_idf(idf_objects)); + + SimulationManager::GetProjectData(); + bool FoundError = false; + + HeatBalanceManager::GetProjectControlData(FoundError); // read project control data + EXPECT_FALSE(FoundError); // expect no errors + + HeatBalanceManager::SetPreConstructionInputParameters(); + CurveManager::GetCurveInput(); + CurveManager::GetCurvesInputFlag = false; + + HeatBalanceManager::GetWindowGlassSpectralData(FoundError); + EXPECT_FALSE(FoundError); + HeatBalanceManager::GetMaterialData(FoundError); + EXPECT_FALSE(FoundError); + + HeatBalanceManager::GetFrameAndDividerData(FoundError); + EXPECT_FALSE(FoundError); + + HeatBalanceManager::GetConstructData(FoundError); + EXPECT_FALSE(FoundError); + + HeatBalanceManager::GetZoneData(FoundError); // Read Zone data from input file + EXPECT_FALSE(FoundError); + + SurfaceGeometry::GetGeometryParameters(FoundError); + EXPECT_FALSE(FoundError); + + SurfaceGeometry::CosZoneRelNorth.allocate(4); + SurfaceGeometry::SinZoneRelNorth.allocate(4); + + SurfaceGeometry::CosZoneRelNorth(1) = std::cos(-DataHeatBalance::Zone(1).RelNorth * DataGlobals::DegToRadians); + SurfaceGeometry::CosZoneRelNorth(2) = std::cos(-DataHeatBalance::Zone(2).RelNorth * DataGlobals::DegToRadians); + SurfaceGeometry::CosZoneRelNorth(3) = std::cos(-DataHeatBalance::Zone(3).RelNorth * DataGlobals::DegToRadians); + SurfaceGeometry::CosZoneRelNorth(4) = std::cos(-DataHeatBalance::Zone(4).RelNorth * DataGlobals::DegToRadians); + SurfaceGeometry::SinZoneRelNorth(1) = std::sin(-DataHeatBalance::Zone(1).RelNorth * DataGlobals::DegToRadians); + SurfaceGeometry::SinZoneRelNorth(2) = std::sin(-DataHeatBalance::Zone(2).RelNorth * DataGlobals::DegToRadians); + SurfaceGeometry::SinZoneRelNorth(3) = std::sin(-DataHeatBalance::Zone(3).RelNorth * DataGlobals::DegToRadians); + SurfaceGeometry::SinZoneRelNorth(4) = std::sin(-DataHeatBalance::Zone(4).RelNorth * DataGlobals::DegToRadians); + + SurfaceGeometry::CosBldgRelNorth = 1.0; + SurfaceGeometry::SinBldgRelNorth = 0.0; + + SurfaceGeometry::CosBldgRotAppGonly = 1.0; + SurfaceGeometry::SinBldgRotAppGonly = 0.0; + + SurfaceGeometry::GetSurfaceData(FoundError); // setup zone geometry and get zone data + EXPECT_FALSE(FoundError); // expect no errors + + WindowManager::InitGlassOpticalCalculations(); + + int NumAngles = 10; // Number of incident angles + Real64 sum; + // total transmittance Array1D correctT( NumAngles, {0.529017128, 0.472866571, 0.370790548, 0.248928459, 0.138553744, 0.061213244, 0.020072976, 0.00430128, 0.00042861, 0.0}); - // total reflectance + // total reflectance Array1D correctR( NumAngles, {0.097222311, 0.194253146, 0.36875691, 0.57565985, 0.762546964, 0.89393376, 0.964537901, 0.99210584, 0.99912202, 1.00000000}); - // Layer 1 absortance + // Layer 1 absortance Array1D correctabs1( NumAngles, {0.242079608, 0.214464137, 0.165811001, 0.109778385, 0.060620181, 0.02682869, 0.008920102, 0.001979289, 0.000219736, 0.0}); - // Layer 2 absortance + // Layer 2 absortance Array1D correctabs2( NumAngles, {0.131680954, 0.118416146, 0.094641541, 0.065633305, 0.03827911, 0.018024306, 0.006469021, 0.001613591, 0.000229628, 0.0}); - for ( int i = 1; i <= NumAngles; i++ ) { - EXPECT_NEAR( correctT( i ), WindowManager::tsolPhi( i ), 0.0001 ); - EXPECT_NEAR( correctR( i ), WindowManager::rfsolPhi( i ), 0.0001 ); - EXPECT_NEAR( correctabs1( i ), WindowManager::solabsPhi(1, i ), 0.0001 ); - EXPECT_NEAR( correctabs2( i ), WindowManager::solabsPhi(2, i ), 0.0001 ); - sum = tsolPhi( i ) + rfsolPhi( i ) + solabsPhi( 1, i ) + solabsPhi( 2, i ); - EXPECT_NEAR( sum, 1.0, 0.0001 ); - } - - SurfaceGeometry::CosZoneRelNorth.deallocate( ); - SurfaceGeometry::SinZoneRelNorth.deallocate( ); + for (int i = 1; i <= NumAngles; i++) { + EXPECT_NEAR(correctT(i), WindowManager::tsolPhi(i), 0.0001); + EXPECT_NEAR(correctR(i), WindowManager::rfsolPhi(i), 0.0001); + EXPECT_NEAR(correctabs1(i), WindowManager::solabsPhi(1, i), 0.0001); + EXPECT_NEAR(correctabs2(i), WindowManager::solabsPhi(2, i), 0.0001); + sum = tsolPhi(i) + rfsolPhi(i) + solabsPhi(1, i) + solabsPhi(2, i); + EXPECT_NEAR(sum, 1.0, 0.0001); + } + + SurfaceGeometry::CosZoneRelNorth.deallocate(); + SurfaceGeometry::SinZoneRelNorth.deallocate(); } -TEST_F( EnergyPlusFixture, WindowManager_SrdLWRTest ) +TEST_F(EnergyPlusFixture, WindowManager_SrdLWRTest) { - // GitHub issue 6037 - bool ErrorsFound( false ); + // GitHub issue 6037 + bool ErrorsFound(false); std::string const idf_objects = delimited_string({"Version,8.4;", - "Material,", - " Concrete Block, !- Name", - " MediumRough, !- Roughness", - " 0.1014984, !- Thickness {m}", - " 0.3805070, !- Conductivity {W/m-K}", - " 608.7016, !- Density {kg/m3}", - " 836.8000; !- Specific Heat {J/kg-K}", - "Construction,", - " WallConstruction, !- Name", - " Concrete Block; !- Outside Layer", - "WindowMaterial:SimpleGlazingSystem,", - " WindowMaterial, !- Name", - " 5.778, !- U-Factor {W/m2-K}", - " 0.819, !- Solar Heat Gain Coefficient", - " 0.881; !- Visible Transmittance", - "Construction,", - " WindowConstruction, !- Name", - " WindowMaterial; !- Outside Layer", - "WindowProperty:FrameAndDivider,", - " WindowFrame, !- Name", - " 0.05, !- Frame Width {m}", - " 0.00, !- Frame Outside Projection {m}", - " 0.00, !- Frame Inside Projection {m}", - " 5.0, !- Frame Conductance {W/m2-K}", - " 1.2, !- Ratio of Frame-Edge Glass Conductance to Center-Of-Glass Conductance", - " 0.8, !- Frame Solar Absorptance", - " 0.8, !- Frame Visible Absorptance", - " 0.9, !- Frame Thermal Hemispherical Emissivity", - " DividedLite, !- Divider Type", - " 0.02, !- Divider Width {m}", - " 2, !- Number of Horizontal Dividers", - " 2, !- Number of Vertical Dividers", - " 0.00, !- Divider Outside Projection {m}", - " 0.00, !- Divider Inside Projection {m}", - " 5.0, !- Divider Conductance {W/m2-K}", - " 1.2, !- Ratio of Divider-Edge Glass Conductance to Center-Of-Glass Conductance", - " 0.8, !- Divider Solar Absorptance", - " 0.8, !- Divider Visible Absorptance", - " 0.9; !- Divider Thermal Hemispherical Emissivity", - "FenestrationSurface:Detailed,", - " FenestrationSurface, !- Name", - " Window, !- Surface Type", - " WindowConstruction, !- Construction Name", - " Wall, !- Building Surface Name", - " , !- Outside Boundary Condition Object", - " 0.5000000, !- View Factor to Ground", - " , !- Shading Control Name", - " WindowFrame, !- Frame and Divider Name", - " 1.0, !- Multiplier", - " 4, !- Number of Vertices", - " 0.200000,0.000000,9.900000, !- X,Y,Z ==> Vertex 1 {m}", - " 0.200000,0.000000,0.1000000, !- X,Y,Z ==> Vertex 2 {m}", - " 9.900000,0.000000,0.1000000, !- X,Y,Z ==> Vertex 3 {m}", - " 9.900000,0.000000,9.900000; !- X,Y,Z ==> Vertex 4 {m}", - "SurfaceProperty:LocalEnvironment,", - " LocEnv:FenestrationSurface, !- Name", - " FenestrationSurface, !- Exterior Surface Name", - " , !- External Shading Fraction Schedule Name", - " SrdSurfs:FenestrationSurface, !- Surrounding Surfaces Object Name", - " ; !- Outdoor Air Node Name", - "SurfaceProperty:SurroundingSurfaces,", - " SrdSurfs:FenestrationSurface, !- Name", - " 0.3,", - " Sky Temp Sch,", - " 0.1,", - " Ground Temp Sch,", - " SurroundingSurface1,", - " 0.6,", - " Surrounding Temp Sch 1;", - "Schedule:Compact,", - " Surrounding Temp Sch 1, !- Name", - " Any Number, !- Schedule Type Limits Name", - " Through: 12/31, !- Field 1", - " For: AllDays, !- Field 2", - " Until: 24:00, 15.0; !- Field 3", - "BuildingSurface:Detailed," - " Wall, !- Name", - " Wall, !- Surface Type", - " WallConstruction, !- Construction Name", - " Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " SunExposed, !- Sun Exposure", - " WindExposed, !- Wind Exposure", - " 0.5000000, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.000000,0.000000,10.00000, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000,0.000000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 10.00000,0.000000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 10.00000,0.000000,10.00000; !- X,Y,Z ==> Vertex 4 {m}", - "BuildingSurface:Detailed," - " Floor, !- Name", - " Floor, !- Surface Type", - " WallConstruction, !- Construction Name", - " Zone, !- Zone Name", - " Outdoors, !- Outside Boundary Condition", - " , !- Outside Boundary Condition Object", - " NoSun, !- Sun Exposure", - " NoWind, !- Wind Exposure", - " 1.0, !- View Factor to Ground", - " 4, !- Number of Vertices", - " 0.000000,0.000000,0, !- X,Y,Z ==> Vertex 1 {m}", - " 0.000000,10.000000,0, !- X,Y,Z ==> Vertex 2 {m}", - " 10.00000,10.000000,0, !- X,Y,Z ==> Vertex 3 {m}", - " 10.00000,0.000000,0; !- X,Y,Z ==> Vertex 4 {m}", - "Zone," - " Zone, !- Name", - " 0, !- Direction of Relative North {deg}", - " 6.000000, !- X Origin {m}", - " 6.000000, !- Y Origin {m}", - " 0, !- Z Origin {m}", - " 1, !- Type", - " 1, !- Multiplier", - " autocalculate, !- Ceiling Height {m}", + "Material,", + " Concrete Block, !- Name", + " MediumRough, !- Roughness", + " 0.1014984, !- Thickness {m}", + " 0.3805070, !- Conductivity {W/m-K}", + " 608.7016, !- Density {kg/m3}", + " 836.8000; !- Specific Heat {J/kg-K}", + "Construction,", + " WallConstruction, !- Name", + " Concrete Block; !- Outside Layer", + "WindowMaterial:SimpleGlazingSystem,", + " WindowMaterial, !- Name", + " 5.778, !- U-Factor {W/m2-K}", + " 0.819, !- Solar Heat Gain Coefficient", + " 0.881; !- Visible Transmittance", + "Construction,", + " WindowConstruction, !- Name", + " WindowMaterial; !- Outside Layer", + "WindowProperty:FrameAndDivider,", + " WindowFrame, !- Name", + " 0.05, !- Frame Width {m}", + " 0.00, !- Frame Outside Projection {m}", + " 0.00, !- Frame Inside Projection {m}", + " 5.0, !- Frame Conductance {W/m2-K}", + " 1.2, !- Ratio of Frame-Edge Glass Conductance to Center-Of-Glass Conductance", + " 0.8, !- Frame Solar Absorptance", + " 0.8, !- Frame Visible Absorptance", + " 0.9, !- Frame Thermal Hemispherical Emissivity", + " DividedLite, !- Divider Type", + " 0.02, !- Divider Width {m}", + " 2, !- Number of Horizontal Dividers", + " 2, !- Number of Vertical Dividers", + " 0.00, !- Divider Outside Projection {m}", + " 0.00, !- Divider Inside Projection {m}", + " 5.0, !- Divider Conductance {W/m2-K}", + " 1.2, !- Ratio of Divider-Edge Glass Conductance to Center-Of-Glass Conductance", + " 0.8, !- Divider Solar Absorptance", + " 0.8, !- Divider Visible Absorptance", + " 0.9; !- Divider Thermal Hemispherical Emissivity", + "FenestrationSurface:Detailed,", + " FenestrationSurface, !- Name", + " Window, !- Surface Type", + " WindowConstruction, !- Construction Name", + " Wall, !- Building Surface Name", + " , !- Outside Boundary Condition Object", + " 0.5000000, !- View Factor to Ground", + " , !- Shading Control Name", + " WindowFrame, !- Frame and Divider Name", + " 1.0, !- Multiplier", + " 4, !- Number of Vertices", + " 0.200000,0.000000,9.900000, !- X,Y,Z ==> Vertex 1 {m}", + " 0.200000,0.000000,0.1000000, !- X,Y,Z ==> Vertex 2 {m}", + " 9.900000,0.000000,0.1000000, !- X,Y,Z ==> Vertex 3 {m}", + " 9.900000,0.000000,9.900000; !- X,Y,Z ==> Vertex 4 {m}", + "SurfaceProperty:LocalEnvironment,", + " LocEnv:FenestrationSurface, !- Name", + " FenestrationSurface, !- Exterior Surface Name", + " , !- External Shading Fraction Schedule Name", + " SrdSurfs:FenestrationSurface, !- Surrounding Surfaces Object Name", + " ; !- Outdoor Air Node Name", + "SurfaceProperty:SurroundingSurfaces,", + " SrdSurfs:FenestrationSurface, !- Name", + " 0.3,", + " Sky Temp Sch,", + " 0.1,", + " Ground Temp Sch,", + " SurroundingSurface1,", + " 0.6,", + " Surrounding Temp Sch 1;", + "Schedule:Compact,", + " Surrounding Temp Sch 1, !- Name", + " Any Number, !- Schedule Type Limits Name", + " Through: 12/31, !- Field 1", + " For: AllDays, !- Field 2", + " Until: 24:00, 15.0; !- Field 3", + "BuildingSurface:Detailed," + " Wall, !- Name", + " Wall, !- Surface Type", + " WallConstruction, !- Construction Name", + " Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " SunExposed, !- Sun Exposure", + " WindExposed, !- Wind Exposure", + " 0.5000000, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.000000,0.000000,10.00000, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000,0.000000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 10.00000,0.000000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 10.00000,0.000000,10.00000; !- X,Y,Z ==> Vertex 4 {m}", + "BuildingSurface:Detailed," + " Floor, !- Name", + " Floor, !- Surface Type", + " WallConstruction, !- Construction Name", + " Zone, !- Zone Name", + " Outdoors, !- Outside Boundary Condition", + " , !- Outside Boundary Condition Object", + " NoSun, !- Sun Exposure", + " NoWind, !- Wind Exposure", + " 1.0, !- View Factor to Ground", + " 4, !- Number of Vertices", + " 0.000000,0.000000,0, !- X,Y,Z ==> Vertex 1 {m}", + " 0.000000,10.000000,0, !- X,Y,Z ==> Vertex 2 {m}", + " 10.00000,10.000000,0, !- X,Y,Z ==> Vertex 3 {m}", + " 10.00000,0.000000,0; !- X,Y,Z ==> Vertex 4 {m}", + "Zone," + " Zone, !- Name", + " 0, !- Direction of Relative North {deg}", + " 6.000000, !- X Origin {m}", + " 6.000000, !- Y Origin {m}", + " 0, !- Z Origin {m}", + " 1, !- Type", + " 1, !- Multiplier", + " autocalculate, !- Ceiling Height {m}", " autocalculate; !- Volume {m3}"}); - ASSERT_TRUE( process_idf( idf_objects ) ); - ScheduleManager::ProcessScheduleInput(); - DataHeatBalance::ZoneIntGain.allocate( 1 ); - - createFacilityElectricPowerServiceObject( ); - HeatBalanceManager::SetPreConstructionInputParameters( ); - HeatBalanceManager::GetProjectControlData( ErrorsFound ); - HeatBalanceManager::GetFrameAndDividerData( ErrorsFound ); - HeatBalanceManager::GetMaterialData( ErrorsFound ); - HeatBalanceManager::GetConstructData( ErrorsFound ); - HeatBalanceManager::GetBuildingData( ErrorsFound ); - - EXPECT_TRUE( DataGlobals::AnyLocalEnvironmentsInModel ); - - Psychrometrics::InitializePsychRoutines( ); - - DataGlobals::TimeStep = 1; - DataGlobals::TimeStepZone = 1; - DataGlobals::HourOfDay = 1; - DataGlobals::NumOfTimeStepInHour = 1; - DataGlobals::BeginSimFlag = true; - DataGlobals::BeginEnvrnFlag = true; - DataEnvironment::OutBaroPress = 100000; - - DataZoneEquipment::ZoneEquipConfig.allocate( 1 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).ZoneName = "Zone"; - DataZoneEquipment::ZoneEquipConfig( 1 ).ActualZoneNum = 1; - std::vector< int > controlledZoneEquipConfigNums; - controlledZoneEquipConfigNums.push_back( 1 ); - - DataZoneEquipment::ZoneEquipConfig( 1 ).NumInletNodes = 2; - DataZoneEquipment::ZoneEquipConfig( 1 ).InletNode.allocate( 2 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).InletNode( 1 ) = 1; - DataZoneEquipment::ZoneEquipConfig( 1 ).InletNode( 2 ) = 2; - DataZoneEquipment::ZoneEquipConfig( 1 ).NumExhaustNodes = 1; - DataZoneEquipment::ZoneEquipConfig( 1 ).ExhaustNode.allocate( 1 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).ExhaustNode( 1 ) = 3; - DataZoneEquipment::ZoneEquipConfig( 1 ).NumReturnNodes = 1; - DataZoneEquipment::ZoneEquipConfig( 1 ).ReturnNode.allocate( 1 ); - DataZoneEquipment::ZoneEquipConfig( 1 ).ReturnNode( 1 ) = 4; - - DataLoopNode::Node.allocate( 4 ); - DataHeatBalance::TempEffBulkAir.allocate( 3 ); - DataHeatBalSurface::TempSurfInTmp.allocate( 3 ); - - DataSurfaces::Surface( 1 ).HeatTransSurf = true; - DataSurfaces::Surface( 2 ).HeatTransSurf = true; - DataSurfaces::Surface( 3 ).HeatTransSurf = true; - DataSurfaces::Surface( 1 ).Area = 10.0; - DataSurfaces::Surface( 2 ).Area = 10.0; - DataSurfaces::Surface( 3 ).Area = 10.0; - DataSurfaces::Surface( 1 ).TAirRef = DataSurfaces::ZoneMeanAirTemp; - DataSurfaces::Surface( 2 ).TAirRef = DataSurfaces::ZoneSupplyAirTemp; - DataSurfaces::Surface( 3 ).TAirRef = DataSurfaces::AdjacentAirTemp; - DataHeatBalSurface::TempSurfInTmp( 1 ) = 15.0; - DataHeatBalSurface::TempSurfInTmp( 2 ) = 20.0; - DataHeatBalSurface::TempSurfInTmp( 3 ) = 25.0; - DataHeatBalance::TempEffBulkAir( 1 ) = 10.0; - DataHeatBalance::TempEffBulkAir( 2 ) = 10.0; - DataHeatBalance::TempEffBulkAir( 3 ) = 10.0; - - DataLoopNode::Node( 1 ).Temp = 20.0; - DataLoopNode::Node( 2 ).Temp = 20.0; - DataLoopNode::Node( 3 ).Temp = 20.0; - DataLoopNode::Node( 4 ).Temp = 20.0; - DataLoopNode::Node( 1 ).MassFlowRate = 0.1; - DataLoopNode::Node( 2 ).MassFlowRate = 0.1; - DataLoopNode::Node( 3 ).MassFlowRate = 0.1; - DataLoopNode::Node( 4 ).MassFlowRate = 0.1; - - DataHeatBalance::HConvIn.allocate( 3 ); - DataHeatBalance::HConvIn( 1 ) = 0.5; - DataHeatBalance::HConvIn( 2 ) = 0.5; - DataHeatBalance::HConvIn( 3 ) = 0.5; - DataHeatBalance::Zone( 1 ).IsControlled = true; - DataHeatBalFanSys::ZoneAirHumRat.allocate( 1 ); - DataHeatBalFanSys::ZoneAirHumRat( 1 ) = 0.011; - DataHeatBalFanSys::ZoneAirHumRatAvg.allocate( 1 ); - DataHeatBalFanSys::ZoneAirHumRatAvg( 1 ) = DataHeatBalFanSys::ZoneAirHumRat( 1 ) = 0.011; - - DataHeatBalFanSys::MAT.allocate( 1 ); - DataHeatBalFanSys::MAT( 1 ) = 25.0; - DataHeatBalFanSys::QHTRadSysSurf.allocate( 3 ); - DataHeatBalFanSys::QHWBaseboardSurf.allocate( 3 ); - DataHeatBalFanSys::QSteamBaseboardSurf.allocate( 3 ); - DataHeatBalFanSys::QElecBaseboardSurf.allocate( 3 ); - DataHeatBalance::QRadSWwinAbs.allocate( 1, 3 ); - DataHeatBalance::QRadThermInAbs.allocate( 3 ); - DataHeatBalance::QRadSWOutIncident.allocate( 3 ); - DataSurfaces::WinTransSolar.allocate( 3 ); - DataHeatBalance::ZoneWinHeatGain.allocate( 1 ); - DataHeatBalance::ZoneWinHeatGainRep.allocate( 1 ); - DataHeatBalance::ZoneWinHeatGainRepEnergy.allocate( 1 ); - DataSurfaces::WinHeatGain.allocate( 3 ); - DataSurfaces::WinHeatTransfer.allocate( 3 ); - DataSurfaces::WinGainConvGlazToZoneRep.allocate( 3 ); - DataSurfaces::WinGainIRGlazToZoneRep.allocate( 3 ); - DataSurfaces::WinGapConvHtFlowRep.allocate( 3 ); - DataSurfaces::WinGapConvHtFlowRepEnergy.allocate( 3 ); - DataHeatBalance::QS.allocate( 1 ); - DataSurfaces::WinLossSWZoneToOutWinRep.allocate( 3 ); - DataSurfaces::WinSysSolTransmittance.allocate( 3 ); - DataSurfaces::WinSysSolAbsorptance.allocate( 3 ); - DataSurfaces::WinSysSolReflectance.allocate( 3 ); - DataSurfaces::InsideGlassCondensationFlag.allocate( 3 ); - DataSurfaces::WinGainFrameDividerToZoneRep.allocate( 3 ); - DataSurfaces::InsideFrameCondensationFlag.allocate( 3 ); - DataSurfaces::InsideDividerCondensationFlag.allocate( 3 ); - - DataHeatBalSurface::QdotConvOutRep.allocate( 3 ); - DataHeatBalSurface::QdotConvOutRepPerArea.allocate( 3 ); - DataHeatBalSurface::QConvOutReport.allocate( 3 ); - DataHeatBalSurface::QdotRadOutRep.allocate( 3 ); - DataHeatBalSurface::QdotRadOutRepPerArea.allocate( 3 ); - DataHeatBalSurface::QRadOutReport.allocate( 3 ); - DataHeatBalSurface::QRadLWOutSrdSurfs.allocate( 3 ); - - DataHeatBalance::QRadSWOutIncident = 0.0; - DataHeatBalance::QRadSWwinAbs = 0.0; - DataHeatBalance::QRadThermInAbs = 0.0; - - DataHeatBalFanSys::QHTRadSysSurf = 0.0; - DataHeatBalFanSys::QHWBaseboardSurf = 0.0; - DataHeatBalFanSys::QSteamBaseboardSurf = 0.0; - DataHeatBalFanSys::QElecBaseboardSurf = 0.0; - DataSurfaces::WinTransSolar = 0.0; - DataHeatBalance::QS = 0.0; - - Real64 inSurfTemp; - Real64 outSurfTemp; - Real64 const StefanBoltzmann( 5.6697E-8 ); - Real64 const KelvinConv( 273.15 ); - ScheduleManager::Schedule( 1 ).CurrentValue = 25.0; // Srd Srfs Temp - // Claculate temperature based on supply flow rate - - WindowManager::CalcWindowHeatBalance( 2, DataHeatBalance::HConvIn( 2 ), inSurfTemp, outSurfTemp ); - // Test if LWR from surrounding surfaces correctly calculated + ASSERT_TRUE(process_idf(idf_objects)); + ScheduleManager::ProcessScheduleInput(); + DataHeatBalance::ZoneIntGain.allocate(1); + + createFacilityElectricPowerServiceObject(); + HeatBalanceManager::SetPreConstructionInputParameters(); + HeatBalanceManager::GetProjectControlData(ErrorsFound); + HeatBalanceManager::GetFrameAndDividerData(ErrorsFound); + HeatBalanceManager::GetMaterialData(ErrorsFound); + HeatBalanceManager::GetConstructData(ErrorsFound); + HeatBalanceManager::GetBuildingData(ErrorsFound); + + EXPECT_TRUE(DataGlobals::AnyLocalEnvironmentsInModel); + + Psychrometrics::InitializePsychRoutines(); + + DataGlobals::TimeStep = 1; + DataGlobals::TimeStepZone = 1; + DataGlobals::HourOfDay = 1; + DataGlobals::NumOfTimeStepInHour = 1; + DataGlobals::BeginSimFlag = true; + DataGlobals::BeginEnvrnFlag = true; + DataEnvironment::OutBaroPress = 100000; + + DataZoneEquipment::ZoneEquipConfig.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).ZoneName = "Zone"; + DataZoneEquipment::ZoneEquipConfig(1).ActualZoneNum = 1; + std::vector controlledZoneEquipConfigNums; + controlledZoneEquipConfigNums.push_back(1); + + DataZoneEquipment::ZoneEquipConfig(1).NumInletNodes = 2; + DataZoneEquipment::ZoneEquipConfig(1).InletNode.allocate(2); + DataZoneEquipment::ZoneEquipConfig(1).InletNode(1) = 1; + DataZoneEquipment::ZoneEquipConfig(1).InletNode(2) = 2; + DataZoneEquipment::ZoneEquipConfig(1).NumExhaustNodes = 1; + DataZoneEquipment::ZoneEquipConfig(1).ExhaustNode.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).ExhaustNode(1) = 3; + DataZoneEquipment::ZoneEquipConfig(1).NumReturnNodes = 1; + DataZoneEquipment::ZoneEquipConfig(1).ReturnNode.allocate(1); + DataZoneEquipment::ZoneEquipConfig(1).ReturnNode(1) = 4; + + DataLoopNode::Node.allocate(4); + DataHeatBalance::TempEffBulkAir.allocate(3); + DataHeatBalSurface::TempSurfInTmp.allocate(3); + + DataSurfaces::Surface(1).HeatTransSurf = true; + DataSurfaces::Surface(2).HeatTransSurf = true; + DataSurfaces::Surface(3).HeatTransSurf = true; + DataSurfaces::Surface(1).Area = 10.0; + DataSurfaces::Surface(2).Area = 10.0; + DataSurfaces::Surface(3).Area = 10.0; + DataSurfaces::Surface(1).TAirRef = DataSurfaces::ZoneMeanAirTemp; + DataSurfaces::Surface(2).TAirRef = DataSurfaces::ZoneSupplyAirTemp; + DataSurfaces::Surface(3).TAirRef = DataSurfaces::AdjacentAirTemp; + DataHeatBalSurface::TempSurfInTmp(1) = 15.0; + DataHeatBalSurface::TempSurfInTmp(2) = 20.0; + DataHeatBalSurface::TempSurfInTmp(3) = 25.0; + DataHeatBalance::TempEffBulkAir(1) = 10.0; + DataHeatBalance::TempEffBulkAir(2) = 10.0; + DataHeatBalance::TempEffBulkAir(3) = 10.0; + + DataLoopNode::Node(1).Temp = 20.0; + DataLoopNode::Node(2).Temp = 20.0; + DataLoopNode::Node(3).Temp = 20.0; + DataLoopNode::Node(4).Temp = 20.0; + DataLoopNode::Node(1).MassFlowRate = 0.1; + DataLoopNode::Node(2).MassFlowRate = 0.1; + DataLoopNode::Node(3).MassFlowRate = 0.1; + DataLoopNode::Node(4).MassFlowRate = 0.1; + + DataHeatBalance::HConvIn.allocate(3); + DataHeatBalance::HConvIn(1) = 0.5; + DataHeatBalance::HConvIn(2) = 0.5; + DataHeatBalance::HConvIn(3) = 0.5; + DataHeatBalance::Zone(1).IsControlled = true; + DataHeatBalFanSys::ZoneAirHumRat.allocate(1); + DataHeatBalFanSys::ZoneAirHumRat(1) = 0.011; + DataHeatBalFanSys::ZoneAirHumRatAvg.allocate(1); + DataHeatBalFanSys::ZoneAirHumRatAvg(1) = DataHeatBalFanSys::ZoneAirHumRat(1) = 0.011; + + DataHeatBalFanSys::MAT.allocate(1); + DataHeatBalFanSys::MAT(1) = 25.0; + DataHeatBalFanSys::QHTRadSysSurf.allocate(3); + DataHeatBalFanSys::QHWBaseboardSurf.allocate(3); + DataHeatBalFanSys::QSteamBaseboardSurf.allocate(3); + DataHeatBalFanSys::QElecBaseboardSurf.allocate(3); + DataHeatBalance::QRadSWwinAbs.allocate(1, 3); + DataHeatBalance::QRadThermInAbs.allocate(3); + DataHeatBalance::QRadSWOutIncident.allocate(3); + DataSurfaces::WinTransSolar.allocate(3); + DataHeatBalance::ZoneWinHeatGain.allocate(1); + DataHeatBalance::ZoneWinHeatGainRep.allocate(1); + DataHeatBalance::ZoneWinHeatGainRepEnergy.allocate(1); + DataSurfaces::WinHeatGain.allocate(3); + DataSurfaces::WinHeatTransfer.allocate(3); + DataSurfaces::WinGainConvGlazToZoneRep.allocate(3); + DataSurfaces::WinGainIRGlazToZoneRep.allocate(3); + DataSurfaces::WinGapConvHtFlowRep.allocate(3); + DataSurfaces::WinGapConvHtFlowRepEnergy.allocate(3); + DataHeatBalance::QS.allocate(1); + DataSurfaces::WinLossSWZoneToOutWinRep.allocate(3); + DataSurfaces::WinSysSolTransmittance.allocate(3); + DataSurfaces::WinSysSolAbsorptance.allocate(3); + DataSurfaces::WinSysSolReflectance.allocate(3); + DataSurfaces::InsideGlassCondensationFlag.allocate(3); + DataSurfaces::WinGainFrameDividerToZoneRep.allocate(3); + DataSurfaces::InsideFrameCondensationFlag.allocate(3); + DataSurfaces::InsideDividerCondensationFlag.allocate(3); + + DataHeatBalSurface::QdotConvOutRep.allocate(3); + DataHeatBalSurface::QdotConvOutRepPerArea.allocate(3); + DataHeatBalSurface::QConvOutReport.allocate(3); + DataHeatBalSurface::QdotRadOutRep.allocate(3); + DataHeatBalSurface::QdotRadOutRepPerArea.allocate(3); + DataHeatBalSurface::QRadOutReport.allocate(3); + DataHeatBalSurface::QRadLWOutSrdSurfs.allocate(3); + + DataHeatBalance::QRadSWOutIncident = 0.0; + DataHeatBalance::QRadSWwinAbs = 0.0; + DataHeatBalance::QRadThermInAbs = 0.0; + + DataHeatBalFanSys::QHTRadSysSurf = 0.0; + DataHeatBalFanSys::QHWBaseboardSurf = 0.0; + DataHeatBalFanSys::QSteamBaseboardSurf = 0.0; + DataHeatBalFanSys::QElecBaseboardSurf = 0.0; + DataSurfaces::WinTransSolar = 0.0; + DataHeatBalance::QS = 0.0; + + Real64 inSurfTemp; + Real64 outSurfTemp; + Real64 const StefanBoltzmann(5.6697E-8); + Real64 const KelvinConv(273.15); + ScheduleManager::Schedule(1).CurrentValue = 25.0; // Srd Srfs Temp + // Claculate temperature based on supply flow rate + + WindowManager::CalcWindowHeatBalance(2, DataHeatBalance::HConvIn(2), inSurfTemp, outSurfTemp); + // Test if LWR from surrounding surfaces correctly calculated EXPECT_DOUBLE_EQ(StefanBoltzmann * 0.84 * 0.6 * (pow_4(25.0 + KelvinConv) - pow_4(thetas(1))), DataHeatBalSurface::QRadLWOutSrdSurfs(2)); } From cc464b5223ef78d3e811a3b8ea8ccaa764d75339 Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Tue, 5 Jun 2018 09:23:35 -0600 Subject: [PATCH 18/47] Update new files and tests --- testfiles/1ZoneUncontrolledAnnualOutputs.idf | 7 +++---- testfiles/ConstSpeedBranchPumpExercise.idf | 7 ++++--- testfiles/Generator_PVWatts.idf | 2 +- tst/EnergyPlus/unit/AirTerminalSingleDuctPIUReheat.unit.cc | 5 +++-- tst/EnergyPlus/unit/ChillerAbsorption.unit.cc | 2 ++ tst/EnergyPlus/unit/DataHeatBalance.unit.cc | 2 ++ tst/EnergyPlus/unit/SolarShading.unit.cc | 2 ++ tst/EnergyPlus/unit/UnitaryHybridUnitTest_DOSA.idf | 2 ++ 8 files changed, 19 insertions(+), 10 deletions(-) diff --git a/testfiles/1ZoneUncontrolledAnnualOutputs.idf b/testfiles/1ZoneUncontrolledAnnualOutputs.idf index ae72f07e270..7310ea6034b 100644 --- a/testfiles/1ZoneUncontrolledAnnualOutputs.idf +++ b/testfiles/1ZoneUncontrolledAnnualOutputs.idf @@ -119,17 +119,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month - , !- Begin Year + 2018, !- Begin Year 12, !- End Month 31, !- End Day of Month - , !- End Year + 2019, !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 2; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators Site:Location, Denver Centennial Golden N_CO_USA Design_Conditions, !- Name diff --git a/testfiles/ConstSpeedBranchPumpExercise.idf b/testfiles/ConstSpeedBranchPumpExercise.idf index 0db6780cb45..aefbcba895f 100644 --- a/testfiles/ConstSpeedBranchPumpExercise.idf +++ b/testfiles/ConstSpeedBranchPumpExercise.idf @@ -23,15 +23,16 @@ RunPeriod, Run Period 1, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 1, !- End Month 1, !- End Day of Month + , !- End Year Thursday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators Site:Location, USA IL-CHICAGO-OHARE, !- Name @@ -392,4 +393,4 @@ Output:Variable,*,Boiler Heating Rate,Detailed; !- HVAC Average [W] Output:Variable,*,Boiler Mass Flow Rate,Detailed; !- HVAC Average [kg/s] Output:Variable,*,System Node Temperature,Detailed; !- HVAC Average [kg/s] Output:Variable,*,System Node Mass Flow Rate,Detailed; -Output:Variable,*,Pump Fluid Heat Gain Rate,Detailed; !- HVAC Average [W] \ No newline at end of file +Output:Variable,*,Pump Fluid Heat Gain Rate,Detailed; !- HVAC Average [W] diff --git a/testfiles/Generator_PVWatts.idf b/testfiles/Generator_PVWatts.idf index 2a4b62478fe..3e81bda7645 100644 --- a/testfiles/Generator_PVWatts.idf +++ b/testfiles/Generator_PVWatts.idf @@ -24,7 +24,7 @@ SimulationControl, All Year, !- Name 1, 1, , !- Begin 12, 31, , !- End - UseWeatherFile, !- Day of Week for Start Day + Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/tst/EnergyPlus/unit/AirTerminalSingleDuctPIUReheat.unit.cc b/tst/EnergyPlus/unit/AirTerminalSingleDuctPIUReheat.unit.cc index b99297ff173..024bb84aca9 100644 --- a/tst/EnergyPlus/unit/AirTerminalSingleDuctPIUReheat.unit.cc +++ b/tst/EnergyPlus/unit/AirTerminalSingleDuctPIUReheat.unit.cc @@ -433,15 +433,16 @@ TEST_F(EnergyPlusFixture, AirTerminalSingleDuctSeriesPIU_SimTest) " Run Period 1, !- Name", " 1, !- Begin Month", " 1, !- Begin Day of Month", + " , !- Begin Year", " 12, !- End Month", " 31, !- End Day of Month", + " , !- End Year", " Sunday, !- Day of Week for Start Day", " No, !- Use Weather File Holidays and Special Days", " No, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", - " Yes, !- Use Weather File Snow Indicators", - " 1; !- Number of Times Runperiod to be Repeated", + " Yes; !- Use Weather File Snow Indicators", "Site:GroundTemperature:BuildingSurface,", " 21.5, !- January Ground Temperature {C}", diff --git a/tst/EnergyPlus/unit/ChillerAbsorption.unit.cc b/tst/EnergyPlus/unit/ChillerAbsorption.unit.cc index eea93927699..c45326af284 100644 --- a/tst/EnergyPlus/unit/ChillerAbsorption.unit.cc +++ b/tst/EnergyPlus/unit/ChillerAbsorption.unit.cc @@ -96,8 +96,10 @@ TEST_F(EnergyPlusFixture, ChillerAbsorption_Calc) " , !- Name", " 1, !- Begin Month", " 1, !- Begin Day of Month", + " , !- Begin Year", " 12, !- End Month", " 31, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", " Yes, !- Use Weather File Holidays and Special Days", " Yes, !- Use Weather File Daylight Saving Period", diff --git a/tst/EnergyPlus/unit/DataHeatBalance.unit.cc b/tst/EnergyPlus/unit/DataHeatBalance.unit.cc index a311fbd573b..1d318122aff 100644 --- a/tst/EnergyPlus/unit/DataHeatBalance.unit.cc +++ b/tst/EnergyPlus/unit/DataHeatBalance.unit.cc @@ -118,8 +118,10 @@ TEST_F(EnergyPlusFixture, DataHeatBalance_CheckConstructLayers) " , !- Name", " 1, !- Begin Month", " 1, !- Begin Day of Month", + " , !- Begin Year", " 12, !- End Month", " 31, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", " Yes, !- Use Weather File Holidays and Special Days", " Yes, !- Use Weather File Daylight Saving Period", diff --git a/tst/EnergyPlus/unit/SolarShading.unit.cc b/tst/EnergyPlus/unit/SolarShading.unit.cc index 5980774a039..efb5d21e1ce 100644 --- a/tst/EnergyPlus/unit/SolarShading.unit.cc +++ b/tst/EnergyPlus/unit/SolarShading.unit.cc @@ -1109,8 +1109,10 @@ TEST_F(EnergyPlusFixture, SolarShadingTest_DisableGroupSelfShading) " , !- Name ", " 1, !- Begin Month ", " 1, !- Begin Day of Month ", + " , !- Begin Year", " 12, !- End Month ", " 31, !- End Day of Month ", + " , !- End Year", " , !- Day of Week for Start Day ", " , !- Use Weather File Holidays and Special Days ", " , !- Use Weather File Daylight Saving Period ", diff --git a/tst/EnergyPlus/unit/UnitaryHybridUnitTest_DOSA.idf b/tst/EnergyPlus/unit/UnitaryHybridUnitTest_DOSA.idf index 8a0241ef09e..d878fd25671 100644 --- a/tst/EnergyPlus/unit/UnitaryHybridUnitTest_DOSA.idf +++ b/tst/EnergyPlus/unit/UnitaryHybridUnitTest_DOSA.idf @@ -152,8 +152,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period From b8163aa823feb21ab3f3d5e46330cd3d569fd75c Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Tue, 10 Jul 2018 21:42:25 -0600 Subject: [PATCH 19/47] Fix start day error in example file --- testfiles/1ZoneUncontrolledAnnualOutputs.idf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testfiles/1ZoneUncontrolledAnnualOutputs.idf b/testfiles/1ZoneUncontrolledAnnualOutputs.idf index 7310ea6034b..2861c0b89eb 100644 --- a/testfiles/1ZoneUncontrolledAnnualOutputs.idf +++ b/testfiles/1ZoneUncontrolledAnnualOutputs.idf @@ -123,7 +123,7 @@ 12, !- End Month 31, !- End Day of Month 2019, !- End Year - Tuesday, !- Day of Week for Start Day + Monday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule From bae9bc2e841a059e7306d3ca368db3256943461c Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Wed, 11 Jul 2018 12:26:33 -0600 Subject: [PATCH 20/47] Reformat WeatherManager.cc, convert NFP from doc --- design/FY2018/NFP-Improve Year Awareness.md | 203 +++++ src/EnergyPlus/WeatherManager.cc | 864 +++++++++++++++----- 2 files changed, 877 insertions(+), 190 deletions(-) create mode 100644 design/FY2018/NFP-Improve Year Awareness.md diff --git a/design/FY2018/NFP-Improve Year Awareness.md b/design/FY2018/NFP-Improve Year Awareness.md new file mode 100644 index 00000000000..50ed8706ee7 --- /dev/null +++ b/design/FY2018/NFP-Improve Year Awareness.md @@ -0,0 +1,203 @@ +# NFP: Improve Year-Awareness of EnergyPlus # + +## Justification for New Feature ## + +Users and interface developers are requesting that EnergyPlus handle dates in a more standard way to facilitate actual-weather simulations (both single year and multiple years) and the post-processing of the simulation results. Many of the packages available for results processing use “real†dates that require valid, internally consistent data (e.g. the year 2016 is a leap year and must include February 29). EnergyPlus already properly simulates most situations if correct input is supplied, but does not always produce readily processed output and there are many ways to produce simulations that cannot be represented with valid dates and times. + +## Overview ## + +EnergyPlus will be modified to always have a real year associated with the simulation and output appropriate dates and times. Simulations that would violate date and time rules (e.g. simulate 2016 without February 29) will no longer be allowed unless requested. Information from the weather file information will no longer take precedence over objects in the input simulation file. Some weather file inputs (e.g. the leap year flag) will always be ignored. + +The **RunPeriod** and **RunPeriod:CustomRange** objects will be combined into a single RunPeriod object that specifies start and end dates as valid calendar dates. Schedule:File will be extended to allow multiple years in a single schedule file. The simulation year will be added SQLite output. + +## Approach ## + +EnergyPlus already handles dates correctly when asked to by the user, this work will eliminate the paths that allow users to ask EnergyPlus to handle dates incorrectly. The steps to this result are given below. + +1. Annual Outputs: (not in original NFP) Add an annual output frequency to output at the end of each calendar year. + +2. RunPeriod Consolidation: **RunPeriod** and **RunPeriod:CustomRange** will be combined into a single object that fully specifies dates. The table below gives the details on what will be added or removed from RunPeriod. See Appendix A for the new RunPeriod IDD. + +3. Time Consolidation: Date and time tracking and updating is now currently spread across at least three namespaces (DataEnvironment, WeatherManager, and SimulationManager). While this does present some maintenance issues, it will also be an impediment to OO conversion. Where possible, time tracking should be consolidated. + +4. Schedule Additions (Delayed): Currently, multiyear simulations repeat the same single year schedule, which is unlikely to a problem for many multiyear simulations. However, there are situations where schedules might change from year to year (e.g. school occupancy schedules) and some calibration studies might require more flexibility (e.g. efficiency measures applied partway through a calibration data set). In these situations, it is necessary to provide some way for users to have multiyear schedules. Currently, EnergyPlus translates all schedules into a single "Year Schedule" container. This makes it difficult to directly support multiyear schedules. For true multiyear simulations, this will need to be addressed. + + | | RunPeriod Field | Notes | + | :-: | :----------------------------------------- | ---------------------- | + | A1 | Name | Required | + | N1 | Begin Month | Required | + | N2 | Begin Day of Month | Required | + | New | Begin Year | Computed if not input | + | A2 | Day of Week for Start Day | Computed if not input | + | N3 | End Month | Required | + | N4 | End Day of Month | Required | + | New | End Year | Computed if not input | + | A3 | Use Weather File Holidays and Special Days | | + | A4 | Use Weather File Daylight Saving Period | | + | A5 | Apply Weekend Holiday Rule | | + | A6 | Use Weather File Rain Indicators | | + | A7 | Use Weather File Snow Indicators | | + | N5 | Number of Times Runperiod to be Repeated | *Remove* | + | A8 | Increment Day of Week on repeat | *Remove* | + | N6 | Start Year | *Remove* (redundant) | + | New | Treat Weather as Actual | Be strict about dates | + +See Appendix C for details of the "Computed if not input" fields. + +## Testing/Validation/Data Sources ## +Existing EnergyPlus test files will be modified to produce several models that are multiyear simulations. + +## Input Output Reference Documentation ## +The documentation of the **RunPeriod** object will be modified to reflect the new behavior. Schedule documentation will be will be developed if needed. + +## Engineering Reference ## +The Engineering Reference will be checked to make sure that it documents the new behavior. + +## Example File and Transition Changes ## +To objects will need to be transitioned **RunPeriod** and **RunPeriod:CustomRange**. All example files will be transitioned to the new **RunPeriod** object. There are no **RunPeriod:CustomRange** tests. + +### RunPeriod Transition ### +Not all old **RunPeriod** objects can be perfectly transitioned to the new **RunPeriod**. The relevant scenarios are given below: + +#### Minimal RunPeriod (mm/dd to mm/dd) +Set the begin and end dates from the input, leave the rest as default. + +#### Start Year Specified (mm/dd/yyyy to mm/dd) #### +Set the begin and end dates from the input, set "Begin Year" to input start year, then leave the rest as default. + +#### Start Year and Weekday Specified (W, mm/dd/yyyy to mm/dd) #### +Set the begin and end dates from the input, set "Begin Year" to input start year, then leave the rest as default. Compute the correct starting day for the input begin date and year. Set this as the value for "Day of Week for Start Day". If the input and computed weekday do not match, issue a warning. + +#### Minimal RunPeriod with N>1 Repeats ((mm/dd to mm/dd) x N) +Set the begin and end dates from the input, leave the rest as default. Set the "Begin Year" to 2017 (since 2017 starts on a Sunday) and compute the "End Year" by adding N to 2017. + +#### Start Year Specified with N>1 Repeats ((mm/dd/yyyy to mm/dd) x N) #### +Set the begin and end dates from the input, set "Begin Year" to input start year, then leave the rest as default. Compute the "End Year" by adding N to the "Begin Year". + +#### Start Year and Weekday Specified with N>1 Repeats ((W, mm/dd/yyyy to mm/dd) x N) #### +Set the begin and end dates from the input, set "Begin Year" to input start year, then leave the rest as default. Compute the correct starting day for the input begin date and year. Set this as the value for "Day of Week for Start Day". If the input and computed weekday do not match, issue a warning. Compute the "End Year" by adding N to the "Begin Year". + +#### Any RunPeriod with "Increment Day of Week on repeat" Enabled #### +This option will no longer be supported. Warn and complete transition as above. + +## Appendix A: New RunPeriod IDD Object ## + +``` +RunPeriod, + \memo Specify a range of dates and other parameters for a simulation. + \memo Multiple run periods may be input, but they may not overlap. + \min-fields 7 + A1 , \field Name + \reference RunPeriodsAndDesignDays + \note descriptive name (used in reporting mainly) + \note if blank, weather file title is used. if not blank, must be unique + N1 , \field Begin Month + \required-field + \minimum 1 + \maximum 12 + \type integer + N2 , \field Begin Day of Month + \required-field + \minimum 1 + \maximum 31 + \type integer + N3, \field Begin Year + \note start year of the simulation, if this field is specified it must agree with the Day of Week for Start Day + N4 , \field End Month + \required-field + \minimum 1 + \maximum 12 + \type integer + N5 , \field End Day of Month + \required-field + \minimum 1 + \maximum 31 + \type integer + N6, \field End Year + \note end year of simulation, if specified + A2 , \field Day of Week for Start Day + \note =[Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday]; + \default Sunday + \type choice + \key Sunday + \key Monday + \key Tuesday + \key Wednesday + \key Thursday + \key Friday + \key Saturday + A3, \field Use Weather File Holidays and Special Days + \note If yes or blank, use holidays as specified on Weatherfile. + \note If no, do not use the holidays specified on the Weatherfile. + \note Note: You can still specify holidays/special days using the RunPeriodControl:SpecialDays object(s). + \type choice + \default Yes + \key Yes + \key No + A4, \field Use Weather File Daylight Saving Period + \note If yes or blank, use daylight saving period as specified on Weatherfile. + \note If no, do not use the daylight saving period as specified on the Weatherfile. + \type choice + \default Yes + \key Yes + \key No + A5, \field Apply Weekend Holiday Rule + \note if yes and single day holiday falls on weekend, "holiday" occurs on following Monday + \type choice + \key Yes + \key No + \default No + A6, \field Use Weather File Rain Indicators + \type choice + \key Yes + \key No + \default Yes + A7, \field Use Weather File Snow Indicators + \type choice + \key Yes + \key No + \default Yes + A8; \field Treat Weather as Actual + \type choice + \key Yes + \key No + \default No +``` + +All date and time tracking, which is presently split among a number of the managers, will be consolidated in SimulationManager. A Schedule:MultiYear object will be added in order to allow users to schedule years separately. + +## Appendix B: Incomplete Survey of Current Behavior ## +There are presently two paths to multiyear simulations, one using repeated run periods and the second using a custom range object: + +1. Repeated years: Use RunPeriod, set ‘Number of Times Runperiod to be Repeated’ to 2 or more. +2. Multiple years: Use RunPeriod:CustomRange. This requires that the the EPW DataPeriods contain the date range given in the RunPeriod:CustomRange object and that the beginning date and first hour exist in the EPW. The minimal steps to duplicate a 2-year simulation run through path #1 are: + * Create a RunPeriod:CustomRange object with the appropriate dates and delete the RunPeriod object + * Duplicate the weather by copy-pasting all 8760 entries of the EPW file at the end of the EPW file + * Edit the EPW data periods to include the start year and end years + * Edit the first data line of the EPW to have the start year (all of the other years get ignored) + +Another important case to consider are multiyear simulations with leap years. Following the two paths: + +1. Repeated years: Add a specific starting year to the RunPeriod object and add February 29 to the EPW. For a simulation of two years (one non-leap year followed by a leap year), E+ warns about a skipped February 29 data for the first year. If the EPW file does not have Febuary 29, that date is silently skipped. +2. Multiple years: Set the year interval, EnergyPlus works as expected. + +## Appendix C: Development Team Comments ## + +**Jason Glazer, Re: February 29:** Assuming that the TMY3 or IWEC or what ever does not have a February 29 day of data, what are you going to do for February 29? If it is repeating the February 28 data that could be introduce errors since no smoothing would be done from February 28 midnight to February 29 1AM. + +**Response:** The ability to skip the leap day is retained in the current implementation, there are too many EPWs in the wild that are missing that day. + +**Jason Glazer, Re: Outputs:** The year of the simulation should also appear in the tabular output file in the input verification and output summary table and perhaps other outputs. + +**Response:** The current implementation includes annual outputs in the ESO. + +(More to be transcribed) + +## Appendix D: Design and Implementation ## + +Very little is changed structurally in the code. The crucial point of implementation is the determination of a start year. The general approach is to use the start month and day with other inputs to get the year. + +* If only the begin month and day are specified, then the default weekday (Sunday) is used to determine a year. +* If the begin year is specified and the weekday is not, the corresponding weekday is looked up. +* If the weekday is specified, then then the corresponding year is determined. +* If both begin year and weekday are specified, the inputs are verified. \ No newline at end of file diff --git a/src/EnergyPlus/WeatherManager.cc b/src/EnergyPlus/WeatherManager.cc index bafb6406664..799f13ba8b0 100644 --- a/src/EnergyPlus/WeatherManager.cc +++ b/src/EnergyPlus/WeatherManager.cc @@ -171,8 +171,12 @@ namespace WeatherManager { static std::string const BlankString; Array1D_string const DaysOfWeek(7, {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"}); - std::map weekDayLookUp{{"SUNDAY", WeekDay::Sunday}, {"MONDAY", WeekDay::Monday}, {"TUESDAY", WeekDay::Tuesday}, - {"WEDNESDAY", WeekDay::Wednesday}, {"THURSDAY", WeekDay::Thursday}, {"FRIDAY", WeekDay::Friday}, + std::map weekDayLookUp{{"SUNDAY", WeekDay::Sunday}, + {"MONDAY", WeekDay::Monday}, + {"TUESDAY", WeekDay::Tuesday}, + {"WEDNESDAY", WeekDay::Wednesday}, + {"THURSDAY", WeekDay::Thursday}, + {"FRIDAY", WeekDay::Friday}, {"SATURDAY", WeekDay::Saturday}}; bool Debugout(false); @@ -618,9 +622,17 @@ namespace WeatherManager { DataIPShortCuts::cCurrentModuleObject = "SurfaceProperty:Underwater"; int Num = inputProcessor->getNumObjectsFound(DataIPShortCuts::cCurrentModuleObject); for (int i = 1; i <= Num; i++) { - inputProcessor->getObjectItem(DataIPShortCuts::cCurrentModuleObject, i, DataIPShortCuts::cAlphaArgs, NumAlpha, - DataIPShortCuts::rNumericArgs, NumNumber, IOStat, DataIPShortCuts::lNumericFieldBlanks, - DataIPShortCuts::lAlphaFieldBlanks, DataIPShortCuts::cAlphaFieldNames, DataIPShortCuts::cNumericFieldNames); + inputProcessor->getObjectItem(DataIPShortCuts::cCurrentModuleObject, + i, + DataIPShortCuts::cAlphaArgs, + NumAlpha, + DataIPShortCuts::rNumericArgs, + NumNumber, + IOStat, + DataIPShortCuts::lNumericFieldBlanks, + DataIPShortCuts::lAlphaFieldBlanks, + DataIPShortCuts::cAlphaFieldNames, + DataIPShortCuts::cNumericFieldNames); underwaterBoundaries.push_back(UnderwaterBoundary()); underwaterBoundaries[i - 1].Name = DataIPShortCuts::cAlphaArgs(1); underwaterBoundaries[i - 1].distanceFromLeadingEdge = DataIPShortCuts::rNumericArgs(1); @@ -702,9 +714,17 @@ namespace WeatherManager { int NumAlpha = 0, NumNumber = 0, IOStat = 0; DataIPShortCuts::cCurrentModuleObject = "Site:VariableLocation"; if (inputProcessor->getNumObjectsFound(DataIPShortCuts::cCurrentModuleObject) == 0) return; - inputProcessor->getObjectItem(DataIPShortCuts::cCurrentModuleObject, 1, DataIPShortCuts::cAlphaArgs, NumAlpha, DataIPShortCuts::rNumericArgs, - NumNumber, IOStat, DataIPShortCuts::lNumericFieldBlanks, DataIPShortCuts::lAlphaFieldBlanks, - DataIPShortCuts::cAlphaFieldNames, DataIPShortCuts::cNumericFieldNames); + inputProcessor->getObjectItem(DataIPShortCuts::cCurrentModuleObject, + 1, + DataIPShortCuts::cAlphaArgs, + NumAlpha, + DataIPShortCuts::rNumericArgs, + NumNumber, + IOStat, + DataIPShortCuts::lNumericFieldBlanks, + DataIPShortCuts::lAlphaFieldBlanks, + DataIPShortCuts::cAlphaFieldNames, + DataIPShortCuts::cNumericFieldNames); DataEnvironment::varyingLocationSchedIndexLat = ScheduleManager::GetScheduleIndex(DataIPShortCuts::cAlphaArgs(1)); DataEnvironment::varyingLocationSchedIndexLong = ScheduleManager::GetScheduleIndex(DataIPShortCuts::cAlphaArgs(2)); DataEnvironment::varyingOrientationSchedIndex = ScheduleManager::GetScheduleIndex(DataIPShortCuts::cAlphaArgs(3)); @@ -733,13 +753,19 @@ namespace WeatherManager { DataSurfaces::Surface(SurfNum).NewVertex(n).y = Xb * SurfaceGeometry::SinBldgRelNorth + Yb * SurfaceGeometry::CosBldgRelNorth; DataSurfaces::Surface(SurfNum).NewVertex(n).z = DataSurfaces::Surface(SurfNum).Vertex(n).z; } - Vectors::CreateNewellSurfaceNormalVector(DataSurfaces::Surface(SurfNum).NewVertex, DataSurfaces::Surface(SurfNum).Sides, + Vectors::CreateNewellSurfaceNormalVector(DataSurfaces::Surface(SurfNum).NewVertex, + DataSurfaces::Surface(SurfNum).Sides, DataSurfaces::Surface(SurfNum).NewellSurfaceNormalVector); Real64 SurfWorldAz = 0.0; Real64 SurfTilt = 0.0; - Vectors::DetermineAzimuthAndTilt(DataSurfaces::Surface(SurfNum).NewVertex, DataSurfaces::Surface(SurfNum).Sides, SurfWorldAz, - SurfTilt, DataSurfaces::Surface(SurfNum).lcsx, DataSurfaces::Surface(SurfNum).lcsy, - DataSurfaces::Surface(SurfNum).lcsz, DataSurfaces::Surface(SurfNum).GrossArea, + Vectors::DetermineAzimuthAndTilt(DataSurfaces::Surface(SurfNum).NewVertex, + DataSurfaces::Surface(SurfNum).Sides, + SurfWorldAz, + SurfTilt, + DataSurfaces::Surface(SurfNum).lcsx, + DataSurfaces::Surface(SurfNum).lcsy, + DataSurfaces::Surface(SurfNum).lcsz, + DataSurfaces::Surface(SurfNum).GrossArea, DataSurfaces::Surface(SurfNum).NewellSurfaceNormalVector); DataSurfaces::Surface(SurfNum).Azimuth = SurfWorldAz; DataSurfaces::Surface(SurfNum).SinAzim = std::sin(SurfWorldAz * DegToRadians); @@ -790,8 +816,19 @@ namespace WeatherManager { static gio::Fmt DateFormat("(I2.2,'/',I2.2)"); static gio::Fmt DateFormatwithYear("(I2.2,'/',I2.2,'/',I4.4)"); static Array1D_string const SpecialDayNames(5, {"Holiday", "SummerDesignDay", "WinterDesignDay", "CustomDay1", "CustomDay2"}); - static Array1D_string const ValidDayNames(12, {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Holiday", - "SummerDesignDay", "WinterDesignDay", "CustomDay1", "CustomDay2"}); + static Array1D_string const ValidDayNames(12, + {"Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Holiday", + "SummerDesignDay", + "WinterDesignDay", + "CustomDay1", + "CustomDay2"}); // SUBROUTINE LOCAL VARIABLE DECLARATIONS: //////////// hoisted into namespace changed to GetBranchInputOneTimeFlag//////////// @@ -838,27 +875,27 @@ namespace WeatherManager { SetupOutputVariable("Site Outdoor Air Drybulb Temperature", OutputProcessor::Unit::C, OutDryBulbTemp, "Zone", "Average", "Environment"); SetupOutputVariable("Site Outdoor Air Dewpoint Temperature", OutputProcessor::Unit::C, OutDewPointTemp, "Zone", "Average", "Environment"); SetupOutputVariable("Site Outdoor Air Wetbulb Temperature", OutputProcessor::Unit::C, OutWetBulbTemp, "Zone", "Average", "Environment"); - SetupOutputVariable("Site Outdoor Air Humidity Ratio", OutputProcessor::Unit::kgWater_kgDryAir, OutHumRat, "Zone", "Average", - "Environment"); + SetupOutputVariable( + "Site Outdoor Air Humidity Ratio", OutputProcessor::Unit::kgWater_kgDryAir, OutHumRat, "Zone", "Average", "Environment"); SetupOutputVariable("Site Outdoor Air Relative Humidity", OutputProcessor::Unit::Perc, OutRelHum, "Zone", "Average", "Environment"); SetupOutputVariable("Site Outdoor Air Barometric Pressure", OutputProcessor::Unit::Pa, OutBaroPress, "Zone", "Average", "Environment"); SetupOutputVariable("Site Wind Speed", OutputProcessor::Unit::m_s, WindSpeed, "Zone", "Average", "Environment"); SetupOutputVariable("Site Wind Direction", OutputProcessor::Unit::deg, WindDir, "Zone", "Average", "Environment"); SetupOutputVariable("Site Sky Temperature", OutputProcessor::Unit::C, SkyTemp, "Zone", "Average", "Environment"); - SetupOutputVariable("Site Horizontal Infrared Radiation Rate per Area", OutputProcessor::Unit::W_m2, HorizIRSky, "Zone", "Average", - "Environment"); - SetupOutputVariable("Site Diffuse Solar Radiation Rate per Area", OutputProcessor::Unit::W_m2, DifSolarRad, "Zone", "Average", - "Environment"); - SetupOutputVariable("Site Direct Solar Radiation Rate per Area", OutputProcessor::Unit::W_m2, BeamSolarRad, "Zone", "Average", - "Environment"); + SetupOutputVariable( + "Site Horizontal Infrared Radiation Rate per Area", OutputProcessor::Unit::W_m2, HorizIRSky, "Zone", "Average", "Environment"); + SetupOutputVariable( + "Site Diffuse Solar Radiation Rate per Area", OutputProcessor::Unit::W_m2, DifSolarRad, "Zone", "Average", "Environment"); + SetupOutputVariable( + "Site Direct Solar Radiation Rate per Area", OutputProcessor::Unit::W_m2, BeamSolarRad, "Zone", "Average", "Environment"); SetupOutputVariable("Site Precipitation Depth", OutputProcessor::Unit::m, LiquidPrecipitation, "Zone", "Sum", "Environment"); - SetupOutputVariable("Site Ground Reflected Solar Radiation Rate per Area", OutputProcessor::Unit::W_m2, GndSolarRad, "Zone", "Average", - "Environment"); + SetupOutputVariable( + "Site Ground Reflected Solar Radiation Rate per Area", OutputProcessor::Unit::W_m2, GndSolarRad, "Zone", "Average", "Environment"); SetupOutputVariable("Site Ground Temperature", OutputProcessor::Unit::C, GroundTemp, "Zone", "Average", "Environment"); SetupOutputVariable("Site Surface Ground Temperature", OutputProcessor::Unit::C, GroundTemp_Surface, "Zone", "Average", "Environment"); SetupOutputVariable("Site Deep Ground Temperature", OutputProcessor::Unit::C, GroundTemp_Deep, "Zone", "Average", "Environment"); - SetupOutputVariable("Site Simple Factor Model Ground Temperature", OutputProcessor::Unit::C, GroundTempFC, "Zone", "Average", - "Environment"); + SetupOutputVariable( + "Site Simple Factor Model Ground Temperature", OutputProcessor::Unit::C, GroundTempFC, "Zone", "Average", "Environment"); SetupOutputVariable("Site Outdoor Air Enthalpy", OutputProcessor::Unit::J_kg, OutEnthalpy, "Zone", "Average", "Environment"); SetupOutputVariable("Site Outdoor Air Density", OutputProcessor::Unit::kg_m3, OutAirDensity, "Zone", "Average", "Environment"); SetupOutputVariable("Site Solar Azimuth Angle", OutputProcessor::Unit::deg, SolarAzimuthAngle, "Zone", "Average", "Environment"); @@ -869,23 +906,23 @@ namespace WeatherManager { SetupOutputVariable("Site Exterior Horizontal Sky Illuminance", OutputProcessor::Unit::lux, HISKF, "Zone", "Average", "Environment"); SetupOutputVariable("Site Exterior Horizontal Beam Illuminance", OutputProcessor::Unit::lux, HISUNF, "Zone", "Average", "Environment"); SetupOutputVariable("Site Exterior Beam Normal Illuminance", OutputProcessor::Unit::lux, HISUNFnorm, "Zone", "Average", "Environment"); - SetupOutputVariable("Site Sky Diffuse Solar Radiation Luminous Efficacy", OutputProcessor::Unit::lum_W, PDIFLW, "Zone", "Average", - "Environment"); - SetupOutputVariable("Site Beam Solar Radiation Luminous Efficacy", OutputProcessor::Unit::lum_W, PDIRLW, "Zone", "Average", - "Environment"); + SetupOutputVariable( + "Site Sky Diffuse Solar Radiation Luminous Efficacy", OutputProcessor::Unit::lum_W, PDIFLW, "Zone", "Average", "Environment"); + SetupOutputVariable( + "Site Beam Solar Radiation Luminous Efficacy", OutputProcessor::Unit::lum_W, PDIRLW, "Zone", "Average", "Environment"); SetupOutputVariable("Site Daylighting Model Sky Clearness", OutputProcessor::Unit::None, SkyClearness, "Zone", "Average", "Environment"); - SetupOutputVariable("Site Daylighting Model Sky Brightness", OutputProcessor::Unit::None, SkyBrightness, "Zone", "Average", - "Environment"); + SetupOutputVariable( + "Site Daylighting Model Sky Brightness", OutputProcessor::Unit::None, SkyBrightness, "Zone", "Average", "Environment"); SetupOutputVariable("Site Daylight Saving Time Status", OutputProcessor::Unit::None, DSTIndicator, "Zone", "State", "Environment"); SetupOutputVariable("Site Day Type Index", OutputProcessor::Unit::None, RptDayType, "Zone", "State", "Environment"); SetupOutputVariable("Site Mains Water Temperature", OutputProcessor::Unit::C, WaterMainsTemp, "Zone", "Average", "Environment"); if (AnyEnergyManagementSystemInModel) { SetupEMSActuator("Weather Data", "Environment", "Outdoor Dry Bulb", "[C]", EMSOutDryBulbOverrideOn, EMSOutDryBulbOverrideValue); - SetupEMSActuator("Weather Data", "Environment", "Outdoor Dew Point", "[C]", EMSOutDewPointTempOverrideOn, - EMSOutDewPointTempOverrideValue); - SetupEMSActuator("Weather Data", "Environment", "Outdoor Relative Humidity", "[%]", EMSOutRelHumOverrideOn, - EMSOutRelHumOverrideValue); + SetupEMSActuator( + "Weather Data", "Environment", "Outdoor Dew Point", "[C]", EMSOutDewPointTempOverrideOn, EMSOutDewPointTempOverrideValue); + SetupEMSActuator( + "Weather Data", "Environment", "Outdoor Relative Humidity", "[%]", EMSOutRelHumOverrideOn, EMSOutRelHumOverrideValue); SetupEMSActuator("Weather Data", "Environment", "Diffuse Solar", "[W/m2]", EMSDifSolarRadOverrideOn, EMSDifSolarRadOverrideValue); SetupEMSActuator("Weather Data", "Environment", "Direct Solar", "[W/m2]", EMSBeamSolarRadOverrideOn, EMSBeamSolarRadOverrideValue); SetupEMSActuator("Weather Data", "Environment", "Wind Speed", "[m/s]", EMSWindSpeedOverrideOn, EMSWindSpeedOverrideValue); @@ -2133,8 +2170,12 @@ namespace WeatherManager { if (DayOfSim == curSimDayForEndOfRunPeriod) { curSimDayForEndOfRunPeriod += Environment(Envrn).RawSimDays; if (StartDatesCycleShouldBeReset) { - ResetWeekDaysByMonth(Environment(Envrn).MonWeekDay, LeapYearAdd, Environment(Envrn).StartMonth, - Environment(Envrn).StartDay, Environment(Envrn).EndMonth, Environment(Envrn).EndDay, + ResetWeekDaysByMonth(Environment(Envrn).MonWeekDay, + LeapYearAdd, + Environment(Envrn).StartMonth, + Environment(Envrn).StartDay, + Environment(Envrn).EndMonth, + Environment(Envrn).EndDay, Environment(Envrn).RollDayTypeOnRepeat); if (DaylightSavingIsActive) { SetDSTDateRanges(Environment(Envrn).MonWeekDay, DSTIndex); @@ -2201,8 +2242,12 @@ namespace WeatherManager { if (Loop > 366) Loop = 1; if (Loop == JDay5End) break; } - ResetWeekDaysByMonth(Environment(Envrn).MonWeekDay, LeapYearAdd, Environment(Envrn).StartMonth, - Environment(Envrn).StartDay, Environment(Envrn).EndMonth, Environment(Envrn).EndDay, + ResetWeekDaysByMonth(Environment(Envrn).MonWeekDay, + LeapYearAdd, + Environment(Envrn).StartMonth, + Environment(Envrn).StartDay, + Environment(Envrn).EndMonth, + Environment(Envrn).EndDay, Environment(Envrn).RollDayTypeOnRepeat); if (DaylightSavingIsActive) { SetDSTDateRanges(Environment(Envrn).MonWeekDay, DSTIndex); @@ -2230,13 +2275,23 @@ namespace WeatherManager { if (DayOfSim < curSimDayForEndOfRunPeriod) { if (Environment(Envrn).RollDayTypeOnRepeat || CurrentYearIsLeapYear) { - ResetWeekDaysByMonth(Environment(Envrn).MonWeekDay, LeapYearAdd, Environment(Envrn).StartMonth, - Environment(Envrn).StartDay, Environment(Envrn).EndMonth, Environment(Envrn).EndDay, - Environment(Envrn).RollDayTypeOnRepeat, true); + ResetWeekDaysByMonth(Environment(Envrn).MonWeekDay, + LeapYearAdd, + Environment(Envrn).StartMonth, + Environment(Envrn).StartDay, + Environment(Envrn).EndMonth, + Environment(Envrn).EndDay, + Environment(Envrn).RollDayTypeOnRepeat, + true); } else { - ResetWeekDaysByMonth(Environment(Envrn).MonWeekDay, LeapYearAdd, Environment(Envrn).StartMonth, - Environment(Envrn).StartDay, Environment(Envrn).EndMonth, Environment(Envrn).EndDay, - Environment(Envrn).RollDayTypeOnRepeat, false); + ResetWeekDaysByMonth(Environment(Envrn).MonWeekDay, + LeapYearAdd, + Environment(Envrn).StartMonth, + Environment(Envrn).StartDay, + Environment(Envrn).EndMonth, + Environment(Envrn).EndDay, + Environment(Envrn).RollDayTypeOnRepeat, + false); } if (DaylightSavingIsActive) { SetDSTDateRanges(Environment(Envrn).MonWeekDay, DSTIndex); @@ -2784,10 +2839,40 @@ namespace WeatherManager { } if (ReadStatus == 0) { // Reduce ugly code - InterpretWeatherDataLine(WeatherDataLine, ErrorFound, WYear, WMonth, WDay, WHour, WMinute, DryBulb, DewPoint, RelHum, AtmPress, - ETHoriz, ETDirect, IRHoriz, GLBHoriz, DirectRad, DiffuseRad, GLBHorizIllum, DirectNrmIllum, - DiffuseHorizIllum, ZenLum, WindDir, WindSpeed, TotalSkyCover, OpaqueSkyCover, Visibility, CeilHeight, - PresWeathObs, PresWeathConds, PrecipWater, AerosolOptDepth, SnowDepth, DaysSinceLastSnow, Albedo, + InterpretWeatherDataLine(WeatherDataLine, + ErrorFound, + WYear, + WMonth, + WDay, + WHour, + WMinute, + DryBulb, + DewPoint, + RelHum, + AtmPress, + ETHoriz, + ETDirect, + IRHoriz, + GLBHoriz, + DirectRad, + DiffuseRad, + GLBHorizIllum, + DirectNrmIllum, + DiffuseHorizIllum, + ZenLum, + WindDir, + WindSpeed, + TotalSkyCover, + OpaqueSkyCover, + Visibility, + CeilHeight, + PresWeathObs, + PresWeathConds, + PrecipWater, + AerosolOptDepth, + SnowDepth, + DaysSinceLastSnow, + Albedo, LiquidPrecip); } else if (ReadStatus < 0) { if (NumRewinds > 0) { @@ -2801,10 +2886,40 @@ namespace WeatherManager { gio::read(WeatherFileUnitNumber, fmtA, flags) >> WeatherDataLine; ReadStatus = flags.ios(); } - InterpretWeatherDataLine(WeatherDataLine, ErrorFound, WYear, WMonth, WDay, WHour, WMinute, DryBulb, DewPoint, RelHum, - AtmPress, ETHoriz, ETDirect, IRHoriz, GLBHoriz, DirectRad, DiffuseRad, GLBHorizIllum, DirectNrmIllum, - DiffuseHorizIllum, ZenLum, WindDir, WindSpeed, TotalSkyCover, OpaqueSkyCover, Visibility, CeilHeight, - PresWeathObs, PresWeathConds, PrecipWater, AerosolOptDepth, SnowDepth, DaysSinceLastSnow, Albedo, + InterpretWeatherDataLine(WeatherDataLine, + ErrorFound, + WYear, + WMonth, + WDay, + WHour, + WMinute, + DryBulb, + DewPoint, + RelHum, + AtmPress, + ETHoriz, + ETDirect, + IRHoriz, + GLBHoriz, + DirectRad, + DiffuseRad, + GLBHorizIllum, + DirectNrmIllum, + DiffuseHorizIllum, + ZenLum, + WindDir, + WindSpeed, + TotalSkyCover, + OpaqueSkyCover, + Visibility, + CeilHeight, + PresWeathObs, + PresWeathConds, + PrecipWater, + AerosolOptDepth, + SnowDepth, + DaysSinceLastSnow, + Albedo, LiquidPrecip); } } @@ -2837,29 +2952,85 @@ namespace WeatherManager { // Do the range checks on the first set of fields -- no others. ErrorsFound = false; if (DryBulb >= 99.9) - inputProcessor->rangeCheck(ErrorsFound, "DryBulb Temperature", "WeatherFile", "Severe", ">= -90", (DryBulb >= -90.0), "<= 70", - (DryBulb <= 70.0), RoundSigDigits(DryBulb, 2), WeatherFileLocationTitle); + inputProcessor->rangeCheck(ErrorsFound, + "DryBulb Temperature", + "WeatherFile", + "Severe", + ">= -90", + (DryBulb >= -90.0), + "<= 70", + (DryBulb <= 70.0), + RoundSigDigits(DryBulb, 2), + WeatherFileLocationTitle); if (DewPoint < 99.9) - inputProcessor->rangeCheck(ErrorsFound, "DewPoint Temperature", "WeatherFile", "Severe", ">= -90", (DewPoint >= -90.0), - "<= 70", (DewPoint <= 70.0), RoundSigDigits(DewPoint, 2), WeatherFileLocationTitle); + inputProcessor->rangeCheck(ErrorsFound, + "DewPoint Temperature", + "WeatherFile", + "Severe", + ">= -90", + (DewPoint >= -90.0), + "<= 70", + (DewPoint <= 70.0), + RoundSigDigits(DewPoint, 2), + WeatherFileLocationTitle); if (RelHum < 999.0) - inputProcessor->rangeCheck(ErrorsFound, "Relative Humidity", "WeatherFile", "Severe", "> 0", (RelHum >= 0.0), "<= 110", - (RelHum <= 110.0), RoundSigDigits(RelHum, 0), WeatherFileLocationTitle); + inputProcessor->rangeCheck(ErrorsFound, + "Relative Humidity", + "WeatherFile", + "Severe", + "> 0", + (RelHum >= 0.0), + "<= 110", + (RelHum <= 110.0), + RoundSigDigits(RelHum, 0), + WeatherFileLocationTitle); if (AtmPress < 999999.0) - inputProcessor->rangeCheck(ErrorsFound, "Atmospheric Pressure", "WeatherFile", "Severe", "> 31000", (AtmPress > 31000.0), - "<=120000", (AtmPress <= 120000.0), RoundSigDigits(AtmPress, 0), WeatherFileLocationTitle); - if (DirectRad < 9999.0) - inputProcessor->rangeCheck(ErrorsFound, "Direct Radiation", "WeatherFile", "Severe", ">= 0", (DirectRad >= 0.0), _, _, _, + inputProcessor->rangeCheck(ErrorsFound, + "Atmospheric Pressure", + "WeatherFile", + "Severe", + "> 31000", + (AtmPress > 31000.0), + "<=120000", + (AtmPress <= 120000.0), + RoundSigDigits(AtmPress, 0), WeatherFileLocationTitle); + if (DirectRad < 9999.0) + inputProcessor->rangeCheck( + ErrorsFound, "Direct Radiation", "WeatherFile", "Severe", ">= 0", (DirectRad >= 0.0), _, _, _, WeatherFileLocationTitle); if (DiffuseRad < 9999.0) - inputProcessor->rangeCheck(ErrorsFound, "Diffuse Radiation", "WeatherFile", "Severe", ">= 0", (DiffuseRad >= 0.0), _, _, _, + inputProcessor->rangeCheck(ErrorsFound, + "Diffuse Radiation", + "WeatherFile", + "Severe", + ">= 0", + (DiffuseRad >= 0.0), + _, + _, + _, WeatherFileLocationTitle); if (WindDir < 999.0) - inputProcessor->rangeCheck(ErrorsFound, "Wind Direction", "WeatherFile", "Severe", ">=0", (WindDir >= 0.0), "<=360", - (WindDir <= 360.0), RoundSigDigits(WindDir, 0), WeatherFileLocationTitle); + inputProcessor->rangeCheck(ErrorsFound, + "Wind Direction", + "WeatherFile", + "Severe", + ">=0", + (WindDir >= 0.0), + "<=360", + (WindDir <= 360.0), + RoundSigDigits(WindDir, 0), + WeatherFileLocationTitle); if (WindSpeed < 999.0) - inputProcessor->rangeCheck(ErrorsFound, "Wind Speed", "WeatherFile", "Severe", ">=0", (WindSpeed >= 0.0), "<=40", - (WindSpeed <= 40.0), RoundSigDigits(WindSpeed, 2), WeatherFileLocationTitle); + inputProcessor->rangeCheck(ErrorsFound, + "Wind Speed", + "WeatherFile", + "Severe", + ">=0", + (WindSpeed >= 0.0), + "<=40", + (WindSpeed <= 40.0), + RoundSigDigits(WindSpeed, 2), + WeatherFileLocationTitle); if (ErrorsFound) { ShowSevereError("Out of Range errors found with initial day of WeatherFile"); } @@ -2961,10 +3132,40 @@ namespace WeatherManager { } } if (ReadStatus == 0) { - InterpretWeatherDataLine(WeatherDataLine, ErrorFound, WYear, WMonth, WDay, WHour, WMinute, DryBulb, DewPoint, RelHum, - AtmPress, ETHoriz, ETDirect, IRHoriz, GLBHoriz, DirectRad, DiffuseRad, GLBHorizIllum, DirectNrmIllum, - DiffuseHorizIllum, ZenLum, WindDir, WindSpeed, TotalSkyCover, OpaqueSkyCover, Visibility, CeilHeight, - PresWeathObs, PresWeathConds, PrecipWater, AerosolOptDepth, SnowDepth, DaysSinceLastSnow, Albedo, + InterpretWeatherDataLine(WeatherDataLine, + ErrorFound, + WYear, + WMonth, + WDay, + WHour, + WMinute, + DryBulb, + DewPoint, + RelHum, + AtmPress, + ETHoriz, + ETDirect, + IRHoriz, + GLBHoriz, + DirectRad, + DiffuseRad, + GLBHorizIllum, + DirectNrmIllum, + DiffuseHorizIllum, + ZenLum, + WindDir, + WindSpeed, + TotalSkyCover, + OpaqueSkyCover, + Visibility, + CeilHeight, + PresWeathObs, + PresWeathConds, + PrecipWater, + AerosolOptDepth, + SnowDepth, + DaysSinceLastSnow, + Albedo, LiquidPrecip); } else { // ReadStatus /=0 if (ReadStatus < 0 && NumDataPeriods == 1) { // Standard End-of-file, rewind and position to first day... @@ -2977,11 +3178,41 @@ namespace WeatherManager { ReadStatus = flags.ios(); } - InterpretWeatherDataLine(WeatherDataLine, ErrorFound, WYear, WMonth, WDay, WHour, WMinute, DryBulb, DewPoint, RelHum, - AtmPress, ETHoriz, ETDirect, IRHoriz, GLBHoriz, DirectRad, DiffuseRad, GLBHorizIllum, - DirectNrmIllum, DiffuseHorizIllum, ZenLum, WindDir, WindSpeed, TotalSkyCover, OpaqueSkyCover, - Visibility, CeilHeight, PresWeathObs, PresWeathConds, PrecipWater, AerosolOptDepth, - SnowDepth, DaysSinceLastSnow, Albedo, LiquidPrecip); + InterpretWeatherDataLine(WeatherDataLine, + ErrorFound, + WYear, + WMonth, + WDay, + WHour, + WMinute, + DryBulb, + DewPoint, + RelHum, + AtmPress, + ETHoriz, + ETDirect, + IRHoriz, + GLBHoriz, + DirectRad, + DiffuseRad, + GLBHorizIllum, + DirectNrmIllum, + DiffuseHorizIllum, + ZenLum, + WindDir, + WindSpeed, + TotalSkyCover, + OpaqueSkyCover, + Visibility, + CeilHeight, + PresWeathObs, + PresWeathConds, + PrecipWater, + AerosolOptDepth, + SnowDepth, + DaysSinceLastSnow, + Albedo, + LiquidPrecip); } else { BadRecord = RoundSigDigits(WYear) + '/' + RoundSigDigits(WMonth) + '/' + RoundSigDigits(WDay) + BlankString + RoundSigDigits(WHour) + ':' + RoundSigDigits(WMinute); @@ -3066,8 +3297,14 @@ namespace WeatherManager { TomorrowVariables.DayOfMonth = WDay; TomorrowVariables.DayOfYear = JulianDay(WMonth, WDay, LeapYearAdd); TomorrowVariables.DayOfYear_Schedule = JulianDay(WMonth, WDay, 1); - CalculateDailySolarCoeffs(TomorrowVariables.DayOfYear, A, B, C, AVSC, TomorrowVariables.EquationOfTime, - TomorrowVariables.SinSolarDeclinAngle, TomorrowVariables.CosSolarDeclinAngle); + CalculateDailySolarCoeffs(TomorrowVariables.DayOfYear, + A, + B, + C, + AVSC, + TomorrowVariables.EquationOfTime, + TomorrowVariables.SinSolarDeclinAngle, + TomorrowVariables.CosSolarDeclinAngle); if (CurDayOfWeek <= 7) { CurDayOfWeek = mod(CurDayOfWeek, 7) + 1; } @@ -3388,11 +3625,15 @@ namespace WeatherManager { auto const SELECT_CASE_var(WPSkyTemperature(Environment(Environ).WP_Type1).CalculationType); if (SELECT_CASE_var == WP_ScheduleValue) { - GetScheduleValuesForDay(WPSkyTemperature(Environment(Environ).WP_Type1).SchedulePtr, TomorrowSkyTemp, - TomorrowVariables.DayOfYear_Schedule, CurDayOfWeek); + GetScheduleValuesForDay(WPSkyTemperature(Environment(Environ).WP_Type1).SchedulePtr, + TomorrowSkyTemp, + TomorrowVariables.DayOfYear_Schedule, + CurDayOfWeek); } else if (SELECT_CASE_var == WP_DryBulbDelta) { - GetScheduleValuesForDay(WPSkyTemperature(Environment(Environ).WP_Type1).SchedulePtr, TomorrowSkyTemp, - TomorrowVariables.DayOfYear_Schedule, CurDayOfWeek); + GetScheduleValuesForDay(WPSkyTemperature(Environment(Environ).WP_Type1).SchedulePtr, + TomorrowSkyTemp, + TomorrowVariables.DayOfYear_Schedule, + CurDayOfWeek); for (Hour = 1; Hour <= 24; ++Hour) { for (TS = 1; TS <= NumOfTimeStepInHour; ++TS) { TomorrowSkyTemp(TS, Hour) = TomorrowOutDryBulbTemp(TS, Hour) - TomorrowSkyTemp(TS, Hour); @@ -3400,8 +3641,10 @@ namespace WeatherManager { } } else if (SELECT_CASE_var == WP_DewPointDelta) { - GetScheduleValuesForDay(WPSkyTemperature(Environment(Environ).WP_Type1).SchedulePtr, TomorrowSkyTemp, - TomorrowVariables.DayOfYear_Schedule, CurDayOfWeek); + GetScheduleValuesForDay(WPSkyTemperature(Environment(Environ).WP_Type1).SchedulePtr, + TomorrowSkyTemp, + TomorrowVariables.DayOfYear_Schedule, + CurDayOfWeek); for (Hour = 1; Hour <= 24; ++Hour) { for (TS = 1; TS <= NumOfTimeStepInHour; ++TS) { TomorrowSkyTemp(TS, Hour) = TomorrowOutDewPointTemp(TS, Hour) - TomorrowSkyTemp(TS, Hour); @@ -3993,8 +4236,14 @@ namespace WeatherManager { DesignDay(EnvrnNum).DaylightSavingIndex = DesDayInput(EnvrnNum).DSTIndicator; // Set up Solar parameters for day - CalculateDailySolarCoeffs(DesignDay(EnvrnNum).DayOfYear, A, B, C, AVSC, DesignDay(EnvrnNum).EquationOfTime, - DesignDay(EnvrnNum).SinSolarDeclinAngle, DesignDay(EnvrnNum).CosSolarDeclinAngle); + CalculateDailySolarCoeffs(DesignDay(EnvrnNum).DayOfYear, + A, + B, + C, + AVSC, + DesignDay(EnvrnNum).EquationOfTime, + DesignDay(EnvrnNum).SinSolarDeclinAngle, + DesignDay(EnvrnNum).CosSolarDeclinAngle); if (PrintDDHeader && DoWeatherInitReporting) { gio::write(OutputFileInits, EnvDDHdFormat); @@ -4153,8 +4402,8 @@ namespace WeatherManager { auto const SELECT_CASE_var(DesDayInput(EnvrnNum).HumIndType); if (SELECT_CASE_var == DDHumIndType_WetBulb) { - HumidityRatio = PsyWFnTdbTwbPb(DesDayInput(EnvrnNum).MaxDryBulb, DesDayInput(EnvrnNum).HumIndValue, DesDayInput(EnvrnNum).PressBarom, - RoutineNamePsyWFnTdbTwbPb); + HumidityRatio = PsyWFnTdbTwbPb( + DesDayInput(EnvrnNum).MaxDryBulb, DesDayInput(EnvrnNum).HumIndValue, DesDayInput(EnvrnNum).PressBarom, RoutineNamePsyWFnTdbTwbPb); ConstantHumidityRatio = true; } else if (SELECT_CASE_var == DDHumIndType_DewPoint) { @@ -4257,8 +4506,8 @@ namespace WeatherManager { TomorrowOutRelHum(TS, Hour) = PsyRhFnTdbWPb(TomorrowOutDryBulbTemp(TS, Hour), OutHumRat, DesDayInput(EnvrnNum).PressBarom, WeatherManager) * 100.0; } else { - HumidityRatio = PsyWFnTdbRhPb(TomorrowOutDryBulbTemp(TS, Hour), DDHumIndModifier(TS, Hour, EnvrnNum) / 100.0, - DesDayInput(EnvrnNum).PressBarom); + HumidityRatio = PsyWFnTdbRhPb( + TomorrowOutDryBulbTemp(TS, Hour), DDHumIndModifier(TS, Hour, EnvrnNum) / 100.0, DesDayInput(EnvrnNum).PressBarom); // TomorrowOutRelHum values set earlier TomorrowOutDewPointTemp(TS, Hour) = PsyTdpFnWPb(HumidityRatio, DesDayInput(EnvrnNum).PressBarom); } @@ -4314,8 +4563,11 @@ namespace WeatherManager { CurTime = double(Hour) + TS1TimeOffset; } - CalculateSunDirectionCosines(CurTime, DesignDay(EnvrnNum).EquationOfTime, DesignDay(EnvrnNum).SinSolarDeclinAngle, - DesignDay(EnvrnNum).CosSolarDeclinAngle, SUNCOS); + CalculateSunDirectionCosines(CurTime, + DesignDay(EnvrnNum).EquationOfTime, + DesignDay(EnvrnNum).SinSolarDeclinAngle, + DesignDay(EnvrnNum).CosSolarDeclinAngle, + SUNCOS); CosZenith = SUNCOS(3); if (CosZenith < SunIsUpValue) { BeamRad = 0.0; @@ -4696,22 +4948,41 @@ namespace WeatherManager { // SUBROUTINE PARAMETER DEFINITIONS: Real64 const DayCorrection(Pi * 2.0 / 366.0); - static Array1D const SineSolDeclCoef(9, {0.00561800, 0.0657911, -0.392779, 0.00064440, -0.00618495, -0.00010101, -0.00007951, - -0.00011691, - 0.00002096}); // Fitted coefficients of Fourier series | Sine of declination coefficients - static Array1D const EqOfTimeCoef(9, {0.00021971, -0.122649, 0.00762856, -0.156308, -0.0530028, -0.00388702, -0.00123978, -0.00270502, - -0.00167992}); // Fitted coefficients of Fourier Series | Equation of Time coefficients - static Array1D const ASHRAE_A_Coef(9, {1161.6685, 1.1554, 77.3575, -0.5359, -3.7622, 0.9875, -3.3924, -1.7445, - 1.1198}); // Fitted coefficients of Fourier Series | ASHRAE A Factor coefficients - // English (original) units: - // 368.49341,.366502,24.538624,-.169983,-1.193417, & - // .313261,-1.076093,-.543376,.355197 , & - - static Array1D const ASHRAE_B_Coef(9, {0.171631, -0.00400448, -0.0344923, 0.00000209, 0.00325428, -0.00085429, 0.00229562, 0.0009034, - -0.0011867}); // Fitted coefficients of Fourier Series | ASHRAE B Factor coefficients - static Array1D const ASHRAE_C_Coef(9, - {0.0905151, -0.00322522, -0.0407966, 0.000104164, 0.00745899, -0.00086461, 0.0013111, 0.000808275, - -0.00170515}); // Fitted coefficients of Fourier Series | ASHRAE C Factor coefficients + static Array1D const SineSolDeclCoef( + 9, {0.00561800, 0.0657911, -0.392779, 0.00064440, -0.00618495, -0.00010101, -0.00007951, -0.00011691, 0.00002096}); // Fitted coefficients + // of Fourier series | + // Sine of declination + // coefficients + static Array1D const EqOfTimeCoef( + 9, {0.00021971, -0.122649, 0.00762856, -0.156308, -0.0530028, -0.00388702, -0.00123978, -0.00270502, -0.00167992}); // Fitted coefficients + // of Fourier Series | + // Equation of Time + // coefficients + static Array1D const ASHRAE_A_Coef(9, + {1161.6685, + 1.1554, + 77.3575, + -0.5359, + -3.7622, + 0.9875, + -3.3924, + -1.7445, + 1.1198}); // Fitted coefficients of Fourier Series | ASHRAE A Factor coefficients + // English (original) units: + // 368.49341,.366502,24.538624,-.169983,-1.193417, & + // .313261,-1.076093,-.543376,.355197 , & + + static Array1D const ASHRAE_B_Coef( + 9, {0.171631, -0.00400448, -0.0344923, 0.00000209, 0.00325428, -0.00085429, 0.00229562, 0.0009034, -0.0011867}); // Fitted coefficients of + // Fourier Series | + // ASHRAE B Factor + // coefficients + static Array1D const ASHRAE_C_Coef( + 9, {0.0905151, -0.00322522, -0.0407966, 0.000104164, 0.00745899, -0.00086461, 0.0013111, 0.000808275, -0.00170515}); // Fitted + // coefficients of + // Fourier Series | + // ASHRAE C Factor + // coefficients // INTERFACE BLOCK SPECIFICATIONS: // na @@ -4994,8 +5265,15 @@ namespace WeatherManager { // List directed reads, as possible. // SUBROUTINE PARAMETER DEFINITIONS: - static Array1D_string const Header(8, {"LOCATION", "DESIGN CONDITIONS", "TYPICAL/EXTREME PERIODS", "GROUND TEMPERATURES", - "HOLIDAYS/DAYLIGHT SAVING", "COMMENTS 1", "COMMENTS 2", "DATA PERIODS"}); + static Array1D_string const Header(8, + {"LOCATION", + "DESIGN CONDITIONS", + "TYPICAL/EXTREME PERIODS", + "GROUND TEMPERATURES", + "HOLIDAYS/DAYLIGHT SAVING", + "COMMENTS 1", + "COMMENTS 2", + "DATA PERIODS"}); // SUBROUTINE LOCAL VARIABLE DECLARATIONS: std::string Line; @@ -5663,8 +5941,12 @@ namespace WeatherManager { static int findYearForWeekday(int const month, int const day, WeekDay const weekday) { - static std::map defaultYear{{WeekDay::Sunday, 2017}, {WeekDay::Monday, 2007}, {WeekDay::Tuesday, 2013}, - {WeekDay::Wednesday, 2014}, {WeekDay::Thursday, 2015}, {WeekDay::Friday, 2010}, + static std::map defaultYear{{WeekDay::Sunday, 2017}, + {WeekDay::Monday, 2007}, + {WeekDay::Tuesday, 2013}, + {WeekDay::Wednesday, 2014}, + {WeekDay::Thursday, 2015}, + {WeekDay::Friday, 2010}, {WeekDay::Saturday, 2011}}; int rem = calculateDayOfYear(month, day) % 7; WeekDay firstWeekDay = static_cast(static_cast(weekday) - rem + 1); @@ -5673,8 +5955,12 @@ namespace WeatherManager { static int findLeapYearForWeekday(int const month, int const day, WeekDay const weekday) { - static std::map defaultYear{{WeekDay::Sunday, 2012}, {WeekDay::Monday, 1996}, {WeekDay::Tuesday, 2008}, - {WeekDay::Wednesday, 1992}, {WeekDay::Thursday, 2004}, {WeekDay::Friday, 2016}, + static std::map defaultYear{{WeekDay::Sunday, 2012}, + {WeekDay::Monday, 1996}, + {WeekDay::Tuesday, 2008}, + {WeekDay::Wednesday, 1992}, + {WeekDay::Thursday, 2004}, + {WeekDay::Friday, 2016}, {WeekDay::Saturday, 2000}}; int rem = calculateDayOfYear(month, day, true) % 7; WeekDay firstWeekDay = static_cast(static_cast(weekday) - rem + 1); @@ -5721,13 +6007,22 @@ namespace WeatherManager { // LocalLeapYearAdd = 1; //} for (Loop = 1; Loop <= TotRunPers; ++Loop) { - inputProcessor->getObjectItem(cCurrentModuleObject, Loop, cAlphaArgs, NumAlpha, rNumericArgs, NumNumeric, IOStat, lNumericFieldBlanks, - lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); + inputProcessor->getObjectItem(cCurrentModuleObject, + Loop, + cAlphaArgs, + NumAlpha, + rNumericArgs, + NumNumeric, + IOStat, + lNumericFieldBlanks, + lAlphaFieldBlanks, + cAlphaFieldNames, + cNumericFieldNames); // A1, \field Name if (!lAlphaFieldBlanks(1)) { - GlobalNames::VerifyUniqueInterObjectName(RunPeriodInputUniqueNames, cAlphaArgs(1), cCurrentModuleObject, cAlphaFieldNames(1), - ErrorsFound); + GlobalNames::VerifyUniqueInterObjectName( + RunPeriodInputUniqueNames, cAlphaArgs(1), cCurrentModuleObject, cAlphaFieldNames(1), ErrorsFound); } ++Count; @@ -5977,8 +6272,8 @@ namespace WeatherManager { // calculate the annual start and end days from the user inputted month and day RunPeriodInput(Loop).monWeekDay = 0; if (RunPeriodInput(Loop).dayOfWeek != 0 && !ErrorsFound) { - SetupWeekDaysByMonth(RunPeriodInput(Loop).startMonth, RunPeriodInput(Loop).startDay, RunPeriodInput(Loop).dayOfWeek, - RunPeriodInput(Loop).monWeekDay); + SetupWeekDaysByMonth( + RunPeriodInput(Loop).startMonth, RunPeriodInput(Loop).startDay, RunPeriodInput(Loop).dayOfWeek, RunPeriodInput(Loop).monWeekDay); } } @@ -5993,8 +6288,8 @@ namespace WeatherManager { RunPeriodInput(1).endJulianDate = JulianDay(RunPeriodInput(1).endMonth, RunPeriodInput(1).endDay, LeapYearAdd); RunPeriodInput(1).monWeekDay = 0; if (RunPeriodInput(1).dayOfWeek != 0 && !ErrorsFound) { - SetupWeekDaysByMonth(RunPeriodInput(1).startMonth, RunPeriodInput(1).startDay, RunPeriodInput(1).dayOfWeek, - RunPeriodInput(1).monWeekDay); + SetupWeekDaysByMonth( + RunPeriodInput(1).startMonth, RunPeriodInput(1).startDay, RunPeriodInput(1).dayOfWeek, RunPeriodInput(1).monWeekDay); } } else if (TotRunPers > 1 && FullAnnualRun) { TotRunPers = 1; @@ -6021,8 +6316,19 @@ namespace WeatherManager { using namespace DataIPShortCuts; // SUBROUTINE PARAMETER DEFINITIONS: - static Array1D_string const ValidNames(12, {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "HOLIDAY", - "SUMMERDESIGNDAY", "WINTERDESIGNDAY", "CUSTOMDAY1", "CUSTOMDAY2"}); + static Array1D_string const ValidNames(12, + {"SUNDAY", + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "HOLIDAY", + "SUMMERDESIGNDAY", + "WINTERDESIGNDAY", + "CUSTOMDAY1", + "CUSTOMDAY2"}); // SUBROUTINE LOCAL VARIABLE DECLARATIONS: int NumAlphas; // Number of alphas being input @@ -6047,10 +6353,19 @@ namespace WeatherManager { Count = 0; cCurrentModuleObject = "SizingPeriod:WeatherFileDays"; for (Loop = 1; Loop <= RPD1; ++Loop) { - inputProcessor->getObjectItem(cCurrentModuleObject, Loop, cAlphaArgs, NumAlphas, rNumericArgs, NumNumerics, IOStat, lNumericFieldBlanks, - lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - GlobalNames::VerifyUniqueInterObjectName(RunPeriodDesignInputUniqueNames, cAlphaArgs(1), cCurrentModuleObject, cAlphaFieldNames(1), - ErrorsFound); + inputProcessor->getObjectItem(cCurrentModuleObject, + Loop, + cAlphaArgs, + NumAlphas, + rNumericArgs, + NumNumerics, + IOStat, + lNumericFieldBlanks, + lAlphaFieldBlanks, + cAlphaFieldNames, + cNumericFieldNames); + GlobalNames::VerifyUniqueInterObjectName( + RunPeriodDesignInputUniqueNames, cAlphaArgs(1), cCurrentModuleObject, cAlphaFieldNames(1), ErrorsFound); ++Count; RunPeriodDesignInput(Count).title = cAlphaArgs(1); RunPeriodDesignInput(Count).periodType = "User Selected WeatherFile RunPeriod (Design)"; @@ -6137,17 +6452,28 @@ namespace WeatherManager { } RunPeriodDesignInput(Count).monWeekDay = 0; if (RunPeriodDesignInput(1).dayOfWeek != 0 && !ErrorsFound) { - SetupWeekDaysByMonth(RunPeriodDesignInput(1).startMonth, RunPeriodDesignInput(1).startDay, RunPeriodDesignInput(1).dayOfWeek, + SetupWeekDaysByMonth(RunPeriodDesignInput(1).startMonth, + RunPeriodDesignInput(1).startDay, + RunPeriodDesignInput(1).dayOfWeek, RunPeriodDesignInput(1).monWeekDay); } } cCurrentModuleObject = "SizingPeriod:WeatherFileConditionType"; for (Loop = 1; Loop <= RPD2; ++Loop) { - inputProcessor->getObjectItem(cCurrentModuleObject, Loop, cAlphaArgs, NumAlphas, rNumericArgs, NumNumerics, IOStat, lNumericFieldBlanks, - lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); - GlobalNames::VerifyUniqueInterObjectName(RunPeriodDesignInputUniqueNames, cAlphaArgs(1), cCurrentModuleObject, cAlphaFieldNames(1), - ErrorsFound); + inputProcessor->getObjectItem(cCurrentModuleObject, + Loop, + cAlphaArgs, + NumAlphas, + rNumericArgs, + NumNumerics, + IOStat, + lNumericFieldBlanks, + lAlphaFieldBlanks, + cAlphaFieldNames, + cNumericFieldNames); + GlobalNames::VerifyUniqueInterObjectName( + RunPeriodDesignInputUniqueNames, cAlphaArgs(1), cCurrentModuleObject, cAlphaFieldNames(1), ErrorsFound); ++Count; RunPeriodDesignInput(Count).title = cAlphaArgs(1); RunPeriodDesignInput(Count).periodType = "User Selected WeatherFile Typical/Extreme Period (Design)=" + cAlphaArgs(2); @@ -6232,7 +6558,9 @@ namespace WeatherManager { } RunPeriodDesignInput(1).monWeekDay = 0; if (RunPeriodDesignInput(1).dayOfWeek != 0 && !ErrorsFound) { - SetupWeekDaysByMonth(RunPeriodDesignInput(1).startMonth, RunPeriodDesignInput(1).startDay, RunPeriodDesignInput(1).dayOfWeek, + SetupWeekDaysByMonth(RunPeriodDesignInput(1).startMonth, + RunPeriodDesignInput(1).startDay, + RunPeriodDesignInput(1).dayOfWeek, RunPeriodDesignInput(1).monWeekDay); } } @@ -6473,8 +6801,17 @@ namespace WeatherManager { NumFound = inputProcessor->getNumObjectsFound(cCurrentModuleObject); if (NumFound == 1) { - inputProcessor->getObjectItem(cCurrentModuleObject, 1, cAlphaArgs, NumAlphas, rNumericArgs, NumNumbers, IOStat, lNumericFieldBlanks, - lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); + inputProcessor->getObjectItem(cCurrentModuleObject, + 1, + cAlphaArgs, + NumAlphas, + rNumericArgs, + NumNumbers, + IOStat, + lNumericFieldBlanks, + lAlphaFieldBlanks, + cAlphaFieldNames, + cNumericFieldNames); if (NumAlphas != 2) { ShowSevereError(cCurrentModuleObject + ": Insufficient fields, must have Start AND End Dates"); ErrorsFound = true; @@ -6553,11 +6890,27 @@ namespace WeatherManager { using namespace OutputReportPredefined; // SUBROUTINE PARAMETER DEFINITIONS: - static Array1D_string const ValidNames(12, {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "HOLIDAY", - "SUMMERDESIGNDAY", "WINTERDESIGNDAY", "CUSTOMDAY1", "CUSTOMDAY2"}); + static Array1D_string const ValidNames(12, + {"SUNDAY", + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "HOLIDAY", + "SUMMERDESIGNDAY", + "WINTERDESIGNDAY", + "CUSTOMDAY1", + "CUSTOMDAY2"}); static Array1D_string const HumidityIndicatingType({0, DDHumIndType_Count - 1}, - {"Wetbulb [C]", "Dewpoint [C]", "Enthalpy [J/kg]", "Humidity Ratio []", "Schedule []", - "WetBulbProfileDefaultMultipliers []", "WetBulbProfileDifferenceSchedule []", + {"Wetbulb [C]", + "Dewpoint [C]", + "Enthalpy [J/kg]", + "Humidity Ratio []", + "Schedule []", + "WetBulbProfileDefaultMultipliers []", + "WetBulbProfileDifferenceSchedule []", "WetBulbProfileMultiplierSchedule []"}); // REAL(r64), PARAMETER, DIMENSION(24) :: DefaultTempRangeMult=(/ .87d0,.92d0,.96d0,.99d0,1.0d0,.98d0,.93d0, & @@ -6628,8 +6981,17 @@ namespace WeatherManager { // Call Input Get routine to retrieve design day data MaxDryBulbEntered = false; PressureEntered = false; - inputProcessor->getObjectItem(cCurrentModuleObject, DDLoop, cAlphaArgs, NumAlpha, rNumericArgs, NumNumerics, IOStat, lNumericFieldBlanks, - lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); + inputProcessor->getObjectItem(cCurrentModuleObject, + DDLoop, + cAlphaArgs, + NumAlpha, + rNumericArgs, + NumNumerics, + IOStat, + lNumericFieldBlanks, + lAlphaFieldBlanks, + cAlphaFieldNames, + cNumericFieldNames); UtilityRoutines::IsNameEmpty(cAlphaArgs(1), cCurrentModuleObject, ErrorsFound); DesDayInput(EnvrnNum).Title = cAlphaArgs(1); // Environment name Environment(EnvrnNum).Title = DesDayInput(EnvrnNum).Title; @@ -6731,8 +7093,16 @@ namespace WeatherManager { if (DesDayInput(EnvrnNum).DBTempRangeType != DDDBRangeType_Difference && DesDayInput(EnvrnNum).DBTempRangeType != DDDBRangeType_Profile) { testval = DesDayInput(EnvrnNum).MaxDryBulb - DesDayInput(EnvrnNum).DailyDBRange; errFlag = false; - inputProcessor->rangeCheck(errFlag, cAlphaFieldNames(3), cCurrentModuleObject, "Severe", ">= -90", (testval >= -90.0), "<= 70", - (testval <= 70.0), _, DesDayInput(EnvrnNum).Title); + inputProcessor->rangeCheck(errFlag, + cAlphaFieldNames(3), + cCurrentModuleObject, + "Severe", + ">= -90", + (testval >= -90.0), + "<= 70", + (testval <= 70.0), + _, + DesDayInput(EnvrnNum).Title); if (errFlag) { ErrorsFound = true; } @@ -6753,14 +7123,22 @@ namespace WeatherManager { ++NumSPSiteScheduleNamePtrs; SPSiteScheduleNamePtr(NumSPSiteScheduleNamePtrs) = DesDayInput(EnvrnNum).TempRangeSchPtr; SPSiteScheduleUnits(NumSPSiteScheduleNamePtrs) = units; - SetupOutputVariable("Sizing Period Site Drybulb Temperature Range Modifier Schedule Value", unitType, - SPSiteDryBulbRangeModScheduleValue(EnvrnNum), "Zone", "Average", cAlphaArgs(4)); + SetupOutputVariable("Sizing Period Site Drybulb Temperature Range Modifier Schedule Value", + unitType, + SPSiteDryBulbRangeModScheduleValue(EnvrnNum), + "Zone", + "Average", + cAlphaArgs(4)); } else if (SPSiteScheduleUnits(schPtr) != units) { ++NumSPSiteScheduleNamePtrs; SPSiteScheduleNamePtr(NumSPSiteScheduleNamePtrs) = DesDayInput(EnvrnNum).TempRangeSchPtr; SPSiteScheduleUnits(NumSPSiteScheduleNamePtrs) = units; - SetupOutputVariable("Sizing Period Site Drybulb Temperature Range Modifier Schedule Value", unitType, - SPSiteDryBulbRangeModScheduleValue(EnvrnNum), "Zone", "Average", cAlphaArgs(4)); + SetupOutputVariable("Sizing Period Site Drybulb Temperature Range Modifier Schedule Value", + unitType, + SPSiteDryBulbRangeModScheduleValue(EnvrnNum), + "Zone", + "Average", + cAlphaArgs(4)); } if (cAlphaArgs(3) == "MultiplierSchedule") { if (!CheckDayScheduleValueMinMax(DesDayInput(EnvrnNum).TempRangeSchPtr, 0.0, ">=", 1.0, "<=")) { @@ -6791,8 +7169,16 @@ namespace WeatherManager { testval = maxval(DDDBRngModifier(_, _, EnvrnNum)); testval = DesDayInput(EnvrnNum).MaxDryBulb - testval; errFlag = false; - inputProcessor->rangeCheck(errFlag, cAlphaFieldNames(4), cCurrentModuleObject, "Severe", ">= -90", (testval >= -90.0), - "<= 70", (testval <= 70.0), _, DesDayInput(EnvrnNum).Title); + inputProcessor->rangeCheck(errFlag, + cAlphaFieldNames(4), + cCurrentModuleObject, + "Severe", + ">= -90", + (testval >= -90.0), + "<= 70", + (testval <= 70.0), + _, + DesDayInput(EnvrnNum).Title); if (errFlag) { ErrorsFound = true; } @@ -6830,8 +7216,15 @@ namespace WeatherManager { } errFlag = false; DesDayInput(EnvrnNum).HumIndType = DDHumIndType_WetBulb; - inputProcessor->rangeCheck(errFlag, cAlphaFieldNames(5) + " - Wet-Bulb", cCurrentModuleObject, "Severe", ">= -90", - (DesDayInput(EnvrnNum).HumIndValue >= -90.0), "<= 70", (DesDayInput(EnvrnNum).HumIndValue <= 70.0), _, + inputProcessor->rangeCheck(errFlag, + cAlphaFieldNames(5) + " - Wet-Bulb", + cCurrentModuleObject, + "Severe", + ">= -90", + (DesDayInput(EnvrnNum).HumIndValue >= -90.0), + "<= 70", + (DesDayInput(EnvrnNum).HumIndValue <= 70.0), + _, DesDayInput(EnvrnNum).Title); if (errFlag) { // CALL ShowContinueError(TRIM(cCurrentModuleObject)//': Occured in '//TRIM(DesDayInput(EnvrnNum)%Title)) @@ -6849,8 +7242,15 @@ namespace WeatherManager { } errFlag = false; DesDayInput(EnvrnNum).HumIndType = DDHumIndType_DewPoint; - inputProcessor->rangeCheck(errFlag, cAlphaFieldNames(5) + " - Dew-Point", cCurrentModuleObject, "Severe", ">= -90", - (DesDayInput(EnvrnNum).HumIndValue >= -90.0), "<= 70", (DesDayInput(EnvrnNum).HumIndValue <= 70.0), _, + inputProcessor->rangeCheck(errFlag, + cAlphaFieldNames(5) + " - Dew-Point", + cCurrentModuleObject, + "Severe", + ">= -90", + (DesDayInput(EnvrnNum).HumIndValue >= -90.0), + "<= 70", + (DesDayInput(EnvrnNum).HumIndValue <= 70.0), + _, DesDayInput(EnvrnNum).Title); if (errFlag) { ErrorsFound = true; @@ -6868,8 +7268,15 @@ namespace WeatherManager { } errFlag = false; DesDayInput(EnvrnNum).HumIndType = DDHumIndType_HumRatio; - inputProcessor->rangeCheck(errFlag, cAlphaFieldNames(5) + " - Humidity-Ratio", cCurrentModuleObject, "Severe", ">= 0", - (DesDayInput(EnvrnNum).HumIndValue >= 0.0), "<= .03", (DesDayInput(EnvrnNum).HumIndValue <= 0.03), _, + inputProcessor->rangeCheck(errFlag, + cAlphaFieldNames(5) + " - Humidity-Ratio", + cCurrentModuleObject, + "Severe", + ">= 0", + (DesDayInput(EnvrnNum).HumIndValue >= 0.0), + "<= .03", + (DesDayInput(EnvrnNum).HumIndValue <= 0.03), + _, DesDayInput(EnvrnNum).Title); if (errFlag) { ErrorsFound = true; @@ -6887,9 +7294,16 @@ namespace WeatherManager { } errFlag = false; DesDayInput(EnvrnNum).HumIndType = DDHumIndType_Enthalpy; - inputProcessor->rangeCheck(errFlag, cAlphaFieldNames(5) + " - Enthalpy", "SizingPeriod:DesignDay", "Severe", ">= 0.0", - (DesDayInput(EnvrnNum).HumIndValue >= 0.0), "<= 130000", (DesDayInput(EnvrnNum).HumIndValue <= 130000.0), - _, DesDayInput(EnvrnNum).Title); + inputProcessor->rangeCheck(errFlag, + cAlphaFieldNames(5) + " - Enthalpy", + "SizingPeriod:DesignDay", + "Severe", + ">= 0.0", + (DesDayInput(EnvrnNum).HumIndValue >= 0.0), + "<= 130000", + (DesDayInput(EnvrnNum).HumIndValue <= 130000.0), + _, + DesDayInput(EnvrnNum).Title); if (errFlag) { ErrorsFound = true; } @@ -6969,14 +7383,22 @@ namespace WeatherManager { ++NumSPSiteScheduleNamePtrs; SPSiteScheduleNamePtr(NumSPSiteScheduleNamePtrs) = DesDayInput(EnvrnNum).HumIndSchPtr; SPSiteScheduleUnits(NumSPSiteScheduleNamePtrs) = units; - SetupOutputVariable("Sizing Period Site Humidity Condition Schedule Value", unitType, - SPSiteHumidityConditionScheduleValue(EnvrnNum), "Zone", "Average", cAlphaArgs(6)); + SetupOutputVariable("Sizing Period Site Humidity Condition Schedule Value", + unitType, + SPSiteHumidityConditionScheduleValue(EnvrnNum), + "Zone", + "Average", + cAlphaArgs(6)); } else if (SPSiteScheduleUnits(schPtr) != units) { ++NumSPSiteScheduleNamePtrs; SPSiteScheduleNamePtr(NumSPSiteScheduleNamePtrs) = DesDayInput(EnvrnNum).HumIndSchPtr; SPSiteScheduleUnits(NumSPSiteScheduleNamePtrs) = units; - SetupOutputVariable("Sizing Period Site Humidity Condition Schedule Value", unitType, - SPSiteHumidityConditionScheduleValue(EnvrnNum), "Zone", "Average", cAlphaArgs(6)); + SetupOutputVariable("Sizing Period Site Humidity Condition Schedule Value", + unitType, + SPSiteHumidityConditionScheduleValue(EnvrnNum), + "Zone", + "Average", + cAlphaArgs(6)); } { @@ -7080,14 +7502,22 @@ namespace WeatherManager { ++NumSPSiteScheduleNamePtrs; SPSiteScheduleNamePtr(NumSPSiteScheduleNamePtrs) = DesDayInput(EnvrnNum).BeamSolarSchPtr; SPSiteScheduleUnits(NumSPSiteScheduleNamePtrs) = units; - SetupOutputVariable("Sizing Period Site Beam Solar Schedule Value", unitType, SPSiteBeamSolarScheduleValue(EnvrnNum), - "Zone", "Average", cAlphaArgs(11)); + SetupOutputVariable("Sizing Period Site Beam Solar Schedule Value", + unitType, + SPSiteBeamSolarScheduleValue(EnvrnNum), + "Zone", + "Average", + cAlphaArgs(11)); } else if (SPSiteScheduleUnits(schPtr) != units) { ++NumSPSiteScheduleNamePtrs; SPSiteScheduleNamePtr(NumSPSiteScheduleNamePtrs) = DesDayInput(EnvrnNum).BeamSolarSchPtr; SPSiteScheduleUnits(NumSPSiteScheduleNamePtrs) = units; - SetupOutputVariable("Sizing Period Site Beam Solar Schedule Value", unitType, SPSiteBeamSolarScheduleValue(EnvrnNum), - "Zone", "Average", cAlphaArgs(11)); + SetupOutputVariable("Sizing Period Site Beam Solar Schedule Value", + unitType, + SPSiteBeamSolarScheduleValue(EnvrnNum), + "Zone", + "Average", + cAlphaArgs(11)); } if (!CheckDayScheduleValueMinMax(DesDayInput(EnvrnNum).BeamSolarSchPtr, 0.0, ">=")) { ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); @@ -7118,14 +7548,22 @@ namespace WeatherManager { ++NumSPSiteScheduleNamePtrs; SPSiteScheduleNamePtr(NumSPSiteScheduleNamePtrs) = DesDayInput(EnvrnNum).DiffuseSolarSchPtr; SPSiteScheduleUnits(NumSPSiteScheduleNamePtrs) = units; - SetupOutputVariable("Sizing Period Site Diffuse Solar Schedule Value", unitType, - SPSiteDiffuseSolarScheduleValue(EnvrnNum), "Zone", "Average", cAlphaArgs(12)); + SetupOutputVariable("Sizing Period Site Diffuse Solar Schedule Value", + unitType, + SPSiteDiffuseSolarScheduleValue(EnvrnNum), + "Zone", + "Average", + cAlphaArgs(12)); } else if (SPSiteScheduleUnits(schPtr) != units) { ++NumSPSiteScheduleNamePtrs; SPSiteScheduleNamePtr(NumSPSiteScheduleNamePtrs) = DesDayInput(EnvrnNum).DiffuseSolarSchPtr; SPSiteScheduleUnits(NumSPSiteScheduleNamePtrs) = units; - SetupOutputVariable("Sizing Period Site Diffuse Solar Schedule Value", unitType, - SPSiteDiffuseSolarScheduleValue(EnvrnNum), "Zone", "Average", cAlphaArgs(12)); + SetupOutputVariable("Sizing Period Site Diffuse Solar Schedule Value", + unitType, + SPSiteDiffuseSolarScheduleValue(EnvrnNum), + "Zone", + "Average", + cAlphaArgs(12)); } if (!CheckDayScheduleValueMinMax(DesDayInput(EnvrnNum).DiffuseSolarSchPtr, 0.0, ">=")) { ShowSevereError(cCurrentModuleObject + "=\"" + DesDayInput(EnvrnNum).Title + "\", invalid data."); @@ -7347,8 +7785,17 @@ namespace WeatherManager { for (Item = 1; Item <= NumWPSkyTemperatures; ++Item) { MultipleEnvironments = false; - inputProcessor->getObjectItem(cCurrentModuleObject, Item, cAlphaArgs, NumAlpha, rNumericArgs, NumNumerics, IOStat, lNumericFieldBlanks, - lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); + inputProcessor->getObjectItem(cCurrentModuleObject, + Item, + cAlphaArgs, + NumAlpha, + rNumericArgs, + NumNumerics, + IOStat, + lNumericFieldBlanks, + lAlphaFieldBlanks, + cAlphaFieldNames, + cNumericFieldNames); { auto const SELECT_CASE_var(cAlphaArgs(1)); @@ -7459,14 +7906,22 @@ namespace WeatherManager { ++NumSPSiteScheduleNamePtrs; SPSiteScheduleNamePtr(NumSPSiteScheduleNamePtrs) = Found; SPSiteScheduleUnits(NumSPSiteScheduleNamePtrs) = units; - SetupOutputVariable("Sizing Period Site Sky Temperature Schedule Value", unitType, - SPSiteSkyTemperatureScheduleValue(envFound), "Zone", "Average", cAlphaArgs(3)); + SetupOutputVariable("Sizing Period Site Sky Temperature Schedule Value", + unitType, + SPSiteSkyTemperatureScheduleValue(envFound), + "Zone", + "Average", + cAlphaArgs(3)); } else if (SPSiteScheduleUnits(schPtr) != units) { ++NumSPSiteScheduleNamePtrs; SPSiteScheduleNamePtr(NumSPSiteScheduleNamePtrs) = Found; SPSiteScheduleUnits(NumSPSiteScheduleNamePtrs) = units; - SetupOutputVariable("Sizing Period Site Sky Temperature Schedule Value", unitType, - SPSiteSkyTemperatureScheduleValue(envFound), "Zone", "Average", cAlphaArgs(3)); + SetupOutputVariable("Sizing Period Site Sky Temperature Schedule Value", + unitType, + SPSiteSkyTemperatureScheduleValue(envFound), + "Zone", + "Average", + cAlphaArgs(3)); } WPSkyTemperature(Item).IsSchedule = true; WPSkyTemperature(Item).SchedulePtr = Found; @@ -7692,8 +8147,17 @@ namespace WeatherManager { NumObjects = inputProcessor->getNumObjectsFound(cCurrentModuleObject); if (NumObjects == 1) { - inputProcessor->getObjectItem(cCurrentModuleObject, 1, AlphArray, NumAlphas, NumArray, NumNums, IOStat, lNumericFieldBlanks, - lAlphaFieldBlanks, cAlphaFieldNames, cNumericFieldNames); + inputProcessor->getObjectItem(cCurrentModuleObject, + 1, + AlphArray, + NumAlphas, + NumArray, + NumNums, + IOStat, + lNumericFieldBlanks, + lAlphaFieldBlanks, + cAlphaFieldNames, + cNumericFieldNames); if (UtilityRoutines::SameString(AlphArray(1), "Schedule")) { WaterMainsTempsMethod = ScheduleMethod; @@ -7982,8 +8446,19 @@ namespace WeatherManager { static Array1D const BDirLumEff(8, {-4.55, -3.46, -4.90, -5.84, -3.97, -1.25, 0.77, 1.58}); static Array1D const CDirLumEff(8, {-2.98, -1.21, -1.71, -1.99, -1.75, -1.51, -1.26, -1.10}); static Array1D const DDirLumEff(8, {117.12, 12.38, -8.81, -4.56, -6.16, -26.73, -34.44, -8.29}); - static Array1D const ExtraDirNormIll(12, {131153.0, 130613.0, 128992.0, 126816.0, 124731.0, 123240.0, 122652.0, 123120.0, 124576.0, - 126658.0, 128814.0, 130471.0}); // Monthly exterrestrial direct normal illuminance (lum/m2) + static Array1D const ExtraDirNormIll(12, + {131153.0, + 130613.0, + 128992.0, + 126816.0, + 124731.0, + 123240.0, + 122652.0, + 123120.0, + 124576.0, + 126658.0, + 128814.0, + 130471.0}); // Monthly exterrestrial direct normal illuminance (lum/m2) // INTERFACE BLOCK SPECIFICATIONS: // na @@ -8043,8 +8518,9 @@ namespace WeatherManager { if (SkyBrightness <= 0.0) { DirLumEff = 0.0; } else { - DirLumEff = max(0.0, ADirLumEff(ISkyClearness) + BDirLumEff(ISkyClearness) * AtmosMoisture + - CDirLumEff(ISkyClearness) * std::exp(5.73 * SunZenith - 5.0) + DDirLumEff(ISkyClearness) * SkyBrightness); + DirLumEff = max(0.0, + ADirLumEff(ISkyClearness) + BDirLumEff(ISkyClearness) * AtmosMoisture + + CDirLumEff(ISkyClearness) * std::exp(5.73 * SunZenith - 5.0) + DDirLumEff(ISkyClearness) * SkyBrightness); } } @@ -8796,16 +9272,24 @@ namespace WeatherManager { (365 - DataPeriods(CurCount).DataStJDay + 1) + (DataPeriods(CurCount).DataEnJDay - 1 + 1); } } else { // weather file has actual year(s) - JGDate(GregorianToJulian, DataPeriods(CurCount).DataStJDay, DataPeriods(CurCount).StYear, - DataPeriods(CurCount).StMon, DataPeriods(CurCount).StDay); - JGDate(GregorianToJulian, DataPeriods(CurCount).DataEnJDay, DataPeriods(CurCount).EnYear, - DataPeriods(CurCount).EnMon, DataPeriods(CurCount).EnDay); + JGDate(GregorianToJulian, + DataPeriods(CurCount).DataStJDay, + DataPeriods(CurCount).StYear, + DataPeriods(CurCount).StMon, + DataPeriods(CurCount).StDay); + JGDate(GregorianToJulian, + DataPeriods(CurCount).DataEnJDay, + DataPeriods(CurCount).EnYear, + DataPeriods(CurCount).EnMon, + DataPeriods(CurCount).EnDay); DataPeriods(CurCount).NumDays = DataPeriods(CurCount).DataEnJDay - DataPeriods(CurCount).DataStJDay + 1; } // Have processed the last item for this, can set up Weekdays for months DataPeriods(CurCount).MonWeekDay = 0; if (!ErrorsFound) { - SetupWeekDaysByMonth(DataPeriods(CurCount).StMon, DataPeriods(CurCount).StDay, DataPeriods(CurCount).WeekDay, + SetupWeekDaysByMonth(DataPeriods(CurCount).StMon, + DataPeriods(CurCount).StDay, + DataPeriods(CurCount).WeekDay, DataPeriods(CurCount).MonWeekDay); } } From 5b33f715583a2465d23a246b0d297b75228d990f Mon Sep 17 00:00:00 2001 From: Edwin Lee Date: Wed, 11 Jul 2018 15:11:57 -0500 Subject: [PATCH 21/47] Apply clang format to weather manager and external interface --- src/EnergyPlus/ExternalInterface.cc | 255 +++++++++++++++++++++------- src/EnergyPlus/WeatherManager.cc | 19 +-- 2 files changed, 196 insertions(+), 78 deletions(-) diff --git a/src/EnergyPlus/ExternalInterface.cc b/src/EnergyPlus/ExternalInterface.cc index db3d9773b17..0e854654d0c 100644 --- a/src/EnergyPlus/ExternalInterface.cc +++ b/src/EnergyPlus/ExternalInterface.cc @@ -177,8 +177,8 @@ namespace ExternalInterface { // Using/Aliasing using DataGlobals::KindOfSim; - using DataGlobals::WarmupFlag; using DataGlobals::ksRunPeriodWeather; + using DataGlobals::WarmupFlag; // SUBROUTINE LOCAL VARIABLE DECLARATIONS: static bool GetInputFlag(true); // First time, input is "gotten" @@ -248,8 +248,8 @@ namespace ExternalInterface { NumExternalInterfaces = inputProcessor->getNumObjectsFound(cCurrentModuleObject); for (Loop = 1; Loop <= NumExternalInterfaces; ++Loop) { // This loop determines whether the external interface is for FMU or BCVTB - inputProcessor->getObjectItem(cCurrentModuleObject, Loop, cAlphaArgs, NumAlphas, rNumericArgs, NumNumbers, IOStatus, _, _, - cAlphaFieldNames, cNumericFieldNames); + inputProcessor->getObjectItem( + cCurrentModuleObject, Loop, cAlphaArgs, NumAlphas, rNumericArgs, NumNumbers, IOStatus, _, _, cAlphaFieldNames, cNumericFieldNames); if (UtilityRoutines::SameString(cAlphaArgs(1), "PtolemyServer")) { // The BCVTB interface is activated. ++NumExternalInterfacesBCVTB; } else if (UtilityRoutines::SameString(cAlphaArgs(1), @@ -556,11 +556,27 @@ namespace ExternalInterface { // now make the library call if (haveExternalInterfaceBCVTB) { - retVal = getepvariables(simCfgFilNam.c_str(), &xmlStrOutTypArr[0], &xmlStrOutArr[0], &nOutVal, xmlStrInKey.c_str(), &nInKeys, - &xmlStrInArr[0], &nInpVar, inpVarTypes.data(), &lenXmlStr); + retVal = getepvariables(simCfgFilNam.c_str(), + &xmlStrOutTypArr[0], + &xmlStrOutArr[0], + &nOutVal, + xmlStrInKey.c_str(), + &nInKeys, + &xmlStrInArr[0], + &nInpVar, + inpVarTypes.data(), + &lenXmlStr); } else if (haveExternalInterfaceFMUExport) { - retVal = getepvariablesFMU(simCfgFilNam.c_str(), &xmlStrOutTypArr[0], &xmlStrOutArr[0], &nOutVal, xmlStrInKey.c_str(), &nInKeys, - &xmlStrInArr[0], &nInpVar, inpVarTypes.data(), &lenXmlStr); + retVal = getepvariablesFMU(simCfgFilNam.c_str(), + &xmlStrOutTypArr[0], + &xmlStrOutArr[0], + &nOutVal, + xmlStrInKey.c_str(), + &nInKeys, + &xmlStrInArr[0], + &nInpVar, + inpVarTypes.data(), + &lenXmlStr); } else { // there should be no else condition at this point, however we'll still assign the error value for completeness retVal = -1; @@ -680,10 +696,10 @@ namespace ExternalInterface { // This routine gets, sets and does the time integration in FMUs. // Using/Aliasing - using DataGlobals::KindOfSim; - using DataGlobals::WarmupFlag; using DataGlobals::emsCallFromExternalInterface; + using DataGlobals::KindOfSim; using DataGlobals::ksRunPeriodWeather; + using DataGlobals::WarmupFlag; using EMSManager::ManageEMS; using General::TrimSigDigits; using RuntimeLanguageProcessor::ExternalInterfaceSetErlVariable; @@ -731,8 +747,11 @@ namespace ExternalInterface { } // pass in the vectors as pointers to the first member of the vector - FMU(i).Instance(j).fmistatus = fmiEPlusGetReal(&FMU(i).Instance(j).fmicomponent, &valueReferenceVec[0], &realVarValueVec[0], - &FMU(i).Instance(j).NumOutputVariablesSchedule, &FMU(i).Instance(j).Index); + FMU(i).Instance(j).fmistatus = fmiEPlusGetReal(&FMU(i).Instance(j).fmicomponent, + &valueReferenceVec[0], + &realVarValueVec[0], + &FMU(i).Instance(j).NumOutputVariablesSchedule, + &FMU(i).Instance(j).Index); for (unsigned long x = 1; x <= size(FMU(i).Instance(j).fmuOutputVariableSchedule); ++x) { FMU(i).Instance(j).fmuOutputVariableSchedule(x).ValueReference = valueReferenceVec[x - 1]; @@ -759,8 +778,11 @@ namespace ExternalInterface { } // pass in the vectors as pointers to the first member of the vector - FMU(i).Instance(j).fmistatus = fmiEPlusGetReal(&FMU(i).Instance(j).fmicomponent, &valueReferenceVec2[0], &realVarValueVec2[0], - &FMU(i).Instance(j).NumOutputVariablesVariable, &FMU(i).Instance(j).Index); + FMU(i).Instance(j).fmistatus = fmiEPlusGetReal(&FMU(i).Instance(j).fmicomponent, + &valueReferenceVec2[0], + &realVarValueVec2[0], + &FMU(i).Instance(j).NumOutputVariablesVariable, + &FMU(i).Instance(j).Index); for (unsigned long x = 1; x <= size(FMU(i).Instance(j).fmuOutputVariableVariable); ++x) { FMU(i).Instance(j).fmuOutputVariableVariable(x).ValueReference = valueReferenceVec2[x - 1]; @@ -787,8 +809,11 @@ namespace ExternalInterface { } // pass in the vectors as pointers to the first member of the vector - FMU(i).Instance(j).fmistatus = fmiEPlusGetReal(&FMU(i).Instance(j).fmicomponent, &valueReferenceVec3[0], &realVarValueVec3[0], - &FMU(i).Instance(j).NumOutputVariablesActuator, &FMU(i).Instance(j).Index); + FMU(i).Instance(j).fmistatus = fmiEPlusGetReal(&FMU(i).Instance(j).fmicomponent, + &valueReferenceVec3[0], + &realVarValueVec3[0], + &FMU(i).Instance(j).NumOutputVariablesActuator, + &FMU(i).Instance(j).Index); for (unsigned long x = 1; x <= size(FMU(i).Instance(j).fmuOutputVariableActuator); ++x) { FMU(i).Instance(j).fmuOutputVariableActuator(x).ValueReference = valueReferenceVec3[x - 1]; @@ -852,8 +877,11 @@ namespace ExternalInterface { rtsValueVec4.push_back(FMU(i).Instance(j).eplusOutputVariable(x).RTSValue); } - FMU(i).Instance(j).fmistatus = fmiEPlusSetReal(&FMU(i).Instance(j).fmicomponent, &valueReferenceVec4[0], &rtsValueVec4[0], - &FMU(i).Instance(j).NumInputVariablesInIDF, &FMU(i).Instance(j).Index); + FMU(i).Instance(j).fmistatus = fmiEPlusSetReal(&FMU(i).Instance(j).fmicomponent, + &valueReferenceVec4[0], + &rtsValueVec4[0], + &FMU(i).Instance(j).NumInputVariablesInIDF, + &FMU(i).Instance(j).Index); if (FMU(i).Instance(j).fmistatus != fmiOK) { ShowSevereError("ExternalInterface/GetSetVariablesAndDoStepFMUImport: Error when trying to set inputs"); @@ -907,9 +935,13 @@ namespace ExternalInterface { // Instantiate FMUs for (i = 1; i <= NumFMUObjects; ++i) { for (j = 1; j <= FMU(i).NumInstances; ++j) { - FMU(i).Instance(j).fmicomponent = - fmiEPlusInstantiateSlave((char *)FMU(i).Instance(j).WorkingFolder.c_str(), &FMU(i).Instance(j).LenWorkingFolder, &FMU(i).TimeOut, - &FMU(i).Visible, &FMU(i).Interactive, &FMU(i).LoggingOn, &FMU(i).Instance(j).Index); + FMU(i).Instance(j).fmicomponent = fmiEPlusInstantiateSlave((char *)FMU(i).Instance(j).WorkingFolder.c_str(), + &FMU(i).Instance(j).LenWorkingFolder, + &FMU(i).TimeOut, + &FMU(i).Visible, + &FMU(i).Interactive, + &FMU(i).LoggingOn, + &FMU(i).Instance(j).Index); // TODO: This is doing a null pointer check; OK? if (!FMU(i).Instance(j).fmicomponent) { ShowSevereError("ExternalInterface/CalcExternalInterfaceFMUImport: Error when trying to instantiate"); @@ -1021,8 +1053,8 @@ namespace ExternalInterface { using DataIPShortCuts::cCurrentModuleObject; using DataIPShortCuts::cNumericFieldNames; using DataIPShortCuts::rNumericArgs; - using DataStringGlobals::CurrentWorkingFolder; using DataStringGlobals::altpathChar; + using DataStringGlobals::CurrentWorkingFolder; using DataStringGlobals::pathChar; using DataSystemVariables::CheckForActualFileName; using General::TrimSigDigits; @@ -1073,8 +1105,17 @@ namespace ExternalInterface { fullFileName.allocate(NumFMUObjects); cCurrentModuleObject = "ExternalInterface:FunctionalMockupUnitImport"; for (Loop = 1; Loop <= NumFMUObjects; ++Loop) { - inputProcessor->getObjectItem(cCurrentModuleObject, Loop, cAlphaArgs, NumAlphas, rNumericArgs, NumNumbers, IOStatus, _, _, - cAlphaFieldNames, cNumericFieldNames); + inputProcessor->getObjectItem(cCurrentModuleObject, + Loop, + cAlphaArgs, + NumAlphas, + rNumericArgs, + NumNumbers, + IOStatus, + _, + _, + cAlphaFieldNames, + cNumericFieldNames); // Get the FMU name FMU(Loop).Name = cAlphaArgs(1); CheckForActualFileName(cAlphaArgs(1), fileExist, tempFullFileName); @@ -1138,8 +1179,17 @@ namespace ExternalInterface { FMU(i).Instance.allocate(NumFMUInputVariables); checkInstanceName.allocate(NumFMUInputVariables); for (l = 1; l <= NumFMUInputVariables; ++l) { - inputProcessor->getObjectItem(cCurrentModuleObject, l, cAlphaArgs, NumAlphas, rNumericArgs, NumNumbers, IOStatus, _, _, - cAlphaFieldNames, cNumericFieldNames); + inputProcessor->getObjectItem(cCurrentModuleObject, + l, + cAlphaArgs, + NumAlphas, + rNumericArgs, + NumNumbers, + IOStatus, + _, + _, + cAlphaFieldNames, + cNumericFieldNames); if (UtilityRoutines::SameString(cAlphaArgs(3), FMU(i).Name)) { Name_NEW = cAlphaArgs(4); if (!UtilityRoutines::SameString(Name_OLD, Name_NEW)) { @@ -1212,9 +1262,11 @@ namespace ExternalInterface { auto workingFolderArr(getCharArrayFromString(FMU(i).Instance(j).WorkingFolder)); // make the library call - FMU(i).Instance(j).Index = - model_ID_GUID((char *)FMU(i).Instance(j).Name.c_str(), &workingFolderArr[0], &FMU(i).Instance(j).LenWorkingFolder, - &FMU(i).Instance(j).NumInputVariablesInFMU, &FMU(i).Instance(j).NumOutputVariablesInFMU); + FMU(i).Instance(j).Index = model_ID_GUID((char *)FMU(i).Instance(j).Name.c_str(), + &workingFolderArr[0], + &FMU(i).Instance(j).LenWorkingFolder, + &FMU(i).Instance(j).NumInputVariablesInFMU, + &FMU(i).Instance(j).NumOutputVariablesInFMU); if (FMU(i).Instance(j).Index < 0) { ShowSevereError("ExternalInterface/InitExternalInterfaceFMUImport: Error when trying to"); @@ -1236,8 +1288,8 @@ namespace ExternalInterface { auto workingFolderWithLibArr(getCharArrayFromString(FMU(i).Instance(j).WorkingFolder_wLib)); // make the library call - retValfmiPathLib = addLibPathCurrentWorkingFolder(&workingFolderWithLibArr[0], &workingFolderArr[0], - &FMU(i).Instance(j).LenWorkingFolder, &FMU(i).Instance(j).Index); + retValfmiPathLib = addLibPathCurrentWorkingFolder( + &workingFolderWithLibArr[0], &workingFolderArr[0], &FMU(i).Instance(j).LenWorkingFolder, &FMU(i).Instance(j).Index); // post process args in case they are used later FMU(i).Instance(j).WorkingFolder_wLib = trim(getStringFromCharArray(workingFolderWithLibArr)); @@ -1263,8 +1315,8 @@ namespace ExternalInterface { getCharArrayFromString(" ")); // the version should only be 3 characters long, since for now we only handle "1.0" // make the library call - retValfmiVersion = getfmiEPlusVersion(&workingFolderWithLibArr[0], &FMU(i).Instance(j).LenWorkingFolder_wLib, - &VersionNumArr[0], &FMU(i).Instance(j).Index); + retValfmiVersion = getfmiEPlusVersion( + &workingFolderWithLibArr[0], &FMU(i).Instance(j).LenWorkingFolder_wLib, &VersionNumArr[0], &FMU(i).Instance(j).Index); // post process in case args are used later FMU(i).Instance(j).fmiVersionNumber = getStringFromCharArray(VersionNumArr); @@ -1303,17 +1355,30 @@ namespace ExternalInterface { FMU(i).Instance(j).eplusOutputVariable.allocate(NumFMUInputVariables); k = 1; for (l = 1; l <= NumFMUInputVariables; ++l) { - inputProcessor->getObjectItem(cCurrentModuleObject, l, cAlphaArgs, NumAlphas, rNumericArgs, NumNumbers, IOStatus, _, _, - cAlphaFieldNames, cNumericFieldNames); + inputProcessor->getObjectItem(cCurrentModuleObject, + l, + cAlphaArgs, + NumAlphas, + rNumericArgs, + NumNumbers, + IOStatus, + _, + _, + cAlphaFieldNames, + cNumericFieldNames); if (UtilityRoutines::SameString(cAlphaArgs(3), FMU(i).Name) && UtilityRoutines::SameString(cAlphaArgs(4), FMU(i).Instance(j).Name)) { FMU(i).Instance(j).fmuInputVariable(k).Name = cAlphaArgs(5); FMU(i).Instance(j).eplusOutputVariable(k).VarKey = cAlphaArgs(1); FMU(i).Instance(j).eplusOutputVariable(k).Name = cAlphaArgs(2); // verify whether we have duplicate FMU input variables in the idf - GlobalNames::VerifyUniqueInterObjectName(UniqueFMUInputVarNames, FMU(i).Instance(j).fmuInputVariable(k).Name, - cCurrentModuleObject, FMU(i).Instance(j).Name, ErrorsFound); - // UtilityRoutines::VerifyName( FMU( i ).Instance( j ).fmuInputVariable( k + GlobalNames::VerifyUniqueInterObjectName(UniqueFMUInputVarNames, + FMU(i).Instance(j).fmuInputVariable(k).Name, + cCurrentModuleObject, + FMU(i).Instance(j).Name, + ErrorsFound); + // UtilityRoutines::VerifyName( FMU( i ).Instance( j ).fmuInputVariable( + //k //).Name, FMU( // i //).Instance( @@ -1419,8 +1484,17 @@ namespace ExternalInterface { for (i = 1; i <= NumFMUObjects; ++i) { j = 1; for (k = 1; k <= NumFMUInputVariables; ++k) { - inputProcessor->getObjectItem(cCurrentModuleObject, k, cAlphaArgs, NumAlphas, rNumericArgs, NumNumbers, IOStatus, _, _, - cAlphaFieldNames, cNumericFieldNames); + inputProcessor->getObjectItem(cCurrentModuleObject, + k, + cAlphaArgs, + NumAlphas, + rNumericArgs, + NumNumbers, + IOStatus, + _, + _, + cAlphaFieldNames, + cNumericFieldNames); if (UtilityRoutines::SameString(cAlphaArgs(3), FMU(i).Name)) { FMU(i).TotNumOutputVariablesSchedule = j; ++j; @@ -1434,8 +1508,17 @@ namespace ExternalInterface { FMU(i).Instance(j).eplusInputVariableSchedule.allocate(NumFMUInputVariables); k = 1; for (l = 1; l <= NumFMUInputVariables; ++l) { - inputProcessor->getObjectItem(cCurrentModuleObject, l, cAlphaArgs, NumAlphas, rNumericArgs, NumNumbers, IOStatus, _, _, - cAlphaFieldNames, cNumericFieldNames); + inputProcessor->getObjectItem(cCurrentModuleObject, + l, + cAlphaArgs, + NumAlphas, + rNumericArgs, + NumNumbers, + IOStatus, + _, + _, + cAlphaFieldNames, + cNumericFieldNames); if (UtilityRoutines::SameString(cAlphaArgs(3), FMU(i).Name) && UtilityRoutines::SameString(cAlphaArgs(4), FMU(i).Instance(j).Name)) { FMU(i).Instance(j).fmuOutputVariableSchedule(k).Name = cAlphaArgs(5); @@ -1503,8 +1586,17 @@ namespace ExternalInterface { for (i = 1; i <= NumFMUObjects; ++i) { j = 1; for (k = 1; k <= NumFMUInputVariables; ++k) { - inputProcessor->getObjectItem(cCurrentModuleObject, k, cAlphaArgs, NumAlphas, rNumericArgs, NumNumbers, IOStatus, _, _, - cAlphaFieldNames, cNumericFieldNames); + inputProcessor->getObjectItem(cCurrentModuleObject, + k, + cAlphaArgs, + NumAlphas, + rNumericArgs, + NumNumbers, + IOStatus, + _, + _, + cAlphaFieldNames, + cNumericFieldNames); if (UtilityRoutines::SameString(cAlphaArgs(2), FMU(i).Name)) { FMU(i).TotNumOutputVariablesVariable = j; ++j; @@ -1518,8 +1610,17 @@ namespace ExternalInterface { FMU(i).Instance(j).eplusInputVariableVariable.allocate(NumFMUInputVariables); k = 1; for (l = 1; l <= NumFMUInputVariables; ++l) { - inputProcessor->getObjectItem(cCurrentModuleObject, l, cAlphaArgs, NumAlphas, rNumericArgs, NumNumbers, IOStatus, _, _, - cAlphaFieldNames, cNumericFieldNames); + inputProcessor->getObjectItem(cCurrentModuleObject, + l, + cAlphaArgs, + NumAlphas, + rNumericArgs, + NumNumbers, + IOStatus, + _, + _, + cAlphaFieldNames, + cNumericFieldNames); if (UtilityRoutines::SameString(cAlphaArgs(2), FMU(i).Name) && UtilityRoutines::SameString(cAlphaArgs(3), FMU(i).Instance(j).Name)) { FMU(i).Instance(j).fmuOutputVariableVariable(k).Name = cAlphaArgs(4); @@ -1582,8 +1683,17 @@ namespace ExternalInterface { for (i = 1; i <= NumFMUObjects; ++i) { j = 1; for (k = 1; k <= NumFMUInputVariables; ++k) { - inputProcessor->getObjectItem(cCurrentModuleObject, k, cAlphaArgs, NumAlphas, rNumericArgs, NumNumbers, IOStatus, _, _, - cAlphaFieldNames, cNumericFieldNames); + inputProcessor->getObjectItem(cCurrentModuleObject, + k, + cAlphaArgs, + NumAlphas, + rNumericArgs, + NumNumbers, + IOStatus, + _, + _, + cAlphaFieldNames, + cNumericFieldNames); if (UtilityRoutines::SameString(cAlphaArgs(5), FMU(i).Name)) { FMU(i).TotNumOutputVariablesActuator = j; ++j; @@ -1597,8 +1707,17 @@ namespace ExternalInterface { FMU(i).Instance(j).eplusInputVariableActuator.allocate(NumFMUInputVariables); k = 1; for (l = 1; l <= NumFMUInputVariables; ++l) { - inputProcessor->getObjectItem(cCurrentModuleObject, l, cAlphaArgs, NumAlphas, rNumericArgs, NumNumbers, IOStatus, _, _, - cAlphaFieldNames, cNumericFieldNames); + inputProcessor->getObjectItem(cCurrentModuleObject, + l, + cAlphaArgs, + NumAlphas, + rNumericArgs, + NumNumbers, + IOStatus, + _, + _, + cAlphaFieldNames, + cNumericFieldNames); if (UtilityRoutines::SameString(cAlphaArgs(5), FMU(i).Name) && UtilityRoutines::SameString(cAlphaArgs(6), FMU(i).Instance(j).Name)) { FMU(i).Instance(j).fmuOutputVariableActuator(k).Name = cAlphaArgs(7); @@ -1822,13 +1941,13 @@ namespace ExternalInterface { // This subroutine organizes the data exchange between FMU and EnergyPlus. // Using/Aliasing - using DataEnvironment::TotDesDays; using DataEnvironment::TotalOverallSimDays; + using DataEnvironment::TotDesDays; + using DataGlobals::emsCallFromExternalInterface; using DataGlobals::KindOfSim; + using DataGlobals::ksRunPeriodWeather; using DataGlobals::TimeStepZone; using DataGlobals::WarmupFlag; - using DataGlobals::emsCallFromExternalInterface; - using DataGlobals::ksRunPeriodWeather; using DataSystemVariables::UpdateDataDuringWarmupExternalInterface; using EMSManager::ManageEMS; using General::TrimSigDigits; @@ -1955,8 +2074,11 @@ namespace ExternalInterface { } // make the library call - FMU(i).Instance(j).fmistatus = fmiEPlusSetReal(&FMU(i).Instance(j).fmicomponent, &valRefVec[0], &rtsValVec[0], - &FMUTemp(i).Instance(j).NumInputVariablesInIDF, &FMU(i).Instance(j).Index); + FMU(i).Instance(j).fmistatus = fmiEPlusSetReal(&FMU(i).Instance(j).fmicomponent, + &valRefVec[0], + &rtsValVec[0], + &FMUTemp(i).Instance(j).NumInputVariablesInIDF, + &FMU(i).Instance(j).Index); if (FMU(i).Instance(j).fmistatus != fmiOK) { ShowSevereError( @@ -2010,8 +2132,11 @@ namespace ExternalInterface { } // make the library call - FMU(i).Instance(j).fmistatus = fmiEPlusSetReal(&FMU(i).Instance(j).fmicomponent, &valRefVec[0], &rtsValVec[0], - &FMUTemp(i).Instance(j).NumInputVariablesInIDF, &FMU(i).Instance(j).Index); + FMU(i).Instance(j).fmistatus = fmiEPlusSetReal(&FMU(i).Instance(j).fmicomponent, + &valRefVec[0], + &rtsValVec[0], + &FMUTemp(i).Instance(j).NumInputVariablesInIDF, + &FMU(i).Instance(j).Index); if (FMU(i).Instance(j).fmistatus != fmiOK) { ShowSevereError("ExternalInterface/CalcExternalInterfaceFMUImport: "); @@ -2106,8 +2231,8 @@ namespace ExternalInterface { cCurrentModuleObject = "SimulationControl"; int const NumRunControl = inputProcessor->getNumObjectsFound(cCurrentModuleObject); if (NumRunControl > 0) { - inputProcessor->getObjectItem(cCurrentModuleObject, 1, cAlphaArgs, NumAlphas, rNumericArgs, NumNumbers, IOStatus, _, _, cAlphaFieldNames, - cNumericFieldNames); + inputProcessor->getObjectItem( + cCurrentModuleObject, 1, cAlphaArgs, NumAlphas, rNumericArgs, NumNumbers, IOStatus, _, _, cAlphaFieldNames, cNumericFieldNames); if (cAlphaArgs(5) == "NO") { // This run does not have a weather file simulation. ShowSevereError("ExternalInterface: Error in idf file, section SimulationControl:"); ShowContinueError("When using the ExternalInterface, a run period from the weather file must be specified"); @@ -2127,9 +2252,9 @@ namespace ExternalInterface { // RE-ENGINEERED na // Using/Aliasing + using DataGlobals::emsCallFromExternalInterface; using DataGlobals::MinutesPerTimeStep; using DataGlobals::SimTimeSteps; - using DataGlobals::emsCallFromExternalInterface; using EMSManager::ManageEMS; using General::TrimSigDigits; using RuntimeLanguageProcessor::ExternalInterfaceSetErlVariable; @@ -2199,11 +2324,11 @@ namespace ExternalInterface { retVal = 0; flaRea = 0; if (haveExternalInterfaceBCVTB) { - retVal = exchangedoubleswithsocket(&socketFD, &flaWri, &flaRea, &nDblWri, &nDblRea, &preSimTim, dblValWri.data(), &curSimTim, - dblValRea.data()); + retVal = exchangedoubleswithsocket( + &socketFD, &flaWri, &flaRea, &nDblWri, &nDblRea, &preSimTim, dblValWri.data(), &curSimTim, dblValRea.data()); } else if (haveExternalInterfaceFMUExport) { - retVal = exchangedoubleswithsocketFMU(&socketFD, &flaWri, &flaRea, &nDblWri, &nDblRea, &preSimTim, dblValWri.data(), &curSimTim, - dblValRea.data(), &FMUExportActivate); + retVal = exchangedoubleswithsocketFMU( + &socketFD, &flaWri, &flaRea, &nDblWri, &nDblRea, &preSimTim, dblValWri.data(), &curSimTim, dblValRea.data(), &FMUExportActivate); } continueSimulation = true; @@ -2362,8 +2487,8 @@ namespace ExternalInterface { int IOStatus(0); // Used in GetObjectItem cCurrentModuleObject = "ExternalInterface"; - inputProcessor->getObjectItem(cCurrentModuleObject, 1, cAlphaArgs, NumAlphas, rNumericArgs, NumNumbers, IOStatus, _, _, cAlphaFieldNames, - cNumericFieldNames); + inputProcessor->getObjectItem( + cCurrentModuleObject, 1, cAlphaArgs, NumAlphas, rNumericArgs, NumNumbers, IOStatus, _, _, cAlphaFieldNames, cNumericFieldNames); if ((!UtilityRoutines::SameString(cAlphaArgs(1), "PtolemyServer")) && (!UtilityRoutines::SameString(cAlphaArgs(1), "FunctionalMockupUnitImport")) && (!UtilityRoutines::SameString(cAlphaArgs(1), "FunctionalMockupUnitExport"))) { diff --git a/src/EnergyPlus/WeatherManager.cc b/src/EnergyPlus/WeatherManager.cc index 799f13ba8b0..abfbf000829 100644 --- a/src/EnergyPlus/WeatherManager.cc +++ b/src/EnergyPlus/WeatherManager.cc @@ -4958,19 +4958,12 @@ namespace WeatherManager { // of Fourier Series | // Equation of Time // coefficients - static Array1D const ASHRAE_A_Coef(9, - {1161.6685, - 1.1554, - 77.3575, - -0.5359, - -3.7622, - 0.9875, - -3.3924, - -1.7445, - 1.1198}); // Fitted coefficients of Fourier Series | ASHRAE A Factor coefficients - // English (original) units: - // 368.49341,.366502,24.538624,-.169983,-1.193417, & - // .313261,-1.076093,-.543376,.355197 , & + static Array1D const ASHRAE_A_Coef( + 9, {1161.6685, 1.1554, 77.3575, -0.5359, -3.7622, 0.9875, -3.3924, -1.7445, 1.1198}); // Fitted coefficients of Fourier Series | ASHRAE A + // Factor coefficients English (original) units: + // 368.49341,.366502,24.538624,-.169983,-1.193417, + // & .313261,-1.076093,-.543376,.355197 + // , & static Array1D const ASHRAE_B_Coef( 9, {0.171631, -0.00400448, -0.0344923, 0.00000209, 0.00325428, -0.00085429, 0.00229562, 0.0009034, -0.0011867}); // Fitted coefficients of From 5cc63bce8903f301c7256e1043f2673a3344cf5a Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Thu, 12 Jul 2018 10:09:33 -0600 Subject: [PATCH 22/47] Rename date function, fix bug, complete NFP copy --- design/FY2018/NFP-Improve Year Awareness.md | 20 +- src/EnergyPlus/General.cc | 8 +- src/EnergyPlus/General.hh | 8 +- .../FiniteDifferenceGroundTemperatureModel.cc | 1 - src/EnergyPlus/ScheduleManager.cc | 19 +- src/EnergyPlus/SizingManager.cc | 2 +- src/EnergyPlus/SurfaceGeometry.cc | 5 +- src/EnergyPlus/ThermalComfort.cc | 1 - src/EnergyPlus/WeatherManager.cc | 268 ++++++++---------- src/EnergyPlus/WeatherManager.hh | 6 +- tst/EnergyPlus/unit/DElightManager.unit.cc | 2 +- .../unit/DaylightingManager.unit.cc | 2 +- .../unit/ElectricPowerServiceManager.unit.cc | 6 +- tst/EnergyPlus/unit/FanCoilUnits.unit.cc | 15 +- .../PlantHeatExchangerFluidToFluid.unit.cc | 4 +- .../unit/PoweredInductionUnits.unit.cc | 4 +- tst/EnergyPlus/unit/ScheduleManager.unit.cc | 6 +- tst/EnergyPlus/unit/SingleDuct.unit.cc | 4 +- .../unit/SystemAvailabilityManager.unit.cc | 2 +- .../unit/UnitaryHybridAirConditioner.unit.cc | 3 +- 20 files changed, 176 insertions(+), 210 deletions(-) diff --git a/design/FY2018/NFP-Improve Year Awareness.md b/design/FY2018/NFP-Improve Year Awareness.md index 50ed8706ee7..6b88d67c053 100644 --- a/design/FY2018/NFP-Improve Year Awareness.md +++ b/design/FY2018/NFP-Improve Year Awareness.md @@ -8,7 +8,7 @@ Users and interface developers are requesting that EnergyPlus handle dates in a EnergyPlus will be modified to always have a real year associated with the simulation and output appropriate dates and times. Simulations that would violate date and time rules (e.g. simulate 2016 without February 29) will no longer be allowed unless requested. Information from the weather file information will no longer take precedence over objects in the input simulation file. Some weather file inputs (e.g. the leap year flag) will always be ignored. -The **RunPeriod** and **RunPeriod:CustomRange** objects will be combined into a single RunPeriod object that specifies start and end dates as valid calendar dates. Schedule:File will be extended to allow multiple years in a single schedule file. The simulation year will be added SQLite output. +The **RunPeriod** and **RunPeriod:CustomRange** objects will be combined into a single **RunPeriod** object that specifies start and end dates as valid calendar dates. Schedule:File will be extended to allow multiple years in a single schedule file. The simulation year will be added SQLite output. ## Approach ## @@ -185,13 +185,25 @@ Another important case to consider are multiyear simulations with leap years. Fo **Jason Glazer, Re: February 29:** Assuming that the TMY3 or IWEC or what ever does not have a February 29 day of data, what are you going to do for February 29? If it is repeating the February 28 data that could be introduce errors since no smoothing would be done from February 28 midnight to February 29 1AM. -**Response:** The ability to skip the leap day is retained in the current implementation, there are too many EPWs in the wild that are missing that day. +*Response:* The ability to skip the leap day is retained in the current implementation, there are too many EPWs in the wild that are missing that day. **Jason Glazer, Re: Outputs:** The year of the simulation should also appear in the tabular output file in the input verification and output summary table and perhaps other outputs. -**Response:** The current implementation includes annual outputs in the ESO. +*Response:* The current implementation includes annual outputs in the ESO. -(More to be transcribed) +**Dan Macumber, Re: Begin/End Year:** What happens if End Year is specified but Begin Year is not or End Year < Begin Year, etc. + +*Response:* These would be invalid and are severe errors. + +**Lixing Gu, Re: Removal of repetition field:** When this field is removed, how do you keep the same existing capability to allow multiyear simulations using the same single year weather? + +*Response:* The number of years in the old repetition field will need to be reflected in the difference between the start year and the end year in the input object, and the "Treat as Actual Weather" field should be set to "No" (which is the default) to get nearly the current behavior. The one difference will be that the weekdays are incremented and not reset; leap years (or the lack thereof) are handled the same way as they are currently in the repeated run period scenario. + +**Dan Macumber, Re: Output Changes:** Could this be a new field in an output request object? The default could be to not include years in output for one release, then the default could change to include years, then the option could be deprecated. + +**Jason Glazer, Re: Output Changes:** I think that it is important that timestamped output be an option for the normal ESO/MTR output files even if not supported by ReadVarsESO immediately. Although it would be good if ReadVarsESO was modified to support this new format. + +*Response:* An additional annual output frequency was added to provide output at a yearly frequency. As part of that work, a year field was added to the SQL output and a yearly timestamp was added to the ESO/MTR. ## Appendix D: Design and Implementation ## diff --git a/src/EnergyPlus/General.cc b/src/EnergyPlus/General.cc index 524fd9a2517..c63b0ecb979 100644 --- a/src/EnergyPlus/General.cc +++ b/src/EnergyPlus/General.cc @@ -1922,7 +1922,7 @@ namespace General { ShowSevereError("Invalid Julian date Entered=" + String); ErrorsFound = true; } else { - InvJulianDay(FstNum, PMonth, PDay, 0); + InvOrdinalDay(FstNum, PMonth, PDay, 0); DateType = 1; } } else { @@ -2186,7 +2186,7 @@ namespace General { } } - int JulianDay(int const Month, // Month, 1..12 + int OrdinalDay(int const Month, // Month, 1..12 int const Day, // Day of Month, not validated by month int const LeapYearValue // 1 if leap year indicated, 0 if not ) @@ -2250,7 +2250,7 @@ namespace General { return JulianDay; } - void InvJulianDay(int const Number, int &PMonth, int &PDay, int const LeapYr) + void InvOrdinalDay(int const Number, int &PMonth, int &PDay, int const LeapYr) { // SUBROUTINE INFORMATION: @@ -2447,7 +2447,7 @@ namespace General { ) { // J. Glazer - August 2017 - int firstDayOfMonth = JulianDay(monthNumber, 1, DataEnvironment::CurrentYearIsLeapYear); + int firstDayOfMonth = OrdinalDay(monthNumber, 1, DataEnvironment::CurrentYearIsLeapYear); int dayOfWeekForFirstDay = (DataEnvironment::RunPeriodStartDayOfWeek + firstDayOfMonth - 1) % 7; int jdatForNth; if (dayOfWeek >= dayOfWeekForFirstDay) { diff --git a/src/EnergyPlus/General.hh b/src/EnergyPlus/General.hh index 7375e3e49eb..59989c3d1c0 100644 --- a/src/EnergyPlus/General.hh +++ b/src/EnergyPlus/General.hh @@ -237,12 +237,12 @@ namespace General { int const Month, bool &ErrorsFound); - int JulianDay(int const Month, // Month, 1..12 - int const Day, // Day of Month, not validated by month - int const LeapYearValue // 1 if leap year indicated, 0 if not + int OrdinalDay(int const Month, // Month, 1..12 + int const Day, // Day of Month, not validated by month + int const LeapYearValue // 1 if leap year indicated, 0 if not ); - void InvJulianDay(int const Number, int &PMonth, int &PDay, int const LeapYr); + void InvOrdinalDay(int const Number, int &PMonth, int &PDay, int const LeapYr); bool BetweenDates(int const TestDate, // Date to test int const StartDate, // Start date in sequence diff --git a/src/EnergyPlus/GroundTemperatureModeling/FiniteDifferenceGroundTemperatureModel.cc b/src/EnergyPlus/GroundTemperatureModeling/FiniteDifferenceGroundTemperatureModel.cc index ae0eacaf931..b24837c10c4 100644 --- a/src/EnergyPlus/GroundTemperatureModeling/FiniteDifferenceGroundTemperatureModel.cc +++ b/src/EnergyPlus/GroundTemperatureModeling/FiniteDifferenceGroundTemperatureModel.cc @@ -179,7 +179,6 @@ void FiniteDiffGroundTempsModel::getWeatherData() // and data structure containing daily average of required weather data. // USE STATEMENTS: - using General::JulianDay; using WeatherManager::GetNextEnvironment; using WeatherManager::ManageWeather; using WeatherManager::ResetEnvironmentCounter; diff --git a/src/EnergyPlus/ScheduleManager.cc b/src/EnergyPlus/ScheduleManager.cc index 6b43b409c79..b3a523e5d16 100644 --- a/src/EnergyPlus/ScheduleManager.cc +++ b/src/EnergyPlus/ScheduleManager.cc @@ -235,7 +235,6 @@ namespace ScheduleManager { // Uses the standard get routines in the InputProcessor. // Using/Aliasing - using General::JulianDay; using General::ProcessDateString; using General::RoundSigDigits; using General::TrimSigDigits; @@ -1251,8 +1250,8 @@ namespace ScheduleManager { EndMonth = int(Numbers(NumPointer + 3)); EndDay = int(Numbers(NumPointer + 4)); NumPointer += 4; - StartPointer = JulianDay(StartMonth, StartDay, 1); - EndPointer = JulianDay(EndMonth, EndDay, 1); + StartPointer = General::OrdinalDay(StartMonth, StartDay, 1); + EndPointer = General::OrdinalDay(EndMonth, EndDay, 1); if (StartPointer <= EndPointer) { for (Count = StartPointer; Count <= EndPointer; ++Count) { ++DaysInYear(Count); @@ -1390,7 +1389,7 @@ namespace ScheduleManager { ErrorsFound = true; goto Through_exit; } else { - EndPointer = JulianDay(EndMonth, EndDay, 1); + EndPointer = General::OrdinalDay(EndMonth, EndDay, 1); if (EndPointer == 366) { if (FullYearSet) { ShowSevereError(RoutineName + CurrentModuleObject + "=\"" + Schedule(SchNum).Name + @@ -2368,7 +2367,6 @@ namespace ScheduleManager { // Using/Aliasing using DataGlobals::OutputFileDebug; - using General::InvJulianDay; using General::RoundSigDigits; // Locals @@ -2565,7 +2563,7 @@ namespace ScheduleManager { TS = Schedule(Count).WeekSchedulePointer(NumF); while (Schedule(Count).WeekSchedulePointer(NumF) == TS && NumF <= 366) { if (NumF == 366) { - InvJulianDay(NumF, PMon, PDay, 1); + General::InvOrdinalDay(NumF, PMon, PDay, 1); { IOFlags flags; flags.ADVANCE("No"); @@ -2576,7 +2574,7 @@ namespace ScheduleManager { if (NumF > 366) break; // compound If might have a problem unless this included. } if (NumF <= 366) { - InvJulianDay(NumF - 1, PMon, PDay, 1); + General::InvOrdinalDay(NumF - 1, PMon, PDay, 1); { IOFlags flags; flags.ADVANCE("No"); @@ -2599,7 +2597,7 @@ namespace ScheduleManager { TS = Schedule(Count).WeekSchedulePointer(NumF); while (Schedule(Count).WeekSchedulePointer(NumF) == TS && NumF <= 366) { if (NumF == 366) { - InvJulianDay(NumF, PMon, PDay, 1); + General::InvOrdinalDay(NumF, PMon, PDay, 1); gio::write(OutputFileDebug, fmtA) << " Through: " + RoundSigDigits(PMon) + '/' + RoundSigDigits(PDay) + ','; iDayP = 0; for (DT = 2; DT <= 6; ++DT) { @@ -2651,7 +2649,7 @@ namespace ScheduleManager { if (NumF > 366) break; // compound If might have a problem unless this included. } if (NumF <= 366) { - InvJulianDay(NumF - 1, PMon, PDay, 1); + General::InvOrdinalDay(NumF - 1, PMon, PDay, 1); gio::write(OutputFileDebug, fmtA) << " Through: " + RoundSigDigits(PMon) + '/' + RoundSigDigits(PDay) + ','; iDayP = 0; for (DT = 2; DT <= 6; ++DT) { @@ -2875,7 +2873,6 @@ namespace ScheduleManager { // Using/Aliasing using DataEnvironment::DayOfYear_Schedule; - using General::JulianDay; // Return value Real64 LookUpScheduleValue(0.0); @@ -2944,7 +2941,7 @@ namespace ScheduleManager { } if (WhichHour > 24) { while (WhichHour > 24) { - WeekSchedulePointer = Schedule(ScheduleIndex).WeekSchedulePointer(JulianDay(MonthTomorrow, DayOfMonthTomorrow, 1)); + WeekSchedulePointer = Schedule(ScheduleIndex).WeekSchedulePointer(General::OrdinalDay(MonthTomorrow, DayOfMonthTomorrow, 1)); if (DayOfWeekTomorrow <= 7 && HolidayIndexTomorrow > 0) { DaySchedulePointer = WeekSchedule(WeekSchedulePointer).DaySchedulePointer(7 + HolidayIndexTomorrow); } else { diff --git a/src/EnergyPlus/SizingManager.cc b/src/EnergyPlus/SizingManager.cc index 42719a98e99..26db4f05a86 100644 --- a/src/EnergyPlus/SizingManager.cc +++ b/src/EnergyPlus/SizingManager.cc @@ -2019,7 +2019,7 @@ namespace SizingManager { // store timing description of Last occurance of max int Month(0); int DayOfMonth(0); - General::InvJulianDay(DayLoop, Month, DayOfMonth, 1); + General::InvOrdinalDay(DayLoop, Month, DayOfMonth, 1); std::string MonthDayString; static gio::Fmt MnDyFmt("(I2.2,'/',I2.2)"); gio::write(MonthDayString, MnDyFmt) << Month << DayOfMonth; diff --git a/src/EnergyPlus/SurfaceGeometry.cc b/src/EnergyPlus/SurfaceGeometry.cc index 14ed488b374..b33abbf0315 100644 --- a/src/EnergyPlus/SurfaceGeometry.cc +++ b/src/EnergyPlus/SurfaceGeometry.cc @@ -8195,7 +8195,6 @@ namespace SurfaceGeometry { // Using/Aliasing using namespace DataIPShortCuts; - using General::JulianDay; using General::TrimSigDigits; // SUBROUTINE LOCAL VARIABLE DECLARATIONS: @@ -8237,10 +8236,10 @@ namespace SurfaceGeometry { StormWindow(StormWinNum).StormWinDistance = rNumericArgs(1); StormWindow(StormWinNum).MonthOn = rNumericArgs(2); StormWindow(StormWinNum).DayOfMonthOn = rNumericArgs(3); - StormWindow(StormWinNum).DateOn = JulianDay(StormWindow(StormWinNum).MonthOn, StormWindow(StormWinNum).DayOfMonthOn, 1); + StormWindow(StormWinNum).DateOn = General::OrdinalDay(StormWindow(StormWinNum).MonthOn, StormWindow(StormWinNum).DayOfMonthOn, 1); StormWindow(StormWinNum).MonthOff = rNumericArgs(4); StormWindow(StormWinNum).DayOfMonthOff = rNumericArgs(5); - StormWindow(StormWinNum).DateOff = JulianDay(StormWindow(StormWinNum).MonthOff, StormWindow(StormWinNum).DayOfMonthOff, 1); + StormWindow(StormWinNum).DateOff = General::OrdinalDay(StormWindow(StormWinNum).MonthOff, StormWindow(StormWinNum).DayOfMonthOff, 1); if (StormWindow(StormWinNum).DateOn == StormWindow(StormWinNum).DateOff) { ShowSevereError(cCurrentModuleObject + ": Date On = Date Off -- not allowed, occurred in WindowProperty:StormWindow Input #" + diff --git a/src/EnergyPlus/ThermalComfort.cc b/src/EnergyPlus/ThermalComfort.cc index 9c6c37a0e07..286a382604f 100644 --- a/src/EnergyPlus/ThermalComfort.cc +++ b/src/EnergyPlus/ThermalComfort.cc @@ -2584,7 +2584,6 @@ namespace ThermalComfort { using DataEnvironment::Month; using DataEnvironment::OutDryBulbTemp; using DataHVACGlobals::SysTimeElapsed; - using General::InvJulianDay; using OutputReportTabular::GetColumnUsingTabs; using OutputReportTabular::StrToReal; diff --git a/src/EnergyPlus/WeatherManager.cc b/src/EnergyPlus/WeatherManager.cc index f8cfbb61283..ed1531d7ed6 100644 --- a/src/EnergyPlus/WeatherManager.cc +++ b/src/EnergyPlus/WeatherManager.cc @@ -793,8 +793,6 @@ namespace WeatherManager { // Using/Aliasing using General::BetweenDates; - using General::InvJulianDay; - using General::JulianDay; using namespace DataSystemVariables; using DataHeatBalance::AdaptiveComfortRequested_ASH55; using DataHeatBalance::AdaptiveComfortRequested_CEN15251; @@ -1075,8 +1073,8 @@ namespace WeatherManager { ThisWeekDay = 0; for (Loop = 1; Loop <= NumDataPeriods; ++Loop) { if (!Environment(Envrn).ActualWeather) { - RunStJDay = JulianDay(DataPeriods(Loop).StMon, DataPeriods(Loop).StDay, LeapYearAdd); - RunEnJDay = JulianDay(DataPeriods(Loop).EnMon, DataPeriods(Loop).EnDay, LeapYearAdd); + RunStJDay = General::OrdinalDay(DataPeriods(Loop).StMon, DataPeriods(Loop).StDay, LeapYearAdd); + RunEnJDay = General::OrdinalDay(DataPeriods(Loop).EnMon, DataPeriods(Loop).EnDay, LeapYearAdd); if (!BetweenDates(Environment(Envrn).StartJDay, RunStJDay, RunEnJDay)) continue; if (!BetweenDates(Environment(Envrn).EndJDay, RunStJDay, RunEnJDay)) continue; OkRun = true; @@ -1226,8 +1224,8 @@ namespace WeatherManager { ErrorsFound = true; } if (DataPeriods(1).StMon == 1 && DataPeriods(1).StDay == 1) { - RunStJDay = JulianDay(DataPeriods(1).StMon, DataPeriods(1).StDay, LeapYearAdd); - RunEnJDay = JulianDay(DataPeriods(1).EnMon, DataPeriods(1).EnDay, LeapYearAdd); + RunStJDay = General::OrdinalDay(DataPeriods(1).StMon, DataPeriods(1).StDay, LeapYearAdd); + RunEnJDay = General::OrdinalDay(DataPeriods(1).EnMon, DataPeriods(1).EnDay, LeapYearAdd); if (RunEnJDay - RunStJDay + 1 != 365) { ShowSevereError(RoutineName + "AdaptiveComfort Reporting does not work correctly with weather files " "that do not contain 365 days."); @@ -1250,12 +1248,12 @@ namespace WeatherManager { // Only need to set Week days for Run Days RunPeriodStartDayOfWeek = TWeekDay; WeekDayTypes = 0; - JDay5Start = JulianDay(Environment(Envrn).StartMonth, Environment(Envrn).StartDay, LeapYearAdd); - JDay5End = JulianDay(Environment(Envrn).EndMonth, Environment(Envrn).EndDay, LeapYearAdd); + JDay5Start = General::OrdinalDay(Environment(Envrn).StartMonth, Environment(Envrn).StartDay, LeapYearAdd); + JDay5End = General::OrdinalDay(Environment(Envrn).EndMonth, Environment(Envrn).EndDay, LeapYearAdd); if (JDay5End >= JDay5Start) { curSimDayForEndOfRunPeriod = DayOfSim + (JDay5End - JDay5Start) + LeapYearAdd; } else { - curSimDayForEndOfRunPeriod = DayOfSim + JulianDay(12, 31, LeapYearAdd) - JDay5Start + JDay5End; + curSimDayForEndOfRunPeriod = DayOfSim + General::OrdinalDay(12, 31, LeapYearAdd) - JDay5Start + JDay5End; } Loop = JDay5Start; while (true) { @@ -1800,7 +1798,6 @@ namespace WeatherManager { // na // Using/Aliasing - using General::JulianDay; // Argument array dimensioning @@ -1894,8 +1891,8 @@ namespace WeatherManager { } DSTIndex = 0; - JDay = JulianDay(ActStartMonth, ActStartDay, LeapYearAdd); - JDay1 = JulianDay(ActEndMonth, ActEndDay, LeapYearAdd); + JDay = General::OrdinalDay(ActStartMonth, ActStartDay, LeapYearAdd); + JDay1 = General::OrdinalDay(ActEndMonth, ActEndDay, LeapYearAdd); if (JDay1 >= JDay) { DSTIndex({JDay, JDay1}) = 1; } else { @@ -1925,8 +1922,6 @@ namespace WeatherManager { // na // Using/Aliasing - using General::InvJulianDay; - using General::JulianDay; // Argument array dimensioning @@ -1958,7 +1953,7 @@ namespace WeatherManager { for (Loop = 1; Loop <= NumSpecialDays; ++Loop) { if (SpecialDays(Loop).WthrFile && !UseSpecialDays) continue; if (SpecialDays(Loop).DateType <= MonthDay) { - JDay = JulianDay(SpecialDays(Loop).Month, SpecialDays(Loop).Day, LeapYearAdd); + JDay = General::OrdinalDay(SpecialDays(Loop).Month, SpecialDays(Loop).Day, LeapYearAdd); if (SpecialDays(Loop).Duration == 1 && Environment(Envrn).ApplyWeekendRule) { if (WeekDayTypes(JDay) == 1) { // Sunday, must go to Monday @@ -1971,7 +1966,7 @@ namespace WeatherManager { if (JDay == 366 && LeapYearAdd == 0) JDay = 1; } } - InvJulianDay(JDay, SpecialDays(Loop).ActStMon, SpecialDays(Loop).ActStDay, LeapYearAdd); + General::InvOrdinalDay(JDay, SpecialDays(Loop).ActStMon, SpecialDays(Loop).ActStDay, LeapYearAdd); } else if (SpecialDays(Loop).DateType == NthDayInMonth) { if (SpecialDays(Loop).WeekDay >= MonWeekDay(SpecialDays(Loop).Month)) { ThisDay = SpecialDays(Loop).WeekDay - MonWeekDay(SpecialDays(Loop).Month) + 1; @@ -1986,7 +1981,7 @@ namespace WeatherManager { } SpecialDays(Loop).ActStMon = SpecialDays(Loop).Month; SpecialDays(Loop).ActStDay = ThisDay; - JDay = JulianDay(SpecialDays(Loop).Month, ThisDay, LeapYearAdd); + JDay = General::OrdinalDay(SpecialDays(Loop).Month, ThisDay, LeapYearAdd); } else { // LastWeekDayInMonth ThisDay = SpecialDays(Loop).WeekDay - MonWeekDay(SpecialDays(Loop).Month) + 1; while (ThisDay + 7 <= ActEndDayOfMonth(SpecialDays(Loop).Month)) { @@ -1994,7 +1989,7 @@ namespace WeatherManager { } SpecialDays(Loop).ActStMon = SpecialDays(Loop).Month; SpecialDays(Loop).ActStDay = ThisDay; - JDay = JulianDay(SpecialDays(Loop).Month, ThisDay, LeapYearAdd); + JDay = General::OrdinalDay(SpecialDays(Loop).Month, ThisDay, LeapYearAdd); } if (SpecialDayTypes(JDay) != 0) { ShowWarningError(RoutineName + "Special Day definition (" + SpecialDays(Loop).Name + @@ -2041,8 +2036,6 @@ namespace WeatherManager { // USE STATEMENTS: // na // Using/Aliasing - using General::InvJulianDay; - using General::JulianDay; // Locals // SUBROUTINE ARGUMENT DEFINITIONS: @@ -2183,8 +2176,8 @@ namespace WeatherManager { SetSpecialDayDates(Environment(Envrn).MonWeekDay); } ++YearOfSim; - DataGlobals::CalendarYear += 1; - DataGlobals::CalendarYearChr = std::to_string(DataGlobals::CalendarYear); + //DataGlobals::CalendarYear += 1; + //DataGlobals::CalendarYearChr = std::to_string(DataGlobals::CalendarYear); FirstSimDayofYear = 1; ReadWeatherForDay(FirstSimDayofYear, Envrn, false); // Read tomorrow's weather } else { @@ -2224,11 +2217,11 @@ namespace WeatherManager { } // need to reset MonWeekDay and WeekDayTypes if (!CurrentYearIsLeapYear) { - JDay5Start = JulianDay(Environment(Envrn).StartMonth, Environment(Envrn).StartDay, 0); - JDay5End = JulianDay(Environment(Envrn).EndMonth, Environment(Envrn).EndDay, 0); + JDay5Start = General::OrdinalDay(Environment(Envrn).StartMonth, Environment(Envrn).StartDay, 0); + JDay5End = General::OrdinalDay(Environment(Envrn).EndMonth, Environment(Envrn).EndDay, 0); } else { - JDay5Start = JulianDay(Environment(Envrn).StartMonth, Environment(Envrn).StartDay, LeapYearAdd); - JDay5End = JulianDay(Environment(Envrn).EndMonth, Environment(Envrn).EndDay, LeapYearAdd); + JDay5Start = General::OrdinalDay(Environment(Envrn).StartMonth, Environment(Envrn).StartDay, LeapYearAdd); + JDay5End = General::OrdinalDay(Environment(Envrn).EndMonth, Environment(Envrn).EndDay, LeapYearAdd); } if (!Environment(Envrn).ActualWeather) curSimDayForEndOfRunPeriod = DayOfSim + Environment(Envrn).RawSimDays + LeapYearAdd - 1; @@ -2450,7 +2443,6 @@ namespace WeatherManager { // INTERPOL(IBLAST) legacy code. // Using/Aliasing - using General::JulianDay; using ScheduleManager::UpdateScheduleValues; using namespace GroundTemperatureManager; @@ -2473,7 +2465,7 @@ namespace WeatherManager { } if (HourOfDay == 1) { // Should investigate whether BeginDayFlag is always set here and use that instead - DayOfYear_Schedule = JulianDay(Month, DayOfMonth, 1); + DayOfYear_Schedule = General::OrdinalDay(Month, DayOfMonth, 1); } UpdateScheduleValues(); @@ -2688,7 +2680,6 @@ namespace WeatherManager { // This subroutine reads the appropriate day of EPW weather data. // Using/Aliasing - using General::JulianDay; using General::RoundSigDigits; using ScheduleManager::GetScheduleValuesForDay; @@ -3295,8 +3286,8 @@ namespace WeatherManager { TomorrowVariables.Year = WYear; TomorrowVariables.Month = WMonth; TomorrowVariables.DayOfMonth = WDay; - TomorrowVariables.DayOfYear = JulianDay(WMonth, WDay, LeapYearAdd); - TomorrowVariables.DayOfYear_Schedule = JulianDay(WMonth, WDay, 1); + TomorrowVariables.DayOfYear = General::OrdinalDay(WMonth, WDay, LeapYearAdd); + TomorrowVariables.DayOfYear_Schedule = General::OrdinalDay(WMonth, WDay, 1); CalculateDailySolarCoeffs(TomorrowVariables.DayOfYear, A, B, @@ -4097,7 +4088,6 @@ namespace WeatherManager { // ASHRAE Handbook of Fundamentals? // Using/Aliasing - using General::JulianDay; using General::RoundSigDigits; using ScheduleManager::GetSingleDayScheduleValues; @@ -4199,7 +4189,7 @@ namespace WeatherManager { DesignDay(EnvrnNum).Year = CurrentYear; // f90 date_and_time implemented. full 4 digit year !+ 1900 DesignDay(EnvrnNum).Month = DesDayInput(EnvrnNum).Month; DesignDay(EnvrnNum).DayOfMonth = DesDayInput(EnvrnNum).DayOfMonth; - DesignDay(EnvrnNum).DayOfYear = JulianDay(DesignDay(EnvrnNum).Month, DesignDay(EnvrnNum).DayOfMonth, 0); + DesignDay(EnvrnNum).DayOfYear = General::OrdinalDay(DesignDay(EnvrnNum).Month, DesignDay(EnvrnNum).DayOfMonth, 0); gio::write(CurMnDy, MnDyFmt) << DesDayInput(EnvrnNum).Month << DesDayInput(EnvrnNum).DayOfMonth; // EnvironmentName = DesDayInput( EnvrnNum ).Title; RunPeriodEnvironment = false; @@ -4948,26 +4938,16 @@ namespace WeatherManager { // SUBROUTINE PARAMETER DEFINITIONS: Real64 const DayCorrection(Pi * 2.0 / 366.0); - static Array1D const SineSolDeclCoef(9, - {0.00561800, - 0.0657911, - -0.392779, - 0.00064440, - -0.00618495, - -0.00010101, - -0.00007951, - -0.00011691, - 0.00002096}); // Fitted coefficients of Fourier series | Sine of declination coefficients - static Array1D const EqOfTimeCoef(9, - {0.00021971, - -0.122649, - 0.00762856, - -0.156308, - -0.0530028, - -0.00388702, - -0.00123978, - -0.00270502, - -0.00167992}); // Fitted coefficients of Fourier Series | Equation of Time coefficients + static Array1D const SineSolDeclCoef( + 9, {0.00561800, 0.0657911, -0.392779, 0.00064440, -0.00618495, -0.00010101, -0.00007951, -0.00011691, 0.00002096}); // Fitted coefficients + // of Fourier series | + // Sine of declination + // coefficients + static Array1D const EqOfTimeCoef( + 9, {0.00021971, -0.122649, 0.00762856, -0.156308, -0.0530028, -0.00388702, -0.00123978, -0.00270502, -0.00167992}); // Fitted coefficients + // of Fourier Series | + // Equation of Time + // coefficients static Array1D const ASHRAE_A_Coef( 9, {1161.6685, 1.1554, 77.3575, -0.5359, -3.7622, 0.9875, -3.3924, -1.7445, 1.1198}); // Fitted coefficients of Fourier Series | ASHRAE A // Factor coefficients @@ -4975,26 +4955,17 @@ namespace WeatherManager { // 368.49341,.366502,24.538624,-.169983,-1.193417, & // .313261,-1.076093,-.543376,.355197 , & - static Array1D const ASHRAE_B_Coef(9, - {0.171631, - -0.00400448, - -0.0344923, - 0.00000209, - 0.00325428, - -0.00085429, - 0.00229562, - 0.0009034, - -0.0011867}); // Fitted coefficients of Fourier Series | ASHRAE B Factor coefficients - static Array1D const ASHRAE_C_Coef(9, - {0.0905151, - -0.00322522, - -0.0407966, - 0.000104164, - 0.00745899, - -0.00086461, - 0.0013111, - 0.000808275, - -0.00170515}); // Fitted coefficients of Fourier Series | ASHRAE C Factor coefficients + static Array1D const ASHRAE_B_Coef( + 9, {0.171631, -0.00400448, -0.0344923, 0.00000209, 0.00325428, -0.00085429, 0.00229562, 0.0009034, -0.0011867}); // Fitted coefficients of + // Fourier Series | + // ASHRAE B Factor + // coefficients + static Array1D const ASHRAE_C_Coef( + 9, {0.0905151, -0.00322522, -0.0407966, 0.000104164, 0.00745899, -0.00086461, 0.0013111, 0.000808275, -0.00170515}); // Fitted + // coefficients of + // Fourier Series | + // ASHRAE C Factor + // coefficients // INTERFACE BLOCK SPECIFICATIONS: // na @@ -5637,7 +5608,6 @@ namespace WeatherManager { // Legacy subroutine CKBLDE. // Using/Aliasing - using General::JulianDay; // SUBROUTINE ARGUMENT DEFINITIONS: // na @@ -5995,7 +5965,6 @@ namespace WeatherManager { // simulation dates // Using/Aliasing - using General::JulianDay; using General::TrimSigDigits; using namespace DataSystemVariables; using namespace DataIPShortCuts; @@ -6221,6 +6190,8 @@ namespace WeatherManager { computeJulianDate(RunPeriodInput(Loop).endYear, RunPeriodInput(Loop).endMonth, RunPeriodInput(Loop).endDay); } + RunPeriodInput(Loop).numSimYears = RunPeriodInput(Loop).endYear - RunPeriodInput(Loop).startYear + 1; + // A3, \field Use Weather File Holidays and Special Days if (lAlphaFieldBlanks(3) || UtilityRoutines::SameString(cAlphaArgs(3), "YES")) { RunPeriodInput(Loop).useHolidays = true; @@ -6296,8 +6267,8 @@ namespace WeatherManager { TotRunPers = 1; WeathSimReq = true; RunPeriodInput.allocate(TotRunPers); - RunPeriodInput(1).startJulianDate = JulianDay(RunPeriodInput(1).startMonth, RunPeriodInput(1).startDay, LeapYearAdd); - RunPeriodInput(1).endJulianDate = JulianDay(RunPeriodInput(1).endMonth, RunPeriodInput(1).endDay, LeapYearAdd); + RunPeriodInput(1).startJulianDate = General::OrdinalDay(RunPeriodInput(1).startMonth, RunPeriodInput(1).startDay, LeapYearAdd); + RunPeriodInput(1).endJulianDate = General::OrdinalDay(RunPeriodInput(1).endMonth, RunPeriodInput(1).endDay, LeapYearAdd); RunPeriodInput(1).monWeekDay = 0; if (RunPeriodInput(1).dayOfWeek != 0 && !ErrorsFound) { SetupWeekDaysByMonth( @@ -6322,7 +6293,6 @@ namespace WeatherManager { // simulation dates // Using/Aliasing - using General::JulianDay; using General::TrimSigDigits; using namespace DataSystemVariables; using namespace DataIPShortCuts; @@ -6450,16 +6420,16 @@ namespace WeatherManager { // calculate the annual start and end days from the user inputted month and day RunPeriodDesignInput(Count).startJulianDate = - JulianDay(RunPeriodDesignInput(Count).startMonth, RunPeriodDesignInput(Count).startDay, LeapYearAdd); + General::OrdinalDay(RunPeriodDesignInput(Count).startMonth, RunPeriodDesignInput(Count).startDay, LeapYearAdd); RunPeriodDesignInput(Count).endJulianDate = - JulianDay(RunPeriodDesignInput(Count).endMonth, RunPeriodDesignInput(Count).endDay, LeapYearAdd); + General::OrdinalDay(RunPeriodDesignInput(Count).endMonth, RunPeriodDesignInput(Count).endDay, LeapYearAdd); if (RunPeriodDesignInput(Count).startJulianDate <= RunPeriodDesignInput(Count).endJulianDate) { RunPeriodDesignInput(Count).totalDays = (RunPeriodDesignInput(Count).endJulianDate - RunPeriodDesignInput(Count).startJulianDate + 1) * RunPeriodDesignInput(Count).numSimYears; } else { - RunPeriodDesignInput(Count).totalDays = - (JulianDay(12, 31, LeapYearAdd) - RunPeriodDesignInput(Count).startJulianDate + 1 + RunPeriodDesignInput(Count).endJulianDate) * + RunPeriodDesignInput(Count).totalDays = (General::OrdinalDay(12, 31, LeapYearAdd) - RunPeriodDesignInput(Count).startJulianDate + 1 + + RunPeriodDesignInput(Count).endJulianDate) * RunPeriodDesignInput(Count).numSimYears; } RunPeriodDesignInput(Count).monWeekDay = 0; @@ -6720,7 +6690,6 @@ namespace WeatherManager { // na // Using/Aliasing - using General::JulianDay; // Locals // SUBROUTINE ARGUMENT DEFINITIONS: @@ -6749,7 +6718,7 @@ namespace WeatherManager { Warn = 0; - JDay = JulianDay(SpecialDays(Loop).Month, SpecialDays(Loop).Day, LeapYearAdd) - 1; + JDay = General::OrdinalDay(SpecialDays(Loop).Month, SpecialDays(Loop).Day, LeapYearAdd) - 1; for (Loop1 = 1; Loop1 <= SpecialDays(Loop).Duration; ++Loop1) { ++JDay; @@ -8626,7 +8595,6 @@ namespace WeatherManager { // reads in the line and processes as appropriate. // Using/Aliasing - using General::JulianDay; // SUBROUTINE PARAMETER DEFINITIONS: static gio::Fmt fmtLD("*"); @@ -8950,13 +8918,13 @@ namespace WeatherManager { } } TypicalExtremePeriods(Count).StartJDay = - JulianDay(TypicalExtremePeriods(Count).StartMonth, TypicalExtremePeriods(Count).StartDay, 0); - TypicalExtremePeriods(Count).EndJDay = JulianDay(TypicalExtremePeriods(Count).EndMonth, TypicalExtremePeriods(Count).EndDay, 0); + General::OrdinalDay(TypicalExtremePeriods(Count).StartMonth, TypicalExtremePeriods(Count).StartDay, 0); + TypicalExtremePeriods(Count).EndJDay = General::OrdinalDay(TypicalExtremePeriods(Count).EndMonth, TypicalExtremePeriods(Count).EndDay, 0); if (TypicalExtremePeriods(Count).StartJDay <= TypicalExtremePeriods(Count).EndJDay) { TypicalExtremePeriods(Count).TotalDays = TypicalExtremePeriods(Count).EndJDay - TypicalExtremePeriods(Count).StartJDay + 1; } else { TypicalExtremePeriods(Count).TotalDays = - JulianDay(12, 31, LeapYearAdd) - TypicalExtremePeriods(Count).StartJDay + 1 + TypicalExtremePeriods(Count).EndJDay; + General::OrdinalDay(12, 31, LeapYearAdd) - TypicalExtremePeriods(Count).StartJDay + 1 + TypicalExtremePeriods(Count).EndJDay; } } @@ -9138,16 +9106,16 @@ namespace WeatherManager { ++Count; } for (Count = 1; Count <= NumEPWTypExtSets; ++Count) { - // JulianDay (Month,Day,LeapYearValue) + // General::OrdinalDay (Month,Day,LeapYearValue) TypicalExtremePeriods(Count).StartJDay = - JulianDay(TypicalExtremePeriods(Count).StartMonth, TypicalExtremePeriods(Count).StartDay, LeapYearAdd); + General::OrdinalDay(TypicalExtremePeriods(Count).StartMonth, TypicalExtremePeriods(Count).StartDay, LeapYearAdd); TypicalExtremePeriods(Count).EndJDay = - JulianDay(TypicalExtremePeriods(Count).EndMonth, TypicalExtremePeriods(Count).EndDay, LeapYearAdd); + General::OrdinalDay(TypicalExtremePeriods(Count).EndMonth, TypicalExtremePeriods(Count).EndDay, LeapYearAdd); if (TypicalExtremePeriods(Count).StartJDay <= TypicalExtremePeriods(Count).EndJDay) { TypicalExtremePeriods(Count).TotalDays = TypicalExtremePeriods(Count).EndJDay - TypicalExtremePeriods(Count).StartJDay + 1; } else { TypicalExtremePeriods(Count).TotalDays = - JulianDay(12, 31, LeapYearAdd) - TypicalExtremePeriods(Count).StartJDay + 1 + TypicalExtremePeriods(Count).EndJDay; + General::OrdinalDay(12, 31, LeapYearAdd) - TypicalExtremePeriods(Count).StartJDay + 1 + TypicalExtremePeriods(Count).EndJDay; } } @@ -9274,9 +9242,9 @@ namespace WeatherManager { } if (DataPeriods(CurCount).StYear == 0 || DataPeriods(CurCount).EnYear == 0) { DataPeriods(CurCount).DataStJDay = - JulianDay(DataPeriods(CurCount).StMon, DataPeriods(CurCount).StDay, LeapYearAdd); + General::OrdinalDay(DataPeriods(CurCount).StMon, DataPeriods(CurCount).StDay, LeapYearAdd); DataPeriods(CurCount).DataEnJDay = - JulianDay(DataPeriods(CurCount).EnMon, DataPeriods(CurCount).EnDay, LeapYearAdd); + General::OrdinalDay(DataPeriods(CurCount).EnMon, DataPeriods(CurCount).EnDay, LeapYearAdd); if (DataPeriods(CurCount).DataStJDay <= DataPeriods(CurCount).DataEnJDay) { DataPeriods(CurCount).NumDays = DataPeriods(CurCount).DataEnJDay - DataPeriods(CurCount).DataStJDay + 1; } else { @@ -9836,8 +9804,6 @@ namespace WeatherManager { // Using/Aliasing using General::BetweenDates; - using General::InvJulianDay; - using General::JulianDay; // Locals // SUBROUTINE ARGUMENT DEFINITIONS: @@ -9869,16 +9835,16 @@ namespace WeatherManager { env.StartMonth = runPer.startMonth; env.StartDay = runPer.startDay; - env.StartJDay = JulianDay(runPer.startMonth, runPer.startDay, LeapYearAdd); + env.StartJDay = General::OrdinalDay(runPer.startMonth, runPer.startDay, LeapYearAdd); env.TotalDays = runPer.totalDays; env.EndMonth = runPer.endMonth; env.EndDay = runPer.endDay; - env.EndJDay = JulianDay(runPer.endMonth, runPer.endDay, LeapYearAdd); + env.EndJDay = General::OrdinalDay(runPer.endMonth, runPer.endDay, LeapYearAdd); env.NumSimYears = runPer.numSimYears; if (env.StartJDay <= env.EndJDay) { env.TotalDays = (env.EndJDay - env.StartJDay + 1) * env.NumSimYears; } else { - env.TotalDays = (JulianDay(12, 31, LeapYearAdd) - env.StartJDay + 1 + env.EndJDay) * env.NumSimYears; + env.TotalDays = (General::OrdinalDay(12, 31, LeapYearAdd) - env.StartJDay + 1 + env.EndJDay) * env.NumSimYears; } TotRunDesPersDays += env.TotalDays; env.UseDST = runPer.useDST; @@ -9904,71 +9870,67 @@ namespace WeatherManager { env.StartMonth = runPer.startMonth; env.StartDay = runPer.startDay; + env.StartYear = runPer.startYear; env.EndMonth = runPer.endMonth; env.EndDay = runPer.endDay; + env.EndYear = runPer.endYear; env.NumSimYears = runPer.numSimYears; + env.CurrentYear = runPer.startYear; + env.IsLeapYear = runPer.isLeapYear; + env.TreatYearsAsConsecutive = true; if (runPer.actualWeather) { - env.CurrentYear = runPer.startYear; - env.IsLeapYear = isLeapYear(runPer.startYear); - env.TreatYearsAsConsecutive = true; - env.StartYear = runPer.startYear; - env.EndYear = runPer.endYear; - JGDate(GregorianToJulian, env.StartDate, env.StartYear, env.StartMonth, env.StartDay); - JGDate(GregorianToJulian, env.EndDate, env.EndYear, env.EndMonth, env.EndDay); - env.StartJDay = env.StartDate; - env.EndJDay = env.EndDate; + // This will require leap years to be present, thus Julian days can be used for all the calculations + env.StartJDay = runPer.startJulianDate; + env.EndJDay = runPer.endJulianDate; env.TotalDays = env.EndDate - env.StartDate + 1; env.RawSimDays = env.EndDate - env.StartDate + 1; env.MatchYear = true; env.ActualWeather = true; - } else if (runPer.BeginYear < 100) { // std RunPeriod - env.CurrentYear = 0; - if (!WFAllowsLeapYears) { - env.IsLeapYear = false; // explicit set - LocalLeapYearAdd = 0; - } else { - env.IsLeapYear = true; // explicit set - LocalLeapYearAdd = 1; - } - env.TreatYearsAsConsecutive = false; + } else { // std RunPeriod env.RollDayTypeOnRepeat = runPer.RollDayTypeOnRepeat; - env.StartJDay = JulianDay(runPer.startMonth, runPer.startDay, LocalLeapYearAdd); - env.EndJDay = JulianDay(runPer.endMonth, runPer.endDay, LocalLeapYearAdd); - // need message if isleapyear and wfleapyearind=0 - if (env.StartJDay <= env.EndJDay) { + + if (env.StartYear == env.EndYear) { + // Short-circuit all the calculations, we're in a single year + if (!WFAllowsLeapYears) { + env.IsLeapYear = false; // explicit set + LocalLeapYearAdd = 0; + } else { + env.IsLeapYear = true; // explicit set + LocalLeapYearAdd = 1; + } + env.StartJDay = General::OrdinalDay(runPer.startMonth, runPer.startDay, LocalLeapYearAdd); + env.EndJDay = General::OrdinalDay(runPer.endMonth, runPer.endDay, LocalLeapYearAdd); env.RawSimDays = (env.EndJDay - env.StartJDay + 1); - env.TotalDays = (env.EndJDay - env.StartJDay + 1) * env.NumSimYears; + env.TotalDays = env.RawSimDays; } else { - env.RawSimDays = (JulianDay(12, 31, LeapYearAdd) - env.StartJDay + 1 + env.EndJDay); - env.TotalDays = (JulianDay(12, 31, LeapYearAdd) - env.StartJDay + 1 + env.EndJDay) * env.NumSimYears; - } - - } else { // Using Runperiod and StartYear option. - env.CurrentYear = runPer.BeginYear; - env.IsLeapYear = isLeapYear(env.CurrentYear); - env.TreatYearsAsConsecutive = true; - env.RollDayTypeOnRepeat = runPer.RollDayTypeOnRepeat; - env.StartJDay = JulianDay(runPer.startMonth, runPer.startDay, LeapYearAdd); - env.EndJDay = JulianDay(runPer.endMonth, runPer.endDay, LeapYearAdd); - env.TotalDays = 0; - for (Loop1 = 1; Loop1 <= env.NumSimYears; ++Loop1) { - if (!isLeapYear(runPer.BeginYear - 1 + Loop1) || !WFAllowsLeapYears) { - JDay1 = JulianDay(runPer.startMonth, runPer.startDay, 0); - JDay2 = JulianDay(runPer.endMonth, runPer.endDay, 0); - if (JDay1 <= JDay2) { - if (Loop1 == 1) env.RawSimDays = (JDay2 - JDay1 + 1); - env.TotalDays += (JDay2 - JDay1 + 1); - } else { - if (Loop1 == 1) env.RawSimDays = JulianDay(12, 31, 0) - JDay1 + 1 + JDay2; - env.TotalDays += JulianDay(12, 31, 0) - JDay1 + 1 + JDay2; - } - } else { // Leap Year - JDay1 = JulianDay(runPer.startMonth, runPer.startDay, 1); - JDay2 = JulianDay(runPer.endMonth, runPer.endDay, 1); - if (JDay1 <= JDay2) { - env.TotalDays += (JDay2 - JDay1 + 1); - } else { - env.TotalDays += JulianDay(12, 31, 1) - JDay1 + 1 + JDay2; + // Environment crosses year boundaries + env.RollDayTypeOnRepeat = runPer.RollDayTypeOnRepeat; + env.StartJDay = General::OrdinalDay(runPer.startMonth, runPer.startDay, runPer.isLeapYear ? 1 : 0); + env.EndJDay = General::OrdinalDay(runPer.endMonth, runPer.endDay, isLeapYear(runPer.endYear) ? 1 : 0); + env.TotalDays = 0; + for (Loop1 = 1; Loop1 <= env.NumSimYears; ++Loop1) { + if (!isLeapYear(runPer.startYear - 1 + Loop1) || !WFAllowsLeapYears) { + JDay1 = General::OrdinalDay(runPer.startMonth, runPer.startDay, 0); + JDay2 = General::OrdinalDay(runPer.endMonth, runPer.endDay, 0); + if (JDay1 <= JDay2) { + if (Loop1 == 1) { + env.RawSimDays = (JDay2 - JDay1 + 1); + } + env.TotalDays += (JDay2 - JDay1 + 1); + } else { + if (Loop1 == 1) { + env.RawSimDays = General::OrdinalDay(12, 31, 0) - JDay1 + 1 + JDay2; + } + env.TotalDays += General::OrdinalDay(12, 31, 0) - JDay1 + 1 + JDay2; + } + } else { // Leap Year + JDay1 = General::OrdinalDay(runPer.startMonth, runPer.startDay, 1); + JDay2 = General::OrdinalDay(runPer.endMonth, runPer.endDay, 1); + if (JDay1 <= JDay2) { + env.TotalDays += (JDay2 - JDay1 + 1); + } else { + env.TotalDays += General::OrdinalDay(12, 31, 1) - JDay1 + 1 + JDay2; + } } } } diff --git a/src/EnergyPlus/WeatherManager.hh b/src/EnergyPlus/WeatherManager.hh index 5ae046bcebc..5f85d0b0e09 100644 --- a/src/EnergyPlus/WeatherManager.hh +++ b/src/EnergyPlus/WeatherManager.hh @@ -397,14 +397,14 @@ namespace WeatherManager { bool RollDayTypeOnRepeat; // If repeating run period, increment day type on repeat. bool TreatYearsAsConsecutive; // When year rolls over, increment year and recalculate Leap Year bool actualWeather; // true when using actual weather data - int BeginYear; + //int BeginYear; // Default Constructor RunPeriodData() : totalDays(0), startMonth(1), startDay(1), startJulianDate(0), startYear(2017), endMonth(12), endDay(31), endJulianDate(0), endYear(0), dayOfWeek(0), startWeekDay(WeekDay::Sunday), useDST(false), useHolidays(false), applyWeekendRule(false), useRain(true), useSnow(true), - monWeekDay(12, 0), numSimYears(1), isLeapYear(false), RollDayTypeOnRepeat(true), TreatYearsAsConsecutive(true), actualWeather(false), - BeginYear(0) + monWeekDay(12, 0), numSimYears(1), isLeapYear(false), RollDayTypeOnRepeat(true), TreatYearsAsConsecutive(true), actualWeather(false) + //BeginYear(0) { } }; diff --git a/tst/EnergyPlus/unit/DElightManager.unit.cc b/tst/EnergyPlus/unit/DElightManager.unit.cc index 0613d51e772..054ff4da08a 100644 --- a/tst/EnergyPlus/unit/DElightManager.unit.cc +++ b/tst/EnergyPlus/unit/DElightManager.unit.cc @@ -341,7 +341,7 @@ TEST_F(EnergyPlusFixture, DElightManagerF_GetInputDElightComplexFenestration_Tes DataEnvironment::DSTIndicator = 0; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = General::JulianDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); ScheduleManager::UpdateScheduleValues(); InternalHeatGains::GetInternalHeatGainsInput(); InternalHeatGains::GetInternalHeatGainsInputFlag = false; diff --git a/tst/EnergyPlus/unit/DaylightingManager.unit.cc b/tst/EnergyPlus/unit/DaylightingManager.unit.cc index cd9320b85f5..efc0c0dc6e4 100644 --- a/tst/EnergyPlus/unit/DaylightingManager.unit.cc +++ b/tst/EnergyPlus/unit/DaylightingManager.unit.cc @@ -665,7 +665,7 @@ TEST_F(EnergyPlusFixture, DaylightingManager_GetDaylParamInGeoTrans_Test) DataEnvironment::DSTIndicator = 0; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = General::JulianDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); ScheduleManager::UpdateScheduleValues(); InternalHeatGains::GetInternalHeatGainsInput(); InternalHeatGains::GetInternalHeatGainsInputFlag = false; diff --git a/tst/EnergyPlus/unit/ElectricPowerServiceManager.unit.cc b/tst/EnergyPlus/unit/ElectricPowerServiceManager.unit.cc index 1c54b9f9cc0..7fb45efad23 100644 --- a/tst/EnergyPlus/unit/ElectricPowerServiceManager.unit.cc +++ b/tst/EnergyPlus/unit/ElectricPowerServiceManager.unit.cc @@ -441,7 +441,7 @@ TEST_F(EnergyPlusFixture, ManageElectricPowerTest_UpdateLoadCenterRecords_Case3) DataEnvironment::DSTIndicator = 0; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = General::JulianDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); ScheduleManager::UpdateScheduleValues(); createFacilityElectricPowerServiceObject(); @@ -554,7 +554,7 @@ TEST_F(EnergyPlusFixture, ManageElectricPowerTest_UpdateLoadCenterRecords_Case4) DataEnvironment::DSTIndicator = 0; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = General::JulianDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); ScheduleManager::UpdateScheduleValues(); // Case 4 DCBussInverterDCStorage Inverter = 5000, @@ -648,7 +648,7 @@ TEST_F(EnergyPlusFixture, ManageElectricPowerTest_UpdateLoadCenterRecords_Case5) DataEnvironment::DSTIndicator = 0; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = General::JulianDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); ScheduleManager::UpdateScheduleValues(); createFacilityElectricPowerServiceObject(); diff --git a/tst/EnergyPlus/unit/FanCoilUnits.unit.cc b/tst/EnergyPlus/unit/FanCoilUnits.unit.cc index 1f341e4a0c4..036a59fd308 100644 --- a/tst/EnergyPlus/unit/FanCoilUnits.unit.cc +++ b/tst/EnergyPlus/unit/FanCoilUnits.unit.cc @@ -104,7 +104,6 @@ using namespace EnergyPlus::WaterCoils; using DataHeatBalFanSys::TempControlType; using DataZoneEnergyDemands::CurDeadBandOrSetback; using DataZoneEnergyDemands::ZoneSysEnergyDemand; -using General::JulianDay; using General::TrimSigDigits; using MixedAir::OAMixer; @@ -401,7 +400,7 @@ TEST_F(EnergyPlusFixture, MultiStage4PipeFanCoilHeatingTest) DataEnvironment::DSTIndicator = 0; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = JulianDay(Month, DayOfMonth, 1); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(Month, DayOfMonth, 1); UpdateScheduleValues(); CalcMultiStage4PipeFanCoil(FanCoilNum, ZoneNum, FirstHVACIteration, QZnReq, SpeedRatio, PartLoadRatio, QUnitOut); @@ -716,7 +715,7 @@ TEST_F(EnergyPlusFixture, MultiStage4PipeFanCoilCoolingTest) DataEnvironment::DSTIndicator = 0; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = JulianDay(Month, DayOfMonth, 1); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(Month, DayOfMonth, 1); UpdateScheduleValues(); CalcMultiStage4PipeFanCoil(FanCoilNum, ZoneNum, FirstHVACIteration, QZnReq, SpeedRatio, PartLoadRatio, QUnitOut); @@ -1052,7 +1051,7 @@ TEST_F(EnergyPlusFixture, ConstantFanVariableFlowFanCoilHeatingTest) DataEnvironment::DSTIndicator = 0; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = JulianDay(Month, DayOfMonth, 1); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(Month, DayOfMonth, 1); UpdateScheduleValues(); // Normal heating simulation for fan coil with constant fan, variable water flow @@ -1406,7 +1405,7 @@ TEST_F(EnergyPlusFixture, ElectricCoilFanCoilHeatingTest) DataEnvironment::DSTIndicator = 0; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = JulianDay(Month, DayOfMonth, 1); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(Month, DayOfMonth, 1); UpdateScheduleValues(); // Normal heating simulation for fan coil with constant fan, electric heating @@ -1752,7 +1751,7 @@ TEST_F(EnergyPlusFixture, ConstantFanVariableFlowFanCoilCoolingTest) DataEnvironment::DSTIndicator = 0; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = JulianDay(Month, DayOfMonth, 1); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(Month, DayOfMonth, 1); UpdateScheduleValues(); // normal cooling simulation for constant fan variable flow fan coil Sim4PipeFanCoil(FanCoilNum, ZoneNum, ControlledZoneNum, FirstHVACIteration, QUnitOut, LatOutputProvided); @@ -2081,7 +2080,7 @@ TEST_F(EnergyPlusFixture, FanCoil_ASHRAE90VariableFan) DataEnvironment::DSTIndicator = 0; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = JulianDay(Month, DayOfMonth, 1); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(Month, DayOfMonth, 1); UpdateScheduleValues(); ZoneEqSizing.allocate(1); @@ -2738,7 +2737,7 @@ TEST_F(EnergyPlusFixture, FanCoil_CyclingFanMode) DataEnvironment::DSTIndicator = 0; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = JulianDay(Month, DayOfMonth, 1); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(Month, DayOfMonth, 1); UpdateScheduleValues(); ZoneEqSizing.allocate(1); diff --git a/tst/EnergyPlus/unit/PlantHeatExchangerFluidToFluid.unit.cc b/tst/EnergyPlus/unit/PlantHeatExchangerFluidToFluid.unit.cc index e0e160aa94b..e53207dcb5e 100644 --- a/tst/EnergyPlus/unit/PlantHeatExchangerFluidToFluid.unit.cc +++ b/tst/EnergyPlus/unit/PlantHeatExchangerFluidToFluid.unit.cc @@ -2282,7 +2282,7 @@ TEST_F(EnergyPlusFixture, PlantHXControlWithFirstHVACIteration) DataEnvironment::DSTIndicator = 0; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = General::JulianDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); ScheduleManager::UpdateScheduleValues(); PlantHeatExchangerFluidToFluid::FluidHX(1).AvailSchedNum = -1; @@ -2381,7 +2381,7 @@ TEST_F(EnergyPlusFixture, PlantHXControl_CoolingSetpointOnOffWithComponentOverri DataEnvironment::DSTIndicator = 0; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = General::JulianDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); ScheduleManager::UpdateScheduleValues(); PlantHeatExchangerFluidToFluid::FluidHX(1).AvailSchedNum = -1; diff --git a/tst/EnergyPlus/unit/PoweredInductionUnits.unit.cc b/tst/EnergyPlus/unit/PoweredInductionUnits.unit.cc index 65f0b0546a4..9e34548f37d 100644 --- a/tst/EnergyPlus/unit/PoweredInductionUnits.unit.cc +++ b/tst/EnergyPlus/unit/PoweredInductionUnits.unit.cc @@ -172,7 +172,7 @@ TEST_F(EnergyPlusFixture, ParallelPIUTest1) DataEnvironment::DSTIndicator = 0; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = General::JulianDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); DataEnvironment::StdRhoAir = Psychrometrics::PsyRhoAirFnPbTdbW(101325.0, 20.0, 0.0); ScheduleManager::UpdateScheduleValues(); @@ -391,7 +391,7 @@ TEST_F(EnergyPlusFixture, SeriesPIUTest1) DataEnvironment::DSTIndicator = 0; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = General::JulianDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); DataEnvironment::StdRhoAir = Psychrometrics::PsyRhoAirFnPbTdbW(101325.0, 20.0, 0.0); ScheduleManager::UpdateScheduleValues(); diff --git a/tst/EnergyPlus/unit/ScheduleManager.unit.cc b/tst/EnergyPlus/unit/ScheduleManager.unit.cc index 45dcad7f80b..738f7216dd0 100644 --- a/tst/EnergyPlus/unit/ScheduleManager.unit.cc +++ b/tst/EnergyPlus/unit/ScheduleManager.unit.cc @@ -377,7 +377,7 @@ TEST_F(EnergyPlusFixture, ScheduleDayInterval_SimpLinearInterp) DataEnvironment::DSTIndicator = 0; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = General::JulianDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); int ASchedIndex = GetScheduleIndex("SCHYR_A"); // interpolate Linear EXPECT_NEAR(0.001, LookUpScheduleValue(ASchedIndex, 7, 4), 0.000001); @@ -490,7 +490,7 @@ TEST_F(EnergyPlusFixture, ScheduleDayInterval_PartialHourLinearInterp) DataEnvironment::DSTIndicator = 0; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = General::JulianDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); int ASchedIndex = GetScheduleIndex("SCHYR_A"); // interpolate Linear EXPECT_NEAR(0.001, LookUpScheduleValue(ASchedIndex, 7, 4), 0.000001); @@ -563,7 +563,7 @@ TEST_F(EnergyPlusFixture, ScheduleDayInterval_LinearInterpIntervalNotTimestep) DataEnvironment::DSTIndicator = 0; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = General::JulianDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); int ASchedIndex = GetScheduleIndex("SCHYR_A"); // interpolate Linear EXPECT_NEAR(0.0, LookUpScheduleValue(ASchedIndex, 7, 4), 0.000001); diff --git a/tst/EnergyPlus/unit/SingleDuct.unit.cc b/tst/EnergyPlus/unit/SingleDuct.unit.cc index 5f27188c180..8a1f72a2509 100644 --- a/tst/EnergyPlus/unit/SingleDuct.unit.cc +++ b/tst/EnergyPlus/unit/SingleDuct.unit.cc @@ -134,7 +134,7 @@ TEST_F(EnergyPlusFixture, VAVNoReheatTerminalUnitSchedule) DataEnvironment::DSTIndicator = 0; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = General::JulianDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); DataEnvironment::StdRhoAir = Psychrometrics::PsyRhoAirFnPbTdbW(101325.0, 20.0, 0.0); ScheduleManager::UpdateScheduleValues(); @@ -306,7 +306,7 @@ TEST_F(EnergyPlusFixture, VAVReheatTerminalUnitSchedule) DataEnvironment::DSTIndicator = 0; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = General::JulianDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); DataEnvironment::StdRhoAir = Psychrometrics::PsyRhoAirFnPbTdbW(101325.0, 20.0, 0.0); ScheduleManager::UpdateScheduleValues(); diff --git a/tst/EnergyPlus/unit/SystemAvailabilityManager.unit.cc b/tst/EnergyPlus/unit/SystemAvailabilityManager.unit.cc index 69a8c10cc53..62c8ec0d614 100644 --- a/tst/EnergyPlus/unit/SystemAvailabilityManager.unit.cc +++ b/tst/EnergyPlus/unit/SystemAvailabilityManager.unit.cc @@ -186,7 +186,7 @@ TEST_F(EnergyPlusFixture, SysAvailManager_OptimumStart) DataEnvironment::DayOfWeek = 1; DataEnvironment::DayOfWeekTomorrow = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = General::JulianDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(DataEnvironment::Month, DataEnvironment::DayOfMonth, 1); ScheduleManager::UpdateScheduleValues(); DataZoneEquipment::ZoneEquipAvail.allocate(5); diff --git a/tst/EnergyPlus/unit/UnitaryHybridAirConditioner.unit.cc b/tst/EnergyPlus/unit/UnitaryHybridAirConditioner.unit.cc index 91ac5cebf56..3eecc8fbac7 100644 --- a/tst/EnergyPlus/unit/UnitaryHybridAirConditioner.unit.cc +++ b/tst/EnergyPlus/unit/UnitaryHybridAirConditioner.unit.cc @@ -155,9 +155,8 @@ TEST_F(EnergyPlusFixture, Test_UnitaryHybridAirConditioner_Unittest) DataEnvironment::DSTIndicator = 0; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - using General::JulianDay; DataGlobals::WarmupFlag = false; - DataEnvironment::DayOfYear_Schedule = JulianDay(Month, DayOfMonth, 1); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(Month, DayOfMonth, 1); ScheduleManager::UpdateScheduleValues(); // Initialize zone areas and volumes - too many other things need to be set up to do these in the normal routines DataHeatBalance::Zone(1).FloorArea = 232.26; From 4015829486bce3a4cc33c08675d7c6bce9b5d51b Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Fri, 13 Jul 2018 11:34:03 -0600 Subject: [PATCH 23/47] Change bad input behavior, address another bug Change bad weekday severe error into a warning with corrected day. Change actual weather behavior to require a leap day. --- idd/Energy+.idd.in | 8 +++-- src/EnergyPlus/WeatherManager.cc | 56 +++++++++++++++++++++++--------- 2 files changed, 45 insertions(+), 19 deletions(-) diff --git a/idd/Energy+.idd.in b/idd/Energy+.idd.in index b564bf72803..95a63a844fd 100644 --- a/idd/Energy+.idd.in +++ b/idd/Energy+.idd.in @@ -1276,7 +1276,7 @@ RunPeriod, A1 , \field Name \reference RunPeriodsAndDesignDays \note descriptive name (used in reporting mainly) - \note if blank, weather file title is used. if not blank, must be unique + \note If blank, weather file title is used. If not blank, must be unique N1 , \field Begin Month \required-field \minimum 1 @@ -1288,7 +1288,8 @@ RunPeriod, \maximum 31 \type integer N3, \field Begin Year - \note start year of the simulation, if this field is specified it must agree with the Day of Week for Start Day + \note Start year of the simulation, if this field is specified it must agree with the Day of Week for Start Day + \note If this field is blank, the year will be selected to match the weekday, which is Sunday if not specified N4 , \field End Month \required-field \minimum 1 @@ -1303,7 +1304,8 @@ RunPeriod, \note end year of simulation, if specified A2 , \field Day of Week for Start Day \note =[Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday]; - \default Sunday + \note If no year is input, this field will default to Sunday + \note If a year is input and this field is blank, the correct weekday is determined \type choice \key Sunday \key Monday diff --git a/src/EnergyPlus/WeatherManager.cc b/src/EnergyPlus/WeatherManager.cc index ed1531d7ed6..f399129cc30 100644 --- a/src/EnergyPlus/WeatherManager.cc +++ b/src/EnergyPlus/WeatherManager.cc @@ -1069,6 +1069,18 @@ namespace WeatherManager { UseRainValues = Environment(Envrn).UseRain; UseSnowValues = Environment(Envrn).UseSnow; + bool missingLeap(false); // Defer acting on anything found here until after the other range checks (see below) + if (Environment(Envrn).ActualWeather && !WFAllowsLeapYears) { + for (int year = Environment(Envrn).StartYear; year <= Environment(Envrn).EndYear; year++) { + if (isLeapYear(year)) { + ShowSevereError( + "GetNextEnvironment: Weatherfile does not support leap years but runperiod includes a leap year (" + + std::to_string(year) + ")"); + missingLeap = true; + } + } + } + OkRun = false; ThisWeekDay = 0; for (Loop = 1; Loop <= NumDataPeriods; ++Loop) { @@ -1142,6 +1154,11 @@ namespace WeatherManager { ShowFatalError(RoutineName + "Program terminates due to preceding condition."); } + if (missingLeap) { + // Bail out now if we still need to + ShowFatalError(RoutineName + "Program terminates due to preceding condition."); + } + // Following builds Environment start/end for ASHRAE 55 warnings gio::write(StDate, DateFormat) << Environment(Envrn).StartMonth << Environment(Envrn).StartDay; gio::write(EnDate, DateFormat) << Environment(Envrn).EndMonth << Environment(Envrn).EndDay; @@ -2176,8 +2193,6 @@ namespace WeatherManager { SetSpecialDayDates(Environment(Envrn).MonWeekDay); } ++YearOfSim; - //DataGlobals::CalendarYear += 1; - //DataGlobals::CalendarYearChr = std::to_string(DataGlobals::CalendarYear); FirstSimDayofYear = 1; ReadWeatherForDay(FirstSimDayofYear, Envrn, false); // Read tomorrow's weather } else { @@ -3283,6 +3298,12 @@ namespace WeatherManager { SkipThisDay = false; } + if (Environment(Environ).ActualWeather && CurrentYearIsLeapYear) { + if (WMonth == 3 && WDay == 1 && DataEnvironment::Month == 2 && DataEnvironment::DayOfMonth == 28) { + ShowFatalError("ReadEPlusWeatherForDay: Current year is a leap year, but Feb29 data is missing."); + } + } + TomorrowVariables.Year = WYear; TomorrowVariables.Month = WMonth; TomorrowVariables.DayOfMonth = WDay; @@ -6085,9 +6106,10 @@ namespace WeatherManager { calculateDayOfWeek(RunPeriodInput(Loop).startYear, RunPeriodInput(Loop).startMonth, RunPeriodInput(Loop).startDay); if (inputWeekday) { // Check for correctness of input if (weekday != RunPeriodInput(Loop).startWeekDay) { - ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + ", start weekday (" + cAlphaArgs(2) + - ") does not match the start year (" + std::to_string(RunPeriodInput(Loop).startYear) + ")"); - ErrorsFound = true; + ShowWarningError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + ", start weekday (" + cAlphaArgs(2) + + ") does not match the start year (" + std::to_string(RunPeriodInput(Loop).startYear) + + "), corrected to " + DaysOfWeek(static_cast(weekday)) + "."); + RunPeriodInput(Loop).startWeekDay = weekday; } } else { // Set the weekday if it was not input RunPeriodInput(Loop).startWeekDay = weekday; @@ -6109,9 +6131,10 @@ namespace WeatherManager { calculateDayOfWeek(RunPeriodInput(Loop).startYear, RunPeriodInput(Loop).startMonth, RunPeriodInput(Loop).startDay); if (inputWeekday) { // Check for correctness of input if (weekday != RunPeriodInput(Loop).startWeekDay) { - ShowSevereError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + ", start weekday (" + cAlphaArgs(2) + - ") does not match the start year (" + std::to_string(RunPeriodInput(Loop).startYear) + ")"); - ErrorsFound = true; + ShowWarningError(cCurrentModuleObject + ": object #" + TrimSigDigits(Loop) + ", start weekday (" + cAlphaArgs(2) + + ") does not match the start year (" + std::to_string(RunPeriodInput(Loop).startYear) + + "), corrected to " + DaysOfWeek(static_cast(weekday)) + "."); + RunPeriodInput(Loop).startWeekDay = weekday; } } else { // Set the weekday if it was not input RunPeriodInput(Loop).startWeekDay = weekday; @@ -6430,7 +6453,7 @@ namespace WeatherManager { } else { RunPeriodDesignInput(Count).totalDays = (General::OrdinalDay(12, 31, LeapYearAdd) - RunPeriodDesignInput(Count).startJulianDate + 1 + RunPeriodDesignInput(Count).endJulianDate) * - RunPeriodDesignInput(Count).numSimYears; + RunPeriodDesignInput(Count).numSimYears; } RunPeriodDesignInput(Count).monWeekDay = 0; if (RunPeriodDesignInput(1).dayOfWeek != 0 && !ErrorsFound) { @@ -8919,12 +8942,13 @@ namespace WeatherManager { } TypicalExtremePeriods(Count).StartJDay = General::OrdinalDay(TypicalExtremePeriods(Count).StartMonth, TypicalExtremePeriods(Count).StartDay, 0); - TypicalExtremePeriods(Count).EndJDay = General::OrdinalDay(TypicalExtremePeriods(Count).EndMonth, TypicalExtremePeriods(Count).EndDay, 0); + TypicalExtremePeriods(Count).EndJDay = + General::OrdinalDay(TypicalExtremePeriods(Count).EndMonth, TypicalExtremePeriods(Count).EndDay, 0); if (TypicalExtremePeriods(Count).StartJDay <= TypicalExtremePeriods(Count).EndJDay) { TypicalExtremePeriods(Count).TotalDays = TypicalExtremePeriods(Count).EndJDay - TypicalExtremePeriods(Count).StartJDay + 1; } else { - TypicalExtremePeriods(Count).TotalDays = - General::OrdinalDay(12, 31, LeapYearAdd) - TypicalExtremePeriods(Count).StartJDay + 1 + TypicalExtremePeriods(Count).EndJDay; + TypicalExtremePeriods(Count).TotalDays = General::OrdinalDay(12, 31, LeapYearAdd) - TypicalExtremePeriods(Count).StartJDay + + 1 + TypicalExtremePeriods(Count).EndJDay; } } @@ -9114,8 +9138,8 @@ namespace WeatherManager { if (TypicalExtremePeriods(Count).StartJDay <= TypicalExtremePeriods(Count).EndJDay) { TypicalExtremePeriods(Count).TotalDays = TypicalExtremePeriods(Count).EndJDay - TypicalExtremePeriods(Count).StartJDay + 1; } else { - TypicalExtremePeriods(Count).TotalDays = - General::OrdinalDay(12, 31, LeapYearAdd) - TypicalExtremePeriods(Count).StartJDay + 1 + TypicalExtremePeriods(Count).EndJDay; + TypicalExtremePeriods(Count).TotalDays = General::OrdinalDay(12, 31, LeapYearAdd) - TypicalExtremePeriods(Count).StartJDay + + 1 + TypicalExtremePeriods(Count).EndJDay; } } @@ -9880,8 +9904,8 @@ namespace WeatherManager { env.TreatYearsAsConsecutive = true; if (runPer.actualWeather) { // This will require leap years to be present, thus Julian days can be used for all the calculations - env.StartJDay = runPer.startJulianDate; - env.EndJDay = runPer.endJulianDate; + env.StartJDay = env.StartDate = runPer.startJulianDate; + env.EndJDay = env.EndDate = runPer.endJulianDate; env.TotalDays = env.EndDate - env.StartDate + 1; env.RawSimDays = env.EndDate - env.StartDate + 1; env.MatchYear = true; From 98e879f9967598d7a26576f0f45438584eea5206 Mon Sep 17 00:00:00 2001 From: Edwin Lee Date: Mon, 30 Jul 2018 13:15:56 -0500 Subject: [PATCH 24/47] Start stubbing out transition here, fix merge issue in unit test --- .../CreateNewIDFUsingRulesV9_0_0.f90 | 48 +++++++++++++++++++ tst/EnergyPlus/unit/OutdoorAirUnit.unit.cc | 4 +- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 b/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 index 301b7cd18ef..baccce9b635 100644 --- a/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 +++ b/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 @@ -18,6 +18,15 @@ SUBROUTINE SetThisVersionVariables() END MODULE +! INTEGER FUNCTION GetYearFromStartDayString(DayString) +! +! CHARACTER(len=*), INTENT(IN) :: DayString +! GetYearFromStartDayString = 2009 +! +! END FUNCTION + + + SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFileName,ArgFile,ArgIDFExtension) ! SUBROUTINE INFORMATION: @@ -137,6 +146,15 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile ! for Schedule:Compact from 8.8 to 8.9 CHARACTER(len=MaxNameLength) :: UpperInArg=blank + ! For run period transitions + TYPE FieldFlagAndValue + LOGICAL :: wasSet + CHARACTER(len=MaxNameLength) :: originalValue + END TYPE FieldFlagAndValue + TYPE (FieldFlagAndValue) :: RunPeriodStartYear + TYPE (FieldFlagAndValue) :: RunPeriodRepeated + INTEGER :: YearNumber + If (FirstTime) THEN ! do things that might be applicable only to this new version FirstTime=.false. EndIf @@ -417,6 +435,36 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile ! If your original object starts with P, insert the rules here ! If your original object starts with R, insert the rules here + CASE('RUNPERIOD') + CALL GetNewObjectDefInIDD(ObjectName,NwNumArgs,NwAorN,NwReqFld,NwObjMinFlds,NwFldNames,NwFldDefaults,NwFldUnits) + ! spend some time mining out the state of the run period object + RunPeriodStartYear%wasSet = .FALSE. + IF (CurArgs >= 14) THEN + IF (TRIM(InArgs(14)) .NE. Blank) THEN + RunPeriodStartYear%wasSet = .TRUE. + RunPeriodStartYear%originalValue = InArgs(14) + END IF + END IF + RunPeriodRepeated%wasSet = .FALSE. + IF (CurArgs >= 12) THEN + IF (TRIM(InArgs(12)) .NE. Blank) THEN + RunPeriodRepeated%wasSet = .TRUE. + RunPeriodRepeated%originalValue = InArgs(12) + END IF + END IF + ! Now start writing some object data out + OutArgs(1:3) = InArgs(1:3) ! Name, BeginMonth and BeginDay are the same + IF (RunPeriodStartYear%wasSet) THEN + OutArgs(4) = RunPeriodStartYear%originalValue + ELSE IF (RunPeriodRepeated%wasSet) THEN + IF (TRIM(InArgs(6)) .NE. Blank) THEN + YearNumber = 2009 !GetYearFromStartDayString(InArgs(6)) + ELSE + YearNumber = 2009 ! GetYearFromStartDayString("SUNDAY") + END IF + ELSE + OutArgs(4) = Blank + END IF ! If your original object starts with S, insert the rules here diff --git a/tst/EnergyPlus/unit/OutdoorAirUnit.unit.cc b/tst/EnergyPlus/unit/OutdoorAirUnit.unit.cc index 1dbcaa1226d..3da11019718 100644 --- a/tst/EnergyPlus/unit/OutdoorAirUnit.unit.cc +++ b/tst/EnergyPlus/unit/OutdoorAirUnit.unit.cc @@ -625,7 +625,7 @@ TEST_F(EnergyPlusFixture, OutdoorAirUnit_WaterCoolingCoilAutoSizeTest) DataEnvironment::DayOfMonth = 21; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = General::JulianDay(Month, DayOfMonth, HourOfDay); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(Month, DayOfMonth, HourOfDay); UpdateScheduleValues(); @@ -928,7 +928,7 @@ TEST_F(EnergyPlusFixture, OutdoorAirUnit_SteamHeatingCoilAutoSizeTest) DataEnvironment::DayOfMonth = 21; DataEnvironment::DayOfWeek = 2; DataEnvironment::HolidayIndex = 0; - DataEnvironment::DayOfYear_Schedule = General::JulianDay(Month, DayOfMonth, HourOfDay); + DataEnvironment::DayOfYear_Schedule = General::OrdinalDay(Month, DayOfMonth, HourOfDay); UpdateScheduleValues(); From 8bfccc05ccd263e24a411c6217f19e23df6caf7c Mon Sep 17 00:00:00 2001 From: Edwin Lee Date: Mon, 30 Jul 2018 21:17:06 -0500 Subject: [PATCH 25/47] Fix failing unit and integration test --- testfiles/AirflowNetworkAdvanced_SingleSided_NV.idf | 8 ++++---- tst/EnergyPlus/unit/InputProcessor.unit.cc | 12 ++++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/testfiles/AirflowNetworkAdvanced_SingleSided_NV.idf b/testfiles/AirflowNetworkAdvanced_SingleSided_NV.idf index 26261fa16da..50c54868c65 100644 --- a/testfiles/AirflowNetworkAdvanced_SingleSided_NV.idf +++ b/testfiles/AirflowNetworkAdvanced_SingleSided_NV.idf @@ -117,16 +117,16 @@ RunPeriod1, !- Name 1, !- Begin Month 1, !- Begin Day of Month + 2017, !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + 2017, !- End Year + , !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1, !- Number of Times Runperiod to be Repeated - Yes; !- Increment Day of Week on repeat + Yes; !- Use Weather File Snow Indicators !- =========== ALL OBJECTS IN CLASS: RUNPERIODCONTROL:SPECIALDAYS =========== diff --git a/tst/EnergyPlus/unit/InputProcessor.unit.cc b/tst/EnergyPlus/unit/InputProcessor.unit.cc index 3f368baf63e..85b61fb5680 100644 --- a/tst/EnergyPlus/unit/InputProcessor.unit.cc +++ b/tst/EnergyPlus/unit/InputProcessor.unit.cc @@ -331,9 +331,11 @@ TEST_F(InputProcessorFixture, parse_two_RunPeriod) " , !- Name", " 1, !- Begin Month", " 1, !- Begin Day of Month", + " , !- Begin Year", " 1, !- End Month", " 31, !- End Day of Month", - " Tuesday, !- Day of Week for Start Day", + " , !- End Year", + " Sunday, !- Day of Week for Start Day", " Yes, !- Use Weather File Holidays and Special Days", " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", @@ -344,9 +346,11 @@ TEST_F(InputProcessorFixture, parse_two_RunPeriod) " , !- Name", " 7, !- Begin Month", " 1, !- Begin Day of Month", + " , !- Begin Year", " 7, !- End Month", " 31, !- End Day of Month", - " Tuesday, !- Day of Week for Start Day", + " , !- End Year", + " Sunday, !- Day of Week for Start Day", " Yes, !- Use Weather File Holidays and Special Days", " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", @@ -360,7 +364,7 @@ TEST_F(InputProcessorFixture, parse_two_RunPeriod) {"apply_weekend_holiday_rule", "No"}, {"begin_day_of_month", 1}, {"begin_month", 1}, - {"day_of_week_for_start_day", "Tuesday"}, + {"day_of_week_for_start_day", "Sunday"}, {"end_day_of_month", 31}, {"end_month", 1}, {"use_weather_file_daylight_saving_period", "Yes"}, @@ -372,7 +376,7 @@ TEST_F(InputProcessorFixture, parse_two_RunPeriod) {"apply_weekend_holiday_rule", "No"}, {"begin_day_of_month", 1}, {"begin_month", 7}, - {"day_of_week_for_start_day", "Tuesday"}, + {"day_of_week_for_start_day", "Sunday"}, {"end_day_of_month", 31}, {"end_month", 7}, {"use_weather_file_daylight_saving_period", "Yes"}, From 3f541c54cfc06646bda4cebc8b282e0e5c91426c Mon Sep 17 00:00:00 2001 From: Edwin Lee Date: Wed, 1 Aug 2018 12:10:46 -0500 Subject: [PATCH 26/47] Use external function for year --- src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 | 14 +++----------- src/Transition/UtilityRoutines.f90 | 5 +++++ 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 b/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 index baccce9b635..22e6003212b 100644 --- a/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 +++ b/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 @@ -18,15 +18,6 @@ SUBROUTINE SetThisVersionVariables() END MODULE -! INTEGER FUNCTION GetYearFromStartDayString(DayString) -! -! CHARACTER(len=*), INTENT(IN) :: DayString -! GetYearFromStartDayString = 2009 -! -! END FUNCTION - - - SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFileName,ArgFile,ArgIDFExtension) ! SUBROUTINE INFORMATION: @@ -154,6 +145,7 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile TYPE (FieldFlagAndValue) :: RunPeriodStartYear TYPE (FieldFlagAndValue) :: RunPeriodRepeated INTEGER :: YearNumber + INTEGER, EXTERNAL :: GetYearFromStartDayString If (FirstTime) THEN ! do things that might be applicable only to this new version FirstTime=.false. @@ -458,9 +450,9 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile OutArgs(4) = RunPeriodStartYear%originalValue ELSE IF (RunPeriodRepeated%wasSet) THEN IF (TRIM(InArgs(6)) .NE. Blank) THEN - YearNumber = 2009 !GetYearFromStartDayString(InArgs(6)) + YearNumber = GetYearFromStartDayString(InArgs(6)) ELSE - YearNumber = 2009 ! GetYearFromStartDayString("SUNDAY") + YearNumber = GetYearFromStartDayString("SUNDAY") END IF ELSE OutArgs(4) = Blank diff --git a/src/Transition/UtilityRoutines.f90 b/src/Transition/UtilityRoutines.f90 index c196972fa1f..6f6375dc17d 100644 --- a/src/Transition/UtilityRoutines.f90 +++ b/src/Transition/UtilityRoutines.f90 @@ -962,6 +962,11 @@ REAL FUNCTION CalculateMuEMPD(a, b, c, d, d_empd, density_matl) RESULT(mu_EMPD) END FUNCTION +INTEGER FUNCTION GetYearFromStartDayString(DayString) + CHARACTER(len=*), INTENT(IN) :: DayString + GetYearFromStartDayString = 2009 +END FUNCTION + ! NOTICE ! ! Copyright © 1996-2008 The Board of Trustees of the University of Illinois From 956629be2a09c2a59b72badb03cac3715be3bb13 Mon Sep 17 00:00:00 2001 From: Edwin Lee Date: Wed, 1 Aug 2018 14:31:23 -0500 Subject: [PATCH 27/47] In progress transition for runperiod --- .../CreateNewIDFUsingRulesV9_0_0.f90 | 52 +++++++++++++++++- src/Transition/UtilityRoutines.f90 | 55 ++++++++++++++++++- 2 files changed, 102 insertions(+), 5 deletions(-) diff --git a/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 b/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 index e2edec8d697..5801731e1da 100644 --- a/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 +++ b/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 @@ -144,8 +144,10 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile END TYPE FieldFlagAndValue TYPE (FieldFlagAndValue) :: RunPeriodStartYear TYPE (FieldFlagAndValue) :: RunPeriodRepeated - INTEGER :: YearNumber + INTEGER :: YearNumber, RepeatedCount INTEGER, EXTERNAL :: GetYearFromStartDayString + LOGICAL, EXTERNAL :: IsYearNumberALeapYear + INTEGER, EXTERNAL :: GetLeapYearFromStartDayString If (FirstTime) THEN ! do things that might be applicable only to this new version FirstTime=.false. @@ -451,7 +453,9 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile END IF END IF ! Now start writing some object data out - OutArgs(1:3) = InArgs(1:3) ! Name, BeginMonth and BeginDay are the same + ! Name, BeginMonth and BeginDay are the same + OutArgs(1:3) = InArgs(1:3) + ! Start year is weird IF (RunPeriodStartYear%wasSet) THEN OutArgs(4) = RunPeriodStartYear%originalValue ELSE IF (RunPeriodRepeated%wasSet) THEN @@ -460,9 +464,53 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile ELSE YearNumber = GetYearFromStartDayString("SUNDAY") END IF + WRITE(OutArgs(4), *) YearNumber ELSE OutArgs(4) = Blank END IF + ! End month and End day or month are the same, just need to shift one field + OutArgs(5:6) = InArgs(4:5) + ! End year is weird + IF (RunPeriodRepeated%wasSet) THEN + ! What if start year turns out to be blank above? + READ(RunPeriodRepeated%originalValue, *) RepeatedCount + YearNumber = YearNumber + RepeatedCount + WRITE(OutArgs(7), *) YearNumber + IF (TRIM(InArgs(4)).EQ."2".AND.TRIM(InArgs(5)).EQ."29") THEN + ! We should have a leap year end year + IF (.NOT.IsYearNumberALeapYear(YearNumber)) THEN + ! Warning about bad end year/end date combination + OutArgs(6) = "28" + END IF + END IF + ELSE + OutArgs(7) = Blank + END IF + ! Start day of week is also weird + IF (RunPeriodStartYear%wasSet) THEN + ! Throw warning saying the start of the week has been specified by the year + OutArgs(8) = Blank ! But why is this field even staying? + ELSE + IF (TRIM(InArgs(6))=="USEWEATHERFILE") THEN + ! Throw warning... + OutArgs(8) = "Sunday" + ELSE + ! Copy it over unchanged? + OutArgs(8) = InArgs(6) + END IF + END IF + ! Remaining fields are mostly straightforward + OutArgs(9) = InArgs(7) ! Use Weather File Holidays + OutArgs(10) = InArgs(8) ! Use Weather File DST + OutArgs(11) = InArgs(9) ! Apply Weekend Holiday Rule + OutArgs(12) = InArgs(10) ! Use Weather File Rain + OutArgs(13) = InArgs(11) ! Use Weather File Snow + ! InArgs(12): Eliminate number of times to repeat runperiod + IF (TRIM(InArgs(13))=="YES") THEN + ! Issue warning about incrementing day of week on repeat... + END IF + ! InArgs(14): Start year moved to above + OutArgs(14) = Blank ! new Treat weather as actual field? ! If your original object starts with S, insert the rules here diff --git a/src/Transition/UtilityRoutines.f90 b/src/Transition/UtilityRoutines.f90 index 6f6375dc17d..2ec24f01a70 100644 --- a/src/Transition/UtilityRoutines.f90 +++ b/src/Transition/UtilityRoutines.f90 @@ -962,9 +962,58 @@ REAL FUNCTION CalculateMuEMPD(a, b, c, d, d_empd, density_matl) RESULT(mu_EMPD) END FUNCTION -INTEGER FUNCTION GetYearFromStartDayString(DayString) - CHARACTER(len=*), INTENT(IN) :: DayString - GetYearFromStartDayString = 2009 +INTEGER FUNCTION GetYearFromStartDayString(sDay) RESULT(Year) + CHARACTER(len=*), INTENT(IN) :: sDay + IF (sDay(1:2).EQ."SU".OR.sDay(1:2).EQ."Su".OR.sDay(1:2).EQ."sU".OR.sDay(1:2).EQ."su") THEN + Year = 2017 + ELSE IF (sDay(1:1).EQ."M".OR.sDay(1:1).EQ."m") THEN + Year = 2007 + ELSE IF (sDay(1:2).EQ."TU".OR.sDay(1:2).EQ."Tu".OR.sDay(1:2).EQ."tU".OR.sDay(1:2).EQ."tu") THEN + Year = 2013 + ELSE IF (sDay(1:1).EQ."W".OR.sDay(1:1).EQ."w") THEN + Year = 2014 + ELSE IF (sDay(1:2).EQ."TH".OR.sDay(1:2).EQ."Th".OR.sDay(1:2).EQ."tH".OR.sDay(1:2).EQ."th") THEN + Year = 2015 + ELSE IF (sDay(1:1).EQ."F".OR.sDay(1:1).EQ."f") THEN + Year = 2010 + ELSE IF (sDay(1:2).EQ."SA".OR.sDay(1:2).EQ."Sa".OR.sDay(1:2).EQ."sA".OR.sDay(1:2).EQ."sa") THEN + Year = 2011 + ELSE + Year = 2018 + END IF +END FUNCTION + +INTEGER FUNCTION GetLeapYearFromStartDayString(sDay) RESULT(Year) + CHARACTER(len=*), INTENT(IN) :: sDay + IF (sDay(1:2).EQ."SU".OR.sDay(1:2).EQ."Su".OR.sDay(1:2).EQ."sU".OR.sDay(1:2).EQ."su") THEN + Year = 2012 + ELSE IF (sDay(1:1).EQ."M".OR.sDay(1:1).EQ."m") THEN + Year = 1996 + ELSE IF (sDay(1:2).EQ."TU".OR.sDay(1:2).EQ."Tu".OR.sDay(1:2).EQ."tU".OR.sDay(1:2).EQ."tu") THEN + Year = 2008 + ELSE IF (sDay(1:1).EQ."W".OR.sDay(1:1).EQ."w") THEN + Year = 1992 + ELSE IF (sDay(1:2).EQ."TH".OR.sDay(1:2).EQ."Th".OR.sDay(1:2).EQ."tH".OR.sDay(1:2).EQ."th") THEN + Year = 2004 + ELSE IF (sDay(1:1).EQ."F".OR.sDay(1:1).EQ."f") THEN + Year = 2016 + ELSE IF (sDay(1:2).EQ."SA".OR.sDay(1:2).EQ."Sa".OR.sDay(1:2).EQ."sA".OR.sDay(1:2).EQ."sa") THEN + Year = 2000 + ELSE + Year = 2016 + END IF +END FUNCTION + +LOGICAL FUNCTION IsYearNumberALeapYear(YearNumber) RESULT(LeapYear) + INTEGER, INTENT(IN) :: YearNumber + IF ((YearNumber/4.0) == INT(YearNumber/4.0)) THEN + IF ((YearNumber/1000.0) == INT(YearNumber/1000.0)) THEN + LeapYear = .TRUE. + RETURN + END IF + END IF + LeapYear = .FALSE. + RETURN END FUNCTION ! NOTICE From 4bac2e4602f2c9896e1062fa15caf2b5cc34dabd Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Thu, 9 Aug 2018 12:45:43 -0600 Subject: [PATCH 28/47] Expand unit test to get failures --- src/EnergyPlus/WeatherManager.cc | 4 +-- tst/EnergyPlus/unit/RunPeriod.unit.cc | 44 ++++++++++++++++++++++++--- 2 files changed, 41 insertions(+), 7 deletions(-) diff --git a/src/EnergyPlus/WeatherManager.cc b/src/EnergyPlus/WeatherManager.cc index f399129cc30..0c1bd40ec39 100644 --- a/src/EnergyPlus/WeatherManager.cc +++ b/src/EnergyPlus/WeatherManager.cc @@ -10324,9 +10324,9 @@ namespace WeatherManager { // Could probably do some bounds checking here, but for now assume the month is in [1, 12] if (leapYear) { - return daysbefore[Month - 1] + Day; - } else { return daysbeforeleap[Month - 1] + Day; + } else { + return daysbefore[Month - 1] + Day; } } diff --git a/tst/EnergyPlus/unit/RunPeriod.unit.cc b/tst/EnergyPlus/unit/RunPeriod.unit.cc index 6823b8fbdcb..fc8b967755a 100644 --- a/tst/EnergyPlus/unit/RunPeriod.unit.cc +++ b/tst/EnergyPlus/unit/RunPeriod.unit.cc @@ -131,39 +131,73 @@ TEST_F(EnergyPlusFixture, RunPeriod_YearTests) "No, !- Apply Weekend Holiday Rule", "Yes, !- Use Weather File Rain Indicators", "Yes; !- Use Weather File Snow Indicators", + "RunPeriod,", + "RP5, !- Name", + "8, !- Begin Month", + "18, !- Begin Day of Month", + ", !- Begin Year", + "12, !- End Month", + "31, !- End Day of Month", + ", !- End Year", + "Wednesday, !- Day of Week for Start Day", + "Yes, !- Use Weather File Holidays and Special Days", + "Yes, !- Use Weather File Daylight Saving Period", + "No, !- Apply Weekend Holiday Rule", + "Yes, !- Use Weather File Rain Indicators", + "Yes; !- Use Weather File Snow Indicators", + "RunPeriod,", + "RP6, !- Name", + "2, !- Begin Month", + "29, !- Begin Day of Month", + ", !- Begin Year", + "12, !- End Month", + "31, !- End Day of Month", + ", !- End Year", + "Wednesday, !- Day of Week for Start Day", + "Yes, !- Use Weather File Holidays and Special Days", + "Yes, !- Use Weather File Daylight Saving Period", + "No, !- Apply Weekend Holiday Rule", + "Yes, !- Use Weather File Rain Indicators", + "Yes; !- Use Weather File Snow Indicators", "BUILDING, Simple One Zone (Wireframe DXF), 0.0, Suburbs, .04, .004, MinimalShadowing, 30, 6;", }); ASSERT_TRUE(process_idf(idf_objects)); bool errors_in_input(false); - int totalrps(4); + int totalrps(6); WeatherManager::GetRunPeriodData(totalrps, errors_in_input); EXPECT_FALSE(errors_in_input); EXPECT_EQ(WeatherManager::WeekDay::Monday, WeatherManager::RunPeriodInput[0].startWeekDay); EXPECT_EQ(2016, WeatherManager::RunPeriodInput[0].startYear); - EXPECT_EQ(2016, WeatherManager::RunPeriodInput[0].startYear); EXPECT_EQ(2457448, WeatherManager::RunPeriodInput[0].startJulianDate); EXPECT_EQ(2457451, WeatherManager::RunPeriodInput[0].endJulianDate); EXPECT_EQ(WeatherManager::WeekDay::Wednesday, WeatherManager::RunPeriodInput[1].startWeekDay); EXPECT_EQ(2012, WeatherManager::RunPeriodInput[1].startYear); - EXPECT_EQ(2012, WeatherManager::RunPeriodInput[1].startYear); EXPECT_EQ(2455987, WeatherManager::RunPeriodInput[1].startJulianDate); EXPECT_EQ(2455990, WeatherManager::RunPeriodInput[1].endJulianDate); EXPECT_EQ(WeatherManager::WeekDay::Thursday, WeatherManager::RunPeriodInput[2].startWeekDay); EXPECT_EQ(2015, WeatherManager::RunPeriodInput[2].startYear); - EXPECT_EQ(2015, WeatherManager::RunPeriodInput[2].startYear); EXPECT_EQ(2457024, WeatherManager::RunPeriodInput[2].startJulianDate); EXPECT_EQ(2457388, WeatherManager::RunPeriodInput[2].endJulianDate); EXPECT_EQ(WeatherManager::WeekDay::Sunday, WeatherManager::RunPeriodInput[3].startWeekDay); EXPECT_EQ(2017, WeatherManager::RunPeriodInput[3].startYear); - EXPECT_EQ(2017, WeatherManager::RunPeriodInput[3].startYear); EXPECT_EQ(2457755, WeatherManager::RunPeriodInput[3].startJulianDate); EXPECT_EQ(2458119, WeatherManager::RunPeriodInput[3].endJulianDate); + + EXPECT_EQ(WeatherManager::WeekDay::Wednesday, WeatherManager::RunPeriodInput[4].startWeekDay); + EXPECT_EQ(2010, WeatherManager::RunPeriodInput[4].startYear); + EXPECT_EQ(2455427, WeatherManager::RunPeriodInput[4].startJulianDate); + EXPECT_EQ(2455562, WeatherManager::RunPeriodInput[4].endJulianDate); + + EXPECT_EQ(WeatherManager::WeekDay::Wednesday, WeatherManager::RunPeriodInput[5].startWeekDay); + EXPECT_EQ(1992, WeatherManager::RunPeriodInput[5].startYear); + EXPECT_EQ(2448682, WeatherManager::RunPeriodInput[5].startJulianDate); + EXPECT_EQ(2448988, WeatherManager::RunPeriodInput[5].endJulianDate); } TEST_F(EnergyPlusFixture, RunPeriod_EndYearOnly) From 58b0ad7e7b9a1e1e687355bcf83afdc06ddfc51a Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Thu, 9 Aug 2018 12:57:25 -0600 Subject: [PATCH 29/47] Implement fix --- src/EnergyPlus/WeatherManager.cc | 32 ++++++++++++--------------- tst/EnergyPlus/unit/RunPeriod.unit.cc | 4 ++-- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/src/EnergyPlus/WeatherManager.cc b/src/EnergyPlus/WeatherManager.cc index 0c1bd40ec39..5f60fdaa74b 100644 --- a/src/EnergyPlus/WeatherManager.cc +++ b/src/EnergyPlus/WeatherManager.cc @@ -5944,30 +5944,26 @@ namespace WeatherManager { static int findYearForWeekday(int const month, int const day, WeekDay const weekday) { - static std::map defaultYear{{WeekDay::Sunday, 2017}, - {WeekDay::Monday, 2007}, - {WeekDay::Tuesday, 2013}, - {WeekDay::Wednesday, 2014}, - {WeekDay::Thursday, 2015}, - {WeekDay::Friday, 2010}, - {WeekDay::Saturday, 2011}}; + // Find a year that goes with a month/day and a weekday. A lookup table is used with the most recent year that includes + // the date with the weekday specified. + + // Tu, W, Th, F, Sa, Su, M, Tu, W, Th, F, Sa, Su + static std::array defaultYear{{2013, 2014, 2015, 2010, 2011, 2017, 2007, 2013, 2014, 2015, 2010, 2011, 2017}}; + int rem = calculateDayOfYear(month, day) % 7; - WeekDay firstWeekDay = static_cast(static_cast(weekday) - rem + 1); - return defaultYear[firstWeekDay]; + return defaultYear[static_cast(weekday) - rem + 5]; // static_cast(weekday) - rem + 1 + 4 } static int findLeapYearForWeekday(int const month, int const day, WeekDay const weekday) { - static std::map defaultYear{{WeekDay::Sunday, 2012}, - {WeekDay::Monday, 1996}, - {WeekDay::Tuesday, 2008}, - {WeekDay::Wednesday, 1992}, - {WeekDay::Thursday, 2004}, - {WeekDay::Friday, 2016}, - {WeekDay::Saturday, 2000}}; + // Find a leap year that goes with a month/day and a weekday. A lookup table is used with the most recent year that includes + // the date with the weekday specified. + + // Tu, W, Th, F, Sa, Su, M, Tu, W, Th, F, Sa, Su + static std::array defaultLeapYear{{2008, 1992, 2004, 2016, 2000, 2012, 1996, 2008, 1992, 2004, 2016, 2000, 2012}}; + int rem = calculateDayOfYear(month, day, true) % 7; - WeekDay firstWeekDay = static_cast(static_cast(weekday) - rem + 1); - return defaultYear[firstWeekDay]; + return defaultLeapYear[static_cast(weekday) - rem + 5]; // static_cast(weekday) - rem + 1 + 4 } void GetRunPeriodData(int &TotRunPers, // Total number of Run Periods requested diff --git a/tst/EnergyPlus/unit/RunPeriod.unit.cc b/tst/EnergyPlus/unit/RunPeriod.unit.cc index fc8b967755a..3a42a116ff2 100644 --- a/tst/EnergyPlus/unit/RunPeriod.unit.cc +++ b/tst/EnergyPlus/unit/RunPeriod.unit.cc @@ -153,7 +153,7 @@ TEST_F(EnergyPlusFixture, RunPeriod_YearTests) "12, !- End Month", "31, !- End Day of Month", ", !- End Year", - "Wednesday, !- Day of Week for Start Day", + "Saturday, !- Day of Week for Start Day", "Yes, !- Use Weather File Holidays and Special Days", "Yes, !- Use Weather File Daylight Saving Period", "No, !- Apply Weekend Holiday Rule", @@ -194,7 +194,7 @@ TEST_F(EnergyPlusFixture, RunPeriod_YearTests) EXPECT_EQ(2455427, WeatherManager::RunPeriodInput[4].startJulianDate); EXPECT_EQ(2455562, WeatherManager::RunPeriodInput[4].endJulianDate); - EXPECT_EQ(WeatherManager::WeekDay::Wednesday, WeatherManager::RunPeriodInput[5].startWeekDay); + EXPECT_EQ(WeatherManager::WeekDay::Saturday, WeatherManager::RunPeriodInput[5].startWeekDay); EXPECT_EQ(1992, WeatherManager::RunPeriodInput[5].startYear); EXPECT_EQ(2448682, WeatherManager::RunPeriodInput[5].startJulianDate); EXPECT_EQ(2448988, WeatherManager::RunPeriodInput[5].endJulianDate); From 2a98ad90db8ba54c3c675f7a811a48dc927e4f0f Mon Sep 17 00:00:00 2001 From: Edwin Lee Date: Thu, 16 Aug 2018 14:25:43 -0500 Subject: [PATCH 30/47] Updated transition code --- .../CreateNewIDFUsingRulesV9_0_0.f90 | 41 ++++++++++++------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 b/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 index 5801731e1da..1aca7413e2c 100644 --- a/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 +++ b/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 @@ -440,14 +440,14 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile ! spend some time mining out the state of the run period object RunPeriodStartYear%wasSet = .FALSE. IF (CurArgs >= 14) THEN - IF (TRIM(InArgs(14)) .NE. Blank) THEN + IF (TRIM(InArgs(14)) /= Blank) THEN RunPeriodStartYear%wasSet = .TRUE. RunPeriodStartYear%originalValue = InArgs(14) END IF END IF RunPeriodRepeated%wasSet = .FALSE. IF (CurArgs >= 12) THEN - IF (TRIM(InArgs(12)) .NE. Blank) THEN + IF (TRIM(InArgs(12)) /= Blank) THEN RunPeriodRepeated%wasSet = .TRUE. RunPeriodRepeated%originalValue = InArgs(12) END IF @@ -459,10 +459,18 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile IF (RunPeriodStartYear%wasSet) THEN OutArgs(4) = RunPeriodStartYear%originalValue ELSE IF (RunPeriodRepeated%wasSet) THEN - IF (TRIM(InArgs(6)) .NE. Blank) THEN - YearNumber = GetYearFromStartDayString(InArgs(6)) + IF (TRIM(InArgs(6)) /= Blank) THEN + IF (TRIM(InArgs(2))=="2".AND.TRIM(InArgs(3))=="29") THEN + YearNumber = GetLeapYearFromStartDayString(InArgs(6)) + ELSE + YearNumber = GetYearFromStartDayString(InArgs(6)) + END IF ELSE - YearNumber = GetYearFromStartDayString("SUNDAY") + IF (TRIM(InArgs(2))=="2".AND.TRIM(InArgs(3))=="29") THEN + YearNumber = GetLeapYearFromStartDayString("SUNDAY") + ELSE + YearNumber = GetYearFromStartDayString("SUNDAY") + END IF END IF WRITE(OutArgs(4), *) YearNumber ELSE @@ -473,14 +481,19 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile ! End year is weird IF (RunPeriodRepeated%wasSet) THEN ! What if start year turns out to be blank above? - READ(RunPeriodRepeated%originalValue, *) RepeatedCount - YearNumber = YearNumber + RepeatedCount - WRITE(OutArgs(7), *) YearNumber - IF (TRIM(InArgs(4)).EQ."2".AND.TRIM(InArgs(5)).EQ."29") THEN - ! We should have a leap year end year - IF (.NOT.IsYearNumberALeapYear(YearNumber)) THEN - ! Warning about bad end year/end date combination - OutArgs(6) = "28" + IF (TRIM(OutArgs(4)) == Blank) THEN + OutArgs(7) = Blank + ELSE + READ(RunPeriodRepeated%originalValue, *) RepeatedCount + READ(OutArgs(4), *) YearNumber + YearNumber = YearNumber + RepeatedCount + WRITE(OutArgs(7), *) YearNumber + IF (TRIM(InArgs(4))=="2".AND.TRIM(InArgs(5))=="29") THEN + ! We should have a leap year end year + IF (.NOT.IsYearNumberALeapYear(YearNumber)) THEN + ! Warning about bad end year/end date combination + OutArgs(6) = "28" + END IF END IF END IF ELSE @@ -511,7 +524,7 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile END IF ! InArgs(14): Start year moved to above OutArgs(14) = Blank ! new Treat weather as actual field? - + nodiff = .false. ! If your original object starts with S, insert the rules here ! If your original object starts with T, insert the rules here From c479b894fe655d7a2630ae10d70ee5cc488070df Mon Sep 17 00:00:00 2001 From: Edwin Lee Date: Thu, 16 Aug 2018 20:16:11 -0500 Subject: [PATCH 31/47] Use proper functions for year selection --- .../CreateNewIDFUsingRulesV9_0_0.f90 | 17 ++-- src/Transition/UtilityRoutines.f90 | 93 +++++++++++++++---- 2 files changed, 82 insertions(+), 28 deletions(-) diff --git a/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 b/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 index 1aca7413e2c..4e1a1ae1eda 100644 --- a/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 +++ b/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 @@ -144,10 +144,11 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile END TYPE FieldFlagAndValue TYPE (FieldFlagAndValue) :: RunPeriodStartYear TYPE (FieldFlagAndValue) :: RunPeriodRepeated - INTEGER :: YearNumber, RepeatedCount + INTEGER :: MonthNumber, DayNumber, YearNumber, RepeatedCount INTEGER, EXTERNAL :: GetYearFromStartDayString LOGICAL, EXTERNAL :: IsYearNumberALeapYear INTEGER, EXTERNAL :: GetLeapYearFromStartDayString + INTEGER, EXTERNAL :: FindYearForWeekDay If (FirstTime) THEN ! do things that might be applicable only to this new version FirstTime=.false. @@ -459,18 +460,12 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile IF (RunPeriodStartYear%wasSet) THEN OutArgs(4) = RunPeriodStartYear%originalValue ELSE IF (RunPeriodRepeated%wasSet) THEN + READ(OutArgs(2), *) MonthNumber + READ(OutArgs(3), *) DayNumber IF (TRIM(InArgs(6)) /= Blank) THEN - IF (TRIM(InArgs(2))=="2".AND.TRIM(InArgs(3))=="29") THEN - YearNumber = GetLeapYearFromStartDayString(InArgs(6)) - ELSE - YearNumber = GetYearFromStartDayString(InArgs(6)) - END IF + YearNumber = FindYearForWeekDay(MonthNumber, DayNumber, InArgs(6)) ELSE - IF (TRIM(InArgs(2))=="2".AND.TRIM(InArgs(3))=="29") THEN - YearNumber = GetLeapYearFromStartDayString("SUNDAY") - ELSE - YearNumber = GetYearFromStartDayString("SUNDAY") - END IF + YearNumber = FindYearForWeekDay(MonthNumber, DayNumber, "SUNDAY") END IF WRITE(OutArgs(4), *) YearNumber ELSE diff --git a/src/Transition/UtilityRoutines.f90 b/src/Transition/UtilityRoutines.f90 index 2ec24f01a70..202028b37f6 100644 --- a/src/Transition/UtilityRoutines.f90 +++ b/src/Transition/UtilityRoutines.f90 @@ -382,7 +382,7 @@ FUNCTION FindUnitNumber (FileName) RESULT (UnitNumber) Pos=INDEX(TestFileName,FileName) IF (Pos .ne. 0) THEN ! Must be the last part of the file - IF (Pos+FileNameLength-1 .eq. TestFileLength) EXIT + IF (Pos+FileNameLength-1 == TestFileLength) EXIT ENDIF END DO ENDIF @@ -864,7 +864,7 @@ SUBROUTINE ShowErrorMessage(ErrorMessage,OutUnit1,OutUnit2) SAVE StandardErrorOutput done=INDEX(ErrorMessage,'Completed Successfully') - IF (TotalErrors .eq. 0 .and. done .eq. 0) THEN + IF (TotalErrors == 0 .and. done == 0) THEN StandardErrorOutput=GetNewUnitNumber() IF (FileOK) THEN OPEN(StandardErrorOutput,File=TRIM(FileNamePath)//'.VCpErr') @@ -964,19 +964,19 @@ REAL FUNCTION CalculateMuEMPD(a, b, c, d, d_empd, density_matl) RESULT(mu_EMPD) INTEGER FUNCTION GetYearFromStartDayString(sDay) RESULT(Year) CHARACTER(len=*), INTENT(IN) :: sDay - IF (sDay(1:2).EQ."SU".OR.sDay(1:2).EQ."Su".OR.sDay(1:2).EQ."sU".OR.sDay(1:2).EQ."su") THEN + IF (sDay(1:2)=="SU".OR.sDay(1:2)=="Su".OR.sDay(1:2)=="sU".OR.sDay(1:2)=="su") THEN Year = 2017 - ELSE IF (sDay(1:1).EQ."M".OR.sDay(1:1).EQ."m") THEN + ELSE IF (sDay(1:1)=="M".OR.sDay(1:1)=="m") THEN Year = 2007 - ELSE IF (sDay(1:2).EQ."TU".OR.sDay(1:2).EQ."Tu".OR.sDay(1:2).EQ."tU".OR.sDay(1:2).EQ."tu") THEN + ELSE IF (sDay(1:2)=="TU".OR.sDay(1:2)=="Tu".OR.sDay(1:2)=="tU".OR.sDay(1:2)=="tu") THEN Year = 2013 - ELSE IF (sDay(1:1).EQ."W".OR.sDay(1:1).EQ."w") THEN + ELSE IF (sDay(1:1)=="W".OR.sDay(1:1)=="w") THEN Year = 2014 - ELSE IF (sDay(1:2).EQ."TH".OR.sDay(1:2).EQ."Th".OR.sDay(1:2).EQ."tH".OR.sDay(1:2).EQ."th") THEN + ELSE IF (sDay(1:2)=="TH".OR.sDay(1:2)=="Th".OR.sDay(1:2)=="tH".OR.sDay(1:2)=="th") THEN Year = 2015 - ELSE IF (sDay(1:1).EQ."F".OR.sDay(1:1).EQ."f") THEN + ELSE IF (sDay(1:1)=="F".OR.sDay(1:1)=="f") THEN Year = 2010 - ELSE IF (sDay(1:2).EQ."SA".OR.sDay(1:2).EQ."Sa".OR.sDay(1:2).EQ."sA".OR.sDay(1:2).EQ."sa") THEN + ELSE IF (sDay(1:2)=="SA".OR.sDay(1:2)=="Sa".OR.sDay(1:2)=="sA".OR.sDay(1:2)=="sa") THEN Year = 2011 ELSE Year = 2018 @@ -985,25 +985,84 @@ INTEGER FUNCTION GetYearFromStartDayString(sDay) RESULT(Year) INTEGER FUNCTION GetLeapYearFromStartDayString(sDay) RESULT(Year) CHARACTER(len=*), INTENT(IN) :: sDay - IF (sDay(1:2).EQ."SU".OR.sDay(1:2).EQ."Su".OR.sDay(1:2).EQ."sU".OR.sDay(1:2).EQ."su") THEN + IF (sDay(1:2)=="SU".OR.sDay(1:2)=="Su".OR.sDay(1:2)=="sU".OR.sDay(1:2)=="su") THEN Year = 2012 - ELSE IF (sDay(1:1).EQ."M".OR.sDay(1:1).EQ."m") THEN + ELSE IF (sDay(1:1)=="M".OR.sDay(1:1)=="m") THEN Year = 1996 - ELSE IF (sDay(1:2).EQ."TU".OR.sDay(1:2).EQ."Tu".OR.sDay(1:2).EQ."tU".OR.sDay(1:2).EQ."tu") THEN + ELSE IF (sDay(1:2)=="TU".OR.sDay(1:2)=="Tu".OR.sDay(1:2)=="tU".OR.sDay(1:2)=="tu") THEN Year = 2008 - ELSE IF (sDay(1:1).EQ."W".OR.sDay(1:1).EQ."w") THEN + ELSE IF (sDay(1:1)=="W".OR.sDay(1:1)=="w") THEN Year = 1992 - ELSE IF (sDay(1:2).EQ."TH".OR.sDay(1:2).EQ."Th".OR.sDay(1:2).EQ."tH".OR.sDay(1:2).EQ."th") THEN + ELSE IF (sDay(1:2)=="TH".OR.sDay(1:2)=="Th".OR.sDay(1:2)=="tH".OR.sDay(1:2)=="th") THEN Year = 2004 - ELSE IF (sDay(1:1).EQ."F".OR.sDay(1:1).EQ."f") THEN + ELSE IF (sDay(1:1)=="F".OR.sDay(1:1)=="f") THEN Year = 2016 - ELSE IF (sDay(1:2).EQ."SA".OR.sDay(1:2).EQ."Sa".OR.sDay(1:2).EQ."sA".OR.sDay(1:2).EQ."sa") THEN + ELSE IF (sDay(1:2)=="SA".OR.sDay(1:2)=="Sa".OR.sDay(1:2)=="sA".OR.sDay(1:2)=="sa") THEN Year = 2000 ELSE Year = 2016 END IF END FUNCTION +INTEGER FUNCTION GetWeekdayNumFromString(sDay) RESULT(weekdayNum) + CHARACTER(len=*), INTENT(IN) :: sDay + IF (sDay(1:2)=="SU".OR.sDay(1:2)=="Su".OR.sDay(1:2)=="sU".OR.sDay(1:2)=="su") THEN + weekdayNum = 1 + ELSE IF (sDay(1:1)=="M".OR.sDay(1:1)=="m") THEN + weekdayNum = 2 + ELSE IF (sDay(1:2)=="TU".OR.sDay(1:2)=="Tu".OR.sDay(1:2)=="tU".OR.sDay(1:2)=="tu") THEN + weekdayNum = 3 + ELSE IF (sDay(1:1)=="W".OR.sDay(1:1)=="w") THEN + weekdayNum = 4 + ELSE IF (sDay(1:2)=="TH".OR.sDay(1:2)=="Th".OR.sDay(1:2)=="tH".OR.sDay(1:2)=="th") THEN + weekdayNum = 5 + ELSE IF (sDay(1:1)=="F".OR.sDay(1:1)=="f") THEN + weekdayNum = 6 + ELSE IF (sDay(1:2)=="SA".OR.sDay(1:2)=="Sa".OR.sDay(1:2)=="sA".OR.sDay(1:2)=="sa") THEN + weekdayNum = 7 + END IF +END FUNCTION + +INTEGER FUNCTION CalculateDayOfYear(iMonth, iDay, LeapYear) RESULT(Day) + ! This function takes an integer month (1-12), integer date (1-31), and boolean flag + ! for leap year, then accesses a 1-based array of "days before" this month, plus the current + ! date, to return the day of the year + INTEGER, INTENT(IN) :: iMonth, iDay + LOGICAL, INTENT(IN) :: LeapYear + INTEGER :: DaysBefore(12) = (/ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 /) + INTEGER :: DaysBeforeLeap(12) = (/ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 /); + IF (LeapYear) THEN + Day = DaysBeforeLeap(iMonth) + iDay; + ELSE + Day = DaysBefore(iMonth) + iDay; + END IF +END FUNCTION CalculateDayOfYear + +INTEGER FUNCTION FindYearForWeekDay(iMonth, iDay, cWeekday) RESULT(Year) + ! Should take in an integer month (1-12), integer date (1-31), and integer weekday (1-7) + ! and return back a year that matches this condition, whether leap year or not + INTEGER, INTENT(IN) :: iMonth, iDay + CHARACTER(len=*), INTENT(IN) :: cWeekday + INTEGER :: DefaultYear(13) = (/ 2013, 2014, 2015, 2010, 2011, 2017, 2007, 2013, 2014, 2015, 2010, 2011, 2017 /) + INTEGER :: DefaultLeapYear(13) = (/ 2008, 1992, 2004, 2016, 2000, 2012, 1996, 2008, 1992, 2004, 2016, 2000, 2012 /) + LOGICAL :: LeapYear = .FALSE. + INTEGER :: Ordinal = 0, Rem = 0, Index = 0 + INTEGER :: iWeekday = 0 + INTEGER, EXTERNAL :: CalculateDayOfYear, GetWeekdayNumFromString + IF (iMonth==2.AND.iDay==29) THEN + LeapYear = .TRUE. + END IF + iWeekday = GetWeekdayNumFromString(cWeekday) + Ordinal = CalculateDayOfYear(iMonth, iDay, LeapYear) + Rem = MOD(Ordinal, 7) + Index = iWeekday - Rem + 5 + IF (LeapYear) THEN + Year = DefaultLeapYear(iWeekday - Rem + 6) + ELSE + Year = DefaultYear(iWeekday - Rem + 6) + END IF +END FUNCTION + LOGICAL FUNCTION IsYearNumberALeapYear(YearNumber) RESULT(LeapYear) INTEGER, INTENT(IN) :: YearNumber IF ((YearNumber/4.0) == INT(YearNumber/4.0)) THEN @@ -1018,7 +1077,7 @@ LOGICAL FUNCTION IsYearNumberALeapYear(YearNumber) RESULT(LeapYear) ! NOTICE ! -! Copyright © 1996-2008 The Board of Trustees of the University of Illinois +! Copyright � 1996-2008 The Board of Trustees of the University of Illinois ! and The Regents of the University of California through Ernest Orlando Lawrence ! Berkeley National Laboratory, pending any required approval by the ! US Department of Energy. All rights reserved. From 0bb84a6ea8b7d4fb1fa8d5a24358556496c921d2 Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Thu, 16 Aug 2018 20:56:18 -0600 Subject: [PATCH 32/47] Fix new example files --- testfiles/WCE_Diffuse_Shade.idf | 6 ++++-- testfiles/WCE_DoubleClear_BSDF.idf | 4 +++- testfiles/WCE_Interior_VB_-45_deg.idf | 4 +++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/testfiles/WCE_Diffuse_Shade.idf b/testfiles/WCE_Diffuse_Shade.idf index 03151246736..334c99117ef 100644 --- a/testfiles/WCE_Diffuse_Shade.idf +++ b/testfiles/WCE_Diffuse_Shade.idf @@ -87,9 +87,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule @@ -698,4 +700,4 @@ WindowProperty:ShadingControl, , !- Shading Device Material Name , !- Type of Slat Angle Control for Blinds , !- Slat Angle Schedule Name - 0; !- Setpoint 2 {W/m2 or deg C} \ No newline at end of file + 0; !- Setpoint 2 {W/m2 or deg C} diff --git a/testfiles/WCE_DoubleClear_BSDF.idf b/testfiles/WCE_DoubleClear_BSDF.idf index 28361861af0..44d6d1a35ce 100644 --- a/testfiles/WCE_DoubleClear_BSDF.idf +++ b/testfiles/WCE_DoubleClear_BSDF.idf @@ -84,9 +84,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule diff --git a/testfiles/WCE_Interior_VB_-45_deg.idf b/testfiles/WCE_Interior_VB_-45_deg.idf index c68eda80981..44c933c84c6 100644 --- a/testfiles/WCE_Interior_VB_-45_deg.idf +++ b/testfiles/WCE_Interior_VB_-45_deg.idf @@ -87,9 +87,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule From 5b4f5daf2800822da7ff47fdaa9d0e4b6bce6f23 Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Fri, 17 Aug 2018 09:16:34 -0600 Subject: [PATCH 33/47] Update examples and a test --- testfiles/AirflowNetwork_MultiAirLoops.idf | 6 ++++-- .../CmplxGlz_Daylighting_SouthVerticalVB45deg.idf | 4 +++- .../unit/AirflowNetworkBalanceManager.unit.cc | 10 ++++++++-- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/testfiles/AirflowNetwork_MultiAirLoops.idf b/testfiles/AirflowNetwork_MultiAirLoops.idf index 74cbd031b8e..3989dc9e393 100644 --- a/testfiles/AirflowNetwork_MultiAirLoops.idf +++ b/testfiles/AirflowNetwork_MultiAirLoops.idf @@ -179,9 +179,11 @@ RunPeriod, Winter run, !- Name 1, !- Begin Month - 1, !- Begin Day of Month - 12, !- End Month + 1, !- Begin Day of Month + , !- Begin Year + 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/testfiles/CmplxGlz_Daylighting_SouthVerticalVB45deg.idf b/testfiles/CmplxGlz_Daylighting_SouthVerticalVB45deg.idf index 0a962fd9b62..4d51b27036f 100644 --- a/testfiles/CmplxGlz_Daylighting_SouthVerticalVB45deg.idf +++ b/testfiles/CmplxGlz_Daylighting_SouthVerticalVB45deg.idf @@ -139,9 +139,11 @@ datarun, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month - UseWeatherFile, !- Day of Week for Start Day + , !- End Year + Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule diff --git a/tst/EnergyPlus/unit/AirflowNetworkBalanceManager.unit.cc b/tst/EnergyPlus/unit/AirflowNetworkBalanceManager.unit.cc index 40147e80390..eb4357ad822 100644 --- a/tst/EnergyPlus/unit/AirflowNetworkBalanceManager.unit.cc +++ b/tst/EnergyPlus/unit/AirflowNetworkBalanceManager.unit.cc @@ -8282,9 +8282,11 @@ TEST_F(EnergyPlusFixture, MultiAirLoopTest) " RunPeriod,", " Spring run, !- Name", " 4, !- Begin Month", - " 1, !- Begin Day of Month", + " 1, !- Begin Day of Month", + " , !- Begin Year", " 4, !- End Month", - " 1, !- End Day of Month", + " 1, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", " Yes, !- Use Weather File Holidays and Special Days", " Yes, !- Use Weather File Daylight Saving Period", @@ -8296,8 +8298,10 @@ TEST_F(EnergyPlusFixture, MultiAirLoopTest) " Winter run, !- Name", " 1, !- Begin Month", " 14, !- Begin Day of Month", + " , !- Begin Year", " 1, !- End Month", " 14, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", " Yes, !- Use Weather File Holidays and Special Days", " Yes, !- Use Weather File Daylight Saving Period", @@ -8309,8 +8313,10 @@ TEST_F(EnergyPlusFixture, MultiAirLoopTest) " Summer run, !- Name", " 7, !- Begin Month", " 7, !- Begin Day of Month", + " , !- Begin Year", " 7, !- End Month", " 7, !- End Day of Month", + " , !- End Year", " Tuesday, !- Day of Week for Start Day", " Yes, !- Use Weather File Holidays and Special Days", " Yes, !- Use Weather File Daylight Saving Period", From 20bf5f87b1717f5c8c40023bb8cc7cc930822a02 Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Fri, 17 Aug 2018 11:24:02 -0600 Subject: [PATCH 34/47] Update more idf files --- performance_tests/10zone1vav.idf | 5 +++-- performance_tests/15zonePSZ.idf | 2 ++ performance_tests/15zonePTAC.idf | 2 ++ performance_tests/15zonePVAV.idf | 2 ++ performance_tests/15zonevav.idf | 2 ++ performance_tests/15zonevav_no_reports.idf | 2 ++ performance_tests/20zone1vav.idf | 5 +++-- performance_tests/30zone1vav.idf | 5 +++-- performance_tests/30zonePSZ.idf | 2 ++ performance_tests/30zonePTAC.idf | 2 ++ performance_tests/30zonePVAV.idf | 2 ++ performance_tests/30zonevav.idf | 2 ++ performance_tests/40zone1vav.idf | 5 +++-- performance_tests/45zonePSZ.idf | 2 ++ performance_tests/45zonePTAC.idf | 2 ++ performance_tests/45zonePVAV.idf | 2 ++ performance_tests/45zonevav.idf | 2 ++ performance_tests/50zone1vav.idf | 5 +++-- performance_tests/60Zone1PVAV.idf | 5 +++-- performance_tests/60Zone1VAV.idf | 5 +++-- performance_tests/60zone2PVAV.idf | 5 +++-- performance_tests/60zone3PVAV.idf | 5 +++-- performance_tests/60zone6PVAV.idf | 5 +++-- .../BenchmarkHospitalNew_USA_CA_SAN_FRANCISCO.idf | 2 ++ ...rgeOfficeNew_USA_CA_SAN_FRANCISCO_10_windows_per_zone.idf | 2 ++ ...nchmarklargeofficenew_usa_ca_san_francisco_no_reports.idf | 2 ++ performance_tests/PipingSystem_Underground_FHX.idf | 2 ++ .../benchmarklargeofficenew_usa_ca_san_francisco.idf | 2 ++ testfiles/AirflowNetwork_MultiAirLoops.idf | 2 ++ 29 files changed, 68 insertions(+), 20 deletions(-) diff --git a/performance_tests/10zone1vav.idf b/performance_tests/10zone1vav.idf index 9c729371c31..1703c7b8f94 100644 --- a/performance_tests/10zone1vav.idf +++ b/performance_tests/10zone1vav.idf @@ -57,15 +57,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators Site:Location, CZ03RV2, !- Name diff --git a/performance_tests/15zonePSZ.idf b/performance_tests/15zonePSZ.idf index 845a485d18a..470e8ae04c2 100644 --- a/performance_tests/15zonePSZ.idf +++ b/performance_tests/15zonePSZ.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/performance_tests/15zonePTAC.idf b/performance_tests/15zonePTAC.idf index 60cf7ce564c..a1a1319314f 100644 --- a/performance_tests/15zonePTAC.idf +++ b/performance_tests/15zonePTAC.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/performance_tests/15zonePVAV.idf b/performance_tests/15zonePVAV.idf index 2cfe4229606..98ec5178365 100644 --- a/performance_tests/15zonePVAV.idf +++ b/performance_tests/15zonePVAV.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/performance_tests/15zonevav.idf b/performance_tests/15zonevav.idf index 46ed124cbb8..f88cbd35eba 100644 --- a/performance_tests/15zonevav.idf +++ b/performance_tests/15zonevav.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/performance_tests/15zonevav_no_reports.idf b/performance_tests/15zonevav_no_reports.idf index d446218a29c..696a86bc0bb 100644 --- a/performance_tests/15zonevav_no_reports.idf +++ b/performance_tests/15zonevav_no_reports.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/performance_tests/20zone1vav.idf b/performance_tests/20zone1vav.idf index a3674f8d37b..bcbfcc68798 100644 --- a/performance_tests/20zone1vav.idf +++ b/performance_tests/20zone1vav.idf @@ -57,15 +57,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators Site:Location, CZ03RV2, !- Name diff --git a/performance_tests/30zone1vav.idf b/performance_tests/30zone1vav.idf index a583646ba9a..186084047c6 100644 --- a/performance_tests/30zone1vav.idf +++ b/performance_tests/30zone1vav.idf @@ -57,15 +57,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators Site:Location, CZ03RV2, !- Name diff --git a/performance_tests/30zonePSZ.idf b/performance_tests/30zonePSZ.idf index cab2ba7da3e..8357119f1ba 100644 --- a/performance_tests/30zonePSZ.idf +++ b/performance_tests/30zonePSZ.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/performance_tests/30zonePTAC.idf b/performance_tests/30zonePTAC.idf index ced46396d5b..0ec03a38572 100644 --- a/performance_tests/30zonePTAC.idf +++ b/performance_tests/30zonePTAC.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/performance_tests/30zonePVAV.idf b/performance_tests/30zonePVAV.idf index 50259c0e66c..f7d4efaf6da 100644 --- a/performance_tests/30zonePVAV.idf +++ b/performance_tests/30zonePVAV.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/performance_tests/30zonevav.idf b/performance_tests/30zonevav.idf index 157f3a57d85..2f30d9cc609 100644 --- a/performance_tests/30zonevav.idf +++ b/performance_tests/30zonevav.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/performance_tests/40zone1vav.idf b/performance_tests/40zone1vav.idf index 6ca65ab8701..e718669e390 100644 --- a/performance_tests/40zone1vav.idf +++ b/performance_tests/40zone1vav.idf @@ -57,15 +57,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators Site:Location, CZ03RV2, !- Name diff --git a/performance_tests/45zonePSZ.idf b/performance_tests/45zonePSZ.idf index 1906cbc820f..129dd8b1e65 100644 --- a/performance_tests/45zonePSZ.idf +++ b/performance_tests/45zonePSZ.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/performance_tests/45zonePTAC.idf b/performance_tests/45zonePTAC.idf index a96a5706c4c..f44cdcfe318 100644 --- a/performance_tests/45zonePTAC.idf +++ b/performance_tests/45zonePTAC.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/performance_tests/45zonePVAV.idf b/performance_tests/45zonePVAV.idf index 22669d2ac7c..0efe806ea38 100644 --- a/performance_tests/45zonePVAV.idf +++ b/performance_tests/45zonePVAV.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/performance_tests/45zonevav.idf b/performance_tests/45zonevav.idf index 0f33ae515ee..298af2e1b31 100644 --- a/performance_tests/45zonevav.idf +++ b/performance_tests/45zonevav.idf @@ -134,8 +134,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/performance_tests/50zone1vav.idf b/performance_tests/50zone1vav.idf index 87fb6383566..90879e955be 100644 --- a/performance_tests/50zone1vav.idf +++ b/performance_tests/50zone1vav.idf @@ -57,15 +57,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators Site:Location, CZ03RV2, !- Name diff --git a/performance_tests/60Zone1PVAV.idf b/performance_tests/60Zone1PVAV.idf index 87e73637ebb..838596fd623 100644 --- a/performance_tests/60Zone1PVAV.idf +++ b/performance_tests/60Zone1PVAV.idf @@ -57,15 +57,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators Site:Location, CZ03RV2, !- Name diff --git a/performance_tests/60Zone1VAV.idf b/performance_tests/60Zone1VAV.idf index b170747f88e..09ba0b173f5 100644 --- a/performance_tests/60Zone1VAV.idf +++ b/performance_tests/60Zone1VAV.idf @@ -57,15 +57,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators Site:Location, CZ03RV2, !- Name diff --git a/performance_tests/60zone2PVAV.idf b/performance_tests/60zone2PVAV.idf index 95225f00850..a18dd8091a5 100644 --- a/performance_tests/60zone2PVAV.idf +++ b/performance_tests/60zone2PVAV.idf @@ -57,15 +57,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators Site:Location, CZ03RV2, !- Name diff --git a/performance_tests/60zone3PVAV.idf b/performance_tests/60zone3PVAV.idf index d2154772957..503cb9317a0 100644 --- a/performance_tests/60zone3PVAV.idf +++ b/performance_tests/60zone3PVAV.idf @@ -57,15 +57,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators Site:Location, CZ03RV2, !- Name diff --git a/performance_tests/60zone6PVAV.idf b/performance_tests/60zone6PVAV.idf index e5d2a6739f3..31839a59be9 100644 --- a/performance_tests/60zone6PVAV.idf +++ b/performance_tests/60zone6PVAV.idf @@ -57,15 +57,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period Yes, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators Site:Location, CZ03RV2, !- Name diff --git a/performance_tests/BenchmarkHospitalNew_USA_CA_SAN_FRANCISCO.idf b/performance_tests/BenchmarkHospitalNew_USA_CA_SAN_FRANCISCO.idf index 61fa6c586ff..3f97ba47b2b 100644 --- a/performance_tests/BenchmarkHospitalNew_USA_CA_SAN_FRANCISCO.idf +++ b/performance_tests/BenchmarkHospitalNew_USA_CA_SAN_FRANCISCO.idf @@ -126,8 +126,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/performance_tests/BenchmarkLargeOfficeNew_USA_CA_SAN_FRANCISCO_10_windows_per_zone.idf b/performance_tests/BenchmarkLargeOfficeNew_USA_CA_SAN_FRANCISCO_10_windows_per_zone.idf index 9ec79f9548c..ae93fe220a2 100644 --- a/performance_tests/BenchmarkLargeOfficeNew_USA_CA_SAN_FRANCISCO_10_windows_per_zone.idf +++ b/performance_tests/BenchmarkLargeOfficeNew_USA_CA_SAN_FRANCISCO_10_windows_per_zone.idf @@ -114,8 +114,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/performance_tests/Benchmarklargeofficenew_usa_ca_san_francisco_no_reports.idf b/performance_tests/Benchmarklargeofficenew_usa_ca_san_francisco_no_reports.idf index 290d5789b04..c4789c7f7e4 100644 --- a/performance_tests/Benchmarklargeofficenew_usa_ca_san_francisco_no_reports.idf +++ b/performance_tests/Benchmarklargeofficenew_usa_ca_san_francisco_no_reports.idf @@ -114,8 +114,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/performance_tests/PipingSystem_Underground_FHX.idf b/performance_tests/PipingSystem_Underground_FHX.idf index 91886e751a7..55d200cd9d8 100644 --- a/performance_tests/PipingSystem_Underground_FHX.idf +++ b/performance_tests/PipingSystem_Underground_FHX.idf @@ -76,8 +76,10 @@ Annual Run, !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period diff --git a/performance_tests/benchmarklargeofficenew_usa_ca_san_francisco.idf b/performance_tests/benchmarklargeofficenew_usa_ca_san_francisco.idf index 1f552881392..4fefdd0b0f9 100644 --- a/performance_tests/benchmarklargeofficenew_usa_ca_san_francisco.idf +++ b/performance_tests/benchmarklargeofficenew_usa_ca_san_francisco.idf @@ -114,8 +114,10 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period diff --git a/testfiles/AirflowNetwork_MultiAirLoops.idf b/testfiles/AirflowNetwork_MultiAirLoops.idf index 3989dc9e393..12ccbd5f96a 100644 --- a/testfiles/AirflowNetwork_MultiAirLoops.idf +++ b/testfiles/AirflowNetwork_MultiAirLoops.idf @@ -195,8 +195,10 @@ Summer run, !- Name 7, !- Begin Month 7, !- Begin Day of Month + , !- Begin Year 7, !- End Month 7, !- End Day of Month + , !- End Year Tuesday, !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period From b2ac52b5e50556d9481a3eb23321f15716b30d14 Mon Sep 17 00:00:00 2001 From: mjwitte Date: Fri, 17 Aug 2018 16:27:23 -0500 Subject: [PATCH 35/47] Extended RunPeriod - add rules and transition for rp:customrange --- .../CreateNewIDFUsingRulesV9_0_0.f90 | 11 +++++++ .../InputRulesFiles/Rules8-9-0-to-9-0-0.md | 32 +++++++++++++++---- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 b/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 index 91b9933fe76..2b07d4c3a68 100644 --- a/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 +++ b/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 @@ -455,6 +455,15 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile ! If your original object starts with P, insert the rules here ! If your original object starts with R, insert the rules here + CASE('RUNPERIOD:CUSTOMRANGE') + ! Just change the type to RunPeriod and copy all of the arguments + ObjectName = 'RunPeriod' + CALL GetNewObjectDefInIDD(ObjectName,NwNumArgs,NwAorN,NwReqFld,NwObjMinFlds,NwFldNames,NwFldDefaults,NwFldUnits) + OutArgs(1:CurArgs) = InArgs(1:CurArgs) + CALL WriteOutIDFLines(DifLfn,ObjectName,CurArgs,OutArgs,NwFldNames,NwFldUnits) + Written=.true. + nodiff = .false. + CASE('RUNPERIOD') CALL GetNewObjectDefInIDD(ObjectName,NwNumArgs,NwAorN,NwReqFld,NwObjMinFlds,NwFldNames,NwFldDefaults,NwFldUnits) ! spend some time mining out the state of the run period object @@ -538,7 +547,9 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile END IF ! InArgs(14): Start year moved to above OutArgs(14) = Blank ! new Treat weather as actual field? + CurArgs = 14 nodiff = .false. + ! If your original object starts with S, insert the rules here ! If your original object starts with T, insert the rules here diff --git a/src/Transition/InputRulesFiles/Rules8-9-0-to-9-0-0.md b/src/Transition/InputRulesFiles/Rules8-9-0-to-9-0-0.md index 5cdf6e82e3f..03fdc10c31c 100644 --- a/src/Transition/InputRulesFiles/Rules8-9-0-to-9-0-0.md +++ b/src/Transition/InputRulesFiles/Rules8-9-0-to-9-0-0.md @@ -16,13 +16,33 @@ Move up all later numeric fields by one (old N4-N10 become new N3-N9). (Developer note: to avoid merge conflicts, please choose a random line in the file below (there are like 20 blank lines initially). This will reduce the effect of all the rules being written on the same line, causing conflicts.) - # Object Change: 'WindowMaterial:ComplexShade' +# Object Change: 'WindowMaterial:ComplexShade' - The only change is for field A2 (Layer Type). Logic to apply: - If field contains value Venetian then change it to VenetianHorizontal. - - - +The only change is for field A2 (Layer Type). Logic to apply: +If field contains value Venetian then change it to VenetianHorizontal. + +# Object Change: 'RunPeriod:CustomRange' + +Change the object type to 'RunPeriod'. +All fields remain the same. + +# Object Change: 'RunPeriod' +Fields F1-F3 (A1, N1-N2) remain the same +Insert new field F4 (new N3) for Begin Year + Fill with the value from old field F14 (old N6 Start Year) if non-blank + elseif old field F12 (old N5 Number of Times Runperiod to be Repeated) is non-blank fill with year corresponding to the "Day of Week for Start Day" (old F6, old A2) + elseif start day is blank, fill with a year that starts on a Sunday + else leave blank +Old fields F4-F5 become new fields F5-F6 +Insert new field F7 (new N6)for End Year + If old field F12 (old N5 Number of Times Runperiod to be Repeated) is non-blank fill with new field F4 (Begin Year) plus old F12 value + unless new field F4 (Begin Year) is blank, then new F7 is also blank + else leave blank +New field F8 (new A2 Day of Week for Start Day) + If old field F14 (old N6 Start Year) is non-blank, then fill new F8 with blank + else new F8 = old F6 (old A2 Day of Week for Start Day) +New F9=F13 = Old F7-F11 + From afacf5b7dc4671c93e0b507f8b0129bc238806de Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Mon, 20 Aug 2018 13:35:02 -0600 Subject: [PATCH 36/47] Fix start day and transition issues --- src/EnergyPlus/WeatherManager.cc | 2 ++ src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 | 10 +++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/EnergyPlus/WeatherManager.cc b/src/EnergyPlus/WeatherManager.cc index f6de7b88ae3..df07a1d567e 100644 --- a/src/EnergyPlus/WeatherManager.cc +++ b/src/EnergyPlus/WeatherManager.cc @@ -6312,6 +6312,8 @@ namespace WeatherManager { ErrorsFound = true; } + RunPeriodInput(Loop).dayOfWeek = static_cast(RunPeriodInput(Loop).startWeekDay); + // calculate the annual start and end days from the user inputted month and day RunPeriodInput(Loop).monWeekDay = 0; if (RunPeriodInput(Loop).dayOfWeek != 0 && !ErrorsFound) { diff --git a/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 b/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 index 2b07d4c3a68..7b1811d6fe3 100644 --- a/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 +++ b/src/Transition/CreateNewIDFUsingRulesV9_0_0.f90 @@ -460,6 +460,10 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile ObjectName = 'RunPeriod' CALL GetNewObjectDefInIDD(ObjectName,NwNumArgs,NwAorN,NwReqFld,NwObjMinFlds,NwFldNames,NwFldDefaults,NwFldUnits) OutArgs(1:CurArgs) = InArgs(1:CurArgs) + IF (SameString(TRIM(OutArgs(8)), "USEWEATHERFILE")) THEN + CALL ShowWarningError('Run period start day of week USEWEATHERFILE option has been removed, start week day is set by the input start date.',Auditf) + OutArgs(8) = Blank + END IF CALL WriteOutIDFLines(DifLfn,ObjectName,CurArgs,OutArgs,NwFldNames,NwFldUnits) Written=.true. nodiff = .false. @@ -527,9 +531,9 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile ! Throw warning saying the start of the week has been specified by the year OutArgs(8) = Blank ! But why is this field even staying? ELSE - IF (TRIM(InArgs(6))=="USEWEATHERFILE") THEN - ! Throw warning... - OutArgs(8) = "Sunday" + IF (SameString(TRIM(InArgs(6)), "USEWEATHERFILE")) THEN + CALL ShowWarningError('Run period start day of week USEWEATHERFILE option has been removed, start week day is set by the input start date.',Auditf) + OutArgs(8) = BLANK ELSE ! Copy it over unchanged? OutArgs(8) = InArgs(6) From 5a671e737d8da17714bf7740df7d2a821028cced Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Mon, 20 Aug 2018 19:51:31 -0600 Subject: [PATCH 37/47] Modify error message --- src/EnergyPlus/WeatherManager.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/EnergyPlus/WeatherManager.cc b/src/EnergyPlus/WeatherManager.cc index df07a1d567e..209a17559d5 100644 --- a/src/EnergyPlus/WeatherManager.cc +++ b/src/EnergyPlus/WeatherManager.cc @@ -1111,9 +1111,10 @@ namespace WeatherManager { RunStJDay = DataPeriods(Loop).DataStJDay; RunEnJDay = DataPeriods(Loop).DataEnJDay; if (!DataPeriods(Loop).HasYearData) { - ShowSevereError("GetNextEnvironment: Runperiod has been entered but weatherfile DATA PERIOD does not have " - "year included in start/end date."); - ShowContinueError("...to match the RunPeriod, the DATA PERIOD should be mm/dd/yyyy for both."); + ShowSevereError("GetNextEnvironment: Actual weather runperiod has been entered but weatherfile DATA PERIOD " + "does not have year included in start/end date."); + ShowContinueError("...to match the RunPeriod, the DATA PERIOD should be mm/dd/yyyy for both, or"); + ShowContinueError("...set \"Treat Weather as Actual\" to \"No\"."); } if (!BetweenDates(Environment(Envrn).StartDate, RunStJDay, RunEnJDay)) continue; if (!BetweenDates(Environment(Envrn).EndDate, RunStJDay, RunEnJDay)) continue; From be80bcd7522c22f743049a50ad577072ee2ac2ca Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Tue, 21 Aug 2018 12:12:52 -0600 Subject: [PATCH 38/47] Update documentation --- .../group-location-climate-weather-file-access.tex | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/doc/input-output-reference/src/overview/group-location-climate-weather-file-access.tex b/doc/input-output-reference/src/overview/group-location-climate-weather-file-access.tex index ac787ec024c..cfd885c1eff 100644 --- a/doc/input-output-reference/src/overview/group-location-climate-weather-file-access.tex +++ b/doc/input-output-reference/src/overview/group-location-climate-weather-file-access.tex @@ -576,7 +576,11 @@ \subsection{RunPeriod}\label{runperiod} of both the Daylight Saving Period (i.e. use or ignore) and holidays that are embedded within the weather file. The object also describes the elements necessary to use a specially crafted (likely multiple year) weather file in a simulation. These kinds of weather files and simulations might be useful for matching -utility periods or simulating several years of differing weather data. +utility periods or simulating several years of differing weather data. Leap days are required when using +actual weather (see ``Treat as Actual Weather'' below), but will be processed and used during leap years +when the days are present in the weather file and enabled in the weather file header. Note that when the +weather is treated as non-actual, the leap day will be skipped if it is not present, resulting in incorrect +day types for the remainder of the year. \subsubsection{Inputs}\label{inputs-5-016} @@ -618,7 +622,7 @@ \subsubsection{Inputs}\label{inputs-5-016} This optional numeric field should contain the end year for the range. It is only allowed to be specified when the \textbf{Begin Year} is given and must be after the \textbf{Begin Year}. If it is not specified, it will be set to be the first occurrence of \textbf{End Month/End Day of Month} after the start date. Note -that this could be several years after the start date (e.g. if the end date is specified as a leap day 2/28). +that this could be several years after the start date (e.g. if the end date is specified as a leap day 2/29). \paragraph{Field: Day of Week for Start Day}\label{field-day-of-week-for-start-day-3} @@ -687,9 +691,10 @@ \subsubsection{Inputs}\label{inputs-5-016} \paragraph{Field: Treat Weather as Actual}\label{field-treat-weather-as-actual} This field determines how stringent date matching between this object and the weather file is. Though all -EnergyPlus (EPW) weather files contain a year/year field, this data is not typically used. Specifying +EnergyPlus (EPW) weather files contain a year field, this data is not typically used. Specifying ``\textbf{Yes}'' in this field causes the program to look specifically for the begin date (i.e. Begin Month, -Begin Day of Month, Begin Year) and for the end date (i.e. End Month, End Day of Month, End Year). +Begin Day of Month, Begin Year) and for the end date (i.e. End Month, End Day of Month, End Year) and require +that leap days be present for leap years. And, as shown in an IDF: From 7d527a6bcbfca2a4a2182111f71425f54c587e32 Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Tue, 21 Aug 2018 19:45:11 -0600 Subject: [PATCH 39/47] Address rejected RunPeriod issue --- src/EnergyPlus/WeatherManager.cc | 91 ++++++++++++--------------- tst/EnergyPlus/unit/RunPeriod.unit.cc | 21 ++++++- 2 files changed, 61 insertions(+), 51 deletions(-) diff --git a/src/EnergyPlus/WeatherManager.cc b/src/EnergyPlus/WeatherManager.cc index 209a17559d5..ebc26ec2454 100644 --- a/src/EnergyPlus/WeatherManager.cc +++ b/src/EnergyPlus/WeatherManager.cc @@ -857,7 +857,6 @@ namespace WeatherManager { int RunStJDay; int RunEnJDay; bool OkRun; - int ThisWeekDay; int TWeekDay; Array1D_int MonWeekDay(12); Array1D_int ActEndDayOfMonth(12); @@ -1092,41 +1091,41 @@ namespace WeatherManager { } OkRun = false; - ThisWeekDay = 0; - for (Loop = 1; Loop <= NumDataPeriods; ++Loop) { - if (!Environment(Envrn).ActualWeather) { - RunStJDay = General::OrdinalDay(DataPeriods(Loop).StMon, DataPeriods(Loop).StDay, LeapYearAdd); - RunEnJDay = General::OrdinalDay(DataPeriods(Loop).EnMon, DataPeriods(Loop).EnDay, LeapYearAdd); - if (!BetweenDates(Environment(Envrn).StartJDay, RunStJDay, RunEnJDay)) continue; - if (!BetweenDates(Environment(Envrn).EndJDay, RunStJDay, RunEnJDay)) continue; - OkRun = true; - if (RunStJDay > Environment(Envrn).StartJDay) { - NumDays = RunStJDay - Environment(Envrn).StartJDay; - } else { - NumDays = Environment(Envrn).StartJDay - RunStJDay; - } - ThisWeekDay = mod(DataPeriods(Loop).WeekDay + NumDays - 1, 7) + 1; - break; - } else { // Actual Weather - RunStJDay = DataPeriods(Loop).DataStJDay; - RunEnJDay = DataPeriods(Loop).DataEnJDay; - if (!DataPeriods(Loop).HasYearData) { + + if (Environment(Envrn).ActualWeather) { + // Actual weather + for (auto &dataperiod : DataPeriods) { + int runStartJulian = dataperiod.DataStJDay; + int runEndJulian = dataperiod.DataEnJDay; + if (!dataperiod.HasYearData) { ShowSevereError("GetNextEnvironment: Actual weather runperiod has been entered but weatherfile DATA PERIOD " "does not have year included in start/end date."); ShowContinueError("...to match the RunPeriod, the DATA PERIOD should be mm/dd/yyyy for both, or"); ShowContinueError("...set \"Treat Weather as Actual\" to \"No\"."); } - if (!BetweenDates(Environment(Envrn).StartDate, RunStJDay, RunEnJDay)) continue; - if (!BetweenDates(Environment(Envrn).EndDate, RunStJDay, RunEnJDay)) continue; + if (!BetweenDates(Environment(Envrn).StartDate, runStartJulian, runEndJulian)) continue; + if (!BetweenDates(Environment(Envrn).EndDate, runStartJulian, runEndJulian)) continue; OkRun = true; - if (RunStJDay > Environment(Envrn).StartDate) { - NumDays = RunStJDay - Environment(Envrn).StartDate; - } else { - NumDays = Environment(Envrn).StartDate - RunStJDay; - } - ThisWeekDay = mod(DataPeriods(Loop).WeekDay + NumDays - 1, 7) + 1; break; } + } else { + // Typical (or just non-actual) weather + for (auto &dataperiod : DataPeriods) { + // Since this is not actual weather, there may be issues with this calculation + // Assume the weather data starts the same year as the simulation, so LeapYearAdd is what + // should be used. + int runStartOrdinal = General::OrdinalDay(dataperiod.StMon, dataperiod.StDay, LeapYearAdd); + // This one is harder, leave as is for now. What about multiple years of data? + int runEndOrdinal = General::OrdinalDay(dataperiod.EnMon, dataperiod.EnDay, LeapYearAdd); + if (runStartOrdinal == 1 && (runEndOrdinal == 366 || runEndOrdinal == 365)) { + // Complete year(s) of weather data, will wrap around + OkRun = true; + break; + } + if (!BetweenDates(Environment(Envrn).StartJDay, runStartOrdinal, runEndOrdinal)) continue; + if (!BetweenDates(Environment(Envrn).EndJDay, runStartOrdinal, runEndOrdinal)) continue; + OkRun = true; + } } if (!OkRun) { @@ -1186,6 +1185,14 @@ namespace WeatherManager { } EnvironmentStartEnd = StDate + " - " + EnDate; + if (Environment(Envrn).DayOfWeek == 0) { // Use Sunday + TWeekDay = 1; + MonWeekDay = DataPeriods(Loop).MonWeekDay; + } else { + TWeekDay = Environment(Envrn).DayOfWeek; + MonWeekDay = Environment(Envrn).MonWeekDay; + } + if (DoWeatherInitReporting) { if (Environment(Envrn).UseDST) { AlpUseDST = "Yes"; @@ -1213,28 +1220,12 @@ namespace WeatherManager { AlpUseSnow = "No"; } cTotalEnvDays = RoundSigDigits(Environment(Envrn).TotalDays); - if (Environment(Envrn).DayOfWeek == 0) { // Uses Weather file start - gio::write(OutputFileInits, EnvNameFormat) - << Environment(Envrn).Title << kindOfRunPeriod << StDate << EnDate << ValidDayNames(ThisWeekDay) - << cTotalEnvDays << "UseWeatherFile" << AlpUseDST << AlpUseSpec << ApWkRule << AlpUseRain << AlpUseSnow; - TWeekDay = ThisWeekDay; - MonWeekDay = DataPeriods(Loop).MonWeekDay; - } else { - gio::write(OutputFileInits, EnvNameFormat) - << Environment(Envrn).Title << kindOfRunPeriod << StDate << EnDate - << ValidDayNames(Environment(Envrn).DayOfWeek) << cTotalEnvDays << "Use RunPeriod Specified Day" << AlpUseDST - << AlpUseSpec << ApWkRule << AlpUseRain << AlpUseSnow; - TWeekDay = Environment(Envrn).DayOfWeek; - MonWeekDay = Environment(Envrn).MonWeekDay; - } - } else { // just in case - if (Environment(Envrn).DayOfWeek == 0) { // Uses Weather file start - TWeekDay = ThisWeekDay; - MonWeekDay = DataPeriods(Loop).MonWeekDay; - } else { - TWeekDay = Environment(Envrn).DayOfWeek; - MonWeekDay = Environment(Envrn).MonWeekDay; - } + + gio::write(OutputFileInits, EnvNameFormat) + << Environment(Envrn).Title << kindOfRunPeriod << StDate << EnDate << ValidDayNames(TWeekDay) + << cTotalEnvDays << "Use RunPeriod Specified Day" << AlpUseDST + << AlpUseSpec << ApWkRule << AlpUseRain << AlpUseSnow; + } if (!DoingSizing && !KickOffSimulation) { diff --git a/tst/EnergyPlus/unit/RunPeriod.unit.cc b/tst/EnergyPlus/unit/RunPeriod.unit.cc index 3a42a116ff2..a83fd143f18 100644 --- a/tst/EnergyPlus/unit/RunPeriod.unit.cc +++ b/tst/EnergyPlus/unit/RunPeriod.unit.cc @@ -159,13 +159,27 @@ TEST_F(EnergyPlusFixture, RunPeriod_YearTests) "No, !- Apply Weekend Holiday Rule", "Yes, !- Use Weather File Rain Indicators", "Yes; !- Use Weather File Snow Indicators", + "RunPeriod,", + "RP7, !- Name", + "1, !- Begin Month", + "1, !- Begin Day of Month", + "2016, !- Begin Year", + "3, !- End Month", + "31, !- End Day of Month", + "2020, !- End Year", + ", !- Day of Week for Start Day", + "Yes, !- Use Weather File Holidays and Special Days", + "Yes, !- Use Weather File Daylight Saving Period", + "No, !- Apply Weekend Holiday Rule", + "Yes, !- Use Weather File Rain Indicators", + "Yes; !- Use Weather File Snow Indicators", "BUILDING, Simple One Zone (Wireframe DXF), 0.0, Suburbs, .04, .004, MinimalShadowing, 30, 6;", }); ASSERT_TRUE(process_idf(idf_objects)); bool errors_in_input(false); - int totalrps(6); + int totalrps(7); WeatherManager::GetRunPeriodData(totalrps, errors_in_input); EXPECT_FALSE(errors_in_input); @@ -198,6 +212,11 @@ TEST_F(EnergyPlusFixture, RunPeriod_YearTests) EXPECT_EQ(1992, WeatherManager::RunPeriodInput[5].startYear); EXPECT_EQ(2448682, WeatherManager::RunPeriodInput[5].startJulianDate); EXPECT_EQ(2448988, WeatherManager::RunPeriodInput[5].endJulianDate); + + EXPECT_EQ(WeatherManager::WeekDay::Friday, WeatherManager::RunPeriodInput[6].startWeekDay); + EXPECT_EQ(2016, WeatherManager::RunPeriodInput[6].startYear); + EXPECT_EQ(2457389, WeatherManager::RunPeriodInput[6].startJulianDate); + EXPECT_EQ(2458940, WeatherManager::RunPeriodInput[6].endJulianDate); } TEST_F(EnergyPlusFixture, RunPeriod_EndYearOnly) From 04f6bdca05ee13b541618bcd3ed8e1c56cfa0f44 Mon Sep 17 00:00:00 2001 From: mjwitte Date: Wed, 22 Aug 2018 08:08:55 -0500 Subject: [PATCH 40/47] Merge runperiods - transition new test files --- testfiles/_5ZoneAirCooled_annual.idf | 4 +++- testfiles/_RefBldgSmallHotelNew2004_Chicago_annual.idf | 9 +++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/testfiles/_5ZoneAirCooled_annual.idf b/testfiles/_5ZoneAirCooled_annual.idf index 09f4181e861..c15ee1e2482 100644 --- a/testfiles/_5ZoneAirCooled_annual.idf +++ b/testfiles/_5ZoneAirCooled_annual.idf @@ -163,9 +163,11 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + 2019, !- Begin Year 12, !- End Month 31, !- End Day of Month - Tuesday, !- Day of Week for Start Day + 2019, !- End Year + , !- Day of Week for Start Day Yes, !- Use Weather File Holidays and Special Days Yes, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule diff --git a/testfiles/_RefBldgSmallHotelNew2004_Chicago_annual.idf b/testfiles/_RefBldgSmallHotelNew2004_Chicago_annual.idf index bef86f9e8a6..c532b62aa63 100644 --- a/testfiles/_RefBldgSmallHotelNew2004_Chicago_annual.idf +++ b/testfiles/_RefBldgSmallHotelNew2004_Chicago_annual.idf @@ -78,8 +78,8 @@ YES, !- Do Zone Sizing Calculation YES, !- Do System Sizing Calculation YES, !- Do Plant Sizing Calculation - YES, !- Run Simulation for Sizing Periods - NO; !- Run Simulation for Weather File Run Periods + NO, !- Run Simulation for Sizing Periods + YES; !- Run Simulation for Weather File Run Periods Building, Ref Bldg Small Hotel New2004_v1.3_5.0, !- Name @@ -95,15 +95,16 @@ , !- Name 1, !- Begin Month 1, !- Begin Day of Month + , !- Begin Year 12, !- End Month 31, !- End Day of Month + , !- End Year Sunday, !- Day of Week for Start Day No, !- Use Weather File Holidays and Special Days No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1.0000; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators ! ***HOLIDAYS & DAYLIGHT SAVINGS*** From 481d31e55621276459912b77545ae61e12d913fd Mon Sep 17 00:00:00 2001 From: mjwitte Date: Wed, 22 Aug 2018 08:35:52 -0500 Subject: [PATCH 41/47] Merge runperiods - fix build warning --- src/EnergyPlus/WeatherManager.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/src/EnergyPlus/WeatherManager.cc b/src/EnergyPlus/WeatherManager.cc index ebc26ec2454..0a7662aca29 100644 --- a/src/EnergyPlus/WeatherManager.cc +++ b/src/EnergyPlus/WeatherManager.cc @@ -849,7 +849,6 @@ namespace WeatherManager { std::string EnDate; std::string string; std::string cTotalEnvDays; - int NumDays; int DSTActStMon; int DSTActStDay; int DSTActEnMon; From bfd64e064c2e18252ab0a1420581d037f8eec859 Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Wed, 22 Aug 2018 12:40:05 -0600 Subject: [PATCH 42/47] Add year to status outputs, work on run period bug --- src/EnergyPlus/DataEnvironment.cc | 4 +- src/EnergyPlus/DataEnvironment.hh | 3 +- src/EnergyPlus/SimulationManager.cc | 24 ++++++----- src/EnergyPlus/SolarShading.cc | 2 +- src/EnergyPlus/WeatherManager.cc | 62 ++++++++++++----------------- 5 files changed, 46 insertions(+), 49 deletions(-) diff --git a/src/EnergyPlus/DataEnvironment.cc b/src/EnergyPlus/DataEnvironment.cc index fdfee07e9e9..0230e168f40 100644 --- a/src/EnergyPlus/DataEnvironment.cc +++ b/src/EnergyPlus/DataEnvironment.cc @@ -160,7 +160,7 @@ namespace DataEnvironment { bool EMSWindSpeedOverrideOn(false); // EMS flag for outdoor air wind speed Real64 EMSWindSpeedOverrideValue; // EMS override value for outdoor air wind speed Real64 WaterMainsTemp; // Current water mains temperature - int Year; // Current calendar year of the simulation + int Year; // Current calendar year of the simulation from the weather file int YearTomorrow; // Tomorrow's calendar year of the simulation Array1D SOLCOS(3); // Solar direction cosines at current time step Real64 CloudFraction; // Fraction of sky covered by clouds @@ -180,6 +180,7 @@ namespace DataEnvironment { std::string WeatherFileLocationTitle; // Location Title from Weather File std::string CurMnDyHr; // Current Month/Day/Hour timestamp info std::string CurMnDy; // Current Month/Day timestamp info + std::string CurMnDyYr; // Current Month/Day/Year timestamp info int CurEnvirNum; // current environment number int TotDesDays(0); // Total number of Design days to Setup int TotRunDesPersDays(0); // Total number of Run Design Periods [Days] (Weather data) to Setup @@ -309,6 +310,7 @@ namespace DataEnvironment { WeatherFileLocationTitle = std::string(); CurMnDyHr = std::string(); CurMnDy = std::string(); + CurMnDyYr = std::string(); CurEnvirNum = int(); TotDesDays = 0; TotRunDesPersDays = 0; diff --git a/src/EnergyPlus/DataEnvironment.hh b/src/EnergyPlus/DataEnvironment.hh index 9f01dbf7e05..82b32df85d7 100644 --- a/src/EnergyPlus/DataEnvironment.hh +++ b/src/EnergyPlus/DataEnvironment.hh @@ -134,7 +134,7 @@ namespace DataEnvironment { extern bool EMSWindSpeedOverrideOn; // EMS flag for outdoor air wind speed extern Real64 EMSWindSpeedOverrideValue; // EMS override value for outdoor air wind speed extern Real64 WaterMainsTemp; // Current water mains temperature - extern int Year; // Current calendar year of the simulation + extern int Year; // Current calendar year of the simulation from the weather file extern int YearTomorrow; // Tomorrow's calendar year of the simulation extern Array1D SOLCOS; // Solar direction cosines at current time step extern Real64 CloudFraction; // Fraction of sky covered by clouds @@ -154,6 +154,7 @@ namespace DataEnvironment { extern std::string WeatherFileLocationTitle; // Location Title from Weather File extern std::string CurMnDyHr; // Current Month/Day/Hour timestamp info extern std::string CurMnDy; // Current Month/Day timestamp info + extern std::string CurMnDyYr; // Current Month/Day/Year timestamp info extern int CurEnvirNum; // current environment number extern int TotDesDays; // Total number of Design days to Setup extern int TotRunDesPersDays; // Total number of Run Design Periods [Days] (Weather data) to Setup diff --git a/src/EnergyPlus/SimulationManager.cc b/src/EnergyPlus/SimulationManager.cc index 4aa83365fc6..314415e9ef4 100644 --- a/src/EnergyPlus/SimulationManager.cc +++ b/src/EnergyPlus/SimulationManager.cc @@ -238,9 +238,9 @@ namespace SimulationManager { using DataEnvironment::CurrentOverallSimDay; using DataEnvironment::EndMonthFlag; using DataEnvironment::EnvironmentName; - using DataEnvironment::TotalOverallSimDays; using DataEnvironment::TotDesDays; using DataEnvironment::TotRunDesPersDays; + using DataEnvironment::TotalOverallSimDays; using DataHVACGlobals::TimeStepSys; using BranchInputManager::InvalidBranchDefinitions; @@ -253,12 +253,12 @@ namespace SimulationManager { using DataErrorTracking::AskForConnectionsReport; using DataErrorTracking::ExitDuringSimulations; using DemandManager::InitDemandManagers; + using EMSManager::CheckIfAnyEMS; + using EMSManager::ManageEMS; using EconomicLifeCycleCost::ComputeLifeCycleCostAndReport; using EconomicLifeCycleCost::GetInputForLifeCycleCost; using EconomicTariff::ComputeTariff; // added for computing annual utility costs using EconomicTariff::WriteTabularTariffReports; - using EMSManager::CheckIfAnyEMS; - using EMSManager::ManageEMS; using ExteriorEnergyUse::ManageExteriorEnergyUse; using General::TrimSigDigits; using HVACControllers::DumpAirLoopStatistics; @@ -282,8 +282,8 @@ namespace SimulationManager { using namespace DataTimings; using DataSystemVariables::FullAnnualRun; using FaultsManager::CheckAndReadFaults; - using OutputProcessor::isFinalYear; using OutputProcessor::ResetAccumulationWhenWarmupComplete; + using OutputProcessor::isFinalYear; using PlantPipingSystemsManager::CheckIfAnyBasements; using PlantPipingSystemsManager::CheckIfAnySlabs; using PlantPipingSystemsManager::SimulateGroundDomains; @@ -532,12 +532,16 @@ namespace SimulationManager { cWarmupDay = TrimSigDigits(NumOfWarmupDays); DisplayString("Warming up {" + cWarmupDay + '}'); } else if (DayOfSim == 1) { - DisplayString("Starting Simulation at " + CurMnDy + " for " + EnvironmentName); + DisplayString("Starting Simulation at " + DataEnvironment::CurMnDyYr + " for " + EnvironmentName); gio::write(OutputFileInits, Format_700) << NumOfWarmupDays; ResetAccumulationWhenWarmupComplete(); } else if (DisplayPerfSimulationFlag) { - DisplayString("Continuing Simulation at " + CurMnDy + " for " + EnvironmentName); + // DisplayString("Continuing Simulation at " + DataEnvironment::CurMnDyYr + " for " + EnvironmentName); + DisplayString("Continuing Simulation at " + DataEnvironment::CurMnDyYr + " (" + DayOfSimChr + "/" + + std::to_string(NumOfDayInEnvrn) + ") for " + EnvironmentName); DisplayPerfSimulationFlag = false; + } else { + DisplayString("Continuing Simulation at " + DataEnvironment::CurMnDyYr + " (" + DayOfSimChr + "/" + std::to_string(NumOfDayInEnvrn) + ") for " + EnvironmentName); } // for simulations that last longer than a week, identify when the last year of the simulation is started if ((DayOfSim > 365) && ((NumOfDayInEnvrn - DayOfSim) == 364) && !WarmupFlag) { @@ -698,9 +702,9 @@ namespace SimulationManager { using DataEnvironment::IgnoreBeamRadiation; using DataEnvironment::IgnoreDiffuseRadiation; using DataEnvironment::IgnoreSolarRadiation; + using DataHVACGlobals::LimitNumSysSteps; using DataHVACGlobals::deviationFromSetPtThresholdClg; using DataHVACGlobals::deviationFromSetPtThresholdHtg; - using DataHVACGlobals::LimitNumSysSteps; using General::RoundSigDigits; using namespace DataIPShortCuts; @@ -1517,8 +1521,8 @@ namespace SimulationManager { using OutputProcessor::NumTotalIVariable; using OutputProcessor::NumTotalRVariable; using OutputProcessor::NumVarMeterArrays; - using OutputReportTabular::maxUniqueKeyCount; using OutputReportTabular::MonthlyFieldSetInputCount; + using OutputReportTabular::maxUniqueKeyCount; using SolarShading::MAXHCArrayBounds; using SolarShading::maxNumberOfFigures; using namespace DataRuntimeLanguage; @@ -2813,15 +2817,15 @@ void Resimulate(bool &ResimExt, // Flag to resimulate the exterior energy use si using DemandManager::DemandManagerHBIterations; using DemandManager::DemandManagerHVACIterations; using ExteriorEnergyUse::ManageExteriorEnergyUse; + using HVACManager::SimHVAC; using HeatBalanceAirManager::InitAirHeatBalance; using HeatBalanceSurfaceManager::InitSurfaceHeatBalance; - using HVACManager::SimHVAC; using RefrigeratedCase::ManageRefrigeratedCaseRacks; using ZoneTempPredictorCorrector::ManageZoneAirUpdates; // using HVACManager::CalcAirFlowSimple; using DataContaminantBalance::Contaminant; - using DataHeatBalance::ZoneAirMassFlow; using DataHVACGlobals::UseZoneTimeStepHistory; // , InitDSwithZoneHistory + using DataHeatBalance::ZoneAirMassFlow; using ZoneContaminantPredictorCorrector::ManageZoneContaminanUpdates; using namespace ZoneEquipmentManager; // using ZoneEquipmentManager::CalcAirFlowSimple; diff --git a/src/EnergyPlus/SolarShading.cc b/src/EnergyPlus/SolarShading.cc index 5f64e9ad572..d84cd53772b 100644 --- a/src/EnergyPlus/SolarShading.cc +++ b/src/EnergyPlus/SolarShading.cc @@ -8781,7 +8781,7 @@ namespace SolarShading { // Calculate average Equation of Time, Declination Angle for this period if (!WarmupFlag) { - DisplayString("Updating Shadowing Calculations, Start Date=" + CurMnDy); + DisplayString("Updating Shadowing Calculations, Start Date=" + CurMnDyYr); DisplayPerfSimulationFlag = true; } diff --git a/src/EnergyPlus/WeatherManager.cc b/src/EnergyPlus/WeatherManager.cc index ebc26ec2454..ed7b7b4eb72 100644 --- a/src/EnergyPlus/WeatherManager.cc +++ b/src/EnergyPlus/WeatherManager.cc @@ -1172,17 +1172,8 @@ namespace WeatherManager { // Following builds Environment start/end for ASHRAE 55 warnings gio::write(StDate, DateFormat) << Environment(Envrn).StartMonth << Environment(Envrn).StartDay; gio::write(EnDate, DateFormat) << Environment(Envrn).EndMonth << Environment(Envrn).EndDay; - if (Environment(Envrn).ActualWeather) { - string = RoundSigDigits(Environment(Envrn).StartYear); - StDate += "/" + string; - string = RoundSigDigits(Environment(Envrn).EndYear); - EnDate += "/" + string; - } else if (Environment(Envrn).CurrentYear > 0 && Environment(Envrn).TreatYearsAsConsecutive) { - string = RoundSigDigits(Environment(Envrn).CurrentYear); - StDate += "/" + string; - string = RoundSigDigits(Environment(Envrn).CurrentYear + Environment(Envrn).NumSimYears); - EnDate += "/" + string; - } + StDate += "/" + RoundSigDigits(Environment(Envrn).StartYear); + EnDate += "/" + RoundSigDigits(Environment(Envrn).EndYear); EnvironmentStartEnd = StDate + " - " + EnDate; if (Environment(Envrn).DayOfWeek == 0) { // Use Sunday @@ -2479,6 +2470,7 @@ namespace WeatherManager { // SUBROUTINE PARAMETER DEFINITIONS: static char time_stamp[10]; static char day_stamp[6]; + static char day_year_stamp[11]; static std::string const RoutineName("SetCurrentWeather"); // SUBROUTINE LOCAL VARIABLE DECLARATIONS: @@ -2504,6 +2496,8 @@ namespace WeatherManager { CurMnDyHr = time_stamp; std::sprintf(day_stamp, "%02d/%02d", Month, DayOfMonth); CurMnDy = day_stamp; + std::sprintf(day_year_stamp, "%02d/%02d/%04d", Month, DayOfMonth, DataGlobals::CalendarYear); + DataEnvironment::CurMnDyYr = day_year_stamp; WeightNow = Interpolation(TimeStep); WeightPreviousHour = 1.0 - WeightNow; @@ -2533,9 +2527,9 @@ namespace WeatherManager { OutDewPointTemp = TodayOutDewPointTemp(TimeStep, HourOfDay); if (EMSOutDewPointTempOverrideOn) OutDewPointTemp = EMSOutDewPointTempOverrideValue; OutRelHum = TodayOutRelHum(TimeStep, HourOfDay); - OutRelHumValue = OutRelHum / 100.0; + OutRelHumValue = OutRelHum * 1.0e-2; if (EMSOutRelHumOverrideOn) { - OutRelHumValue = EMSOutRelHumOverrideValue / 100.0; + OutRelHumValue = EMSOutRelHumOverrideValue * 1.0e-2; OutRelHum = EMSOutRelHumOverrideValue; } @@ -2596,7 +2590,7 @@ namespace WeatherManager { if (EMSDifSolarRadOverrideOn) DifSolarRad = EMSDifSolarRadOverrideValue; BeamSolarRad = TodayBeamSolarRad(TimeStep, HourOfDay); if (EMSBeamSolarRadOverrideOn) BeamSolarRad = EMSBeamSolarRadOverrideValue; - LiquidPrecipitation = TodayLiquidPrecip(TimeStep, HourOfDay) / 1000.0; // convert from mm to m + LiquidPrecipitation = TodayLiquidPrecip(TimeStep, HourOfDay) * 1.0e-3; // convert from mm to m if (UseRainValues) { IsRain = TodayIsRain(TimeStep, HourOfDay); //.or. LiquidPrecipitation >= .8d0) ! > .8 mm @@ -9998,32 +9992,28 @@ namespace WeatherManager { env.RollDayTypeOnRepeat = runPer.RollDayTypeOnRepeat; env.StartJDay = General::OrdinalDay(runPer.startMonth, runPer.startDay, runPer.isLeapYear ? 1 : 0); env.EndJDay = General::OrdinalDay(runPer.endMonth, runPer.endDay, isLeapYear(runPer.endYear) ? 1 : 0); - env.TotalDays = 0; - for (Loop1 = 1; Loop1 <= env.NumSimYears; ++Loop1) { - if (!isLeapYear(runPer.startYear - 1 + Loop1) || !WFAllowsLeapYears) { - JDay1 = General::OrdinalDay(runPer.startMonth, runPer.startDay, 0); - JDay2 = General::OrdinalDay(runPer.endMonth, runPer.endDay, 0); - if (JDay1 <= JDay2) { - if (Loop1 == 1) { - env.RawSimDays = (JDay2 - JDay1 + 1); - } - env.TotalDays += (JDay2 - JDay1 + 1); - } else { - if (Loop1 == 1) { - env.RawSimDays = General::OrdinalDay(12, 31, 0) - JDay1 + 1 + JDay2; - } - env.TotalDays += General::OrdinalDay(12, 31, 0) - JDay1 + 1 + JDay2; + env.TotalDays = 366 - env.StartJDay + env.EndJDay + 365 * std::max(env.NumSimYears - 2, 0); + if (WFAllowsLeapYears) { + // First year + if (env.StartJDay < 28) { + if (isLeapYear(env.StartYear)) { + ++env.TotalDays; } - } else { // Leap Year - JDay1 = General::OrdinalDay(runPer.startMonth, runPer.startDay, 1); - JDay2 = General::OrdinalDay(runPer.endMonth, runPer.endDay, 1); - if (JDay1 <= JDay2) { - env.TotalDays += (JDay2 - JDay1 + 1); - } else { - env.TotalDays += General::OrdinalDay(12, 31, 1) - JDay1 + 1 + JDay2; + } + // Middle years + for (int yr = env.StartYear + 1; yr < env.EndYear; ++yr) { + if (isLeapYear(yr)) { + ++env.TotalDays; + } + } + // Last year + if (env.EndJDay > 28) { + if (isLeapYear(env.EndYear)) { + ++env.TotalDays; } } } + env.RawSimDays = env.TotalDays; } } env.UseDST = runPer.useDST; From f1f677e76459b87ffae9fc5eaf2f2cfa40bb5713 Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Wed, 22 Aug 2018 13:04:06 -0600 Subject: [PATCH 43/47] Turn off daily status messages --- src/EnergyPlus/SimulationManager.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/EnergyPlus/SimulationManager.cc b/src/EnergyPlus/SimulationManager.cc index 314415e9ef4..3fe01a71d08 100644 --- a/src/EnergyPlus/SimulationManager.cc +++ b/src/EnergyPlus/SimulationManager.cc @@ -536,13 +536,13 @@ namespace SimulationManager { gio::write(OutputFileInits, Format_700) << NumOfWarmupDays; ResetAccumulationWhenWarmupComplete(); } else if (DisplayPerfSimulationFlag) { - // DisplayString("Continuing Simulation at " + DataEnvironment::CurMnDyYr + " for " + EnvironmentName); - DisplayString("Continuing Simulation at " + DataEnvironment::CurMnDyYr + " (" + DayOfSimChr + "/" + - std::to_string(NumOfDayInEnvrn) + ") for " + EnvironmentName); + DisplayString("Continuing Simulation at " + DataEnvironment::CurMnDyYr + " for " + EnvironmentName); + //DisplayString("Continuing Simulation at " + DataEnvironment::CurMnDyYr + " (" + DayOfSimChr + "/" + + // std::to_string(NumOfDayInEnvrn) + ") for " + EnvironmentName); DisplayPerfSimulationFlag = false; - } else { - DisplayString("Continuing Simulation at " + DataEnvironment::CurMnDyYr + " (" + DayOfSimChr + "/" + std::to_string(NumOfDayInEnvrn) + ") for " + EnvironmentName); - } + } //else { + // DisplayString("Continuing Simulation at " + DataEnvironment::CurMnDyYr + " (" + DayOfSimChr + "/" + std::to_string(NumOfDayInEnvrn) + ") for " + EnvironmentName); + //} // for simulations that last longer than a week, identify when the last year of the simulation is started if ((DayOfSim > 365) && ((NumOfDayInEnvrn - DayOfSim) == 364) && !WarmupFlag) { DisplayString("Starting last year of environment at: " + DayOfSimChr); From 70c2f802dc5219aa021319938f1202ee79d517a8 Mon Sep 17 00:00:00 2001 From: "Jason W. DeGraw" Date: Thu, 23 Aug 2018 15:06:30 -0600 Subject: [PATCH 44/47] Fix for wrap-around issue --- src/EnergyPlus/SimulationManager.cc | 6 +----- src/EnergyPlus/WeatherManager.cc | 18 +++++++----------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/src/EnergyPlus/SimulationManager.cc b/src/EnergyPlus/SimulationManager.cc index 3fe01a71d08..d62db7eae05 100644 --- a/src/EnergyPlus/SimulationManager.cc +++ b/src/EnergyPlus/SimulationManager.cc @@ -537,12 +537,8 @@ namespace SimulationManager { ResetAccumulationWhenWarmupComplete(); } else if (DisplayPerfSimulationFlag) { DisplayString("Continuing Simulation at " + DataEnvironment::CurMnDyYr + " for " + EnvironmentName); - //DisplayString("Continuing Simulation at " + DataEnvironment::CurMnDyYr + " (" + DayOfSimChr + "/" + - // std::to_string(NumOfDayInEnvrn) + ") for " + EnvironmentName); DisplayPerfSimulationFlag = false; - } //else { - // DisplayString("Continuing Simulation at " + DataEnvironment::CurMnDyYr + " (" + DayOfSimChr + "/" + std::to_string(NumOfDayInEnvrn) + ") for " + EnvironmentName); - //} + } // for simulations that last longer than a week, identify when the last year of the simulation is started if ((DayOfSim > 365) && ((NumOfDayInEnvrn - DayOfSim) == 364) && !WarmupFlag) { DisplayString("Starting last year of environment at: " + DayOfSimChr); diff --git a/src/EnergyPlus/WeatherManager.cc b/src/EnergyPlus/WeatherManager.cc index 40ac955f81f..f0fc8218dda 100644 --- a/src/EnergyPlus/WeatherManager.cc +++ b/src/EnergyPlus/WeatherManager.cc @@ -1259,11 +1259,9 @@ namespace WeatherManager { WeekDayTypes = 0; JDay5Start = General::OrdinalDay(Environment(Envrn).StartMonth, Environment(Envrn).StartDay, LeapYearAdd); JDay5End = General::OrdinalDay(Environment(Envrn).EndMonth, Environment(Envrn).EndDay, LeapYearAdd); - if (JDay5End >= JDay5Start) { - curSimDayForEndOfRunPeriod = DayOfSim + (JDay5End - JDay5Start) + LeapYearAdd; - } else { - curSimDayForEndOfRunPeriod = DayOfSim + General::OrdinalDay(12, 31, LeapYearAdd) - JDay5Start + JDay5End; - } + + curSimDayForEndOfRunPeriod = Environment(Envrn).TotalDays; + Loop = JDay5Start; while (true) { WeekDayTypes(Loop) = TWeekDay; @@ -1284,9 +1282,7 @@ namespace WeatherManager { DaylightSavingIsActive = true; } Environment(Envrn).SetWeekDays = false; - if (Environment(Envrn).ActualWeather) { - curSimDayForEndOfRunPeriod = Environment(Envrn).TotalDays; - } + if (DaylightSavingIsActive) { SetDSTDateRanges(MonWeekDay, DSTIndex, DSTActStMon, DSTActStDay, DSTActEnMon, DSTActEnDay); } @@ -2526,9 +2522,9 @@ namespace WeatherManager { OutDewPointTemp = TodayOutDewPointTemp(TimeStep, HourOfDay); if (EMSOutDewPointTempOverrideOn) OutDewPointTemp = EMSOutDewPointTempOverrideValue; OutRelHum = TodayOutRelHum(TimeStep, HourOfDay); - OutRelHumValue = OutRelHum * 1.0e-2; + OutRelHumValue = OutRelHum / 100.0; if (EMSOutRelHumOverrideOn) { - OutRelHumValue = EMSOutRelHumOverrideValue * 1.0e-2; + OutRelHumValue = EMSOutRelHumOverrideValue / 100.0; OutRelHum = EMSOutRelHumOverrideValue; } @@ -2589,7 +2585,7 @@ namespace WeatherManager { if (EMSDifSolarRadOverrideOn) DifSolarRad = EMSDifSolarRadOverrideValue; BeamSolarRad = TodayBeamSolarRad(TimeStep, HourOfDay); if (EMSBeamSolarRadOverrideOn) BeamSolarRad = EMSBeamSolarRadOverrideValue; - LiquidPrecipitation = TodayLiquidPrecip(TimeStep, HourOfDay) * 1.0e-3; // convert from mm to m + LiquidPrecipitation = TodayLiquidPrecip(TimeStep, HourOfDay) / 1000.0; // convert from mm to m if (UseRainValues) { IsRain = TodayIsRain(TimeStep, HourOfDay); //.or. LiquidPrecipitation >= .8d0) ! > .8 mm From d761b8b97a4df80e5838b338dd6bcb87c6bcdfc0 Mon Sep 17 00:00:00 2001 From: mjwitte Date: Thu, 23 Aug 2018 20:12:02 -0500 Subject: [PATCH 45/47] Merge runperiods - fix unit test, add output change description --- .../OutputChanges8-9-0-to-9-0-0.md | 17 +++++++++++++++++ .../unit/AirflowNetworkBalanceManager.unit.cc | 8 ++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/Transition/OutputRulesFiles/OutputChanges8-9-0-to-9-0-0.md b/src/Transition/OutputRulesFiles/OutputChanges8-9-0-to-9-0-0.md index 0d2dc0726f5..37e17cd697b 100644 --- a/src/Transition/OutputRulesFiles/OutputChanges8-9-0-to-9-0-0.md +++ b/src/Transition/OutputRulesFiles/OutputChanges8-9-0-to-9-0-0.md @@ -13,3 +13,20 @@ A new column "Fan Energy Index" has been added to the Equipment Summary:Fans rep See [6812](https://github.com/NREL/EnergyPlus/pull/6812) +### Reporting of Year numbers + +Simulation progress messages, now include the simulation year in the date stamp. e.g. +``` +Updating Shadowing Calculations, Start Date=01/21/2020 +Continuing Simulation at 01/21/2020 for RUNPERIOD 1 +``` +eio output for RunPeriod Environment now includes the simulation year for Start Date and End Date +``` +! ,Environment Name,Environment Type, Start Date, End Date, Start DayOfWeek, Duration {#days}, Source:Start DayOfWeek, Use Daylight Saving, Use Holidays, Apply Weekend Holiday Rule, Use Rain Values, Use Snow Values +Environment,RUNPERIOD 1,WeatherFileRunPeriod,01/01/2019,12/31/2019,Tuesday,365,Use RunPeriod Specified Day,Yes,Yes,No,Yes,Yes +``` + + +See [6478](https://github.com/NREL/EnergyPlus/pull/6478) + + diff --git a/tst/EnergyPlus/unit/AirflowNetworkBalanceManager.unit.cc b/tst/EnergyPlus/unit/AirflowNetworkBalanceManager.unit.cc index 7c3c174166a..c9c129ca15b 100644 --- a/tst/EnergyPlus/unit/AirflowNetworkBalanceManager.unit.cc +++ b/tst/EnergyPlus/unit/AirflowNetworkBalanceManager.unit.cc @@ -12129,16 +12129,16 @@ TEST_F(EnergyPlusFixture, BasicAdvancedSingleSidedAvoidCrashTest) " RunPeriod1, !- Name", " 1, !- Begin Month", " 1, !- Begin Day of Month", + " , !- Begin Year", " 12, !- End Month", " 31, !- End Day of Month", - " UseWeatherFile, !- Day of Week for Start Day", + " , !- End Year", + " Sunday, !- Day of Week for Start Day", " Yes, !- Use Weather File Holidays and Special Days", " Yes, !- Use Weather File Daylight Saving Period", " No, !- Apply Weekend Holiday Rule", " Yes, !- Use Weather File Rain Indicators", - " Yes, !- Use Weather File Snow Indicators", - " 1, !- Number of Times Runperiod to be Repeated", - " Yes; !- Increment Day of Week on repeat", + " Yes; !- Use Weather File Snow Indicators", "Material,", " F08 Metal surface, !- Name", " Smooth, !- Roughness", From 7042b1ef3abd464fc2328959e0ff03e40324a871 Mon Sep 17 00:00:00 2001 From: mjwitte Date: Fri, 24 Aug 2018 07:34:30 -0500 Subject: [PATCH 46/47] Merge runperiods - fix build warnings and test failure --- .../FiniteDifferenceGroundTemperatureModel.cc | 4 +++- src/EnergyPlus/WeatherManager.cc | 3 --- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/EnergyPlus/GroundTemperatureModeling/FiniteDifferenceGroundTemperatureModel.cc b/src/EnergyPlus/GroundTemperatureModeling/FiniteDifferenceGroundTemperatureModel.cc index b24837c10c4..6614ce5b9ef 100644 --- a/src/EnergyPlus/GroundTemperatureModeling/FiniteDifferenceGroundTemperatureModel.cc +++ b/src/EnergyPlus/GroundTemperatureModeling/FiniteDifferenceGroundTemperatureModel.cc @@ -258,8 +258,10 @@ void FiniteDiffGroundTempsModel::getWeatherData() NumOfWarmupDays = 0; annualAveAirTemp_num = 0.0; + // Protect against array bounds error + int maxSimDays = min(NumDaysInYear, NumOfDayInEnvrn); - while ((DayOfSim < NumOfDayInEnvrn) || (WarmupFlag)) { // Begin day loop ... + while ((DayOfSim < maxSimDays) || (WarmupFlag)) { // Begin day loop ... ++DayOfSim; diff --git a/src/EnergyPlus/WeatherManager.cc b/src/EnergyPlus/WeatherManager.cc index f0fc8218dda..abc6ced4e35 100644 --- a/src/EnergyPlus/WeatherManager.cc +++ b/src/EnergyPlus/WeatherManager.cc @@ -9900,9 +9900,6 @@ namespace WeatherManager { // SUBROUTINE LOCAL VARIABLE DECLARATIONS: int Loop; - int Loop1; - int JDay1; - int JDay2; int LocalLeapYearAdd; // Transfer weather file information to the Environment derived type From e321ae66ce0390cdd4aa1e00922cbac996543c17 Mon Sep 17 00:00:00 2001 From: mjwitte Date: Fri, 24 Aug 2018 07:39:10 -0500 Subject: [PATCH 47/47] Merge runperiods - forgot one test failure --- testfiles/ConstSpeedBranchPumpExercise.idf | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/testfiles/ConstSpeedBranchPumpExercise.idf b/testfiles/ConstSpeedBranchPumpExercise.idf index d7f458dc129..8e582523c49 100644 --- a/testfiles/ConstSpeedBranchPumpExercise.idf +++ b/testfiles/ConstSpeedBranchPumpExercise.idf @@ -30,8 +30,7 @@ No, !- Use Weather File Daylight Saving Period No, !- Apply Weekend Holiday Rule Yes, !- Use Weather File Rain Indicators - Yes, !- Use Weather File Snow Indicators - 1; !- Number of Times Runperiod to be Repeated + Yes; !- Use Weather File Snow Indicators Site:Location, USA IL-CHICAGO-OHARE, !- Name @@ -283,7 +282,6 @@ Load Profile 1 load Schedule, !- Load Schedule Name 0.002, !- Peak Flow Rate {m3/s} Load Profile 1 flow Schedule; !- Flow Rate Fraction Schedule Name ->>>>>>> upstream/develop !Schedule:Constant, ! Load Profile 1 load Schedule,