source: configs/testing/create_runs.sh @ 501

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

testing : DCMIP31 & DCMIP41

  • Property svn:executable set to *
File size: 4.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/bin/icosa_${EXEC}.exe gcm.exe
14    rundef_$EXP $* > tmp.def
15    sort tmp.def | cut -c 7- > run.def
16    rm -f tmp.def
17    xml_iodef > iodef.xml
18    xml_icosa > icosa.xml
19    xml_field_def > field_def.xml
20    xml_dcmip $EXP $OUTPUT_GRID $OUTPUT_FREQ > filedef_dcmip2016.xml
21    job_${EXP} ${EXEC} $* > job.sh
22    cd ..
23}
24
25function rundef_all() {
26    cat <<EOF
27100   #------------- Planet ---------------
28200   #------------- Dynamics  ------------
29300   #-------------- Mesh ----------------
30400   #------------ Numerics --------------
31500   #----------- Dissipation ------------
32600   #-------------- Physics -------------
33700   #---------------- Run ---------------
34EOF
35}
36
37function setvar()
38{
39    while (($# > 1)) ; do
40        ii=${idx[$1]}
41        echo "$ii   $1=$2"
42        shift ; shift
43    done
44}
45function order()
46{
47    ii=$1 ; shift
48    for name in $* ; do
49        ((ii+=1))
50       idx[${name}]=$ii
51#       echo $name ${idx[${name}]}
52    done
53}
54
55#----------------------------- pre-defined resolutions ---------------------------
56
57function set_nbp_40() {
58    setvar dt 480 optim_it 500
59    split_${EXEC}_40
60}
61
62function set_nbp_80() {
63    setvar dt 240 optim_it 1000
64    split_${EXEC}_80
65}
66
67#-------------------------------- Williamson (1991) ------------------------------
68
69function rundef_W91() {
70    NBP=$1 ; TAU=$2
71    rundef_all
72    set_nbp_$NBP
73    setvar caldyn_conserv enstrophy caldyn_eta eta_lag boussinesq .TRUE. llm 1 radius 6.37122e6 g 9.80616
74    setvar nitergdiv 2 nitergrot 2 niterdivgrad 2 tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU
75    setvar write_period 86400 run_length 2592000 etat0 williamson91.6
76}
77
78function job_W91() {
79    job_$1_$2 W91_$1
80}
81
82#------------------------------------- DCMIP3.1 ----------------------------------
83
84function rundef_DCMIP(){
85    rundef_all
86    set_nbp_$1
87    setvar radius 6.37122e6 g 9.80616 kappa 0.2857143 cpp 1004.5 preff 1e5
88    setvar nitergdiv 2 nitergrot 2 niterdivgrad 2 tau_graddiv
89}
90
91function rundef_DCMIP31() { # NBP TAU
92    NBP=$1 ; TAU=$2
93    rundef_DCMIP $NBP
94    setvar hydrostatic .FALSE.
95    setvar omega 0. llm 10 disvert ncar ncar_T0 300 ncar_p0 1e5 ncar_disvert_c 1 ncar_dz 1000
96    setvar tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU 
97    setvar scale_factor 125 write_period 7500 run_length 4.5e5 etat0 dcmip3
98}
99function rundef_DCMIP41() { # NBP TAU
100    NBP=$1 ; TAU=$2
101    rundef_DCMIP $NBP
102#    setvar hydrostatic .FALSE.
103    setvar omega 7.292e-5 llm 30 disvert ncarl30 nqtot 2 itau_adv 3
104    setvar tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU
105    setvar write_period 21600 run_length 2592000 etat0 dcmip4 dcmip4_testcase 1
106}
107
108function job_DCMIP31() { # EXEC NBP
109    job_$1_$2 DCMIP31_$1 # e.g. job_mpi_80 DCMIP31_mpi
110}
111function job_DCMIP41() { # EXEC NBP
112    job_$1_$2 DCMIP41_$1
113}
114
115#----------------------------- END ----------------------------
116
117function main()
118{
119    rm -rf RUNS
120    mkdir RUNS
121    cd RUNS
122# the number associated to each run.def parameter is used to sort the lines and order them in a logical way
123    declare -A idx
124    order 100 radius omega g cpp kappa preff scale_factor
125    order 200 boussinesq hydrostatic
126    order 300 nbp optim_it nsplit_i nsplit_j llm disvert ncar_disvert_c ncar_dz ncar_T0 ncar_p0
127    order 400 caldyn_eta time_scheme caldyn_conserv dt nqtot itau_adv
128    order 500 nitergdiv tau_graddiv nitergrot tau_gradrot niterdivgrad tau_divgrad
129    order 700 run_length write_period etat0 dcmip4_testcase
130# Williamson 1991
131#    create_exp serial W91 40 5000 # nbp tau
132#    create_exp mpi W91 40 5000 # nbp tau
133# DCMIP 2012
134    create_exp mpi DCMIP31 two_degree 60s 40 90000 # nbp tau
135    create_exp mpi DCMIP41 two_degree 24h 40 10000 # nbp tau
136}
137
138source current_args
139source bash/${arch}.sh
140source bash/xml.sh
141ROOT=$PWD
142main
Note: See TracBrowser for help on using the repository browser.