From 666ba72de23952ac51516c827066ffb70f098b15 Mon Sep 17 00:00:00 2001 From: David Huard Date: Thu, 9 Apr 2026 14:55:11 -0400 Subject: [PATCH 1/2] return immediately with arg -v or --version --- src/RavenMain.cpp | 15 ++++++++++----- src/RavenMain.h | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/RavenMain.cpp b/src/RavenMain.cpp index 5ff1ace7..3a4dd722 100644 --- a/src/RavenMain.cpp +++ b/src/RavenMain.cpp @@ -41,6 +41,7 @@ int main(int argc, char* argv[]) clock_t t0, t1; //computational time markers time_struct tt; int nEnsembleMembers; + int retval; optStruct Options; Options.version=__RAVEN_VERSION__; @@ -51,7 +52,9 @@ int main(int argc, char* argv[]) Options.version+=" w/ lp_solve"; #endif - ProcessExecutableArguments(argc,argv,Options); + retval = ProcessExecutableArguments(argc,argv,Options); + if (!retval) { return 0; } + PrepareOutputdirectory(Options); for (int i=0;i<10;i++){g_debug_vars[i]=0;} @@ -199,7 +202,7 @@ int main(int argc, char* argv[]) /// \details filebase has no extension, all others require .rv* extension /// \param Options [in] Global model options // -void ProcessExecutableArguments(int argc, char* argv[], optStruct &Options) +int ProcessExecutableArguments(int argc, char* argv[], optStruct &Options) { int i=1; string word,argument; @@ -236,7 +239,7 @@ void ProcessExecutableArguments(int argc, char* argv[], optStruct &Options) } if ((word=="-p") || (word=="-h") || (word=="-t") || (word=="-e") || (word=="-c") || (word=="-o") || (word=="-s") || (word=="-r") || (word=="-n") || (word=="-l") || (word=="-m") || (word=="-v") || - (word=="-we")|| (word=="-tt")|| (word=="-template") || (word=="-b") || (i==argc)) + (word=="-we")|| (word=="-tt")|| (word=="-template") || (word=="--version") || (word=="-b") || (i==argc)) { if (mode==0){ Options.rvi_filename=argument+".rvi"; @@ -282,7 +285,7 @@ void ProcessExecutableArguments(int argc, char* argv[], optStruct &Options) else if (word=="-we"){mode=13; } else if (word=="-template"){mode=14;} else if (word=="-b"){mode=15;} - else if (word=="-v"){Options.pause=false; version_announce=true; mode=10;} //For PAVICS + else if (word=="-v" || word=="--version"){Options.pause=false; version_announce=true; mode=10;} //For PAVICS } else{ if (argument==""){argument+=word;} @@ -317,8 +320,10 @@ void ProcessExecutableArguments(int argc, char* argv[], optStruct &Options) if(version_announce) { cout< Date: Fri, 10 Apr 2026 16:21:04 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/Assimilate.cpp | 2 +- src/ChannelXSect.cpp | 2 +- src/ParsePropertyFile.cpp | 18 +++++++++--------- src/Reservoir.cpp | 8 ++++---- src/Reservoir.h | 2 +- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/Assimilate.cpp b/src/Assimilate.cpp index c080e6a1..73fedc8b 100644 --- a/src/Assimilate.cpp +++ b/src/Assimilate.cpp @@ -157,7 +157,7 @@ void CModel::PrepareAssimilation(const optStruct &Options,const time_struct &tt) { Qobs = _pObservedTS[i]->GetSampledValue(nn); //mean timestep flow Qobs2 = _pObservedTS[i]->GetSampledValue(nn+1); //mean timestep flow - + //override initial conditions directly if ((nn==1) && (Qobs!=RAV_BLANK_DATA)){ _pSubBasins[p]->SetQout(Qobs); diff --git a/src/ChannelXSect.cpp b/src/ChannelXSect.cpp index 0ad00a6c..d950a881 100644 --- a/src/ChannelXSect.cpp +++ b/src/ChannelXSect.cpp @@ -389,7 +389,7 @@ double CChannelXSect::GetDiffusivity(const double &Q, const double &SB_slope, co { ExitGracefullyIf(Q<=0,"CChannelXSect::GetDiffusivity: Invalid channel flowrate",BAD_DATA); - ///< diffusivity from Roberson et al. 1995, Hydraulic Engineering + ///< diffusivity from Roberson et al. 1995, Hydraulic Engineering double slope_mult=1.0; double Q_mult =1.0; GetFlowCorrections(SB_slope,SB_n,slope_mult,Q_mult); diff --git a/src/ParsePropertyFile.cpp b/src/ParsePropertyFile.cpp index ddaf48cc..39117324 100644 --- a/src/ParsePropertyFile.cpp +++ b/src/ParsePropertyFile.cpp @@ -38,10 +38,10 @@ void AddNewSoilClass (CSoilClass **&pSoilClasses, soil_struct **&parsed_s string *&soiltags, int &num_parsed_soils, int nConstits, const string name, bool isdefault, CModel *pModel); void AddNewLULTClass (CLandUseClass **&pLandUseClasses, surface_struct **&parsed_lults, - string *&lulttags, int &num_parsed_lults, + string *&lulttags, int &num_parsed_lults, const string name, bool isdefault, CModel *pModel); void AddNewVegClass (CVegetationClass **&pVegClasses, veg_struct **&parsed_vegs, - string *&vegtags, int &num_parsed_vegs, + string *&vegtags, int &num_parsed_vegs, const string name, bool isdefault, CModel *pModel); ////////////////////////////////////////////////////////////////// /// \brief This method parses the class properties .rvp file @@ -86,7 +86,7 @@ bool ParseClassPropertiesFile(CModel *&pModel, CSoilProfile **pProfiles=NULL; int num_parsed_aqstacks=0; - + bool invalid_index; int num_read; int *indices=NULL; @@ -518,7 +518,7 @@ bool ParseClassPropertiesFile(CModel *&pModel, invalid_index=ParsePropArray(p,indices,properties,num_read,soiltags,nParamStrings,num_parsed_soils,aAliases,nAliases); ExitGracefullyIf(invalid_index, "ParseClassPropertiesFile: Invalid soiltype code in SoilParameterList command",BAD_DATA); - + if (Options.noisy){ for (int j=0;jAutoCalculateSoilProps (*parsed_soils[c],*parsed_soils[0],pModel->GetTransportModel()->GetNumConstituents()); } for (int c=1;cAutoCalculateLandUseProps (*parsed_surf[c], *parsed_surf[0]); + pLUClasses [c]->AutoCalculateLandUseProps (*parsed_surf[c], *parsed_surf[0]); } for (int c=1;cAutoCalculateTerrainProps ( parsed_terrs[c], parsed_terrs[0]); @@ -1577,7 +1577,7 @@ bool ParseClassPropertiesFile(CModel *&pModel, pModel->CheckForChannelXSectsDuplicates(Options); - + delete p; return true; @@ -1648,7 +1648,7 @@ bool ParsePropArray(CParser *p, //parser tmpproperties[num_read][j-1]=AutoOrDoubleOrAlias(s[j],pAliases,nAliases); } DeletePropArray(indices,properties,num_read); - + properties=tmpproperties; indices=tmpind; num_read++; @@ -1808,7 +1808,7 @@ void AddNewSoilClass(CSoilClass **&pSoilClasses, /// \brief dynamically adds a new LULT class to the array of parsed LULT classes. // void AddNewLULTClass (CLandUseClass **&pLandUseClasses, surface_struct **&parsed_lults, - string *&lulttags, int &num_parsed_lults, + string *&lulttags, int &num_parsed_lults, const string name, bool isdefault, CModel *pModel){ CLandUseClass *pLC; pLC = new CLandUseClass(name, pModel); @@ -1838,7 +1838,7 @@ void AddNewLULTClass (CLandUseClass **&pLandUseClasses, surface_struct ** /// \brief dynamically adds a new veg class to the array of parsed vegetation classes. // void AddNewVegClass (CVegetationClass **&pVegClasses, veg_struct **&parsed_vegs, - string *&vegtags, int &num_parsed_vegs, + string *&vegtags, int &num_parsed_vegs, const string name, bool isdefault, CModel *pModel){ CVegetationClass *pVC; pVC = new CVegetationClass(name, pModel); diff --git a/src/Reservoir.cpp b/src/Reservoir.cpp index 186b0f49..aa364662 100644 --- a/src/Reservoir.cpp +++ b/src/Reservoir.cpp @@ -511,17 +511,17 @@ double CReservoir::GetLakeConvectionCoeff() const { return _lake_convcoeff; } ////////////////////////////////////////////////////////////////// /// \returns current outflow rate [m3/s] // -double CReservoir::GetOutflowRate (const bool adjusted) const { +double CReservoir::GetOutflowRate (const bool adjusted) const { if (adjusted){return max(_Qout+_DAadjust,0.0);} - else {return _Qout;} + else {return _Qout;} } ////////////////////////////////////////////////////////////////// /// \returns previous outflow rate [m3/s] // -double CReservoir::GetOldOutflowRate (const bool adjusted) const { +double CReservoir::GetOldOutflowRate (const bool adjusted) const { if (adjusted){return max(_Qout_last+_DAadjust_last,0.0);} - else {return _Qout_last;} + else {return _Qout_last;} } ////////////////////////////////////////////////////////////////// diff --git a/src/Reservoir.h b/src/Reservoir.h index 4578b0ba..26bc3652 100644 --- a/src/Reservoir.h +++ b/src/Reservoir.h @@ -99,7 +99,7 @@ class CReservoir double _DAadjust; //< outflow adjustment - used for reporting overriden flows [m3/s] double _DAadjust_last; //< outflow adjustment [m3/s] from previous time step - + int _dry_timesteps; //< number of time steps this reservoir dried out during simulation //state variables :