source: trunk/libIGCM/libIGCM_ensemble/libIGCM_ensemble.ksh @ 677

Last change on this file since 677 was 677, checked in by sdipsl, 12 years ago
  • Prepare generic ensemble handling. hindcast/forecast first. parametric next.
  • Property svn:keywords set to Revision Author Date
File size: 5.8 KB
Line 
1#!/bin/ksh
2
3#**************************************************************
4# Author: Sonia Labetoulle
5# Contact: Sonia.Labetoulle__at__locean-ipsl.upmc.fr
6# $Revision::$ Revision of last commit
7# $Author::$ Author of last commit
8# $Date::$ Date of last commit
9# IPSL (2012)
10#  This software is governed by the CeCILL licence see libIGCM/libIGCM_CeCILL.LIC
11#
12#**************************************************************
13
14function IGCM_ensemble_FilesUpdate
15{
16  IGCM_debug_PushStack "IGCM_ensemble_FilesUpdate"
17
18#  set -vx
19
20  # Debug Print :
21  echo
22  IGCM_debug_Print 1 "IGCM_ensemble_FilesUpdate :"
23  echo
24
25  HumanDateBegin=$(   IGCM_date_ConvertFormatToHuman ${1} )
26  HumanDateEnd=$(     IGCM_date_ConvertFormatToHuman ${2} )
27  HumanRestartDate=$( IGCM_date_ConvertFormatToHuman ${3} )
28  # ==> config.card
29  IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card Ensemble EnsembleRun 'y'
30  IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card Ensemble EnsembleName ${ensemble_Ens_PERTURB_NAME}
31  IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card Ensemble EnsembleDate ${StartDir}
32
33  IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card UserChoices JobName   ${MemberDir}
34  IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card UserChoices DateBegin ${HumanDateBegin}
35  IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card UserChoices DateEnd   ${HumanDateEnd}
36  IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card Restarts OverRule "n"
37
38  for Comp in ${config_ListOfComponents[*]} ; do
39    IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card ${Comp} Restart "y"
40    IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card ${Comp} RestartDate ${HumanRestartDate}
41    IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card ${Comp} RestartJobName ${ensemble_Ens_PERTURB_INITFROM}
42    IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card ${Comp} RestartPath ${ensemble_Ens_PERTURB_INITPATH}
43  done
44  # ==> Job
45  # SD : to be encapsulated in a sys function
46  sed -e "s/\(#MSUB -r \)[A-Za-z0-9]*\( *#.*\)/\1 ${MemberDir} \2/"           \
47      -e "s/\(#MSUB -o Script_Output_\)[A-Za-z0-9]*\(\.*\)/\1${MemberDir}\2/" \
48      -e "s/\(#MSUB -e Script_Output_\)[A-Za-z0-9]*\(\.*\)/\1${MemberDir}\2/" \
49      ${SUBMIT_DIR}/${StartDir}/${MemberDir}/Job_${MemberDir} > Job_${MemberDir}.tmp
50  IGCM_sys_Mv Job_${MemberDir}.tmp ${SUBMIT_DIR}/${StartDir}/${MemberDir}/Job_${MemberDir}
51
52  IGCM_debug_PopStack "IGCM_ensemble_FilesUpdate"
53}
54
55function IGCM_ensemble_DirectoryName
56{
57  IGCM_debug_PushStack "IGCM_ensemble_DirectoryName"
58
59  #.. Debug Print ..
60  echo
61  IGCM_debug_Print 1 "IGCM_ensemble_DirectoryName :"
62  echo
63
64#  set -vx
65
66  Name=$1
67  Duree=$2
68  year=$3
69  month=$4
70
71  set -A AlphaMonth a b c d e f g h i j k l
72
73  # - Build directory name
74  case ${Duree} in
75    *Y|*y)
76      siecle="$( echo $year | cut -c1-2 )" 
77      siecle=$( (( $siecle - 18 )) )
78      StartYear="${siecle}$( echo $year | cut -c3-4 )"
79      StartDir="${Name}${StartYear}"
80      ;;
81    *M|*m)
82      echo $month
83      siecle="$( echo $year | cut -c1-2 )" 
84      siecle=$( (( $siecle - 18 )) )
85      StartYear="${siecle}$( echo $year | cut -c3-4 )"
86      StartMonth="${AlphaMonth[ (( $month - 1 )) ]}"
87      StartDir="${Name}${StartYear}${StartMonth}"
88      ;;
89  esac
90
91  IGCM_debug_PopStack "IGCM_ensemble_DirectoryName"
92}
93
94function IGCM_ensemble_PerturbFile
95{
96  IGCM_debug_PushStack "IGCM_ensemble_PerturbFile"
97
98  #.. Debug Print ..
99  echo
100  IGCM_debug_Print 1 "IGCM_ensemble_PerturbFile :"
101  echo
102
103  #.. FileIn ? => RestartDate ..
104  DirIn="${ensemble_Ens_PERTURB_INITPATH}/${ensemble_Ens_PERTURB_INITFROM}/${PerturbComp}/Restart"
105  FileIn="${ensemble_Ens_PERTURB_INITFROM}_${RestartDate}_${PerturbFile}.nc"
106  DirOut="${RestartDir}/${MemberDir}/${PerturbComp}/Restart"
107#  FileOut="${ensemble_Ens_PERTURB_INITFROM}_${RestartDate}_${PerturbFile}_${MemberDir}.nc"
108#  FileOut=${FileIn}
109  FileOut="${MemberDir}_${RestartDate}_${PerturbFile}.nc"
110  IGCM_debug_Print 1 "FileIn  = ${DirIn}/${FileIn}"
111  IGCM_debug_Print 1 "FileOut = ${DirOut}/${FileOut}"
112
113  # * Create member restart directory
114  IGCM_sys_TestDirArchive ${DirOut}
115  RET=$?
116  if [ $RET -gt 0 ] ; then
117    IGCM_sys_MkdirArchive ${DirOut}
118  fi
119
120  IGCM_sys_TestFileArchive ${DirOut}/${FileOut}
121  RET=$?
122  if [ $RET -gt 0 ] ; then
123#    ${PerturbExe} ${DirIn}/${FileIn} ${DirOut}/${FileOut} \
124#                  ${PerturbVar} ${PerturbAmp}
125#    IGCM_sys_Cp ${DirIn}/${FileIn} ${DirOut}/${FileOut}
126#    IGCM_sys_Chmod u+w ${DirOut}/${FileOut}
127#    ${PerturbExe} ${DirOut}/${FileOut} ${PerturbVar} ${PerturbAmp}
128    IGCM_sys_Get ${DirIn}/${FileIn} ${RUN_DIR}/${FileOut}
129    IGCM_sys_Chmod 744 ${RUN_DIR}/${FileOut}
130
131    ${PerturbExe} ${RUN_DIR}/${FileOut} ${PerturbVar} ${PerturbAmp}
132    if [ $? -ne 0 ] ; then
133      echo "Abend $( basename ${PerturbExe} )"
134      exit
135    fi
136
137    IGCM_sys_Put_Out ${RUN_DIR}/${FileOut} ${DirOut}/ 744
138
139#    IGCM_sys_Cd ${DirOut}
140#    ln -s ${DirIn}/${ensemble_Ens_PERTURB_INITFROM}_${RestartDate}_flxat.nc ${MemberDir}_${RestartDate}_flxat.nc
141#    IGCM_sys_Cd -
142    IGCM_sys_RshArchive "cd ${DirOut} ; ln -s ${DirIn}/${ensemble_Ens_PERTURB_INITFROM}_${RestartDate}_flxat.nc ${MemberDir}_${RestartDate}_flxat.nc"
143  fi
144
145  #.. Update config.card..
146  IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card ${PerturbComp} Restart "y"
147  IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card ${PerturbComp} RestartDate    ${HumanRestartDate}
148  IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card ${PerturbComp} RestartJobName ${MemberDir}
149  IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card ${PerturbComp} RestartPath    ${RestartDir}/
150
151  IGCM_debug_PopStack "IGCM_ensemble_PerturbFile"
152}
Note: See TracBrowser for help on using the repository browser.