You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
« Previous
Version 4
Next »
We can keep maintenance simple using a single "task wrapper file", called in multiple contexts, for multiple tasks. It can be seen as a single task in research mode, for example, while it is used to generate multiple jobs in parallel in operation so we can get the expected data faster, still respecting the blocks that cannot be run in parallel, calling the task again as a single exclusive job:
%manual
%end
%include <head.h>
if [[ %PARALLEL:1% == 1 ]]; then
for param in %PARAM:2t u v rh%; do
# process: create ${param}.grib
done
fi
if [[ %SERIAL:1% == 1 ]]; then
for param in %PARAM:2t u v rh%; do
# push into fields data base
done
fi
%include <tail.h>
suite example
family parallel
edit PARALLEL 1
edit SERIAL 0
limit count 5
inlimit count
family 2t
edit PARAM 2t
task process
endfamily
family u
edit PARAM u
task process
endfamily
family v
edit PARAM v
task process
endfamily
family rh
edit PARAM rf
task process
endfamily
endfamily # process
family serial
trigger parallel eq complete
edit PARALLEL 0
edit SERIAL 1
task process
A real case example is given by the family ensms (ensenble mean statistics) where few parameters and multiple level shall generate tasks and grib files in parallel, while a single task by the end moves the grib files into the fields data base ("limit em 1" is used as a mutex)
This page contains macros or features from a plugin which requires a valid license.
You will need to contact your administrator.