55using std::random_device;
91 InStream.open(strFilePathName.c_str(), ios::in);
94 if (!InStream.is_open())
97 cerr <<
ERR <<
"cannot open " << strFilePathName <<
" for input" << endl;
103 string strRec, strErr;
105 while (getline(InStream, strRec))
113 if ((!strRec.empty()) && (strRec[0] !=
QUOTE1) && (strRec[0] !=
QUOTE2))
119 size_t nPos = strRec.find(
COLON);
121 if (nPos == string::npos)
124 cerr <<
ERR <<
"on line " << nLine <<
": badly formatted (no ':') in " << strFilePathName << endl
125 <<
"'" << strRec <<
"'" << endl;
129 if (nPos == strRec.size() - 1)
132 cerr <<
ERR <<
"on line " << nLine <<
": badly formatted (nothing following ':') in " << strFilePathName << endl
133 <<
"'" << strRec <<
"'" << endl;
138 string strRH = strRec.erase(0, nPos + 1);
144 nPos = strRH.rfind(
QUOTE1);
146 if (nPos != string::npos)
149 nPos = strRH.rfind(
QUOTE2);
151 if (nPos != string::npos)
162 strErr =
"line " + to_string(nLine) +
": path and name of main datafile";
188 strErr =
"line " + to_string(nLine) +
": path for CoastalME output";
216 if (strRH.find(
'@') == string::npos)
217 strErr =
"line " + to_string(nLine) +
": email address for messages";
230 cerr <<
ERR <<
"reading " << strErr <<
" in " << strFilePathName << endl
231 <<
"'" << strRec <<
"'" << endl;
258 size_t nDotPos = strFileName.find_last_of(
'.');
259 if (nDotPos != string::npos)
261 string strExt = strFileName.substr(nDotPos + 1);
262 std::transform(strExt.begin(), strExt.end(), strExt.begin(), ::tolower);
264 if (strExt ==
"yaml" || strExt ==
"yml")
269 else if (strExt ==
"dat")
310 if (!InStream.is_open())
320 string strRec, strErr;
322 while (getline(InStream, strRec))
330 if ((!strRec.empty()) && (strRec[0] !=
QUOTE1) && (strRec[0] !=
QUOTE2))
336 nPos = strRec.find(
COLON);
338 if (nPos == string::npos)
341 cerr <<
ERR <<
"on line " << to_string(nLine) <<
"badly formatted (no ':') in " <<
m_strDataPathName << endl
347 string strRH = strRec.erase(0, nPos + 1);
359 nPos = strRH.rfind(
QUOTE1);
361 if (nPos != string::npos)
367 nPos = strRH.rfind(
QUOTE2);
369 if (nPos != string::npos)
393 vector<string> VstrTmp;
401 strErr =
"line " + to_string(nLine) +
": output file names";
422 strErr =
"line " + to_string(nLine) +
": invalid integer for log file detail level '" + strRH +
"' in " +
m_strDataPathName;
429 strErr =
"line " + to_string(nLine) +
": log file detail level";
439 if (strRH.find(
'y') != string::npos)
449 if (VstrTmp.size() < 2)
451 strErr =
"line " + to_string(nLine) +
": must have both date and time for simulation start in '" +
m_strDataPathName +
"'";
456 if (!
bParseTime(&VstrTmp[0], nHour, nMin, nSec))
458 strErr =
"line " + to_string(nLine) +
": could not understand simulation start time in '" +
m_strDataPathName +
"'";
463 if (!
bParseDate(&VstrTmp[1], nDay, nMonth, nYear))
465 strErr =
"line " + to_string(nLine) +
": could not understand simulation start date in '" +
m_strDataPathName +
"'";
487 strErr =
"line " + to_string(nLine) +
": units for duration of simulation";
492 nPos = strRH.rfind(
SPACE);
494 if (nPos == string::npos)
496 strErr =
"line " + to_string(nLine) +
": format of duration simulation line";
510 strErr =
"line " + to_string(nLine) +
": duration of simulation must be > 0";
522 strErr =
"line " + to_string(nLine) +
": units for simulation timestep";
527 nPos = strRH.rfind(
SPACE);
529 if (nPos == string::npos)
531 strErr =
"line " + to_string(nLine) +
": format of simulation timestep";
544 strErr =
"line " + to_string(nLine) +
": invalid floating point number for timestep '" + strRH +
"' in " +
m_strDataPathName;
551 strErr =
"line " + to_string(nLine) +
": timestep of simulation must be > 0";
554 strErr =
"line " + to_string(nLine) +
": timestep of simulation must be < the duration of the simulation";
564 string const strOriginal = strRH;
565 size_t nCommaPos = 0;
572 size_t const nNextComma = strOriginal.find(
',', nCommaPos);
574 if (nNextComma != string::npos)
576 strGroup = strOriginal.substr(nCommaPos, nNextComma - nCommaPos);
577 nCommaPos = nNextComma + 1;
582 strGroup = strOriginal.substr(nCommaPos);
583 nCommaPos = string::npos;
590 if (strGroup.empty())
598 strErr =
"line " + to_string(nLine) +
": units for save intervals in group '" + strGroup +
"'";
603 size_t const nLastSpace = strGroup.rfind(
SPACE);
605 if (nLastSpace == string::npos)
607 strErr =
"line " + to_string(nLine) +
": format of save times/intervals in group '" + strGroup +
"'";
611 string strNumbers = strGroup.substr(0, nLastSpace);
615 size_t nSpacePos = 0;
620 size_t const nNextSpace = strNumbers.find(
SPACE, nSpacePos);
622 if (nNextSpace == string::npos)
625 string const strNumber = strNumbers.substr(nSpacePos, nNextSpace - nSpacePos);
627 if (!strNumber.empty())
631 strErr =
"line " + to_string(nLine) +
": too many save intervals";
635 double const dValue = strtod(strNumber.c_str(), NULL) * dMult;
639 nSpacePos = nNextSpace + 1;
640 }
while (nSpacePos < strNumbers.length());
644 }
while (nCommaPos != string::npos);
656 strErr =
"line " + to_string(nLine) +
": save interval cannot be less than timestep";
669 strErr =
"line " + to_string(nLine) +
": first save time cannot be less than timestep";
679 strErr =
"line " + to_string(nLine) +
": no save times specified";
700 nPos = strRH.find(
SPACE);
702 if (nPos == string::npos)
720 strTmp = strRH.substr(0, nPos);
728 strRH = strRH.substr(nPos, strRH.size() - nPos);
731 if (strRH.size() == 0)
751 strErr =
"line " + to_string(nLine) +
": invalid integer for max save digits for GIS output file names '" + strRH +
"' in " +
m_strDataPathName;
758 strErr =
"line " + to_string(nLine) +
": max save digits for GIS output file names must be > 1";
765 strErr =
"line " + to_string(nLine) +
": must specify save digits for GIS output as sequential or as iteration number";
772 if (strRH.find(
's') != string::npos)
778 else if (strRH.find(
'i') != string::npos)
787 strErr += to_string(nLine);
788 strErr +=
": invalid code for save digits for GIS output save number (must be s or i)";
801 strErr += to_string(nLine);
802 strErr +=
": must contain '";
806 strErr +=
"', or at least one raster GIS output code";
1290 strErr =
"line " + to_string(nLine) +
": unknown code '" + strRH +
"' in list of codes for raster GIS output";
1301 if (strRH.find(
"gpkg") != string::npos)
1302 strErr =
"GDAL gpkg raster create() is not yet working correctly. Please choose another output format.";
1312 if (strRH.find(
'y') != string::npos)
1323 if (strRH.find(
'y') != string::npos)
1335 nPos = strRH.find(
SPACE);
1337 if (nPos != string::npos)
1343 strTmp = strRH.substr(0, nPos);
1347 strRH = strRH.substr(nPos, strRH.size() - nPos);
1351 nPos = strRH.find(
SPACE);
1352 }
while (nPos != string::npos);
1366 strErr += to_string(nLine);
1367 strErr +=
": must contain '";
1369 strErr +=
"', or '";
1371 strErr +=
"', or at least one vector GIS output code";
1547 strErr =
"line " + to_string(nLine) +
": unknown code '" + strRH +
"' in list of vector GIS output codes";
1558 strErr =
"line " + to_string(nLine) +
": vector GIS output format";
1661 strErr =
"line " + to_string(nLine) +
": unknown code '" + strRH +
"' in list of time series output files";
1671 strErr =
"line " + to_string(nLine) +
": invalid integer for coastline smoothing algorithm '" + strRH +
"' in " +
m_strDataPathName;
1678 strErr =
"line " + to_string(nLine) +
": coastline vector smoothing algorithm";
1686 strErr =
"line " + to_string(nLine) +
": invalid integer for coastline smoothing window '" + strRH +
"' in " +
m_strDataPathName;
1693 strErr =
"line " + to_string(nLine) +
": size of coastline vector smoothing window (must be > 0 and odd)";
1701 strErr =
"line " + to_string(nLine) +
": invalid integer for Savitzky-Golay polynomial for coastline smoothing '" + strRH +
"' in " +
m_strDataPathName;
1708 strErr =
"line " + to_string(nLine) +
": value of Savitzky-Golay polynomial for coastline smoothing (must be <= 6)";
1716 if (strRH.find(
'n') != string::npos)
1721 if (strRH.find(
's') != string::npos)
1726 if (strRH.find(
'w') != string::npos)
1731 if (strRH.find(
'e') != string::npos)
1742 strErr =
"line " + to_string(nLine) +
": invalid integer for size of coastline smoothing window '" + strRH +
"' in " +
m_strDataPathName;
1749 strErr =
"line " + to_string(nLine) +
": size of profile vector smoothing window (must be >= 0, if > 0 must be odd)";
1757 strErr =
"line " + to_string(nLine) +
": invalid floating point number for max local slope '" + strRH +
"' in " +
m_strDataPathName;
1764 strErr =
"line " + to_string(nLine) +
": max local slope must be > 0";
1772 strErr =
"line " + to_string(nLine) +
": invalid floating point number for maximum elevation of beach above SWL '" + strRH +
"' in " +
m_strDataPathName;
1779 strErr =
"line " + to_string(nLine) +
": maximum elevation of beach above SWL must be >= 0";
1788 strErr =
"line " + to_string(nLine) +
": invalid integer for number of sediment layers '" + strRH +
"' in " +
m_strDataPathName;
1796 strErr =
"line " + to_string(nLine) +
": must be at least one sediment layer";
1863 for (
int nLayer = 0; nLayer <
m_nLayers; nLayer++)
1865 for (
int j = 1; j <= 6; j++)
1871 if (!getline(InStream, strRec))
1884 while (strRec.empty() || (strRec[0] ==
QUOTE1) || (strRec[0] ==
QUOTE2));
1887 nPos = strRec.find(
COLON);
1889 if (nPos == string::npos)
1892 cerr <<
ERR <<
"on line " << to_string(nLine) <<
": badly formatted (no ':') in " <<
m_strDataPathName << endl
1898 strRH = strRec.substr(nPos + 1);
1905 nPos = strRH.rfind(
QUOTE1);
1907 if (nPos != string::npos)
1910 nPos = strRH.rfind(
QUOTE2);
1912 if (nPos != string::npos)
2102 if (!strErr.empty())
2106 <<
"'" << strRec <<
"'" << endl;
2204 strErr =
"line " + to_string(nLine) +
": must specify both intervention class and intervention height files";
2213 strErr =
"line " + to_string(nLine) +
": must specify both intervention class and intervention height files";
2244 strErr =
"line " + to_string(nLine) +
": invalid integer for wave propagation model '" + strRH +
"' in " +
m_strDataPathName;
2251 strErr =
"line " + to_string(nLine) +
": wave propagation model must be 0 or 1";
2259 strErr =
"line " + to_string(nLine) +
": invalid floating point number for sea water density '" + strRH +
"' in " +
m_strDataPathName;
2266 strErr =
"line " + to_string(nLine) +
": sea water density must be > 0";
2274 strErr =
"line " + to_string(nLine) +
": invalid floating point number for initial SWL '" + strRH +
"' in " +
m_strDataPathName;
2291 strErr =
"line " + to_string(nLine) +
": invalid floating point number for final SWL '" + strRH +
"' in " +
m_strDataPathName;
2303 strErr =
"line " + to_string(nLine) +
": deep water wave height in " +
m_strDataPathName +
" must be either a number or a filename (filename must not start with a number)";
2307 if (isdigit(strRH.at(0)))
2312 strErr =
"line " + to_string(nLine) +
": invalid floating point number for deep water wave height '" + strRH +
"' in " +
m_strDataPathName;
2322 strErr =
"line " + to_string(nLine) +
": deep water wave height must be > 0";
2358 strErr =
"line " + to_string(nLine) +
": filename missing for deep water wave height input";
2391 strErr =
"line " + to_string(nLine) +
": invalid floating point number for deep water wave orientation '" + strRH +
"' in " +
m_strDataPathName;
2398 strErr =
"line " + to_string(nLine) +
": deep water wave orientation must be zero degrees or more";
2401 strErr =
"line " + to_string(nLine) +
": deep water wave orientation must be less than 360 degrees";
2413 strErr =
"line " + to_string(nLine) +
": invalid floating point number for wave period '" + strRH +
"' in " +
m_strDataPathName;
2420 strErr =
"line " + to_string(nLine) +
": wave period must be > 0";
2453 strErr =
"line " + to_string(nLine) +
": invalid floating point number for breaking wave height to depth ratio '" + strRH +
"' in " +
m_strDataPathName;
2460 strErr =
"line " + to_string(nLine) +
": breaking wave height to depth ratio must be > 0";
2469 if (strRH.find(
'y') != string::npos)
2481 strErr =
"line " + to_string(nLine) +
": invalid floating point number for R (coast platform resistance to erosion) '" + strRH +
"' in " +
m_strDataPathName;
2485 m_dR = strtod(strRH.c_str(), NULL);
2488 strErr =
"line " + to_string(nLine) +
": R (coast platform resistance to erosion) value must be > 0";
2499 if (strRH.find(
'y') != string::npos)
2510 strErr =
"line " + to_string(nLine) +
": invalid integer for beach sediment transport at grid edges '" + strRH +
"' in " +
m_strDataPathName;
2517 strErr =
"line " + to_string(nLine) +
": switch for handling of beach sediment at grid edges must be 0, 1, or 2";
2528 strErr =
"line " + to_string(nLine) +
": invalid integer for beach erosion/deposition equation '" + strRH +
"' in " +
m_strDataPathName;
2535 strErr =
"line " + to_string(nLine) +
": switch for beach erosion/deposition equation must be 0 or 1";
2544 strErr =
"line " + to_string(nLine) +
": invalid floating point number for median particle size of fine sediment '" + strRH +
"' in " +
m_strDataPathName;
2551 strErr =
"line " + to_string(nLine) +
": median particle size of fine sediment must be > 0";
2563 strErr =
"line " + to_string(nLine) +
": invalid floating point number for median particle size of sand sediment '" + strRH +
"' in " +
m_strDataPathName;
2570 strErr =
"line " + to_string(nLine) +
": median particle size of sand sediment must be > 0";
2582 strErr =
"line " + to_string(nLine) +
": invalid floating point number for median particle size of coarse sediment '" + strRH +
"' in " +
m_strDataPathName;
2589 strErr =
"line " + to_string(nLine) +
": median particle size of coarse sediment must be > 0";
2604 strErr =
"line " + to_string(nLine) +
": invalid floating point number for density of beach sediment '" + strRH +
"' in " +
m_strDataPathName;
2611 strErr =
"line " + to_string(nLine) +
": density of beach sediment must be > 0";
2623 strErr =
"line " + to_string(nLine) +
": invalid floating point number for porosity of beach sediment '" + strRH +
"' in " +
m_strDataPathName;
2630 strErr =
"line " + to_string(nLine) +
": porosity of beach sediment must be > 0";
2639 strErr =
"line " + to_string(nLine) +
": invalid floating point number for erodibility of fine-sized sediment '" + strRH +
"' in " +
m_strDataPathName;
2646 strErr =
"line " + to_string(nLine) +
": relative erodibility of fine-sized sediment must be between 0 and 1";
2654 strErr =
"line " + to_string(nLine) +
": invalid floating point number for erodibility of sand-sized sediment '" + strRH +
"' in " +
m_strDataPathName;
2661 strErr =
"line " + to_string(nLine) +
": relative erodibility of sand-sized sediment must be between 0 and 1";
2669 strErr =
"line " + to_string(nLine) +
": invalid floating point number for erodibility of coarse-sized sediment '" + strRH +
"' in " +
m_strDataPathName;
2677 strErr =
"line " + to_string(nLine) +
": relative erodibility of coarse-sized sediment must be between 0 and 1";
2682 strErr =
"line " + to_string(nLine) +
": must have at least one non-zero erodibility value";
2693 strErr =
"line " + to_string(nLine) +
": invalid floating point number for transport parameter KLS of CERC equation '" + strRH +
"' in " +
m_strDataPathName;
2697 m_dKLS = strtod(strRH.c_str(), NULL);
2704 strErr =
"line " + to_string(nLine) +
": transport parameter KLS of CERC equation must be > 0";
2716 strErr =
"line " + to_string(nLine) +
": invalid floating point number for transport parameter of Kamphuis equation '" + strRH +
"' in " +
m_strDataPathName;
2723 strErr =
"line " + to_string(nLine) +
": transport parameter of Kamphuis equation must be > 0";
2735 strErr =
"line " + to_string(nLine) +
": invalid floating point number for Dean profile start height above SWL '" + strRH +
"' in " +
m_strDataPathName;
2742 strErr =
"line " + to_string(nLine) +
": Berm height (Dean profile start height above SWL) must be >= 0";
2755 if (strRH.find(
'y') != string::npos)
2768 strErr =
"line " + to_string(nLine) +
": invalid floating point number for cliff resistance to erosion '" + strRH +
"' in " +
m_strDataPathName;
2775 strErr =
"line " + to_string(nLine) +
": cliff resistance to erosion must be > 0";
2787 strErr =
"line " + to_string(nLine) +
": invalid floating point number for cliff notch overhang at collapse '" + strRH +
"' in " +
m_strDataPathName;
2794 strErr =
"line " + to_string(nLine) +
": cliff notch overhang at collapse must be > 0";
2806 strErr =
"line " + to_string(nLine) +
": cliff notch base below still water level must be > 0";
2818 strErr =
"line " + to_string(nLine) +
": invalid floating point number for scale parameter A for cliff deposition '" + strRH +
"' in " +
m_strDataPathName;
2825 strErr =
"line " + to_string(nLine) +
": scale parameter A for cliff deposition must be 0 [= auto] or greater";
2837 strErr =
"line " + to_string(nLine) +
": invalid floating point number for width of cliff collapse talus '" + strRH +
"' in " +
m_strDataPathName;
2844 strErr =
"line " + to_string(nLine) +
": planview width of cliff deposition must be > 0";
2856 strErr =
"line " + to_string(nLine) +
": invalid floating point number for planview length of cliff deposition '" + strRH +
"' in " +
m_strDataPathName;
2863 strErr =
"line " + to_string(nLine) +
": planview length of cliff deposition must be > 0";
2875 strErr =
"line " + to_string(nLine) +
": invalid floating point number for height of cliff collapse (as a fraction of cliff elevation) '" + strRH +
"' in " +
m_strDataPathName;
2882 strErr =
"line " + to_string(nLine) +
": minimum height of cliff collapse (as a fraction of cliff elevation) must be >= 0";
2892 if (strRH.find(
'y') != string::npos)
2942 strErr =
"line " + to_string(nLine) +
": unknown code '" + strRH +
"' in list of riverine flooding output codes";
2947 strErr =
"line " + to_string(nLine) +
": if simulating riverine flooding, must contain '" +
VECTOR_ALL_RIVER_FLOOD_OUTPUT_CODE +
"' or at least one vector GIS output code for riverine flooding";
2962 strErr =
"line " + to_string(nLine) +
": invalid code for run-up equation used in simulating floods";
2975 if (strRH.find(
'y') != string::npos)
3011 strErr =
"line " + to_string(nLine) +
": path of location points file must not be empty if simulating floods";
3020 if (strRH.find(
'y') != string::npos)
3061 if (strRH.find(
'p') != string::npos)
3064 else if (strRH.find(
'c') != string::npos)
3067 else if (strRH.find(
'l') != string::npos)
3071 strErr =
"line " + to_string(nLine) +
": Sediment input type must be P, C, or L";
3082 strErr =
"line " + to_string(nLine) +
": filename missing for sediment input";
3113 strErr =
"line " + to_string(nLine) +
": invalid floating point number for gravitational acceleration '" + strRH +
"' in " +
m_strDataPathName;
3117 m_dG = strtod(strRH.c_str(), NULL);
3120 strErr =
"line " + to_string(nLine) +
": gravitational acceleration must be > 0";
3132 strErr =
"line " + to_string(nLine) +
": spacing of coastline normals must be > 0";
3140 strErr =
"line " + to_string(nLine) +
": invalid floating point number for random factor for spacing of coastline normals '" + strRH +
"' in " +
m_strDataPathName;
3147 strErr =
"line " + to_string(nLine) +
": random factor for spacing of coastline normals must be >= 0";
3150 strErr =
"line " + to_string(nLine) +
": random factor for spacing of coastline normals must be < 1";
3158 strErr =
"line " + to_string(nLine) +
": invalid floating point number for length of coastline normals '" + strRH +
"' in " +
m_strDataPathName;
3165 strErr =
"line " + to_string(nLine) +
": length of coastline normals must be > 0";
3173 strErr =
"line " + to_string(nLine) +
": invalid floating point number for start depth for wave calcs '" + strRH +
"' in " +
m_strDataPathName;
3180 strErr =
"line " + to_string(nLine) +
": start depth for wave calcs must be > 0";
3191 if (strRH.find(
'y') != string::npos)
3197 strErr =
"line " + to_string(nLine) +
": cannot save profiile data if not simulating shore platform erosion";
3212 for (
unsigned int j = 0; j < VstrTmp.size(); j++)
3214 VstrTmp[j] =
strTrim(&VstrTmp[j]);
3218 strErr =
"line " + to_string(nLine) +
": invalid integer for profile to be saved '" + VstrTmp[j] +
"' in " +
m_strDataPathName;
3222 int const nTmp = stoi(VstrTmp[j]);
3226 strErr =
"line " + to_string(nLine) +
": Profile number for saving must be >= 0";
3242 for (
unsigned int j = 0; j < VstrTmp.size(); j++)
3244 VstrTmp[j] =
strTrim(&VstrTmp[j]);
3245 unsigned long const ulTmp = atol(VstrTmp[j].c_str());
3249 strErr =
"line " + to_string(nLine) +
": Timestep for profile saves must >= 1";
3265 if (strRH.find(
'y') != string::npos)
3276 if (strRH.find(
'y') != string::npos)
3286 strErr += to_string(nLine);
3287 strErr +=
": invalid integer for size of moving window for coastline curvature calculation '";
3300 strErr += to_string(nLine);
3301 strErr +=
": size of moving window for coastline curvature calculation (must be > 0 and odd)";
3311 strErr += to_string(nLine);
3312 strErr +=
": invalid integer for cliff edge smoothing algorithm '";
3323 strErr =
"line " + to_string(nLine) +
3324 ": cliff edge smoothing algorithm";
3332 strErr =
"line " + to_string(nLine) +
3333 ": invalid integer for cliff edge smoothing window '" +
3341 strErr =
"line " + to_string(nLine) +
3342 ": size of cliff edge smoothing window (must be > 0 and odd)";
3350 strErr =
"line " + to_string(nLine) +
3351 ": invalid integer for Savitzky-Golay polynomial for cliff edge smoothing '" +
3360 strErr =
"line " + to_string(nLine) +
": order of Savitzky-Golay polynomial for cliff edge smoothing (must be 2, 4 or 6)";
3368 strErr =
"line " + to_string(nLine) +
": invalid number for cliff slope limit '" + strRH +
"' in " +
m_strDataPathName;
3375 strErr =
"line " + to_string(nLine) +
3376 ": cliff slope limit must be > 0";
3382 if (! strErr.empty())
3385 cerr << endl <<
ERR << strErr <<
".\nPlease edit " <<
m_strDataPathName <<
" and change this line:" << endl;
3386 cerr <<
"'" << strRec <<
"'" << endl << endl;
3397 bool bNoRasterFiles =
true;
3400 bNoRasterFiles =
false;
3405 bNoRasterFiles =
false;
3411 cerr <<
ERR <<
"at least one raster GIS file is needed" << endl;
3431 if (! InStream.is_open())
3443 while (getline(InStream, strRec))
3451 if ((strRec.empty()) || (strRec[0] ==
QUOTE1) || (strRec[0] ==
QUOTE2))
3457 cerr <<
ERR <<
"invalid floating point number for tide data '" << strRec <<
"' on line " << nLine <<
" of " <<
m_strTideDataFile << endl;
3488 if (! InStream.is_open())
3497 int nExpected = 0, nRead = 0;
3501 InStream >> nExpected;
3504 vector<double> VdDepthOverDB;
3505 vector<double> VdErosionPotential;
3506 vector<double> VdErosionPotentialFirstDeriv;
3509 while (getline(InStream, strRec))
3517 if ((strRec.empty()) || (strRec[0] ==
QUOTE1) || (strRec[0] ==
QUOTE2))
3526 for (
unsigned int i = 0; i < strTmp.size(); i++)
3529 strTmp[i] =
strTrim(&strTmp[i]);
3534 cerr <<
ERR <<
"on line " + to_string(nLine) +
" invalid floating point number for Erosion Potential Shape data '" << strTmp[i] <<
"' in " <<
m_strSCAPEShapeFunctionFile << endl;
3540 VdDepthOverDB.push_back(strtod(strTmp[0].c_str(), NULL));
3541 VdErosionPotential.push_back(strtod(strTmp[1].c_str(), NULL));
3542 VdErosionPotentialFirstDeriv.push_back(strtod(strTmp[2].c_str(), NULL));
3554 if (nExpected != nRead)
3573 cout <<
ERR <<
"line " + to_string(nLine) +
" in " <<
m_strSCAPEShapeFunctionFile <<
": erosion potential function is unbounded for high values of depth over DB" << endl;
3592 if (!InStream.is_open())
3601 int nExpectedStations = 0;
3603 int nTimeStepsRead = 0;
3604 string strRec, strErr;
3607 while (getline(InStream, strRec))
3615 if ((!strRec.empty()) && (strRec[0] !=
QUOTE1) && (strRec[0] !=
QUOTE2))
3624 size_t nPos = strRec.find(
COLON);
3626 if (nPos == string::npos)
3630 <<
"'" << strRec <<
"'" << endl;
3634 if (nPos == strRec.size() - 1)
3638 <<
"'" << strRec <<
"'" << endl;
3643 string strRH = strRec.substr(nPos + 1);
3649 nPos = strRH.rfind(
QUOTE1);
3651 if (nPos != string::npos)
3654 nPos = strRH.rfind(
QUOTE2);
3656 if (nPos != string::npos)
3670 vector<string> VstrTmp;
3679 if (VstrTmp.size() < 2)
3681 strErr =
"line " + to_string(nLine) +
": must have both date and time for start of data in";
3686 if (!
bParseTime(&VstrTmp[0], nHour, nMin, nSec))
3688 strErr =
"line " + to_string(nLine) +
": could not understand start time for data";
3693 if (!
bParseDate(&VstrTmp[1], nDay, nMonth, nYear))
3695 strErr =
"line " + to_string(nLine) +
": could not understand start date for data";
3707 strErr =
"line " + to_string(nLine) +
": start time and date for wave time series data differs from simulation start time and date,";
3721 strErr =
"line " + to_string(nLine) +
": unknown units for timestep";
3726 nPos = strRH.rfind(
SPACE);
3728 if (nPos == string::npos)
3730 strErr =
"line " + to_string(nLine) +
": format of timestep line";
3743 strErr =
"line " + to_string(nLine) +
": invalid floating point number for timestep";
3747 dThisIter = strtod(strRH.c_str(), NULL) * dMult;
3750 strErr =
"line " + to_string(nLine) +
": timestep must be > 0";
3753 strErr =
"line " + to_string(nLine) +
": timestep must be the same as the simulation timestep";
3762 strErr =
"line " + to_string(nLine) +
": invalid integer for number of wave stations '" + strRH +
"' in " +
m_strDeepWaterWavesInputFile;
3766 nExpectedStations = stoi(strRH);
3769 if (nExpectedStations != nWaveStations)
3772 strErr =
"line " + to_string(nLine) +
": number of wave stations in " +
m_strDeepWaterWaveStationsShapefile +
" is " + to_string(nWaveStations) +
" but we have " + to_string(nExpectedStations) +
" stations";
3793 strErr =
"line " + to_string(nLine) +
": must have values for at least one timestep";
3809 for (
unsigned int i = 0; i < VstrTmp.size(); i++)
3812 VstrTmp[i] =
strTrim(&VstrTmp[i]);
3817 strErr =
"line " + to_string(nLine) +
": invalid floating point number for deep water wave value '" + VstrTmp[i] +
"' in " +
m_strDeepWaterWavesInputFile;
3825 for (
int i = 0; i < nExpectedStations; i++)
3844 if (!strErr.empty())
3848 <<
"'" << strRec <<
"'" << endl;
3891 for (
int j = 0; j < nExpectedStations; j++)
3906 cout <<
NOTE << strTmp;
3924 if (!InStream.is_open())
3934 string strRec, strErr;
3937 while (getline(InStream, strRec))
3945 if ((!strRec.empty()) && (strRec[0] !=
QUOTE1) && (strRec[0] !=
QUOTE2))
3954 unsigned int nTarget = 7;
3959 if (VstrTmp.size() < nTarget)
3961 strErr =
"line " + to_string(nLine) +
": too few data items on data line '" + to_string(nRead) +
"' in " +
m_strSedimentInputEventFile;
3968 strErr =
"line " + to_string(nLine) +
": invalid integer for Location ID of sediment input event '" + VstrTmp[0] +
"' in " +
m_strSedimentInputEventFile;
3972 int const nID = stoi(
strTrim(&VstrTmp[0]));
3979 strErr =
"line " + to_string(nLine) +
": invalid Location ID '" + to_string(nID) +
"' for sediment input event location event in " +
m_strSedimentInputEventFile;
3988 strErr =
"line " + to_string(nLine) +
": invalid time and/or date '" + VstrTmp[1] +
"' for sediment input event in " +
m_strSedimentInputEventFile;
3995 strErr =
"line " + to_string(nLine) +
": invalid floating point number '" + VstrTmp[2] +
"' for fine sediment volume for sediment input event in " +
m_strSedimentInputEventFile;
3999 double const dFineSedVol = stod(
strTrim(&VstrTmp[2]));
4001 if (dFineSedVol < 0)
4003 strErr =
"line " + to_string(nLine) +
": negative number '" + to_string(dFineSedVol) +
"' for fine sediment volume for sediment input event in " +
m_strSedimentInputEventFile;
4007 if (dFineSedVol > 0)
4013 strErr =
"line " + to_string(nLine) +
": invalid floating point number '" + VstrTmp[3] +
"' for sand-sized sediment volume for sediment input event in " +
m_strSedimentInputEventFile;
4017 double const dSandSedVol = stod(
strTrim(&VstrTmp[3]));
4019 if (dSandSedVol < 0)
4021 strErr =
"line " + to_string(nLine) +
": negative number '" + to_string(dSandSedVol) +
"' for sand-sized sediment volume for sediment input event in " +
m_strSedimentInputEventFile;
4025 if (dSandSedVol > 0)
4031 strErr =
"line " + to_string(nLine) +
": invalid floating point number '" + VstrTmp[4] +
"' for coarse sediment volume for sediment input event in " +
m_strSedimentInputEventFile;
4035 double const dCoarseSedVol = stod(
strTrim(&VstrTmp[4]));
4037 if (dCoarseSedVol < 0)
4039 strErr =
"line " + to_string(nLine) +
": negative number '" + to_string(dCoarseSedVol) +
"' for coarse sediment volume of sediment input event in " +
m_strSedimentInputEventFile;
4043 if (dCoarseSedVol > 0)
4056 strErr =
"line " + to_string(nLine) +
": invalid floating point number '" + VstrTmp[5] +
"' for coast-normal length of sediment input event in " +
m_strSedimentInputEventFile;
4060 dLen = stod(
strTrim(&VstrTmp[5]));
4064 strErr =
"line " + to_string(nLine) +
": coast-normal length of the sediment block '" + to_string(dLen) +
"' must be > 0 in " +
m_strSedimentInputEventFile;
4071 strErr =
"line " + to_string(nLine) +
": invalid floating point number '" + VstrTmp[6] +
"' for along-coast width of sediment input event in " +
m_strSedimentInputEventFile;
4075 dWidth = stod(
strTrim(&VstrTmp[6]));
4079 strErr =
"line " + to_string(nLine) +
": along-coast width (m) of the sediment block '" + to_string(dWidth) +
"' must be > 0 in " +
m_strSedimentInputEventFile;
4107 if (!strErr.empty())
4111 <<
"'" << strRec <<
"'" << endl;
4154 auto processFilePath = [&](
const string& filePath) ->
string {
4155 if (filePath.empty())
4168 if (basePath.empty() ||
4170 (filePath.length() > 1 && filePath[1] ==
COLON)) {
4175 return basePath + filePath;
4181 if (root.
HasChild(
"run_information"))
4184 if (runInfo.
HasChild(
"output_file_names"))
4186 if (runInfo.
HasChild(
"log_file_detail"))
4189 if (runInfo.
HasChild(
"csv_per_timestep_results"))
4198 if (sim.
HasChild(
"start_date_time"))
4218 if (gis.
HasChild(
"max_save_digits"))
4220 if (gis.
HasChild(
"save_digits_mode"))
4240 if (hydro.
HasChild(
"wave_propagation_model"))
4243 if (strModel ==
"COVE")
4245 else if (strModel ==
"CShore")
4248 if (hydro.
HasChild(
"seawater_density"))
4251 if (hydro.
HasChild(
"initial_water_level"))
4257 if (hydro.
HasChild(
"wave_orientation"))
4262 if (hydro.
HasChild(
"tide_data_file"))
4264 if (hydro.
HasChild(
"final_water_level"))
4267 if (hydro.
HasChild(
"wave_height_time_series"))
4270 if (hydro.
HasChild(
"breaking_wave_ratio"))
4276 if (root.
HasChild(
"grid_and_coastline"))
4279 if (grid.
HasChild(
"coastline_smoothing"))
4282 if (strSmoothing ==
"none")
4284 else if (strSmoothing ==
"running_mean")
4286 else if (strSmoothing ==
"savitzky_golay")
4292 if (grid.
HasChild(
"coastline_smoothing_window"))
4295 if (grid.
HasChild(
"polynomial_order"))
4298 if (grid.
HasChild(
"omit_grid_edges"))
4300 if (grid.
HasChild(
"profile_smoothing_window"))
4303 if (grid.
HasChild(
"max_local_slope"))
4306 if (grid.
HasChild(
"max_beach_elevation"))
4312 if (root.
HasChild(
"layers_and_files"))
4317 if (layers.
HasChild(
"basement_dem_file"))
4320 if (layers.
HasChild(
"suspended_sediment_file"))
4323 if (layers.
HasChild(
"landform_file"))
4325 if (layers.
HasChild(
"intervention_class_file"))
4328 if (layers.
HasChild(
"intervention_height_file"))
4336 vector<string> unconsFine, unconsSand, unconsCoarse;
4337 vector<string> consFine, consSand, consCoarse;
4339 if (layer0.
HasChild(
"unconsolidated_fine"))
4340 unconsFine.push_back(
4342 if (layer0.
HasChild(
"unconsolidated_sand"))
4343 unconsSand.push_back(
4345 if (layer0.
HasChild(
"unconsolidated_coarse"))
4346 unconsCoarse.push_back(
4348 if (layer0.
HasChild(
"consolidated_fine"))
4349 consFine.push_back(processFilePath(layer0.
GetChild(
"consolidated_fine").
GetValue()));
4350 if (layer0.
HasChild(
"consolidated_sand"))
4351 consSand.push_back(processFilePath(layer0.
GetChild(
"consolidated_sand").
GetValue()));
4352 if (layer0.
HasChild(
"consolidated_coarse"))
4353 consCoarse.push_back(
4366 if (root.
HasChild(
"sediment_and_erosion"))
4369 if (sed.
HasChild(
"coast_platform_erosion"))
4372 if (sed.
HasChild(
"platform_erosion_resistance"))
4375 if (sed.
HasChild(
"beach_sediment_transport"))
4378 if (sed.
HasChild(
"beach_transport_at_edges"))
4381 if (sed.
HasChild(
"beach_erosion_equation"))
4386 if (sed.
HasChild(
"sediment_density"))
4389 if (sed.
HasChild(
"beach_sediment_porosity"))
4394 if (sed.
HasChild(
"kamphuis_parameter"))
4423 if (root.
HasChild(
"cliff_parameters"))
4426 if (cliff.
HasChild(
"cliff_collapse"))
4429 if (cliff.
HasChild(
"cliff_erosion_resistance"))
4432 if (cliff.
HasChild(
"notch_overhang"))
4437 if (cliff.
HasChild(
"deposition_scale_parameter_a"))
4442 if (cliff.
HasChild(
"min_talus_length"))
4445 if (cliff.
HasChild(
"min_talus_height"))
4451 if (root.
HasChild(
"flood_parameters"))
4456 if (flood.
HasChild(
"flood_coastline"))
4458 if (flood.
HasChild(
"runup_equation"))
4460 if (flood.
HasChild(
"characteristic_locations"))
4463 if (flood.
HasChild(
"flood_input_location"))
4469 if (root.
HasChild(
"sediment_input_parameters"))
4472 if (sedInput.
HasChild(
"sediment_input"))
4480 if (sedInput.
HasChild(
"details_file"))
4486 if (root.
HasChild(
"physics_and_geometry"))
4489 if (physics.
HasChild(
"gravitational_acceleration"))
4492 if (physics.
HasChild(
"normal_spacing"))
4495 if (physics.
HasChild(
"random_factor"))
4498 if (physics.
HasChild(
"normal_length"))
4501 if (physics.
HasChild(
"start_depth_ratio"))
4507 if (root.
HasChild(
"profile_and_output"))
4510 if (profile.
HasChild(
"save_profile_data"))
4513 if (profile.
HasChild(
"save_parallel_profiles"))
4516 if (profile.
HasChild(
"output_erosion_potential"))
4519 if (profile.
HasChild(
"curvature_window"))
4524 if (profile.
HasChild(
"profile_numbers"))
4529 vector<int> vecNums;
4530 vector<CYamlNode> seq = profileNums.
GetSequence();
4531 for (
auto const &node : seq)
4532 vecNums.push_back(node.GetIntValue());
4536 if (profile.
HasChild(
"profile_timesteps"))
4541 vector<int> vecTimes;
4542 vector<CYamlNode> seq = profileTimes.
GetSequence();
4543 for (
auto const &node : seq)
4544 vecTimes.push_back(node.GetIntValue());
4551 if (root.
HasChild(
"cliff_edge_processing"))
4554 if (cliffEdge.
HasChild(
"cliff_edge_smoothing"))
4556 string strSmoothing =
4558 if (strSmoothing ==
"none")
4560 else if (strSmoothing ==
"running_mean")
4562 else if (strSmoothing ==
"savitzky_golay")
4568 if (cliffEdge.
HasChild(
"cliff_edge_smoothing_window"))
4571 if (cliffEdge.
HasChild(
"cliff_edge_polynomial_order"))
4574 if (cliffEdge.
HasChild(
"cliff_slope_limit"))
4579 catch (std::exception
const &e)
4581 cerr <<
ERR <<
"Error processing YAML configuration: " << e.what() << endl;
4615 if (! strDuration.empty())
4617 string strDurationLower =
strToLower(&strDuration);
4622 string strNumeric = strDurationLower;
4624 if (strNumeric.find(
"hour") != string::npos)
4625 strNumeric = strNumeric.substr(0, strNumeric.find(
"hour"));
4626 else if (strNumeric.find(
"day") != string::npos)
4627 strNumeric = strNumeric.substr(0, strNumeric.find(
"day"));
4628 else if (strNumeric.find(
"month") != string::npos)
4629 strNumeric = strNumeric.substr(0, strNumeric.find(
"month"));
4630 else if (strNumeric.find(
"year") != string::npos)
4631 strNumeric = strNumeric.substr(0, strNumeric.find(
"year"));
4635 m_dSimDuration = strtod(strNumeric.c_str(), NULL) * dDurationMult;
4641 if (! strTimestep.empty())
4643 string strTimestepLower =
strToLower(&strTimestep);
4648 string strNumeric = strTimestepLower;
4650 if (strNumeric.find(
"hour") != string::npos)
4651 strNumeric = strNumeric.substr(0, strNumeric.find(
"hour"));
4652 else if (strNumeric.find(
"day") != string::npos)
4653 strNumeric = strNumeric.substr(0, strNumeric.find(
"day"));
4654 else if (strNumeric.find(
"month") != string::npos)
4655 strNumeric = strNumeric.substr(0, strNumeric.find(
"month"));
4656 else if (strNumeric.find(
"year") != string::npos)
4657 strNumeric = strNumeric.substr(0, strNumeric.find(
"year"));
4661 m_dTimeStep = strtod(strNumeric.c_str(), NULL) * dTimestepMult;
Unified configuration class for CoastalME simulation parameters.
void SetCoastlineSmoothingWindow(int n)
string GetRunName() const
void SetSedimentInput(bool b)
void SetBeachSedimentPorosity(double d)
void SetBermHeight(double d)
void SetMinTalusHeight(double d)
void SetCoarseErosivity(double d)
void SetCurvatureWindow(int n)
void SetMaxBeachElevation(double d)
void SetNotchBase(double d)
void SetInterventionClassFile(string const &str)
string GetBasementDEMFile() const
double GetBreakingWaveRatio() const
void SetSeawaterDensity(double d)
void SetSaveDigitsMode(string const &str)
void SetInitialWaterLevel(double d)
void SetCliffDepositionA(double d)
void SetFloodInput(bool b)
void SetNormalLength(double d)
vector< string > GetConsCoarseFiles() const
void SetTideDataFile(string const &str)
void SetBeachErosionEquation(int n)
void SetDeepWaterWaveHeight(double d)
void SetFineMedianSize(double d)
vector< string > GetUnconsFineFiles() const
void SetFloodCoastline(string const &str)
void SetRandomFactor(double d)
void SetConsSandFiles(vector< string > const &vec)
string GetTimestep() const
void SetPolynomialOrder(int n)
void SetCliffErosionResistance(double d)
void SetCliffEdgePolynomialOrder(int n)
void SetDuration(string const &str)
void SetMaxSaveDigits(int n)
void SetCoarseMedianSize(double d)
void SetCliffSlopeLimit(double d)
void SetRunName(string const &str)
void SetProfileTimesteps(vector< int > const &vec)
void SetFloodInputLocation(string const &str)
void SetGravitationalAcceleration(double d)
void SetScaleValues(bool b)
void SetBeachTransportAtEdges(int n)
void SetProfileNumbers(vector< int > const &vec)
void SetKamphuis(double d)
string GetDuration() const
void SetSedimentInputLocation(string const &str)
double GetDeepWaterWaveHeight() const
void SetWaveHeightTimeSeries(string const &str)
void SetDeepWaterWaveOrientation(double d)
double GetDeepWaterWaveOrientation() const
void SetNormalSpacing(double d)
void SetSaveProfileData(bool b)
void SetConsCoarseFiles(vector< string > const &vec)
void SetSedimentDensity(double d)
void SetSandErosivity(double d)
void SetFineErosivity(double d)
string GetVectorFormat() const
void SetCliffEdgeSmoothing(int n)
void SetCliffEdgeSmoothingWindow(int n)
void SetProfileSmoothingWindow(int n)
void SetUnconsSandFiles(vector< string > const &vec)
void SetSedimentInputDetails(string const &str)
void SetOmitGridEdges(string const &str)
void SetStartDateTime(string const &str)
void SetSuspendedSedFile(string const &str)
vector< string > GetUnconsSandFiles() const
void SetPlatformErosionResistance(double d)
void SetBasementDEMFile(string const &str)
void SetUnconsCoarseFiles(vector< string > const &vec)
void SetWavePropagationModel(int n)
void SetBeachSedimentTransport(bool b)
void SetCSVPerTimestepResults(bool b)
void SetSandMedianSize(double d)
void SetFinalWaterLevel(double d)
vector< string > GetConsSandFiles() const
void SetRandomSeed(int n)
void SetRasterFormat(string const &str)
void SetWavePeriod(double d)
void SetFloodLocations(string const &str)
vector< string > GetConsFineFiles() const
void SetRunupEquation(string const &str)
void SetNotchOverhang(double d)
void SetInterventionHeightFile(string const &str)
void SetUnconsFineFiles(vector< string > const &vec)
string GetTideDataFile() const
void SetOutputErosionPotential(bool b)
void SetCliffCollapse(bool b)
void SetBreakingWaveRatio(double d)
double GetWavePeriod() const
void SetWorldFile(bool b)
void SetConsFineFiles(vector< string > const &vec)
vector< string > GetUnconsCoarseFiles() const
void SetTalusWidth(double d)
int GetLogFileDetail() const
void SetCoastlineSmoothing(int n)
void SetMinTalusLength(double d)
void SetTransportKLS(double d)
void SetSaveTimes(vector< string > const &vec)
void SetLandformFile(string const &str)
void SetStartDepthRatio(double d)
void SetRasterFiles(vector< string > const &vec)
void SetSaveParallelProfiles(bool b)
void SetMaxLocalSlope(double d)
string GetLandformFile() const
string GetRasterFormat() const
void SetLogFileDetail(int n)
void SetTimestep(string const &str)
void SetCoastPlatformErosion(bool b)
void SetSedimentInputType(string const &str)
double m_dCliffDepositionPlanviewWidth
Planview width of cliff collapse talus (m)
bool m_bCliffCollapseSave
Save cliff collapse raster GIS files?
int m_nLogFileDetail
The level of detail in the log file output. Can be LOG_FILE_LOW_DETAIL, LOG_FILE_MIDDLE_DETAIL,...
bool m_bAvgSeaDepthSave
Save average sea depth raster GIS files?
vector< string > m_VstrInitialSandConsSedimentFile
The name of the initial sand-sized consolidated sediment GIS file.
double m_dAllCellsDeepWaterWaveHeight
Deep water wave height (m) for all sea cells.
bool m_bDeepWaterWaveAngleSave
Save deep water wave angle raster GIS files?
bool bReadYamlFile(void)
Reads YAML configuration file.
int m_nGISMaxSaveDigits
The maximum number of digits in GIS filenames. These can be sequential, or the iteration number.
bool m_bTopSurfSave
Save fop surface (sediment and sea) raster DEMs?
string m_strInitialSuspSedimentFile
Name of initial suspended sediment file.
vector< double > m_VdTSDeepWaterWaveStationPeriod
Time series of wave period at deep water wave station.
bool m_bSedimentTopSurfSave
Save sediment top surface raster DEMs?
bool m_bFineUnconsSedSave
Save fine unconsolidated sediment raster GIS files?
string m_strSedimentInputEventFile
The name of the sediment input events time series file.
bool m_bHaveConsolidatedSediment
Does this simulation consider consolidated sediment, or is it an unconsolidated sediment only simulat...
double m_dNotchDepthAtCollapse
Notch overhang (i.e. length of horizontal incision) to initiate collapse (m)
bool m_bFloodSWLSetupSurgeLine
Are we saving the flood still water level setup surge line? TODO 007.
string m_strCMEIni
Folder for the CME .ini file.
bool m_bSedimentInputAtPoint
Do we have sediment inputat a point?
double m_dG
Gravitational acceleration (m**2/sec)
vector< string > m_VstrInitialCoarseUnconsSedimentFile
The name of the initial coarse-sized unconsolidated sediment GIS file.
int m_nBeachErosionDepositionEquation
Which beach erosion-deposition equation is used. Possible values are UNCONS_SEDIMENT_EQUATION_CERC an...
bool m_bBeachDepositionTSSave
Save the beach (unconsolidated sediment) deposition time series file?
static string strRemoveSubstr(string *, string const *)
Returns a string with a substring removed, and with whitespace trimmed.
vector< string > m_VstrGDALICCDataType
GDAL data type for the initial consolidated coarse sediment GIS data.
static bool bParseTime(string const *, int &, int &, int &)
Parses a time string into hours, minutes, and seconds, and checks each of them.
double m_dWaveDataWrapHours
Number of hours after which deep water wave data wraps.
vector< string > m_VstrGDALICFDataType
GDAL data type for the initial consolidated fine sediment GIS data.
double m_dMaxUserInputWavePeriod
Used to constrain depth of closure.
bool m_bFloodSetupSurgeRunupTSSave
Save the flood setup surge runup time series file? TODO 007 Does this work correctly?
vector< string > m_VstrGDALICCDriverCode
GDAL driver code for the initial consolidated coarse sediment GIS data.
double m_dCoastNormalLength
Length of the coastline-normal profiles, in m.
vector< string > m_VstrGDALIUFDataType
GDAL data type for the initial unconsolidated fine sediment GIS data.
bool m_bSingleDeepWaterWaveValues
Do we have just a point source for (i.e. only a single measurement of) deep water wave values.
string m_strRunName
The name of this simulation.
bool m_bAvgWaveAngleAndHeightSave
Save average wave angle and average wave height raster GIS files?
bool bConfigureFromYamlFile(CConfiguration &config)
Configures simulation from YAML file.
string m_strSCAPEShapeFunctionFile
Name of SCAPE shape function file.
bool m_bAvgWaveAngleSave
Save average wave angle raster GIS files?
int nReadWaveStationInputFile(int const)
Reads the deep water wave station input data. Each point in m_strDeepWaterWavesInputFile is a triad o...
bool m_bCliffEdgeSave
Save cliff edge vector GIS files?
bool m_bInvalidNormalsSave
Save invalid coastline-normal vector GIS files?
bool m_bShadowBoundarySave
Save wave shadow boundary vector GIS files?
int nDoSimulationTimeMultiplier(string const *)
Given a string containing time units, this sets up the appropriate multiplier and display units for t...
int nReadSedimentInputEventFile(void)
Reads the sediment input event file.
vector< int > m_VnSedimentInputLocationID
ID for sediment input location, this corresponds with the ID in the sediment input time series file.
bool m_bActualBeachErosionSave
Save actual (supply-limited) beach (unconsolidated sediment) erosion raster GIS files?
vector< double > m_VdErosionPotential
For erosion potential lookup.
vector< double > m_VdTideData
Tide data: one record per timestep, is the change (m) from still water level for that timestep.
vector< string > m_VstrGDALIUFProjection
GDAL projection for the initial unconsolidated fine sediment GIS data.
bool m_bStillWaterLevelTSSave
Save the still water level time series file?
bool m_bRunUpSave
Are we saving runup? TODO 007.
bool m_bYamlInputFormat
Use YAML format for input datafile instead of .dat format?
bool m_bCliffCollapseDepositionSave
Save cliff collapse deposition raster GIS files?
string m_strSedimentInputEventShapefile
The name of the sediment input events shape file.
bool m_bTotalActualPlatformErosionSave
Save total actual (supply-limited) shore platform erosion raster GIS files?
static string strTrimLeft(string const *)
Trims whitespace from the left side of a string, does not change the original string.
bool m_bPolygonUnconsSedUpOrDownDriftSave
Save polygon unconsolidated sediment up- or down-drift raster GIS files?
double m_dCoarseErodibility
The relative erodibility (0- 1) of coarse unconsolidated beach sediment.
double m_dCliffTalusMinDepositionLength
Planview length of cliff deposition talus (m)
string m_strVectorGISOutFormat
Base name for CME vector GIS output files.
vector< string > m_VstrGDALICFDriverCode
GDAL driver code for the initial consolidated fine sediment GIS data.
vector< string > m_VstrInitialFineConsSedimentFile
The name of the initial fine-sized consolidated sediment GIS file.
int m_nUnconsSedimentHandlingAtGridEdges
How sediment which moves off an edge of the grid is handled. Possible values are GRID_EDGE_CLOSED,...
double m_dSandErodibility
The relative erodibility (0- 1) of sand unconsolidated beach sediment.
bool m_bBasementElevSave
Save basement raster DEMs?
int m_nSimStartHour
Start time of the simulation (hours)
bool m_bCoarseUnconsSedSave
Save coarse unconsolidated sediment raster GIS files?
bool m_bSuspSedTSSave
Save the suspended sediment time series file?
string m_strDeepWaterWaveStationsShapefile
The name of the deep water wave stations shape file.
vector< double > m_VdDepthOverDB
For erosion potential lookup.
bool m_bCliffCollapseNetTSSave
Save the cliff collapse net change time series file?
bool m_bPotentialPlatformErosionMaskSave
Save potential platform erosion mask raster GIS files?
vector< string > m_VstrGDALICSDriverCode
GDAL driver code for the initial consolidated sand sediment GIS data.
double m_dWaveDepthRatioForWaveCalcs
Start depth for wave calculations.
bool m_bWaveHeightSave
Save wave height raster GIS files?
bool m_bFloodLocation
Are we saving the flood location? TODO 007.
vector< string > m_VstrGDALIUCProjection
GDAL projection for the initial unconsolidated coarse sediment GIS data.
bool m_bLandformSave
Save coast landform raster GIS files?
static string strTrim(string const *)
Trims whitespace from both sides of a string, does not change the original string.
string m_strRasterGISOutFormat
Base name for CME raster GIS output files.
bool m_bTotalBeachDepositionSave
Save total beach (unconsolidated sediment) deposition raster GIS files?
double m_dBeachSedimentPorosity
The porosity of unconsolidated beach sediment (0 - 1)
int m_nSimStartSec
Start time of the simulation (seconds)
int m_nSimStartDay
Start date of the simulation (day)
bool m_bSandUnconsSedSave
Save sand unconsolidated sediment raster GIS files?
bool m_bActualPlatformErosionTSSave
Save the actual (supply-limited) shore platform erosion time series file?
unsigned long ulConvertToTimestep(string const *) const
For sediment input events, parses a string that may be relative (a number of hours or days after the ...
int m_nCoastNormalSpacing
Average spacing between coastline normals, measured in cells.
bool m_bTotCliffCollapseSave
Save total cliff collapse raster GIS files?
int nReadShapeFunctionFile(void)
Reads the shape of the erosion potential distribution (see shape function in Walkden & Hall,...
bool m_bCliffSave
Save cliff region raster grids?
bool m_bDoShorePlatformErosion
Simulate shore platform erosion?
bool m_bSliceSave
Save slices?
bool m_bRasterPolygonSave
Save raster polygon raster GIS files?
double m_dInitialMeanSWL
The start-of-simulation still water level (m)
bool m_bBeachDepositionSave
Save beach (unconsolidated sediment) deposition raster GIS files?
vector< string > m_VstrGDALICSDriverDesc
GDAL driver description for the initial consolidated sand sediment GIS data.
bool m_bSaveRegular
Save GIS files at regular intervals?
int m_nLayers
The number of sediment layers.
int m_nCoastSmoothingWindowSize
The size of the window used for coast smoothing. Must be an odd number.
bool m_bSedimentInputAlongLine
Do we have sediment input along a line?
bool m_bSedimentInput
Do we have sediment input events?
bool m_bNormalsSave
Save coastline-normal vector GIS files?
bool m_bAvgWaveHeightSave
Save wave height raster GIS files?
static string strToLower(string const *)
Returns the lower case version of an string, leaving the original unchanged.
vector< double > m_VdThisIterDeepWaterWaveStationHeight
This-iteration wave height at deep water wave station.
vector< string > m_VstrGDALIUFDriverCode
GDAL driver code for the initial unconsolidated fine sediment GIS data.
bool m_bHaveSandSediment
Does this simulation consider sand-sized sediment?
bool bReadRunDataFile(void)
Reads the run details input file and does some initialization.
int m_nUSave
If user-defined GIS save intervals, the number of these.
double m_dDeanProfileStartAboveSWL
Berm height i.e. height above SWL of start of depositional Dean profile.
int m_nSavGolCoastPoly
The order of the coastline profile smoothing polynomial if Savitzky-Golay smoothing is used (usually ...
bool m_bSeaDepthSave
Save sea depth raster GIS files?
bool m_bWaveAngleAndHeightSave
Save wave angle and wave height raster GIS files?
double m_dNotchBaseBelowSWL
Notch base below SWL (m)
string m_strInitialBasementDEMFile
Name of initial basement DEM file.
int m_nRunUpEquation
The run-up equation used TODO 007.
bool m_bWorldFile
Write a GIS World file?
static string strTrimRight(string const *)
Trims whitespace from the right side of a string, does not change the original string.
string m_strLogFile
Name of output log file.
double m_dDepthOverDBMax
Maximum value of deoth over DB, is used in erosion potential look-up function.
double m_dFineErodibility
The relative erodibility (0- 1) of fine unconsolidated beach sediment.
double m_dBreakingWaveHeightDepthRatio
Breaking wave height-to-depth ratio.
double m_dCoastNormalSpacing
Average spacing of the coastline-normal profiles, in m.
bool m_bHaveWaveStationData
Do we have wave station data?
double m_dSeaWaterDensity
Density of sea water in kg/m**3.
int m_nSavGolCliffEdgePoly
The order of the cliff edge smoothing polynomial if Savitzky-Golay smoothing is used (usually 2 or 4,...
double m_dR
Coast platform resistance to erosion R, see Walkden & Hall, 2011.
bool m_bRasterNormalProfileSave
Save rasterized coastline-normal profiles GIS files?
bool m_bActiveZoneSave
Save active zone raster GIS files?
vector< string > m_VstrInitialSandUnconsSedimentFile
The name of the initial sand-sized unconsolidated sediment GIS file.
bool m_bOmitSearchWestEdge
Omit the west edge of the grid from coast-end searches?
bool m_bSedimentInputAtCoast
Do we have sediment input at the coast?
int m_nCliffEdgeSmooth
Which method to use for cliff edge smoothing.
double m_dCliffErosionResistance
Resistance of cliff to notch erosion.
vector< string > m_VstrGDALIUSProjection
GDAL projection for the initial unconsolidated sand sediment GIS data.
vector< double > m_VdThisIterDeepWaterWaveStationPeriod
This-iteration wave period at deep water wave station.
double m_dD50Sand
The D50 for sand sediment.
string m_strCMEDir
The CME folder.
vector< int > m_VnProfileToSave
The numbers of the profiles which are to be saved.
bool m_bDeepWaterWaveHeightSave
Save deep water wave height raster GIS files?
bool m_bMeanWaveEnergySave
Save mean wave energy raster GIS files?
double m_dKLS
Transport parameter KLS in the CERC equation.
int m_nWavePropagationModel
The wave propagation model used. Possible values are WAVE_MODEL_CSHORE and WAVE_MODEL_COVE.
double m_dAllCellsDeepWaterWaveAngle
Deep water wave angle for all sea cells.
vector< string > m_VstrGDALICFProjection
GDAL projection for the initial consolidated fine sediment GIS data.
vector< string > m_VstrGDALICCProjection
GDAL projection for the initial consolidated coarse sediment GIS data.
static double dGetTimeMultiplier(string const *)
Given a string containing time units, this returns the appropriate multiplier.
bool m_bCoastCurvatureSave
Save coastline-curvature vector GIS files?
int m_nCliffEdgeSmoothWindow
The size of the window used for cliff edge smoothing. Must be an odd number.
int m_nDeepWaterWaveDataNumTimeSteps
The duration of data for deep water waves, expressed as a number of timesteps.
double m_dFinalMeanSWL
The end-of-simulation still water (m), is same as m_dInitialMeanSWL unless SWL changes.
bool m_bRasterWaveFloodLineSave
Are we saving the raster wave flood line? TODO 007.
bool m_bBreakingWaveHeightSave
Save breaking wave height raster GIS files?
string m_strMailAddress
An email addresx to which to send end-of-simulation messages.
double m_dRegularSaveTime
The time of the next save, in hours from the start of the simulation, if we are saving regularly.
bool m_bPolygonNodeSave
Save polygon node vector GIS files?
bool m_bOmitSearchNorthEdge
Omit the north edge of the grid from coast-end searches?
bool m_bFloodSetupSurgeTSSave
Save the flood setup surge time series file? TODO 007 Does this work correctly?
bool m_bTotalPotentialPlatformErosionSave
Save total potential shore platform erosion raster GIS files?
bool m_bSetupSurgeFloodMaskSave
Are we saving the setup surge flood mask? TODO 007.
bool m_bWaveEnergySinceCollapseSave
Save wave energy since cliff collapse raster GIS files?
double m_dD50Coarse
The D50 for coarse sediment.
vector< unsigned long > m_VulProfileTimestep
Timesteps at which to save profiles.
bool m_bPotentialBeachErosionSave
Save potential beach (unconsolidated sediment) erosion raster GIS files?
static bool bParseDate(string const *, int &, int &, int &)
Parses a date string into days, months, and years, and checks each of them.
string m_strFloodLocationShapefile
The name of the flood loction events shape file.
bool m_bGISSaveDigitsSequential
Are the GIS save digits (which are part of each GIS file name) sequential, or are they the iteration ...
int m_nSimStartMonth
Start date of the simulation (month)
bool m_bSuspSedSave
Save suspended sediment raster GIS files?
double m_dMinCliffTalusHeightFrac
Minimum height of the landward end of cliff collapse talus, as a fraction of cliff elevation.
vector< string > m_VstrGDALIUSDriverDesc
bool m_bPolygonBoundarySave
Save polygon boundary vector GIS files?
bool bDetectFileFormat(string const &strFileName, bool &bIsYaml)
Detects whether the input file is in YAML or .dat format.
bool m_bStormSurgeSave
Are we saving the storm surge? TODO 007.
vector< string > m_VstrInitialFineUnconsSedimentFile
The name of the initial fine-sized unconsolidated sediment GIS file.
bool m_bActualPlatformErosionSave
Save actual (supply-limited) shore platform erosion raster GIS files?
vector< CSedInputEvent * > m_pVSedInputEvent
Sediment input events.
int m_nSimStartMin
Start time of the simulation (minutes)
bool bReadIniFile(void)
The bReadIniFile member function reads the initialization file.
bool m_bHaveFineSediment
Does this simulation consider fine-sized sediment?
double m_dCliffDepositionA
Scale parameter A for cliff deposition (m^(1/3)), may be zero for auto-calculation.
string m_strDataPathName
Folder in which the CME data file is found.
string m_strOutPath
Path for all output files.
bool m_bBeachErosionTSSave
Save the beach (unconsolidated sediment) erosion time series file?
vector< string > m_VstrGDALICFDriverDesc
string m_strTideDataFile
Name of tide data file.
vector< string > m_VstrGDALIUFDriverDesc
bool m_bTotalPotentialBeachErosionSave
Save total potential beach (unconsolidated sediment) erosion raster GIS files?
vector< string > m_VstrGDALIUSDataType
GDAL data type for the initial unconsolidated sand sediment GIS data.
bool bApplyConfiguration(CConfiguration const &config)
Applies configuration values to simulation member variables.
string m_strInterventionClassFile
Name of intervention class file.
bool m_bFloodSWLSetupLine
Are we saving the flood still water level setup line? TODO 007.
bool m_bSeaMaskSave
Save sea mask raster GIS files?
bool m_bInterventionClassSave
Save intervention class raster GIS files?
int m_nSimStartYear
Start date of the simulation (year)
bool m_bTotalActualBeachErosionSave
Save total actual (supply-limited) beach (unconsolidated sediment) erosion raster GIS files?
bool m_bRasterCoastlineSave
Save rasterized coastline GIS files?
string m_strDeepWaterWavesInputFile
The name of the deep water wave stations time series file.
static string pstrChangeToBackslash(string const *)
Changes all forward slashes in the input string to backslashes, leaving the original unchanged.
bool m_bInterventionHeightSave
Save intervention height raster GIS files?
int m_nCoastCurvatureMovingWindowSize
WHAT IS THOS FOR?
bool m_bRiverineFlooding
Are we doing flooding? TODO 007.
bool m_bSandConsSedSave
Save sand consolidated sediment raster GIS files?
bool m_bSedimentInputEventSave
Save sediment inut data?
bool m_bHaveCoarseSediment
Does this simulation consider coarse-sized sediment?
double m_dRegularSaveInterval
The interval between regular saves, in hours.
bool m_bPolygonUnconsSedGainOrLossSave
Save polygon unconsolidated sediment gain or loss raster GIS files?
double m_dTimeStep
The length of an iteration (a time step) in hours.
bool m_bCliffCollapseDepositionTSSave
Save the cliff collapse deposition time series file?
vector< string > m_VstrGDALIUCDriverCode
GDAL driver code for the initial unconsolidated coarse sediment GIS data.
bool m_bDeepWaterWaveAngleAndHeightSave
Save deep water wave angle and wave height raster GIS files?
double m_dCoastNormalRandSpacingFactor
Random factor for spacing of along-coast normals.
double m_dMaxUserInputWaveHeight
Maximum deep water wave height.
vector< double > m_VdSliceElev
Elevations for raster slice output.
bool m_bBeachProtectionSave
Save beach protection raster GIS files>
bool m_bDoBeachSedimentTransport
Simulate unconsolidated sediment (beach) transport?
bool m_bFineConsSedSave
Save fine consolidated sediment raster GIS files?
bool m_bShadowDowndriftBoundarySave
Save wave shadow downdrift boundary vector GIS files?
int m_nCoastSmooth
Which method to use for coast smoothing.
bool m_bDeepWaterWavePeriodSave
Save deep water wave period raster GIS files?
string m_strInitialLandformFile
Name of initial landform file.
string m_strInterventionHeightFile
Name of intervention height file.
bool m_bBeachSedimentChangeNetTSSave
Save the beach (unconsolidated sediment) net change time series file?
vector< string > m_VstrGDALICSDataType
GDAL data type for the initial consolidated sand sediment GIS data.
int nReadTideDataFile(void)
Reads the tide time series data.
bool m_bCoarseConsSedSave
Save coarse consolidated sediment raster GIS files?
bool m_bSeaAreaTSSave
Save the sea area time series file?
bool m_bScaleRasterOutput
Scale raster output?
vector< string > m_VstrGDALICSProjection
GDAL dprojection for the initial consolidated sand sediment GIS data.
double m_dD50Fine
The D50 for fine sediment.
unsigned long m_ulRandSeed[NUMBER_OF_RNGS]
A seed for each of the random number generators.
bool m_bOmitSearchSouthEdge
Omit the south edge of the grid from coast-end searches?
bool m_bBeachMaskSave
Save beach mask raster GIS files?
bool m_bSlopeSave
Save slope raster grids?
bool m_bAvgSuspSedSave
Save average suspended sediment raster GIS files?
double m_dBeachSedimentDensity
The density of unconsolidated beach sediment (kg/m**3)
vector< string > m_VstrInitialCoarseConsSedimentFile
The name of the initial coarse-sized consolidated sediment GIS file.
double m_dSimDuration
Duration of simulation, in hours.
bool m_bCSVPerTimestepResults
Output per-timestep results in CSV format instead of fixed-width?
double m_dCliffSlopeLimit
Slope limit for cliff toe detection.
vector< double > m_VdThisIterDeepWaterWaveStationAngle
This-iteration wave orientation at deep water wave station.
bool m_bOutputProfileData
Output profile data?
vector< string > m_VstrGDALIUCDriverDesc
double m_dMaxBeachElevAboveSWL
Maximum elevation of beach above SWL (m)
bool m_bTotCliffCollapseDepositionSave
Save total cliff collapse deposition raster GIS files?
double m_dAllCellsDeepWaterWavePeriod
Deep water wave period for all sea cells.
bool bCreateErosionPotentialLookUp(vector< double > *, vector< double > *, vector< double > *)
Creates a look-up table for erosion potential, given depth over DB.
double m_dUSaveTime[SAVEMAX]
Save time, in hours from the start of the simukation, if we are not saving regularly.
double m_dProfileMaxSlope
Maximum slope on coastline-normal profiles.
int m_nProfileSmoothWindow
The size of the window used for running-mean coast-normal profile smoothing (must be odd)
bool m_bDoCliffCollapse
Simulate cliff collapse?
vector< string > m_VstrGDALICCDriverDesc
GDAL driver decription for the initial consolidated coarse sediment GIS data.
string m_strOutFile
Name of main output file.
bool m_bSetupSurgeRunupFloodMaskSave
Are we saving the setup surge runup flood mask? TODO 007.
bool m_bWaveSetupSave
Are we saving the wave setup? TODO 007.
vector< double > m_VdTSDeepWaterWaveStationHeight
Time series of wave heights at deep water wave station.
bool m_bShadowZoneCodesSave
Save wave shadow zones raster GIS files?
vector< string > m_VstrGDALIUCDataType
GDAL data type for the initial unconsolidated coarse sediment GIS data.
bool m_bCliffCollapseErosionTSSave
Save the cliff collapse erosion time series file?
bool m_bPotentialPlatformErosionSave
Save potential shore platform erosion raster GIS files?
double m_dDurationUnitsMult
Multiplier for duration units, to convert to hours.
bool m_bFloodSWLSetupSurgeRunupLine
Are we saving the flood still water level setup surge runup line? TODO 007.
bool m_bOutputParallelProfileData
Output parallel profile data?
double m_dKamphuis
Transport parameter for the Kamphuis equation.
vector< double > m_VdTSDeepWaterWaveStationAngle
Time series of wave orientation at deep water wave station.
static vector< string > * VstrSplit(string const *, char const, vector< string > *)
From http://stackoverflow.com/questions/236129/split-a-string-in-c They implement (approximately) Pyt...
bool m_bOutputErosionPotentialData
Output erosion potential data?
bool m_bCliffNotchSave
Save cliff notch incision depth vector GIS files?
bool m_bVectorWaveFloodLineSave
Are we saving the vector wave flood line? TODO 007.
vector< string > m_VstrGDALIUSDriverCode
GDAL driver code for the initial unconsolidated sand sediment GIS data.
bool m_bWaveAngleSave
Save wave angle raster GIS files?
bool m_bOmitSearchEastEdge
Omit the east edge of the grid from coast-end searches?
bool m_bLocalSlopeSave
Save local slope raster GIS files?
Simple YAML node class to represent parsed values.
vector< string > GetStringSequence() const
vector< CYamlNode > GetSequence() const
bool HasChild(string const &strKey) const
bool GetBoolValue(bool bDefault=false) const
double GetDoubleValue(double dDefault=0.0) const
CYamlNode GetChild(string const &strKey) const
int GetIntValue(int nDefault=0) const
Simple YAML parser class.
bool bParseFile(string const &strFileName)
CYamlNode GetRoot() const
This file contains global definitions for CoastalME.
string const VECTOR_FLOOD_SWL_SETUP_SURGE_LINE_CODE
string const TIME_SERIES_CLIFF_COLLAPSE_DEPOSITION_CODE
string const TIME_SERIES_SUSPENDED_SEDIMENT_CODE
string const RASTER_POTENTIAL_PLATFORM_EROSION_MASK_CODE
int const WAVE_MODEL_COVE
int const RTN_ERR_READING_SEDIMENT_INPUT_EVENT
string const RASTER_CLIFF_COLLAPSE_EROSION_FINE_CODE
string const TIME_SERIES_PLATFORM_EROSION_CODE
string const RASTER_COARSE_CONS_CODE
string const VECTOR_POLYGON_NODE_CODE
string const RASTER_USUAL_OUTPUT_CODE
string const RASTER_DEEP_WATER_WAVE_ORIENTATION_CODE
string const RASTER_DEEP_WATER_WAVE_HEIGHT_CODE
string const TIME_SERIES_FLOOD_SETUP_SURGE_RUNUP_CODE
string const RASTER_SLOPE_CODE
string const VECTOR_ALL_OUTPUT_CODE
string const VECTOR_FLOOD_SWL_SETUP_SURGE_RUNUP_LINE_CODE
string const RASTER_TOTAL_CLIFF_COLLAPSE_DEPOSITION_SAND_CODE
string const RASTER_ACTIVE_ZONE_CODE
string const RASTER_CLIFF_COLLAPSE_EROSION_COARSE_CODE
string const RASTER_SAND_CONS_CODE
string const TIME_SERIES_FLOOD_SETUP_SURGE_CODE
int const RTN_ERR_SCAPE_SHAPE_FUNCTION_FILE
int const UNCONS_SEDIMENT_EQUATION_KAMPHUIS
string const RASTER_COAST_NORMAL_CODE
int const DEFAULT_PROFILE_SPACING
string const VECTOR_CLIFF_EDGE_CODE
string const RASTER_AVG_SUSP_SED_CODE
string const RASTER_COAST_CODE
string const RASTER_SEDIMENT_INPUT_EVENT_CODE
string const VECTOR_WAVE_ENERGY_SINCE_COLLAPSE_CODE
string const RASTER_WAVE_ORIENTATION_CODE
string const VECTOR_RUN_UP_CODE
string const RASTER_ALL_OUTPUT_CODE
string const RASTER_CLIFF_COLLAPSE_EROSION_SAND_CODE
string const RASTER_POLYGON_UPDRIFT_OR_DOWNDRIFT_CODE
string const RASTER_WAVE_FLOOD_LINE_CODE
int const WAVE_MODEL_CSHORE
string const RASTER_COARSE_UNCONS_CODE
char const PATH_SEPARATOR
string const VECTOR_INVALID_NORMALS_CODE
string const RASTER_BASEMENT_ELEVATION_CODE
string const RASTER_WAVE_HEIGHT_CODE
string const RASTER_CLIFF_COLLAPSE_DEPOSITION_COARSE_CODE
string const RASTER_INTERVENTION_CLASS_CODE
string const RASTER_POTENTIAL_PLATFORM_EROSION_CODE
string const RASTER_POTENTIAL_BEACH_EROSION_CODE
string const VECTOR_MEAN_WAVE_ENERGY_CODE
string const VECTOR_STORM_SURGE_CODE
double const D50_SAND_DEFAULT
string const RASTER_TOTAL_CLIFF_COLLAPSE_EROSION_COARSE_CODE
bool bFPIsEqual(const T d1, const T d2, const T dEpsilon)
string const VECTOR_USUAL_OUTPUT_CODE
string const RASTER_WAVE_PERIOD_CODE
int const GRID_EDGE_CLOSED
string const TIME_SERIES_CLIFF_COLLAPSE_NET_CODE
int const GRID_EDGE_RECIRCULATE
int const RTN_ERR_OPEN_DEEP_WATER_WAVE_DATA
string const RASTER_TOTAL_ACTUAL_BEACH_EROSION_CODE
string const VECTOR_NORMALS_CODE
string const RASTER_BEACH_DEPOSITION_CODE
string const RASTER_SHADOW_ZONE_CODE
string const RASTER_TOTAL_BEACH_DEPOSITION_CODE
string const VECTOR_DEEP_WATER_WAVE_ANGLE_AND_HEIGHT_CODE
double const D50_COARSE_DEFAULT
string const RASTER_BEACH_PROTECTION_CODE
string const RASTER_TOTAL_POTENTIAL_PLATFORM_EROSION_CODE
string const TIME_SERIES_CLIFF_COLLAPSE_EROSION_CODE
string const RASTER_BEACH_MASK_CODE
string const RASTER_AVG_WAVE_HEIGHT_CODE
string const RASTER_SETUP_SURGE_FLOOD_MASK_CODE
string const TIME_SERIES_BEACH_EROSION_CODE
string const RASTER_TOTAL_POTENTIAL_BEACH_EROSION_CODE
int const SMOOTH_SAVITZKY_GOLAY
string const RASTER_AVG_SEA_DEPTH_CODE
string const RASTER_SAND_UNCONS_CODE
string const RASTER_CLIFF_CODE
string const READING_FILE_LOCATIONS
string const VECTOR_CLIFF_NOTCH_SIZE_CODE
string const RASTER_SETUP_SURGE_RUNUP_FLOOD_MASK_CODE
string const RASTER_LANDFORM_CODE
string const RASTER_TOTAL_ACTUAL_PLATFORM_EROSION_CODE
int const RTN_ERR_READING_DEEP_WATER_WAVE_DATA
string const RASTER_ACTUAL_PLATFORM_EROSION_CODE
string const VECTOR_BREAKING_WAVE_HEIGHT_CODE
unsigned long const SEDIMENT_INPUT_EVENT_ERROR
int const RTN_ERR_TIDEDATAFILE
string const RASTER_SUSP_SED_CODE
string const VECTOR_SHADOW_BOUNDARY_CODE
string const VECTOR_COAST_CURVATURE_CODE
double const D50_FINE_DEFAULT
string const VECTOR_ALL_RIVER_FLOOD_OUTPUT_CODE
string const RASTER_CLIFF_COLLAPSE_DEPOSITION_SAND_CODE
string const RASTER_SEA_DEPTH_CODE
string const RASTER_LOCAL_SLOPE_CODE
string const RASTER_FINE_CONS_CODE
string const VECTOR_POLYGON_BOUNDARY_CODE
string const RASTER_FINE_UNCONS_CODE
string const TIME_SERIES_STILL_WATER_LEVEL_CODE
string const RASTER_SEDIMENT_TOP_CODE
int const UNCONS_SEDIMENT_EQUATION_CERC
string const RASTER_POLYGON_GAIN_OR_LOSS_CODE
string const RASTER_TOTAL_CLIFF_COLLAPSE_EROSION_SAND_CODE
string const VECTOR_AVG_WAVE_ANGLE_AND_HEIGHT_CODE
string const TIME_SERIES_BEACH_CHANGE_NET_CODE
string const RASTER_INTERVENTION_HEIGHT_CODE
string const VECTOR_FLOOD_LINE_CODE
string const TIME_SERIES_BEACH_DEPOSITION_CODE
string const VECTOR_FLOOD_SWL_SETUP_LINE_CODE
string const VECTOR_WAVE_SETUP_CODE
string const RASTER_POLYGON_CODE
string const RASTER_ACTUAL_BEACH_EROSION_CODE
string const RASTER_INUNDATION_MASK_CODE
string const VECTOR_COAST_CODE
string const RASTER_TOTAL_CLIFF_COLLAPSE_EROSION_FINE_CODE
string const RASTER_AVG_WAVE_ORIENTATION_CODE
string const SCAPE_SHAPE_FUNCTION_FILE
string const TIME_SERIES_SEA_AREA_CODE
string const RASTER_DEEP_WATER_WAVE_PERIOD_CODE
string const RASTER_TOTAL_CLIFF_COLLAPSE_DEPOSITION_COARSE_CODE
string const RASTER_TOP_CODE
string const VECTOR_DOWNDRIFT_BOUNDARY_CODE
Unified configuration class for CoastalME simulation parameters.
Contains CSimulation definitions.
bool bIsStringValidInt(string &str)
Checks to see if a string can be read as a valid integer, from https://stackoverflow....
bool bIsStringValidDouble(string &str)
Checks to see if a string can be read as a valid double number. Does not find trailing (i....
Simple YAML parser for CoastalME configuration files.