KUL-RSDA / AquaCrop

AquaCrop source code endorsed by FAO
https://www.fao.org/aquacrop/en/
Other
56 stars 17 forks source link

Make soil file optional #303

Closed MaximeVdB closed 2 years ago

MaximeVdB commented 2 years ago

Similar to #301, but only including the Soil part (the Crop part will be done separately later on).

Passes all relevant tests.

mbechtold commented 2 years ago

The parallel issue for external LIS call: I don't know what causes the LoadProfile issue from DEFAULT.SOL in large scale parallel LIS_Aquacrop runs, but replacing LoadProfile with LoadProfileProcessing at two locations (see below) solves the issue. Since I initialize the soil variables before from LIS, there is no need to set default properties. I now think that we need to differentiate between three cases: (1) soil file defined in prm file (2) (None) defined in prm file (the original Aquacrop 'Default' case) (3) (None) defined in prm file + soil parameters set in LIS beforehand I didn't have a good idea yet how to let Aquacrop know that we have case 3.

The two required changes are: (1) At the end of subroutine CheckForKeepSWC we need to have for a call from LIS: call LoadProfileProcessing(VersionNr) instead of LoadProfile(GetProfFilefull()) (2) In subroutine InitializeSettings we need to have for a call from LIS: call LoadProfileProcessing(VersionNr)
instead call LoadProfile(GetProfFilefull())

MaximeVdB commented 2 years ago

@mbechtold Now you can avoid the writing-and-reading of DEFAULT.SOL files by calling InitializeSettings with a use_default_soil_file=.false. argument.

MaximeVdB commented 2 years ago

And now giving (None) as soil file name in the PRM/PRO file makes AquaCrop implies using the DEFAULT.SOL file, whereas external programs like LIS should set it to (External).