source: CONFIG/UNIFORM/v7/ICOLMDZOR_LAM_v7/GENERAL/DRIVER/dynamico.driver @ 6325

Last change on this file since 6325 was 6325, checked in by aclsce, 17 months ago

Modified to be compliant with new tracer.def file.
Use of file_def_dynamico.xml in iodef.xml

File size: 6.5 KB
Line 
1#!/bin/ksh
2#-----------------------------------------------------------------
3function ICO_Initialize
4{
5    IGCM_debug_PushStack "ICO_Initialize"
6
7    ##- Horizontal resolution read from dynamic.card
8    if [ ! X${dynamico_UserChoices_RESOL_NBP} = X ] ; then
9        RESOL_NBP=${dynamico_UserChoices_RESOL_NBP}
10    else
11        # Exit
12        IGCM_debug_Exit "RESOL_NBP must be set in dynamico.card UserSection"
13    IGCM_debug_Verif_Exit
14    fi
15
16    ##- Horizontal resolution read from dynamico.card
17    if [ ! X${dynamico_UserChoices_RESOL_ATM_Z} = X ] ; then
18        RESOL_ATM_Z=${dynamico_UserChoices_RESOL_ATM_Z}
19    else
20        # RESOL_ATM_Z is not set in dynamico.card but this is needed
21        IGCM_debug_Exit "RESOL_ATM_Z must be set in dynamico.card UserSection"
22        IGCM_debug_Verif_Exit
23    fi
24
25
26    if [ ! -f ${SUBMIT_DIR}/../../../modeles/DYNAMICO/xml/file_def_dynamico.xml ]then
27        module load python3
28        python3 ${SUBMIT_DIR}/../../../modeles/DYNAMICO/xml/file_def_dynamico.xml.py > ${SUBMIT_DIR}/../../../modeles/DYNAMICO/xml/file_def_dynamico.xml
29    fi
30
31
32    IGCM_debug_PopStack "ICO_Initialize"
33}
34
35#-----------------------------------------------------------------
36function ICO_Update
37{
38    IGCM_debug_PushStack "ICO_Update"
39
40    # Reset date from start.nc file on the first iteration in the simulation
41    if [ ${CumulPeriod} -eq 1 ] ; then
42        IGCM_comp_modifyDefFile blocker run_dynamico.def etat0_start_iteration_reset y
43    else
44        IGCM_comp_modifyDefFile blocker run_dynamico.def etat0_start_iteration_reset n
45    fi
46
47    # Set lenght for execution
48    IGCM_comp_modifyDefFile blocker run_dynamico.def run_length $(( ${PeriodLengthInDays} * 86400 ))
49
50    # Change run_dynamico.def according to UserChoices options set in dynmaico.card
51   
52    # Set create_etat0_limit=y or n and
53    if [ X${dynamico_UserChoices_create_etat0_limit} = Xy ] ; then 
54        # create_etat0_limit is set in dynamcio.card to y
55        # Activate create_etat0_limit=y in run_dynamico.def
56        IGCM_comp_modifyDefFile nonblocker run_dynamico.def create_etat0_limit y
57
58        # Use iflag_phys=101 or higher to activate aquaplanet mode
59        if [ X${dynamico_UserChoices_iflag_phys} = X ] || [ X${dynamico_UserChoices_iflag_phys} = X1 ]; then 
60            # iflag_phys is not set or iflag_phys=1 => run is not an aquaplanet
61            IGCM_comp_modifyDefFile nonblocker run_dynamico.def etat0              ${dynamico_UserChoices_etat0}
62            IGCM_comp_modifyDefFile nonblocker run_dynamico.def iflag_phys         1
63        else
64            # This is an aquaplanet
65            IGCM_comp_modifyDefFile nonblocker run_dynamico.def etat0              held_suarez
66            IGCM_comp_modifyDefFile nonblocker run_dynamico.def iflag_phys         ${dynamico_UserChoices_iflag_phys}
67        fi
68
69        # Optimize the grid: set read_metric=n and optim_it=100000     
70        IGCM_comp_modifyDefFile nonblocker   run_dynamico.def   read_metric  n
71        IGCM_comp_modifyDefFile nonblocker   run_dynamico.def   optim_it     10000
72    else
73        # Deactivate create_etat0_limit to run a the GCM (aquaplanet or not)
74        IGCM_comp_modifyDefFile nonblocker run_dynamico.def create_etat0_limit   n
75        IGCM_comp_modifyDefFile nonblocker run_dynamico.def etat0                start_file
76
77        # Set iflag_phys even though it only will be read but not used for the case create_etat0_limit=n
78        if [ X${dynamico_UserChoices_iflag_phys} = X ] ||  [ X${dynamico_UserChoices_iflag_phys} = X1 ]; then 
79            # iflag_phys is not set or iflag_phys=1 => run is not an aquaplanet
80            IGCM_comp_modifyDefFile nonblocker run_dynamico.def iflag_phys           1
81        else
82            IGCM_comp_modifyDefFile nonblocker run_dynamico.def iflag_phys         ${dynamico_UserChoices_iflag_phys}
83        fi     
84
85        # Read grid from start.nc file: set read_metric=y and optim_it=0       
86        IGCM_comp_modifyDefFile nonblocker   run_dynamico.def   read_metric  y
87        IGCM_comp_modifyDefFile nonblocker   run_dynamico.def   optim_it     0
88    fi 
89
90
91    # Add include of context xml files for DYNAMICO in iodef.xml
92    # In iodef.xml add on the next line after "COMPONENT CONTEXT"
93    echo '<context id="icosagcm" src="./context_dynamico.xml"/>' >> add.tmp
94
95    if [ X${dynamico_UserChoices_nudging} = Xy ] ; then
96      echo '<context id="icosagcm" src="./nudging_dynamico.xml" />' >> add.tmp
97    fi
98
99    # Add inclusion of file context_input_dynamico.xml if this file exists
100    if [ -f context_input_dynamico.xml ] ; then
101        echo '<context id="icosagcm_input" src="./context_input_dynamico.xml"/>' >> add.tmp
102    fi
103
104    # Add inclusion of file file_def_dynamico.xml if this file exists
105    if [ -f file_def_dynamico.xml ] ; then
106        echo '<context id="icosagcm" src="./file_def_dynamico.xml"/>' >> add.tmp
107    fi
108
109    # Include xml files for output configuration if running with workflow CMIP6
110    if [ X"$( echo ${config_UserChoices_ExpType} | grep CMIP6 )" != "X" ] ; then
111      if [ -f ping_dynamico.xml ] ; then
112        echo '<context id="icosagcm" src="./ping_dynamico.xml"/>' >> add.tmp
113        echo '<context id="icosagcm" src="./dr2xml_dynamico.xml"/>' >> add.tmp
114      fi
115    fi
116    cp iodef.xml iodef.xml.tmp
117    sed -e "/COMPONENT CONTEXT/r add.tmp" iodef.xml.tmp > iodef.xml
118    rm iodef.xml.tmp add.tmp
119
120    # Add a Long Name as global attribute in output files if LongName is set in config.card
121    if [ ! "X${config_UserChoices_LongName}" = "X" ] ; then
122      listfile=$(ls file_def*dynamico.xml)
123      echo "<variable id=\"LongName\" type=\"string\">${config_UserChoices_LongName}</variable>" > add.tmp
124      for file in ${listfile} ; do
125          cp ${file} ${file}.tmp
126          sed -e "/<file id/r add.tmp" \
127          ${file}.tmp > ${file}
128          rm ${file}.tmp
129      done
130      rm add.tmp
131    fi
132
133    if [ X${config_ListOfComponents_CPL} = Xoasis ] ; then
134    echo "Coupling mode using oasis, set using_oasis=y in run_dynamico.def"
135    IGCM_comp_modifyDefFile nonblocker run_dynamico.def using_oasis y
136    else
137    echo "DYNAMICO is running in forced mode without ocean model, set using_oasis=y in run_dynamico.def"
138    IGCM_comp_modifyDefFile nonblocker run_dynamico.def using_oasis n
139    fi
140
141
142    # Compression level (if CompressionLevel is not empty)
143    if [ ! "X${config_UserChoices_CompressionLevel}" = "X" ] ; then
144        echo "NetCDF output files compression level is " ${config_UserChoices_CompressionLevel}
145        listfile=$(ls file_def*dynamico.xml)
146        for file in ${listfile} ; do
147            sed -i -e "s/\(compression_level=\"\)[^\"]*\(\"\)/\1${config_UserChoices_CompressionLevel}\2/" ${file}
148        done
149    fi
150
151    IGCM_debug_PopStack "ICO_Update"
152}
153
154#-----------------------------------
155function ICO_Finalize
156{
157    IGCM_debug_PushStack "ICO_Finalize"
158
159    IGCM_debug_PopStack "ICO_Finalize"
160}
161
Note: See TracBrowser for help on using the repository browser.