Hello,
I am planning to run some simulations using the openIFS which include perturbations to two or more parameters in the land surface module. We are currently looking to perturb the Van-Genuchten alpha parameter and the Saturated Conductivity parameter using a percentage-based perturbation, {−80%, −40%, 0, 40%, 80%}, where the perturbation percentage applies to the default parameter value for the soil type at each grid point.
I was wondering if anybody knew of a particular approach in which to tackle this? We was discussing the possibility of creating a txt file containing a matrix of parameters and a range of parameter values which could then be read into the model and looped through (but we are not sure if this is possible?).
Kind regards,
Jamie
1 Comment
Ryan Harry
Hi Jamie,
If I understand correctly, you'll have a text based look-up table to read into the model? As long as you only read the table once at the beginning of the run in the appropriate setup routines (the files that start with SU*), that should be fine.
Remember that because the model is parallel, you'll use task number 0 (the master task) to read the text file and then you'll have to use an MPL_BROADCAST subroutine call to send that data to all the other MPI tasks.
A good example to look at in the model is the code in : ifs/climate/updo3ch.F90 (short for: update o3 climate). This routine organises: getting a logical unit for the read, creating the filename, reading the data, sending it to the other tasks.
If your lookup table is read more frequently and is more than 1Mb in size, I'd suggest creating a binary version as text is relatively slow to read in and would impact the model performance.
HTH.
p.s. use print statements in the code to make sure all the MPI tasks get the same data whilst developing!