source: configs/testing/bash/create_runs.sh

Last change on this file was 1044, checked in by dubos, 4 years ago

testing : complete DCMIP41 test case for JEANZAY_PGI_ACC

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