Changeset 1565 for trunk


Ignore:
Timestamp:
11/10/22 15:37:00 (17 months ago)
Author:
nillod
Message:

Adapt ensemble script to 6.2 versions (keep compatibility with 6.1) + add new option to get only one ensemble output directory.

Location:
trunk/libIGCM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/libIGCM/libIGCM_config/libIGCM_config.ksh

    r1546 r1565  
    111111  if ( [ ! X${config_UserChoices_SpaceName} = X ] && [ ! X${config_UserChoices_ExperimentName} = X ] ) ; then 
    112112    FreeName=$( echo ${config_UserChoices_JobName} | sed 's/.*_//' ) 
    113     if ( [ ! X${config_Ensemble_EnsembleName} = X ] && [ ! X${config_Ensemble_EnsembleDate} = X ] ) ; then 
    114       R_SAVE=${R_OUT}/${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${config_Ensemble_EnsembleName}/${config_Ensemble_EnsembleDate}/${FreeName} 
    115       R_FIGR=${R_FIG}/${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${config_Ensemble_EnsembleName}/${config_Ensemble_EnsembleDate}/${FreeName} 
    116       R_BUFR=${R_BUF}/${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${config_Ensemble_EnsembleName}/${config_Ensemble_EnsembleDate}/${FreeName} 
    117       R_DODS=${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${config_Ensemble_EnsembleName}/${config_Ensemble_EnsembleDate}/${FreeName} 
    118       R_CMIP=${CMIP6_BUF}/${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${config_Ensemble_EnsembleName}/${config_Ensemble_EnsembleDate}/${FreeName} 
     113 
     114    if ( [ X${config_Post_StorageCMIP} = XSCRATCH ] || [ X${config_Post_StorageCMIP} = Xscratch ] ) ; then 
     115      IGCM_debug_Print 1 "LIBIGCM CONFIG:: SCRATCH R_BUF=${R_BUF}" 
     116      StoreCMIP=${R_BUF} 
     117    elif ( [ X${config_Post_StorageCMIP} = XSTORE ] || [ X${config_Post_StorageCMIP} = Xstore ] ) ; then 
     118      IGCM_debug_Print 1 "LIBIGCM CONFIG:: SCRATCH R_OUT=${R_OUT}" 
     119      StoreCMIP=${R_OUT} 
     120    else 
     121      IGCM_debug_Print 1 "LIBIGCM CONFIG:: ELSE CMIP_BUF=${CMIP6_BUF}" 
     122      StoreCMIP=${CMIP6_BUF} 
     123    fi 
     124    # Ensemble cases (default all members outputs in same directory) 
     125    if ( [ ! X${config_Ensemble_EnsembleName} = X ] ) ; then 
     126      R_SAVE=${R_OUT}/${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${config_Ensemble_EnsembleName} 
     127      R_FIGR=${R_FIG}/${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${config_Ensemble_EnsembleName} 
     128      R_BUFR=${R_BUF}/${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${config_Ensemble_EnsembleName} 
     129      R_DODS=${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${config_Ensemble_EnsembleName} 
     130      R_CMIP=${StoreCMIP}/${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${config_Ensemble_EnsembleName} 
     131      IGCM_debug_Print 1 "LIBIGCM CONFIG:: ENSEMBLE R_CMIP=${R_CMIP}" 
     132 
     133      # PERTURB Ensemble Outputs 
     134      if ( [ X${config_Ensemble_EnsembleType} = XEns_PERTURB ] ) ; then 
     135        if ( [ ! X${config_Ensemble_EnsembleDate} = X ] ) ; then 
     136          R_SAVE=${R_SAVE}/${config_Ensemble_EnsembleDate}/${FreeName} 
     137          R_FIGR=${R_FIGR}/${config_Ensemble_EnsembleDate}/${FreeName} 
     138          R_BUFR=${R_BUFR}/${config_Ensemble_EnsembleDate}/${FreeName} 
     139          R_DODS=${R_DODS}/${config_Ensemble_EnsembleDate}/${FreeName} 
     140          R_CMIP=${R_CMIP}/${config_Ensemble_EnsembleDate}/${FreeName} 
     141        else 
     142          R_SAVE=${R_SAVE}/${FreeName} 
     143          R_FIGR=${R_FIGR}/${FreeName} 
     144          R_BUFR=${R_BUFR}/${FreeName} 
     145          R_DODS=${R_DODS}/${FreeName} 
     146          R_CMIP=${R_CMIP}/${FreeName} 
     147        fi 
     148      # DATE Ensemble Outputs 
     149      elif ( [ X${config_Ensemble_EnsembleType} = XEns_DATE ] ) ; then 
     150        R_FIGR=${R_FIGR}/${FreeName} 
     151        R_BUFR=${R_BUFR}/${FreeName} 
     152        R_DODS=${R_DODS}/${FreeName} 
     153        IGCM_debug_Print 1 "LIBIGCM CONFIG:: ENSEMBLE DATE R_CMIP=${R_CMIP}" 
     154        if ( [ X${config_Ensemble_EnsembleMergeSave} = X ] || [ X${config_Ensemble_EnsembleMergeSave} = Xn ] ||  
     155             [ X${config_Ensemble_EnsembleMergeSave} = Xno ] ) ; then 
     156          # One SAVE directory per member, else common output dir for all members 
     157          R_SAVE=${R_SAVE}/${FreeName} 
     158          R_CMIP=${R_CMIP}/${FreeName} 
     159          IGCM_debug_Print 1 "LIBIGCM CONFIG:: ENSEMBLE DATE MERGE R_CMIP=${R_CMIP}" 
     160        fi 
     161      fi 
    119162    else 
    120163      R_SAVE=${R_OUT}/${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${FreeName} 
     
    122165      R_BUFR=${R_BUF}/${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${FreeName} 
    123166      R_DODS=${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${FreeName} 
    124       R_CMIP=${CMIP6_BUF}/${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${FreeName} 
     167      R_CMIP=${StoreCMIP}/${config_UserChoices_TagName}/${config_UserChoices_SpaceName}/${config_UserChoices_ExperimentName}/${FreeName} 
    125168    fi 
    126169  else 
     
    137180    fi 
    138181  fi 
    139  
     182   
     183  IGCM_debug_Print 1 "LIBIGCM CONFIG:: R_CMIP = ${R_CMIP}" 
     184   
    140185  #==================================================== 
    141186  # Define R_OUT_KSH : Storage place for job output 
  • trunk/libIGCM/libIGCM_ensemble/libIGCM_ensemble.ksh

    r1489 r1565  
    2929#                         : removed Ens_PERTURB_PERTU_MAP_LIST case 
    3030#  
    31 # Author: Simona Flavoni & Nicola Lebas 
    32 # Contact: Simona.Flavoni__at__locean-ipsl.upmc.fr 
     31# Author: Simona Flavoni & Nicolas Lebas 
     32# Contact: Simona.Flavoni__at__locean.ipsl.fr & Nicolas.Lebas__at__locean.ipsl.fr 
    3333# IPSL (2019) 
    3434#************************************************************** 
     
    3838{ 
    3939  IGCM_debug_PushStack "IGCM_ensemble_Init" 
    40  
     40   
    4141  IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_PERTURB active 
    4242  IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_DATE active 
    43   
    44   Job_Period=10 # PARAMETER USED in function IGCM_ensemble_FilesUpdate 
    45  
     43   
     44  Job_Period=10 # Default PARAMETER USED in function IGCM_ensemble_FilesUpdate 
     45  answer="" 
     46  print - "\nHit Enter or give PERIOD_NB for all member's Job (default is 10)" 
     47  read answer 
     48   
     49  if [ "X${answer}" != "X" ] ; then 
     50      Job_Period=${answer} 
     51  fi 
     52  print "\nPeriodNb in ensemble Jobs is ${Job_Period}" 
     53   
    4654  IGCM_debug_Print 1 "Ens_PERTURB ACTIVE     = ${ensemble_Ens_PERTURB_active}" 
    4755  IGCM_debug_Print 1 "Ens_DATE ACTIVE        = ${ensemble_Ens_DATE_active}" 
    4856  echo "" 
    49  
     57   
    5058  #==================================================== 
    5159  # Define ARCHIVE : Dedicated to large files 
     
    5563  # Define R_BUF   : USELESS and DEPRECATED output tree. 
    5664  IGCM_sys_defineArchives 
    57  
     65   
    5866  IGCM_debug_PopStack "IGCM_ensemble_Init" 
    5967} 
     
    139147  # ==> config.card 
    140148  # [ENSEMBLE] 
    141   IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card Ensemble EnsembleRun 'y' 
    142149  IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card Ensemble EnsembleName $(eval echo $\ensemble_Ens_${EnsembleType}_NAME) 
    143150  IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card Ensemble EnsembleDate ${HumanDateBegin} 
    144151  IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card Ensemble EnsembleType "Ens_${EnsembleType}" 
     152  IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card Ensemble EnsembleMergeSave ${ensemble_Ens_DATE_MERGE_SAVE} 
    145153   
    146154  # [UserChoices] 
     
    369377      IGCM_sys_Mkdir ${SUBMIT_DIR}/${StartDir} 
    370378      IGCM_sys_Cd ${SUBMIT_DIR}/${StartDir} 
    371       ln -s ../../.resol . 
    372       ln -s ../../.libmpi . 
     379      ln -s ../../.resol .                        # TODO: remove for future version (>6.1) 
     380      ln -s ../../.libmpi .                       # TODO: remove for future version (>6.1) 
     381      ln -s ../../SOURCES . 
     382      ln -s ../../ARCH . 
    373383      IGCM_sys_Cd ${RUN_DIR} 
    374384    fi 
     
    470480    IGCM_sys_Mkdir ${SUBMIT_DIR}/${StartDir} 
    471481    IGCM_sys_Cd ${SUBMIT_DIR}/${StartDir} 
    472     ln -s ../../.resol . 
    473     ln -s ../../.libmpi . 
     482    ln -s ../../.resol .                        # TODO: remove for future version (>6.1) 
     483    ln -s ../../.libmpi .                       # TODO: remove for future version (>6.1) 
     484    ln -s ../../SOURCES . 
     485    ln -s ../../ARCH . 
    474486    IGCM_sys_Cd ${RUN_DIR} 
    475487  fi 
     
    773785  IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_DATE active 
    774786  IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_DATE NAME 
    775   IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_DATE BEGIN_INIT 
    776   IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_DATE BEGIN_RESTART 
    777   IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_DATE END_INIT 
     787  IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_DATE MERGE_SAVE 
    778788  IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_DATE STARTDATE 
    779789  IGCM_card_DefineArrayFromOption    ${F_CFG_ENS} Ens_DATE NONPERIODIC 
     
    794804  IGCM_debug_Print 1 "ACTIVE               = ${ensemble_Ens_DATE_active}" 
    795805  IGCM_debug_Print 1 "NAME                 = ${ensemble_Ens_DATE_NAME}" 
    796   IGCM_debug_Print 1 "BEGIN_INIT           = ${ensemble_Ens_DATE_BEGIN_INIT}" 
    797   IGCM_debug_Print 1 "END_INIT             = ${ensemble_Ens_DATE_END_INIT}" 
    798   IGCM_debug_Print 1 "BEGIN_RESTART        = ${ensemble_Ens_DATE_BEGIN_RESTART}" 
     806  IGCM_debug_Print 1 "MERGE_SAVE           = ${ensemble_Ens_DATE_MERGE_SAVE}" 
    799807  IGCM_debug_Print 1 "STARTDATE            = ${ensemble_Ens_DATE_STARTDATE}" 
    800808  IGCM_debug_Print 1 "NONPERIODIC          = ${ensemble_Ens_DATE_NONPERIODIC[*]}" 
     
    828836  # A few checks for the Non-Periodic case: 
    829837  # *************************************** 
    830 #  if [[ ${#ensemble_Ens_DATE_NONPERIODIC[*]} != ${#ensemble_Ens_DATE_RESTART_NONPERIODIC[*]} ]] ; then 
    831 #    IGCM_debug_Exit "IGCM_ensemble_DateInit: NONPERIODIC and RESTART_NONPERIODIC lists have different sizes" 
    832 #    IGCM_debug_Verif_Exit 
    833 #  fi 
    834838 
    835839  if [[ ${#ensemble_Ens_DATE_RESTART_NONPERIODIC[*]} > 0 ]] && [[ ${ensemble_Ens_DATE_RESTART_NONPERIODIC[*]} != _0_ ]]; then 
     
    837841 
    838842    # Use LENGTH if no NONPERIODIC_LENGTH given 
    839     if [[ ${#ensemble_Ens_DATE_LENGTH_NONPERIODIC[*]} < ${#ensemble_Ens_DATE_NONPERIODIC[*]} ]] || 
    840            [[ X"${ensemble_Ens_DATE_LENGTH_NONPERIODIC[0]}" = "XOption" ]] ; then 
     843    if ( [ ${#ensemble_Ens_DATE_LENGTH_NONPERIODIC[*]} -lt ${#ensemble_Ens_DATE_NONPERIODIC[*]} ] || [[ "X${ensemble_Ens_DATE_LENGTH_NONPERIODIC[0]}" = "XOption" ]] ) ; then 
    841844        IGCM_debug_Print 1 "WARNING: LENGTH_NONPERIODIC is not fill (or not correctly). " 
    842845        IGCM_debug_Print 1 "Use LENGTH value '${ensemble_Ens_DATE_LENGTH}' for all NONPERIODIC runs" 
    843       DateNum=0 
    844       while [ ${DateNum} -lt ${#ensemble_Ens_DATE_NONPERIODIC[*]} ] ; do 
    845         ensemble_Ens_DATE_LENGTH_NONPERIODIC[${DateNum}]=${ensemble_Ens_DATE_LENGTH} 
    846         (( DateNum = DateNum + 1 )) 
    847       done 
     846        DateNum=0 
     847        while [ ${DateNum} -lt ${#ensemble_Ens_DATE_RESTART_NONPERIODIC[*]} ] ; do 
     848            ensemble_Ens_DATE_LENGTH_NONPERIODIC[${DateNum}]=${ensemble_Ens_DATE_LENGTH} 
     849            (( DateNum = DateNum + 1 )) 
     850        done 
    848851    fi 
    849852     
     
    864867      IGCM_debug_Print 1 "WARNING: INITFROM_NONPERIODIC is not fill (or not correctly). Use INITFROM value '${ensemble_Ens_DATE_INITFROM}' for all NONPERIODIC runs" 
    865868      DateNum=0 
    866       while [ ${DateNum} -lt ${#ensemble_Ens_DATE_NONPERIODIC[*]} ] ; do 
     869      while [ ${DateNum} -lt ${#ensemble_Ens_DATE_RESTART_NONPERIODIC[*]} ] ; do 
    867870        ensemble_Ens_DATE_INITFROM_NONPERIODIC[${DateNum}]=${ensemble_Ens_DATE_INITFROM} 
    868871        (( DateNum = DateNum + 1 )) 
     
    874877      IGCM_debug_Print 1 "WARNING: INITPATH_NONPERIODIC is not fill (or not correctly). Use INITPATH value '${ensemble_Ens_DATE_INITPATH}' for all NONPERIODIC runs" 
    875878      DateNum=0 
    876       while [ ${DateNum} -lt ${#ensemble_Ens_DATE_NONPERIODIC[*]} ] ; do 
     879      while [ ${DateNum} -lt ${#ensemble_Ens_DATE_RESTART_NONPERIODIC[*]} ] ; do 
    877880        ensemble_Ens_DATE_INITPATH_NONPERIODIC[${DateNum}]=${ensemble_Ens_DATE_INITPATH} 
    878881        (( DateNum = DateNum + 1 )) 
     
    934937    IGCM_sys_Mkdir ${SUBMIT_DIR}/${StartDir} 
    935938    IGCM_sys_Cd ${SUBMIT_DIR}/${StartDir} 
    936     ln -s ../../.resol . 
    937     ln -s ../../.libmpi . 
     939    ln -s ../../.resol .                        # TODO: remove for future version (>6.1) 
     940    ln -s ../../.libmpi .                       # TODO: remove for future version (>6.1) 
     941    ln -s ../../SOURCES . 
     942    ln -s ../../ARCH . 
    938943    IGCM_sys_Cd ${RUN_DIR} 
    939944  fi 
     
    949954    (( ii=DateNum + 1 )) 
    950955     
    951     MemberDir="${ensemble_Ens_DATE_NAME}${ii}" 
     956    # Member number on 2 digits (01 02 ... 10 11) 
     957    if (( ii < 10)) then 
     958        MemberDir="${ensemble_Ens_DATE_NAME}-0${ii}" 
     959    else 
     960         MemberDir="${ensemble_Ens_DATE_NAME}-${ii}" 
     961    fi 
    952962    IGCM_debug_Print 3 "${MemberDir}" 
    953963    echo "Create: ${MemberDir}" 
Note: See TracChangeset for help on using the changeset viewer.