Skip to content

Commit 048b94d

Browse files
committed
Calc reorg cleanup; passes all tests
1 parent 413fa1f commit 048b94d

File tree

3 files changed

+30
-27
lines changed

3 files changed

+30
-27
lines changed

src/CGWTHR.CPP

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,18 +84,16 @@ RC TOPRAT::tp_WthrInit() // Initialize weather data/ display any error message
8484
RC TOPRAT::tp_WthrBegDay()
8585
{
8686
RC rc = RCOK;
87-
int doWhat; // where wf_GenSubhrRad() gets data
87+
int dayTy = WFILE::gshrFILEDAY; // type of day for wf_GenSubrRad
8888
if (tp_dsDay) // if this is a design day
8989
{ rc |= tp_WthrFillDsDay(&Wfile);
90-
doWhat = tp_dsDay == 1 ? WFILE::gshrZERO
90+
dayTy = tp_dsDay == 1 ? WFILE::gshrDSDAY0
9191
: Top.tp_AuszWthrSource() == TOPRAT_COOLDSDAY
9292
? WFILE::gshrFILEDAY
9393
: WFILE::gshrDSDAY;
9494
}
95-
else
96-
doWhat = WFILE::gshrFILEDAY;
9795

98-
rc |= Wfile.wf_GenSubhrRad( doWhat, jDay);
96+
rc |= Wfile.wf_GenSubhrRad( dayTy, jDay);
9997

10098
return rc;
10199
} // TOPRAT::tp_WthrBegDay

src/CNRECS.DEF

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -688,8 +688,8 @@ RECORD WFILE "weatherFile" *RAT // weather file info, one static instance "Wfile
688688
*declare "RC wf_EtDecodeHdr( char* hdr, int erOp, float* clrnss, float* turbid, float* atmois);"
689689
*declare "RC wf_DecodeHdrFields( char* hdr, struct WFHTAB* wfht0, int erOp);"
690690
*declare "RC wf_FillWDYEAR( int erOp=WRN);"
691-
*declare "enum { gshrFILEDAY, gshrDSDAY, gshrZERO };"
692-
*declare "RC wf_GenSubhrRad( int doWhat, int jDay);"
691+
*declare "enum { gshrFILEDAY, gshrDSDAY, gshrDSDAY0 };"
692+
*declare "RC wf_GenSubhrRad( int dayTy, int jDay);"
693693
*declare "RC wf_GetSubhrRad( int jDay, int iHrST, int iSh, float& radBeamAv, float& radDiffAv);"
694694
*declare "WDHR& wf_GetDsDayWDHR( int iHr);"
695695
*declare "RC wf_GetDsDayHr( WDHR* pWd, int iHr, int erOp = WRN);"

src/WFPAK.CPP

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -474,7 +474,10 @@ friend class WFILE;
474474
WDSUBHRFACTORS* wdy_wShF; // array [nSubhr] of constants re subhr radiation upsampling\
475475
// constant for run (depends on nSubhr only)
476476
int wdy_shJday; // day of year now in wdy_shDay (1-365/366)
477-
// <= 0 if not set up
477+
// < 0 if not set up
478+
int wdy_shDayTy; // type of day now in wdy_shDay
479+
// gshrFILEDAY, gshrDSDAY, gshrDSDAY0
480+
// < 0 if not set up
478481
WDSUBHR* wdy_shDay; // subhour solar radiation data for wdy_shJday
479482
double wdy_taDbAvg[ 13]; // avg daily temp by month, [ 0] = year
480483
double wdy_tMainsAvg[ 13]; // avg cold water temp by month, [ 0] = year
@@ -508,8 +511,8 @@ public:
508511
double& tdvElecMean, double& tdvElecMax, UCH tdvElecHrRank[ 24]) const;
509512
float wdy_TaDbAvg( int jDay1, int jDay2);
510513
RC wdy_GenSubhrRadSetup( int nSh);
511-
RC wdy_GenSubhrRad(int doWhat, int jDay);
512-
RC wdy_GenSubhrRad1(WDSUBHR wdsh[], int doWhat, int jDay, int iHr);
514+
RC wdy_GenSubhrRad(int dayTy, int jDay);
515+
RC wdy_GenSubhrRad1(WDSUBHR wdsh[], int dayTy, int jDay, int iHr);
513516
}; // class WDYEAR
514517
//-----------------------------------------------------------------------------
515518
WDYEAR::WDYEAR() // c'tor
@@ -533,7 +536,7 @@ void WDYEAR::wdy_Init(
533536
for (int iD = 0; iD < 366; iD++)
534537
wdy_day[iD].wdd_Init(); // note: access via [], not wdy_Day()
535538
// avoid wrapping etc so all init'ed()
536-
wdy_shJday = 0; // no subhr day set up
539+
wdy_shJday = wdy_shDayTy = -1; // no subhr day set up
537540
// don't init wdy_hr[]: very big and will be filled by weather file read
538541
} // WDYEAR::wdy_Init
539542
//-----------------------------------------------------------------------------
@@ -572,7 +575,7 @@ RC WFILE::wf_FillWDYEAR( // read and unpack weather data for entire file
572575
}
573576
#endif
574577

