source: configs/testing/bash/create_runs.sh @ 512

Last change on this file since 512 was 512, checked in by dubos, 7 years ago

Testing : improved DCMIP31 params & plot

  • Property svn:executable set to *
File size: 5.2 KB
Line 
1#!/bin/bash
2
3function create_exp() { # executable expname output_grid output_freq  - $* passed to rundef_$expname
4    EXEC=$1 ; shift
5    EXP=$1 ; shift
6    OUTPUT_GRID=$1 ; shift
7    OUTPUT_FREQ=$1 ; shift
8    EXPDIR=${EXP}_${EXEC}_$1
9    echo "Creating $EXPDIR"
10    rm -rf $EXPDIR
11    mkdir $EXPDIR
12    cd $EXPDIR
13    ln -sf $ROOT/bin/icosa_${EXEC}.exe gcm.exe
14    ln -sf $ROOT/python/post_${EXP}.py post.py
15    rundef_$EXP $* > tmp.def
16    sort tmp.def | cut -c 7- > run.def
17    rm -f tmp.def
18    xml_iodef > iodef.xml
19    xml_icosa > icosa.xml
20    xml_field_def > field_def.xml
21    xml_dcmip $EXP $OUTPUT_GRID $OUTPUT_FREQ > filedef_dcmip2016.xml
22    job_${EXP} ${EXEC} $* > job.sh
23    cd ..
24}
25
26function rundef_all() {
27    cat <<EOF
28100   #------------- Planet ---------------
29200   #------------- Dynamics  ------------
30300   #-------------- Mesh ----------------
31400   #------------ Numerics --------------
32500   #----------- Dissipation ------------
33600   #-------------- Physics -------------
34700   #---------------- Run ---------------
35EOF
36}
37
38function setvar()
39{
40    while (($# > 1)) ; do
41        ii=${idx[$1]}
42        echo "$ii   $1=$2"
43        shift ; shift
44    done
45}
46function order()
47{
48    ii=$1 ; shift
49    for name in $* ; do
50        ((ii+=1))
51       idx[${name}]=$ii
52#       echo $name ${idx[${name}]}
53    done
54}
55
56#----------------------------- pre-defined resolutions ---------------------------
57
58function set_nbp_40() {
59    setvar dt 480 optim_it 500
60    split_${EXEC}_40
61}
62
63function set_nbp_80() {
64    setvar dt 240 optim_it 1000
65    split_${EXEC}_80
66}
67
68#-------------------------------- Williamson (1991) ------------------------------
69
70function rundef_W91() {
71    NBP=$1 ; TAU=$2
72    rundef_all
73    set_nbp_$NBP
74    setvar caldyn_conserv enstrophy caldyn_eta eta_lag boussinesq .TRUE. llm 1 radius 6.37122e6 g 9.80616
75    setvar nitergdiv 2 nitergrot 2 niterdivgrad 2 tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU
76    setvar write_period 86400 run_length 2592000 etat0 williamson91.6
77}
78
79function job_W91() {
80    job_$1_$2 W91_$1
81}
82
83#------------------------------------- DCMIP 2012 ---------------------------------
84
85function rundef_DCMIP(){
86    rundef_all
87    set_nbp_$1
88    setvar radius 6.37122e6 g 9.80616 kappa 0.2857143 cpp 1004.5 preff 1e5
89    setvar nitergdiv 2 nitergrot 2 niterdivgrad 2 tau_graddiv
90}
91
92function rundef_DCMIP21() { # NBP TAU
93    NBP=$1 ; TAU=$2
94    rundef_DCMIP $NBP
95    setvar omega 0. llm 60 disvert ncar ncar_T0 300 ncar_p0 1e5 ncar_disvert_c 1 ncar_dz 500
96    setvar tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU 
97    setvar scale_factor 500 write_period 50000 run_length 3.6e6 etat0 dcmip2_schaer_noshear
98    setvar rayleigh_friction_type dcmip2_schaer_noshear rayleigh_friction_tau 12500
99}
100
101function rundef_DCMIP31() { # NBP TAU
102    NBP=$1 ; TAU=$2
103    rundef_DCMIP $NBP
104    setvar hydrostatic .FALSE.
105    setvar omega 0. llm 10 disvert ncar ncar_T0 300 ncar_p0 1e5 ncar_disvert_c 1 ncar_dz 1118
106    setvar tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU 
107    setvar scale_factor 125 write_period 7500 run_length 4.5e5 etat0 dcmip3
108}
109
110function rundef_DCMIP41() { # NBP TAU
111    NBP=$1 ; TAU=$2
112    rundef_DCMIP $NBP
113#    setvar hydrostatic .FALSE.
114    setvar omega 7.292e-5 llm 30 disvert ncarl30 nqtot 2 itau_adv 3
115    setvar tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU
116    setvar write_period 21600 run_length 2592000 etat0 dcmip4 dcmip4_testcase 1
117}
118
119function rundef_DCMIP51() { # NBP TAU
120    NBP=$1 ; TAU=$2
121    rundef_DCMIP $NBP
122    setvar omega 7.292e-5 llm 30 disvert ncarl30 nqtot 1 itau_adv 3
123    setvar tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU
124    setvar write_period 7200 run_length 864000 etat0 dcmip5
125    setvar physics dcmip dcmip_physics 0 itau_physics 6
126}
127
128function job_DCMIP21() { # EXEC NBP
129    job_$1_$2 DCMIP21_$1 # e.g. job_mpi_80 DCMIP31_mpi
130}
131function job_DCMIP31() { # EXEC NBP
132    job_$1_$2 DCMIP31_$1 # e.g. job_mpi_80 DCMIP31_mpi
133}
134function job_DCMIP41() { # EXEC NBP
135    job_$1_$2 DCMIP41_$1
136}
137function job_DCMIP51() { # EXEC NBP
138    job_$1_$2 DCMIP51_$1
139}
140
141#----------------------------- END ----------------------------
142
143function basic()
144{
145    rm -rf RUNS
146    mkdir RUNS
147    cd RUNS
148# Williamson 1991
149#    create_exp serial W91 two_degree 24h 40 5000 # nbp tau
150#    create_exp mpi W91 two_degree 24h 40 5000 # nbp tau
151# DCMIP 2012
152    create_exp mpi DCMIP21 two_degree 100s 40 90000 # nbp tau
153    create_exp mpi DCMIP31 two_degree 60s 40 90000 # nbp tau
154    create_exp mpi DCMIP41 two_degree 24h 40 10000 # nbp tau
155#    create_exp mpi DCMIP51 one_degree 2h  80 10000 # nbp tau
156}
157
158function main()
159{
160# the number associated to each run.def parameter is used to sort the lines and order them in a logical way
161    declare -A idx
162    order 100 radius omega g cpp kappa preff scale_factor
163    order 200 boussinesq hydrostatic
164    order 300 nbp optim_it nsplit_i nsplit_j llm disvert ncar_disvert_c ncar_dz ncar_T0 ncar_p0
165    order 400 caldyn_eta time_scheme caldyn_conserv dt nqtot itau_adv
166    order 500 nitergdiv tau_graddiv nitergrot tau_gradrot niterdivgrad tau_divgrad rayleigh_friction_type rayleigh_friction_tau
167    order 600 physics dcmip_physics itau_physics
168    order 700 run_length write_period etat0 dcmip4_testcase
169
170    basic
171}
172
173source current_args
174source bash/${arch}.sh
175source bash/xml.sh
176ROOT=$PWD
177main
Note: See TracBrowser for help on using the repository browser.