Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/CNRECS.DEF
Original file line number Diff line number Diff line change
Expand Up @@ -848,7 +848,7 @@ RECORD WDHR "wfdata sub" *SUBSTRUCT // hourly data substructure for WFDATA
*h float wd_taDbAvg07 // trailing 7-day avg DB (not including current day), F
*h float wd_taDbAvg14 // trailing 14-day avg DB (not including current day), F
*h float wd_taDbAvg31 // trailing 31-day avg DB (not including current day), F

*h float wd_taDbAvgMonth // current month average DB, F

// derived (computed) electricity TDV values
// values updated at standard time day beg / same all day
Expand Down
29 changes: 27 additions & 2 deletions src/wfpak.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,7 @@ friend WFILE;
float wdd_taDbAvg07; // 7 day
float wdd_taDbAvg14; // 14 day
float wdd_taDbAvg31; // 31 day
float wdd_taDbAvgMonth; // this month mean dry bulb air temp, F

// TDV elect statistics
float wdd_tdvElecPk; // peak for cur day
Expand Down Expand Up @@ -565,6 +566,7 @@ friend struct WDSLRDAY;
void wdy_Stats( int jDay, double& taDbMean, double& taDbMax,
double& tdvElecMean, double& tdvElecMax, UCH tdvElecHrRank[ 24]) const;
float wdy_TaDbAvg( int jDay1, int jDay2);
float wdy_TaDbAvgMonth( int month, const int* monthLenghts );
#if 0
RC wdy_PrepareWDSLRDAY( WDSLRDAY& wdsd, int dayTy, int jDay);
#endif
Expand Down Expand Up @@ -665,7 +667,7 @@ RC WDYEAR::wdy_Fill( // read weather data for entire file; compute averages etc.
int iDay;
int jDay = 0;
for (iMon=1; iMon<=12; iMon++)
{ int monLen = monLens[ iMon] + (wdy_isLeap && iMon==2);
{ int monLen = monLens[ iMon] + (wdy_isLeap && iMon==2);
for (iDay=0; iDay<monLen; iDay++)
{ jDay++;
slday(jDay, sltmLST);
Expand Down Expand Up @@ -712,8 +714,11 @@ RC WDYEAR::wdy_Fill( // read weather data for entire file; compute averages etc.
jDay = 0;
WDDAY* wddRank[366]; // pointers to days re rank sort
wddRank[365] = NULL; // insurance, unused unless leap year
int monthDayStart{ 0 }, monthDayEnd{ 0 };
for (iMon=1; iMon<=12; iMon++)
{ int monLen = monLens[ iMon] + (wdy_isLeap && iMon==2);
{ int monLen = monLens[ iMon] + (wdy_isLeap && iMon == 2);
monthDayEnd += monLen;
float TaDbAvgMonth = wdy_TaDbAvg(monthDayStart, monthDayEnd);//wdy_TaDbAvgMonth(iMon, monLens);
for (iDay=0; iDay<monLen; iDay++)
{ jDay++;
WDDAY& wdd = wdy_Day( jDay);
Expand All @@ -723,6 +728,9 @@ RC WDYEAR::wdy_Fill( // read weather data for entire file; compute averages etc.
wdd.wdd_taDbAvg07 = wdy_TaDbAvg( jDay-7, jDay-1);
wdd.wdd_taDbAvg14 = wdy_TaDbAvg( jDay-14, jDay-1);
wdd.wdd_taDbAvg31 = wdy_TaDbAvg( jDay-31, jDay-1);
wdd.wdd_taDbAvgMonth = jDay == 1 || jDay - 1 != monthDayStart ?
TaDbAvgMonth :
wddRank[ jDay-2]->wdd_taDbAvgMonth;
wdd.wdd_tGrnd = CalcGroundTemp(
jDay, // day of year
wdy_taDbAvg[ 0], // air temp annual mean, F
Expand All @@ -740,6 +748,7 @@ RC WDYEAR::wdy_Fill( // read weather data for entire file; compute averages etc.
if (wdd.wdd_tMains < wdy_tMainsMin)
wdy_tMainsMin = wdd.wdd_tMains;
}
monthDayStart = monthDayEnd;
wdy_tMainsAvg[ 0] += wdy_tMainsAvg[ iMon];
wdy_tMainsAvg[ iMon] /= monLen;
}
Expand Down Expand Up @@ -807,6 +816,19 @@ float WDYEAR::wdy_TaDbAvg( // multi-day average dry bulb
return float( taDbSum / (jDay2 - jDay1 + 1));
} // WDYEAR::wdy_TaDbAvg
//-----------------------------------------------------------------------------
float WDYEAR::wdy_TaDbAvgMonth(
int month, // Month of the year, this should be between 1 and 13
const int* monthLenghts) // Array containing the length of each month should be of size 13
// Returns: the average dry bulb value for given month
{
int startMonthDay = 0;
for (int currentMonth = 1; currentMonth < month; currentMonth++) {
startMonthDay += *(monthLenghts+currentMonth) + (wdy_isLeap && currentMonth == 2);
}
int endMonthDay = startMonthDay + *(monthLenghts + month);
return wdy_TaDbAvg(startMonthDay, endMonthDay);
}
//-----------------------------------------------------------------------------
RC WDYEAR::wdy_TransferHr( // transfer cached data to application
int jDay, // day sought (1-365/366)
// caller handles leap year issues (see wf_Read() WF_USELEAP)
Expand Down Expand Up @@ -1283,6 +1305,7 @@ void WDDAY::wdd_Init()
wdd_taDbAvg07 = 0.f;
wdd_taDbAvg14 = 0.f;
wdd_taDbAvg31 = 0.f;
wdd_taDbAvgMonth = 0.f;

wdd_tdvElecPk = 0.f;
wdd_tdvElecPkRank = 0;
Expand Down Expand Up @@ -1346,6 +1369,7 @@ void WDHR::wd_SetDayValues( // set daily members for this hour
wd_taDbAvg07 = wdd.wdd_taDbAvg07;
wd_taDbAvg14 = wdd.wdd_taDbAvg14;
wd_taDbAvg31 = wdd.wdd_taDbAvg31;
wd_taDbAvgMonth = wdd.wdd_taDbAvgMonth;
wd_tGrnd = wdd.wdd_tGrnd;
wd_tMains = wdd.wdd_tMains;
wd_tdvElecPk = wdd.wdd_tdvElecPk;
Expand All @@ -1368,6 +1392,7 @@ void WDHR::wd_SetDayValuesIfMissing( // set missing daily members
SETIF( wd_taDbAvg07, wdd.wdd_taDbAvg07)
SETIF( wd_taDbAvg14, wdd.wdd_taDbAvg14)
SETIF( wd_taDbAvg31, wdd.wdd_taDbAvg31)
SETIF( wd_taDbAvgMonth, wdd.wdd_taDbAvgMonth)
SETIF( wd_tGrnd, wdd.wdd_tGrnd)
SETIF( wd_tMains, wdd.wdd_tMains)
SETIF( wd_tdvElecPk, wdd.wdd_tdvElecPk)
Expand Down
34 changes: 34 additions & 0 deletions test/OUTDOORDRYBULB.cse
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
//WfName="Boulder.epw"
WfName="Bishop.epw"

REPORT
rpType=UDT
rpCpl = 200
reportcol colVal=$Month colHead="Month"
reportcol [email protected] colhead="Outdoor Drybulb monthly average"
rpFreq=DAY
rpDayBeg=Jan 1
rpDayEnd=Dec 31
endreport

//EXPORTFILE "OutdoorDryBulbHOUR"
// xfFileName="OutdoorDryBulbHOUR"
// xfFileStat=OVERWRITE

//EXPORT exExportFile="OutdoorDryBulbHOUR" exType=UDT exFreq=HOUR exTitle="Drybulb" exDayBeg=jan 1 exDayEnd=dec 31 exHeader=ColumnsOnly
// ExportCol colhead="Day" [email protected]
// ExportCol colhead="Hour" [email protected]
// ExportCol colhead="Outdoor Drybulb" [email protected]
// ExportCol colhead="Outdoor Drybulb monthly average" [email protected]

//EXPORTFILE "OutdoorDryBulbMONTH"
// xfFileName="OutdoorDryBulbMONTHLY"
// xfFileStat=OVERWRITE

//EXPORT exExportFile="OutdoorDryBulbMONTH" exType=UDT exFreq=MONTH exTitle="Drybulb" exDayBeg=jan 1 exDayEnd=dec 31 exHeader=ColumnsOnly
// ExportCol colhead="Day" [email protected]
// ExportCol colhead="Hour" [email protected]
// ExportCol colhead="Outdoor Drybulb" [email protected]
// ExportCol colhead="Outdoor Drybulb monthly average" [email protected]

RUN