SPS 6.1.1 uses the same physics version as GEM 5.1.1.
I suggest you create yourself a directory under your home for your source code, scripts and config files, for example:
mkdir -p ~/SPS/v_6.1.1 |
The name of the scripts directory:
~/SPS/v_6.1.1/Scripts
is mandatory!
In the above directory you need the following scripts:
SPS_launch r.run_in_parallel sps.sh |
To create an executable first create yourself a directory under your home for the source code; preferably under ~/SPS/v_6.1.1/Abs and change into it, for example:
mkdir -p ~/SPS/v_6.1.1/Abs/My_Abs cd ~/SPS/v_6.1.1/Abs/My_Abs |
Get the basename (last part of your directory path) of your abs-directory for later use:
base_dir=$( basename $PWD ) |
'base_dir' should now be set to 'My_Abs'. You can verify it with:
echo $base_dir
git clone ~winger/SPS/v_6.1.1/Abs/SPS_UQAM_development/sps |
So the object files, libraries and executables will not be under your home, create links for the directories 'build' and 'work'. Pick a place under which you want to keep the object files, libraries and executables under your data space, or example:
work_space=/.../${USER}/GEM_WORK_DIR |
Create the directories and the links (using ${base_dir} from above) :
mkdir -p ${work_space}/${base_dir}/build mkdir -p ${work_space}/${base_dir}/work ln -s ${work_space}/${base_dir}/build ln -s ${work_space}/${base_dir}/work |
Only needed once per window/terminal. Same as for GEM 5.1.1.
module load compilers/intel/21.5-openmpi utils/cmake |
Set the variable 'abs_dir' to the name of your executable directory, including the 'gem' directory (needed under e))
abs_dir=$PWD |
cd build |
Only need once at the beginning and whenever you add any new routines or add include files or module "use" lines to an existing routine.
cmake -DCOMPILER=intel -DCMAKE_VERBOSE_MAKEFILE=ON -DWORK_PREFIX=${abs_dir}/work ${abs_dir}/project |
make mainspsdm |
You can also use n cores in parallel by adding the '-jn', for example to use 4 cores:
make -j4 mainspsdm
You need the following config files:
configexp.cfg dyn_input_table rpnstd_units.dict |
SPS does not have the possibility to write and continue from restart files. Therefore, at the end of each job all fields needed to start another simulation need to get outputted. The next job will then use the output of the previous job as initial conditions. To make the output of fields at the end of a job easier, steps=1 and steps=2 are now hard coded to:
steps=1 will automatically get set to the list of the last timestep of every month of the current job. steps=2 will automatically get set to the last timestep of the current job. |
The following is a list of mandatory initial condition fields for ISBA:
sortie_p([SD,DN,I0,I1,I2,I3,I4,I5,I6,I7,I8,I9] ... |
SD : VD=snow depth
DN : VD=relative snow density
I0 : VD=surface and soil temperatures
I1 : VD=soil volumetric water contents
I2 : VD=soil volumetric ice contents
I3 : VD=water retained on the vegetation
I4 : VD=water in the snow pack
I5 : VD=snow mass
I6 : VD=albedo of snow I7 : VD=sea ice temperature
I8 : VD=sea ice thickness
I9 : VD=glacier temperature
The following is a list of mandatory initial condition fields for FLake:
sortie_p([LIFV,LWFV,LIFR,LITH,LITP,LTRN,LMLD,LSF,LBTP,LWTP,LMLT] ... |
When running CLASS, in addition to the ISBA fields above one also needs to output the following fields:
sortie_p([CY,DR,SQAC,STAC,STSS,SK,TN,TE,R2,Q4,GR,M9] ... |