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

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

Testing : store source tree in logs/

  • Property svn:executable set to *
File size: 7.0 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/build_${EXEC} build
14    ln -sf build/bin/icosa_gcm.exe gcm.exe
15    cp $ROOT/python/common.py post.py
16    echo "post_${EXP}()" >> post.py
17#    ln -sf $ROOT/python/post_${EXP}.py post.py
18    rundef_$EXP $* > tmp.def
19    sort tmp.def | cut -c 7- > run.def
20    rm -f tmp.def
21    xml_iodef > iodef.xml
22    xml_icosa > icosa.xml
23    xml_field_def > field_def.xml
24    xml_dcmip $EXP $OUTPUT_GRID $OUTPUT_FREQ > filedef_dcmip2016.xml
25    job_${EXP} ${EXEC} $* > job.sh
26    cd ..
27}
28
29function rundef_all() {
30    cat <<EOF
31100   #------------- Planet ---------------
32200   #------------- Dynamics  ------------
33300   #-------------- Mesh ----------------
34400   #------------ Numerics --------------
35500   #----------- Dissipation ------------
36600   #-------------- Physics -------------
37700   #---------------- Run ---------------
38EOF
39}
40
41function setvar()
42{
43    while (($# > 1)) ; do
44        ii=${idx[$1]}
45        echo "$ii   $1=$2"
46        shift ; shift
47    done
48}
49function order()
50{
51    ii=$1 ; shift
52    for name in $* ; do
53        ((ii+=1))
54       idx[${name}]=$ii
55#       echo $name ${idx[${name}]}
56    done
57}
58
59#----------------------------- pre-defined resolutions ---------------------------
60
61function set_nbp_40() {
62    setvar dt 480 optim_it 500
63    split_${EXEC}_40
64}
65
66function set_nbp_80() {
67    setvar dt 240 optim_it 1000
68    split_${EXEC}_80
69}
70
71#-------------------------------- Williamson (1991) ------------------------------
72
73function rundef_W91() {
74    NBP=$1 ; TAU=$2
75    rundef_all
76    set_nbp_$NBP
77    setvar caldyn_conserv enstrophy caldyn_eta eta_lag boussinesq .TRUE. llm 1 radius 6.37122e6 g 9.80616
78    setvar nitergdiv 2 nitergrot 2 niterdivgrad 2 tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU
79    setvar write_period 86400 run_length 2592000 etat0 williamson91.6
80}
81
82function job_W91() {
83    job_$1_$2 W91_$1
84}
85
86#-------------------------------- Jablonowsky & Williamson (2006) ------------------------------
87
88function rundef_DCMIP(){
89    rundef_all
90    set_nbp_$1
91    setvar radius 6.37122e6 g 9.80616 kappa 0.2857143 cpp 1004.5 preff 1e5
92    setvar nitergdiv 2 nitergrot 2 niterdivgrad 2 tau_graddiv
93}
94
95function rundef_JW06() { # NBP TAU
96    NBP=$1 ; TAU=$2
97    rundef_DCMIP $NBP
98    setvar hydrostatic .FALSE.
99    setvar omega 7.292e-5 llm 60 disvert ncar ncar_dz 500 nqtot 2 itau_adv 3
100    setvar tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU
101    setvar write_period 21600 run_length 864000 etat0 jablonowsky06
102}
103
104function job_JW06() { # EXEC NBP
105    job_$1_$2 JW06_$1 # e.g. job_mpi_80 JW06_mpi
106}
107
108#------------------------------------- DCMIP 2012 ---------------------------------
109
110function rundef_DCMIP21() { # NBP TAU
111    NBP=$1 ; TAU=$2
112    rundef_DCMIP $NBP
113    setvar omega 0. llm 60 disvert ncar ncar_T0 300 ncar_p0 1e5 ncar_disvert_c 1 ncar_dz 500
114    setvar tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU 
115    setvar scale_factor 500 write_period 50000 run_length 1.8e6 etat0 dcmip2_schaer_noshear
116    setvar rayleigh_friction_type dcmip2_schaer_noshear rayleigh_friction_tau 12500
117}
118
119function rundef_DCMIP31() { # NBP TAU HYDRO
120    NBP=$1 ; TAU=$2 ; HYDRO=$3
121    rundef_DCMIP $NBP
122    setvar hydrostatic $3
123    setvar omega 0. llm 10 disvert ncar ncar_T0 300 ncar_p0 1e5 ncar_disvert_c 1 ncar_dz 1118
124    setvar tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU 
125    setvar scale_factor 125 write_period 7500 run_length 4.5e5 etat0 dcmip3
126}
127
128function rundef_DCMIP41() { # NBP TAU
129    NBP=$1 ; TAU=$2
130    rundef_DCMIP $NBP
131#    setvar dysl .TRUE.
132#    setvar hydrostatic .FALSE.
133    setvar omega 7.292e-5 llm 30 disvert ncarl30 nqtot 2 itau_adv 3
134    setvar tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU
135    setvar write_period 21600 run_length 2592000 etat0 dcmip4 dcmip4_testcase 1
136}
137
138function rundef_DCMIP51() { # NBP TAU
139    NBP=$1 ; TAU=$2
140    rundef_DCMIP $NBP
141    setvar omega 7.292e-5 llm 30 disvert ncarl30 nqtot 1 itau_adv 3
142    setvar tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU
143    setvar write_period 7200 run_length 864000 etat0 dcmip5
144    setvar physics dcmip dcmip_physics 0 itau_physics 6
145}
146
147function job_DCMIP21() { # EXEC NBP
148    job_$1_$2 DCMIP21_$1 # e.g. job_mpi_80 DCMIP31_mpi
149}
150function job_DCMIP31() { # EXEC NBP
151    job_$1_$2 DCMIP31_$1 # e.g. job_mpi_80 DCMIP31_mpi
152}
153function job_DCMIP41() { # EXEC NBP
154    job_$1_$2 DCMIP41_$1
155}
156function job_DCMIP51() { # EXEC NBP
157    job_$1_$2 DCMIP51_$1
158}
159
160#------------------------------------- OTHER ---------------------------------
161
162function rundef_bubble() { # NBP TAU
163    NBP=$1 ; TAU=$2
164    rundef_all
165    set_nbp_$NBP
166    setvar llm 50 disvert ncar ncar_dz 20 ncar_T0 300 ncar_p0 1e5
167#    setvar time_scheme ARK2.3
168    setvar nitergdiv 2 nitergrot 2 niterdivgrad 2 tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU
169    setvar radius 5e6 scale_factor 10000  g 9.80616 kappa 0.2857143 cpp 1004.5 preff 1e5 omega 0.
170}
171function job_bubble() { # EXEC NBP
172    job_$1_$2 Bubble_$1
173}
174
175function rundef_held_suarez() { # NBP TAU
176    NBP=$1 ; TAU=$2
177    rundef_DCMIP $NBP
178    setvar llm 19 disvert std write_period 86400 run_length 2592000 etat0 held_suarez # physics held_suarez
179    setvar time_scheme RK2.5
180    setvar nitergdiv 2 nitergrot 2 niterdivgrad 2 tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU
181}
182function job_held_suarez() { # EXEC NBP
183    job_$1_$2 HS94_$1
184}
185
186#-------------------------------- END TEST CASES -----------------------------
187
188function basic()
189{
190    rm -rf RUNS
191    mkdir RUNS
192    cd RUNS
193# Williamson 1991
194#    create_exp serial W91 two_degree 24h 40 5000 # nbp tau
195#    create_exp mpi W91 two_degree 24h 40 5000 # nbp tau
196    create_exp mpi JW06 two_degree 24h 40 10000 # nbp tau
197# DCMIP 2012
198    create_exp mpi DCMIP21 two_degree 100s 40 90000 # nbp tau
199    create_exp mpi DCMIP31 two_degree 60s 40 90000 .FALSE. # nbp tau hydro
200    create_exp mpi_omp DCMIP31 two_degree 60s 40 90000 .TRUE. # nbp tau hydro
201    create_exp mpi_omp DCMIP41 two_degree 24h 40 10000 # nbp tau
202#    create_exp mpi DCMIP51 one_degree 2h  80 10000 # nbp tau
203# Other
204    create_exp mpi_omp held_suarez two_degree 24h 40 10000 # nbp tau
205}
206
207function main()
208{
209# the number associated to each run.def parameter is used to sort the lines and order them in a logical way
210    declare -A idx
211    order 100 radius omega g cpp kappa preff scale_factor
212    order 200 boussinesq hydrostatic dysl
213    order 300 nbp optim_it nsplit_i nsplit_j llm omp_level_size disvert ncar_disvert_c ncar_dz ncar_T0 ncar_p0
214    order 400 caldyn_eta time_scheme caldyn_conserv dt nqtot itau_adv
215    order 500 nitergdiv tau_graddiv nitergrot tau_gradrot niterdivgrad tau_divgrad rayleigh_friction_type rayleigh_friction_tau
216    order 600 physics dcmip_physics itau_physics
217    order 700 run_length write_period etat0 dcmip4_testcase
218
219    basic
220}
221
222source current_args
223source bash/${arch}.sh
224source bash/xml.sh
225ROOT=$PWD
226main
Note: See TracBrowser for help on using the repository browser.