575-
// interpolate hourly data to get subhour values
578+
// init for subhr interpolation
576579
rc |= wf_pWDY->wdy_GenSubhrRadSetup( Top.nSubSteps);
577580

578581
return rc;
@@ -779,7 +782,7 @@ RC WDYEAR::wdy_GenSubhrRadSetup( // one-time init for solar upsample
779782
wdy_wShF = new WDSUBHRFACTORS[nSh];
780783
delete[] wdy_shDay;
781784
wdy_shDay = new WDSUBHR[ 24*nSh];
782-
wdy_shJday = 0;
785+
wdy_shJday = wdy_shDayTy = -1;
783786

784787
for (int iSh = 0; iSh < nSh; iSh++)
785788
wdy_wShF[iSh].wds_Setup(iSh, nSh);
@@ -820,36 +823,38 @@ void WDSUBHRFACTORS::wds_Setup( // constant factors re upsampling interpolation
820823
} // WDSUBHRFACTORS::wds_Setup
821824
//-----------------------------------------------------------------------------
822825
RC WFILE::wf_GenSubhrRad( // generate subhr solar values for entire day
823-
int doWhat, // gshrFILEDAY, gshrDSDAY, gshrZERO
826+
int dayTy, // day type: gshrFILEDAY, gshrDSDAY, gshrDSDAY0
824827
int jDay) // day of year, 1-365/366
825828
// returns RCOK iff subhour data successfully generated
826829
{
827-
RC rc = !wf_pWDY ? RCBAD
828-
: wf_pWDY->wdy_shJday == jDay ? RCOK
829-
: wf_pWDY->wdy_GenSubhrRad(doWhat, jDay);
830+
RC rc = wf_pWDY ? wf_pWDY->wdy_GenSubhrRad(dayTy, jDay) : RCBAD;
830831
return rc;
831832
} // WFILE::wf_GenSubhrSolar
832833
//-----------------------------------------------------------------------------
833834
RC WDYEAR::wdy_GenSubhrRad( // generate subhr radiation values for day
834-
int doWhat, // gshrFILEDAY, gshrDSDAY, gshrZERO
835+
int dayTy, // gshrFILEDAY, gshrDSDAY, gshrDSDAY0
835836
int jDay) // day of year (1-365/366)
837+
// NOPs if jDay already set up
836838
// returns RCOK iff success
837839
{
838840
RC rc = RCOK;
839-
for (int iHr = 0; iHr < 24; iHr++)
840-
{ WDSUBHR* pWDSH = &wdy_Subhr(iHr, 0);
841-
rc |= wdy_GenSubhrRad1(pWDSH, doWhat, jDay, iHr);
841+
if (wdy_shJday != jDay || wdy_shDayTy != dayTy)
842+
{ for (int iHr = 0; iHr < 24; iHr++)
843+
{ WDSUBHR* pWDSH = &wdy_Subhr(iHr, 0);
844+
rc |= wdy_GenSubhrRad1(pWDSH, dayTy, jDay, iHr);
845+
}
846+
wdy_shJday = jDay;
847+
wdy_shDayTy = dayTy;
842848
}
843-
wdy_shJday = jDay;
844849
return rc;
845850
} // WDYEAR::wdy_GenSubhrRad
846851
//-----------------------------------------------------------------------------
847852
RC WDYEAR::wdy_GenSubhrRad1( // generate solar subhr values for 1 hour
848853
WDSUBHR wdSh[], // returned: subhour values
849-
int doWhat, // generation options
850-
// gshrZERO: set rad values to 0 (for heating design day)
854+
int dayTy, // generation options
855+
// gshrDSDAY0: set rad values to 0 (for heating design day)
851856
// gshrDSDAY: use design day hourly data
852-
// gshrFILEDAY: use data from weather file
857+
// gshrFILEDAY: use hourly data from weather file
853858
int jDay, // day of year (1-365/366)
854859
int iHr) // hour of day, 0-23
855860
// returns RCOK iff success
@@ -859,11 +864,11 @@ RC WDYEAR::wdy_GenSubhrRad1( // generate solar subhr values for 1 hour
859864
// hourly data for prev hour, this hr, next hr
860865
float radBeam[3] = { 0.f }; // beam
861866
float radDiff[3] = { 0.f }; // diffuse
862-
if (doWhat != WFILE::gshrZERO)
867+
if (dayTy != WFILE::gshrDSDAY0)
863868
{ const WDHR* pWD[3];
864869
for (int id = 0; id < 3; id++)
865870
{ int iHx = iHr + id - 1;
866-
pWD[id] = doWhat == WFILE::gshrDSDAY
871+
pWD[id] = dayTy == WFILE::gshrDSDAY
867872
? &wdy_hrDsDay[(iHx+24) % 24]
868873
: &wdy_Hr(jDay, iHx);
869874
radBeam[id] = pWD[id]->wd_bmrad;

0 commit comments

Comments
 (0)