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

Last change on this file since 2267 was 2267, checked in by omamce, 10 years ago

O.M.

Add management of coupling frequency. Default is 86400s.
LMDZ is not managed up to now

File size: 2.9 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    (( LagAtm = 86400 / day_step * iphysiq / nsplit_phys ))
62
63    (( LagOce = 86400 / ORCA_NPDT_JOUR ))
64
65    ############ Update Parameter Files   ##############
66    sed -e "s/<total_time>/${D_JOB_SEC}/" \
67        -e "s/<output_mode>/${CPL_OutputVar}/g" \
68        -e "s/<freq_coupling>/${FreqCoupling}/g" \
69        -e "s/<lag_atm>/${LagAtm}/g" \
70        -e "s/<lag_oce>/${LagOce}/g" \
71        namcouple > namcouple.tmp
72    IGCM_sys_Mv namcouple.tmp namcouple
73    # For IPSLCM6 and use of OASIS-MCT
74    if [ ${CumulPeriod} -eq 1 ]; then
75        ncrename -v OIceFrac,OIceFrc sstoc.nc > /dev/null 2>&1
76    fi
77
78    IGCM_debug_PopStack "CPL_Update"
79}
80
81#-----------------------------------
82CPL_Finalize ()
83{
84    IGCM_debug_PushStack "CPL_Finalize"
85
86    if [ "${CPL_OutputMode}" = "y" ] ; then
87
88        [[ ${CPL_OkDay}   = "y" ]] && date >TEMPO_1D_cpl_atm.nc
89        [[ ${CPL_OkMonth} = "y" ]] && date >TEMPO_1M_cpl_atm.nc
90        [[ ${CPL_OkDay}   = "y" ]] && date >TEMPO_1D_cpl_oce.nc
91        [[ ${CPL_OkMonth} = "y" ]] && date >TEMPO_1M_cpl_oce.nc
92
93    fi
94
95    /ccc/scratch/cont003/dsm/p86caub/LUCIA/lucia
96
97    echo FINALIZE CPL !!!
98
99    IGCM_debug_PopStack "CPL_Finalize"
100}
Note: See TracBrowser for help on using the repository browser.