source: CONFIG/UNIFORM/v6/IPSLCM6/GENERAL/DRIVER/oasis.driver @ 2343

Last change on this file since 2343 was 2343, checked in by aclsce, 10 years ago

Modifed to have same handling of XIOS xml files as in LMDZOR configuration.

File size: 3.3 KB
Line 
1#!/bin/ksh
2#-----------------------------------
3CPL_Initialize ()
4{
5    IGCM_debug_PushStack "CPL_Initialize"
6 
7    echo INITIALIZE CPL !!!
8
9# Local function to find parameters in LMDZ .def files
10    lmdzgrep () {
11        grep $1 $2 |grep -v "#" | awk "-F=" '{print $2}'
12    }
13
14    #RESOL_CPL=$( echo $RESOL | awk "-F-" '{print $1}' )
15    RESOL_CPL=${RESOL_OCE}x${RESOL_ATM}
16    IGCM_debug_Print 1 "RESOL_CPL      : ${RESOL_CPL}"
17
18    CPL_OkDay="n"
19    CPL_OkMonth="n"
20
21    for CPL_Frequency in ${config_CPL_WriteFrequency} ; do
22        case ${CPL_Frequency} in
23            *D|*d) CPL_OkDay="y"   ;;
24            *M)    CPL_OkMonth="y" ;;
25        esac
26    done
27
28    IGCM_debug_PopStack "CPL_Initialize"
29
30}
31
32#-----------------------------------
33CPL_Update ()
34{
35    IGCM_debug_PushStack "CPL_Update"
36
37    ############ Update Time and Counters ##############
38    ##-- Calcul de la duree du job (en secondes)
39    (( D_JOB_SEC = 3600 * 24 * PeriodLengthInDays ))
40
41    ############ Update Other Parameters  ##############
42    ## Read Output_mode option in oasis.card --> Put "y" to have coupling variables in ouptut files
43    CPL_OutputMode="n"
44    IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/COMP/oasis.card UserChoices OutputMode
45    eval CPL_OutputMode=\${oasis_UserChoices_OutputMode} > /dev/null 2>&1
46    echo CPL_OutputMode = ${CPL_OutputMode}
47    CPL_OutputVar='EXPORTED'
48    if [ ${CPL_OutputMode} = y ] ; then
49        CPL_OutputVar='EXPOUT'
50    fi
51
52    FreqCoupling=${oasis_UserChoices_FreqCoupling:-86400}
53
54    ## Calculate lag for transfer of fields from atmosphere -> ocean.
55    ## LagAtm="1day in sec"/day_step * iphysiq/nsplit_phys
56    ## First get day_step, iphyisq and nsplit_phys from LMDZ parameter files
57    day_step=$(    lmdzgrep day_step gcm.def )
58    iphysiq=$(     lmdzgrep iphysiq gcm.def )
59    nsplit_phys=$( lmdzgrep nsplit_phys physiq.def )
60
61    IGCM_debug_Print 3 "Parametre de calcul Lag LMDZ recuperes " ${day_step} ${iphysiq} ${nsplit_phys}
62
63    [[ ${nsplit_phys} -eq 0 || "X${nsplit_phys}" = "X" ]] && nsplit_phys=1
64
65    IGCM_debug_Print 3 "Parametre de calcul Lag LMDZ mis a jour " ${day_step} ${iphysiq} ${nsplit_phys}
66                                                             
67    (( LagAtm = 86400 / day_step * iphysiq / nsplit_phys ))
68
69    (( LagOce = 86400 / ORCA_NPDT_JOUR ))
70
71    ############ Update Parameter Files   ##############
72    sed -e "s/<total_time>/${D_JOB_SEC}/" \
73        -e "s/<output_mode>/${CPL_OutputVar}/g" \
74        -e "s/<freq_coupling>/${FreqCoupling}/g" \
75        -e "s/<lag_atm>/${LagAtm}/g" \
76        -e "s/<lag_oce>/${LagOce}/g" \
77        namcouple > namcouple.tmp
78    IGCM_sys_Mv namcouple.tmp namcouple
79    # For IPSLCM6 and use of OASIS-MCT
80    if [ ${CumulPeriod} -eq 1 ]; then
81        ncrename -v OIceFrac,OIceFrc sstoc.nc > /dev/null 2>&1
82    fi
83    # For use of XIOS
84    IGCM_comp_modifyXmlFile force iodef.xml using_oasis NONE true
85
86    IGCM_debug_PopStack "CPL_Update"
87}
88
89#-----------------------------------
90CPL_Finalize ()
91{
92    IGCM_debug_PushStack "CPL_Finalize"
93
94    if [ "${CPL_OutputMode}" = "y" ] ; then
95
96        [[ ${CPL_OkDay}   = "y" ]] && date >TEMPO_1D_cpl_atm.nc
97        [[ ${CPL_OkMonth} = "y" ]] && date >TEMPO_1M_cpl_atm.nc
98        [[ ${CPL_OkDay}   = "y" ]] && date >TEMPO_1D_cpl_oce.nc
99        [[ ${CPL_OkMonth} = "y" ]] && date >TEMPO_1M_cpl_oce.nc
100
101    fi
102
103    /ccc/scratch/cont003/dsm/p86caub/LUCIA/lucia
104
105    echo FINALIZE CPL !!!
106
107    IGCM_debug_PopStack "CPL_Finalize"
108}
Note: See TracBrowser for help on using the repository browser.