CoolAir_AirTemperature_Map uses meteorological data from C:\iTree\HydroPlus\TestingFilesAndScript\TestCases\CoolAir\Was_DC_Validation
GI_Bioretention_Hydrograph uses meteorological data from C:\iTree\HydroPlus\TestingFilesAndScript\TestCases\HydroStatistical\GI_Bioretention
Hydro_Hydrograph uses meteorological data from C:\iTree\HydroPlus\TestingFilesAndScript\TestCases\HydroStatistical\TI_PowerDecay
Hydro_WaterTable_2Obs uses meteorological data from C:\iTree\HydroPlus\TestingFilesAndScript\TestCases\CoolAir\Was_DC_Validation but for 2018-2021

Note: As of December 2, 2022, the Runoff_Observed_for_Calibration.csv calibration data for GI Bioretention were not updated for the new precipitation data and should not be used. The SWMM tool should be run with the new precipitation data and then generate a new Runoff_Observed_for_Calibration.csv for calibration. 

Calibration is performed with PEST using the file z_b_CalibrationPEST_iTHydroPlus.py stored in \HydroPlus\TestingFilesAndScript\
The code z_b_CalibrationPEST_iTHydroPlus.py contains directions on how to run the calibration.
The file HydroPlus_PEST_Commands.csv contains input for the z_b_CalibrationPEST_iTHydroPlus.py code.

HydroPlus_PEST_Commands.csv provides several rows of commands, each row progressing with a variable keyword, variable value, and perhaps other variables
#   Example Input:
#       row 1:HydroPlus_exe,C:\iTree\HydroPlus\HydroPlus\Release\HydroPlus.exe
#       row 2:HydroPlus_input,C:\iTree\HydroPlus\TestingFilesAndScript\TestCases\Calibration\Bioretention\input
#       row 3:SVDMODE,1
#       row 4:FLAG_LOG_MODE,0
#       row 5:PEST_date_YYYYMMDDHHMM,SimulationNumericalParams/StartDate_YYYYMMDD,201205081200
#       row 6:PEST_date_YYYYMMDDHHMM,SimulationNumericalParams/StopDate_YYYYMMDD,201205082355
#       row 7:PEST_parameter,DataOrganizer/DataDrawer/DataFolder/Parameter_m_KsatExpDecay,0.2,0.1,0.5
#       row 8:PEST_parameter,DataOrganizer/DataDrawer/DataFolder/Routing_PerviousArea_Alpha_h,0.04,0.01,1.0
#       row 9:PEST_observation_variable,Runoff_Observed
#       row 10:PEST_observation_file,C:\iTree\HydroPlus\TestingFilesAndScript\TestCases\Calibration\Bioretention\input\Runoff_Observed_for_Calibration.csv
#       row 11:HydroPlus_prediction,C:\iTree\HydroPlus\TestingFilesAndScript\TestCases\Calibration\Bioretention\output\Runoff_Predicted_for_Calibration.csv
#       row 12:Flag_PEST_observation_CSV,1
#       row 13:Flag_PEST_observation_TimeSeries,0
#       row 14:Flag_PEST_observation_ColumnID,1

#   Run: Prepare PEST with Python 3+ at command line interface %>python z_b_CalibrationPEST_iTHydroPlus.py [path_to_HydroPlus_PEST_Commands.csv]
#   Run: Launch PEST with command line interface in directory input %>pest HydroPlus_PEST_ControlFile.pst or %>i64pest HydroPlus_PEST_ControlFile.pst 

#   Notes: 
#       0. PEST_observation_file data must be defined with flags below: CSV separated, TimeSeries, ColumnID
#       0a. If PEST_observation_file data are not a time series, a unique file is needed for each variable, named after the variable
#       0b. If PEST_observation_file data are time series, it is expected the 1st and 2nd column contain date and time YYYYMMDD,HH:MM:SS
#       1. If changing from use of Runoff_Predicted_for_Calibration.csv, then change structure in code with command PEST_01_ins_file.write
#       2. Calibration at weekly or monthly timestep requires preparing PEST_observation_file for that timestep;
#       3   . Refactor to: a) move within HydroPlus.sln to simplify management with changing calibration timestep; 
#           ... b) enable calibration of DataFolder variables outside of 1st DataFolder;
#           ... c) ensure multiple output files can be used in calibration;
#           ... d) 
#		4. Keyword PEST_date_YYYYMMDDHHMM is used to write observation data and represent StartDate_YYYYMMDD and StopDate_YYYYMMDD.
#		5. Keyword PEST_parameter is used to identify variables to adjust, and their initial, lowest, and highest values
#       6. Keyword Flag_PEST_observation_CSV, set to 1 for CSV files, 0 otherwise [but script is not ready for this case of 0]
#       7. Keyword Flag_PEST_observation_TimeSeries, set to 1 for time series, 0 for single observations 
#       8. Keyword Flag_PEST_observation_ColumnID, set to column with observations starting with ID=0 for first column
#       9. Python script below presumes one one model output file is read for comparison with observations, using NINSFLE = 1; This could be changed to NINSFLE = NOBSGP 

#   Created: T. Endreny, 2022-23, te@esf.edu
