New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
prepare_job.sh in branches/2012/dev_r3342_MERCATOR7_SST/NEMOGCM/SETTE – NEMO

source: branches/2012/dev_r3342_MERCATOR7_SST/NEMOGCM/SETTE/prepare_job.sh @ 3572

Last change on this file since 3572 was 3572, checked in by cbricaud, 11 years ago

merge dev_r3342_MERCATOR7_SST with trunk: rev3342 to rev3555.

  • Property svn:executable set to *
File size: 7.5 KB
Line 
1#####################################################
2# Author : Simona Flavoni for NEMO
3# Contact : sflod@locean-ipsl.upmc.fr
4#
5# ----------------------------------------------------------------------
6# NEMO/SETTE , NEMO Consortium (2010)
7# Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
8# ----------------------------------------------------------------------
9#
10# Some scripts called by sette.sh
11# prepare_job.sh   : creates the job script for running job
12######################################################
13#set -vx
14set -o posix
15#set -u
16#set -e
17#+
18#
19# ================
20# prepare_job.sh
21# ================
22#
23# -------------------------------------------------
24# script that creates the job script for NEMO tests
25# -------------------------------------------------
26#
27# SYNOPSIS
28# ========
29#
30# ::
31#
32#  $ ./prepare_job.sh INPUT_FILE_CONFIG_NAME NUMBER_PROC TEST_NAME MPI_FLAG JOB_FILE
33#
34#
35# DESCRIPTION
36# ===========
37#
38# Part of the SETTE package to run tests for NEMO
39#
40# prepare the script $JOB_FILE to run the tests
41#
42# EXAMPLES
43# ========
44#
45# ::
46#
47#  $ ./prepare_job.sh INPUT_FILE_CONFIG_NAME NUMBER_PROC TEST_NAME MPI_FLAG $JOB_FILE
48#
49# prepare the $JOB_FILE for execution
50#
51#
52# TODO
53# ====
54#
55# option debug
56#
57#
58# EVOLUTIONS
59# ==========
60#
61# $Id: prepare_job.sh 3050 2011-11-07 14:11:34Z acc $
62#
63#
64#
65#   * creation
66#
67#-
68#
69
70usage=" Usage : ./prepare_job.sh INPUT_FILE_CONFIG_NAME NUMBER_PROC TEST_NAME MPI_FLAG JOB_FILE"
71usage=" example : ./prepare_job.sh input_ORCA2_LIM_PISCES.cfg 8 SHORT no/yes $JOB_FILE"
72
73
74minargcount=5
75        if [ ${#} -lt ${minargcount} ]
76        then
77                echo "not enough arguments for prepare_job.sh script"
78                echo "control number of argument of prepare_job.sh in sette.sh"
79                echo "${usage}"
80        exit 1
81        fi
82        unset minargcount
83   if [ ! -f ${SETTE_DIR}/output.sette ] ; then
84           touch ${SETTE_DIR}/output.sette
85   fi
86       
87#
88# set and export TEST_NAME. It will be used within the post_test_tidyup function
89#
90INPUTARFILE=$1
91NB_PROC=$2
92TEST_NAME=$3
93MPI_FLAG=$4
94JOB_FILE=$5
95
96# export EXE_DIR. This directory is used to execute model
97#
98export EXE_DIR
99#
100#
101echo "date: `date`" >> ${SETTE_DIR}/output.sette
102echo "" >> ${SETTE_DIR}/output.sette
103echo "running config: ${NEW_CONF}" >> ${SETTE_DIR}/output.sette
104echo "" >> ${SETTE_DIR}/output.sette
105echo "list of cpp_keys: " >> ${SETTE_DIR}/output.sette
106echo "`more ${SETTE_DIR}/../CONFIG/${NEW_CONF}/cpp_${NEW_CONF}.fcm`" >> ${SETTE_DIR}/output.sette
107echo "" >> ${SETTE_DIR}/output.sette
108echo "compiling with: ${CMP_NAM}" >> ${SETTE_DIR}/output.sette
109echo "" >> ${SETTE_DIR}/output.sette
110echo "executing script : \"fcm_job $@\" " >> ${SETTE_DIR}/output.sette
111echo "            " >> ${SETTE_DIR}/output.sette
112
113################################################################
114# SET INPUT
115# get the input tarfile if needed
116tar_file=$(sed -ne "1,1p" ${SETTE_DIR}/$INPUTARFILE)
117if [ "$(cat ${SETTE_DIR}/$INPUTARFILE | grep -c ".tar" )" -ne 0 ] ; then
118   echo "looking for tar file" >> ${SETTE_DIR}/output.sette
119   echo "            " >> ${SETTE_DIR}/output.sette
120   cp ${FORCING_DIR}/${tar_file} ${INPUT_DIR}/.
121   echo "file in ${INPUT_DIR}"
122   if [ ! -f ${INPUT_DIR}/${tar_file} ] ; then
123      echo "PROBLEM during copy of tar file" >> ${SETTE_DIR}/output.sette
124      echo "tar file IS NOT present in ${INPUT_DIR} directory " >> ${SETTE_DIR}/output.sette
125      echo "            " >> ${SETTE_DIR}/output.sette
126      echo "PROBLEM during copy of tar file" 
127      exit 1
128   else 
129      cd ${EXE_DIR} ; tar xvof ${INPUT_DIR}/*.tar ; gunzip -f *gz
130   fi
131fi
132
133if [ ! -f ${EXE_DIR}/namelist_ice ] ; then
134if [ -f ${EXE_DIR}/namelist_ice_lim2 ] ; then
135   echo "choosing for namelist ice " >> ${SETTE_DIR}/output.sette
136   echo "            " >> ${SETTE_DIR}/output.sette
137   cp ${EXE_DIR}/namelist_ice_lim2 ${EXE_DIR}/namelist_ice
138elif  [ -f ${EXE_DIR}/namelist_ice_lim3 ] ; then
139   cp ${EXE_DIR}/namelist_ice_lim3 ${EXE_DIR}/namelist_ice
140fi
141fi
142
143
144if [ "$(cat ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm | grep -c "agrif" )" -ne 0 ] ; then
145   #- Namelist for ocean and ice (agrif fine grid)
146      echo "choosing for namelist for AGRIF" >> ${SETTE_DIR}/output.sette
147      echo "            " >> ${SETTE_DIR}/output.sette
148   cp ${EXE_DIR}/1_namelist_ice_lim2 ${EXE_DIR}/1_namelist_ice
149fi
150################################################################
151
152################################################################
153# RUN OPA
154cd ${EXE_DIR}
155if [ ! -r ${EXE_DIR}/opa ]
156    then
157    echo "executable opa does not exist"
158    echo "executable opa does not exist, exit"  >> ${SETTE_DIR}/output.sette
159    exit 1
160fi
161
162# example for NOCS Altix system using PBS batch submission (requires ${SETTE_DIR}/sette_batch_template file)
163#
164  #  if [ ${MPI_FLAG} == "no" ] ; then
165      case ${COMPILER} in
166         ALTIX_NAUTILUS_MPT)
167                                NB_REM=$( echo $NB_PROC | awk '{print $1 % 4}')
168               if [ ${NB_REM} == 0 ] ; then
169               # number of processes required is an integer multiple of 4
170               #
171               NB_NODES=$( echo $NB_PROC | awk '{print $1 / 4}')
172            else
173               #
174               # number of processes required is not an integer multiple of 4
175               # round up the number of nodes required.
176               #
177               NB_NODES=$( echo $NB_PROC | awk '{printf("%d",$1 / 4 + 1 )}')
178                  fi
179            ;;
180                        ifort_MERCATOR_CLUSTER)
181                                echo NB_PROCS ${NB_PROC}
182                                echo NB_NODES ${NB_NODES}
183                                echo  NB_PROC ${NB_PROC} 
184                                if [ ${NB_PROC} -eq 1 ] ; then
185                                   NB_NODES=1
186                                   QUEUE=monoproc
187                                   NB_PROC_NODE=${NB_PROC} 
188                                else
189                                   if [ ${NB_PROC} -le 8 ] ; then
190                                      NB_NODES=1
191                                      QUEUE=mono
192                                      NB_PROC_NODE=${NB_PROC} 
193                                   else
194                                      NB_NODES=$( echo $NB_PROC | awk '{print $1 - $1 % 8}'  | awk '{print $1 / 8 }')
195                                      QUEUE=multi
196                                      NB_PROC_NODE=8
197                                  fi   
198                                fi   
199                                echo NB_PROCS     ${NB_PROC}
200                                echo NB_NODES     ${NB_NODES}
201                                echo NB_PROC_NODE ${NB_PROC_NODE} 
202            ;;
203         *)
204            NB_NODES=${NB_PROC}
205            ;;
206
207      esac
208#
209# Pass settings into job file by using sed to edit predefined strings
210#
211        cat ${SETTE_DIR}/job_batch_template | sed -e"s/NODES/${NB_NODES}/" -e"s/NPROCS/${NB_PROC}/" \
212             -e"s:DEF_SETTE_DIR:${SETTE_DIR}:" -e"s:DEF_INPUT_DIR:${INPUT_DIR}:" \
213             -e"s:DEF_EXE_DIR:${EXE_DIR}:" \
214             -e"s:DEF_CONFIG_DIR:${CONFIG_DIR}:" \
215             -e"s:MPI_FLAG:${MPI_FLAG}:" \
216             -e"s:DEF_NEMO_VALIDATION:${NEMO_VALIDATION_DIR}:" -e"s:DEF_NEW_CONF:${NEW_CONF}:" \
217             -e"s:DEF_CMP_NAM:${CMP_NAM}:" -e"s:DEF_TEST_NAME:${TEST_NAME}:" > run_sette_test.job
218   
219#
220# create the unique submission job script
221#
222   if [ ! -f $JOB_FILE ] ; then
223      mv run_sette_test.job $JOB_FILE
224   else
225       e=`grep -n "# END_BODY" ${JOB_FILE} | cut -d : -f 1`
226            e=$(($e - 1))
227       head -$e $JOB_FILE > ${JOB_FILE}_new
228       mv ${JOB_FILE}_new ${JOB_FILE}
229       l=`wc -l run_sette_test.job | sed -e "s:run_sette_test.job::"`
230       b=`grep -n "# BODY" run_sette_test.job | cut -d : -f 1`
231       t=$(($l - $b))
232       tail -$t run_sette_test.job >> $JOB_FILE
233   fi
234   
235   chmod a+x $JOB_FILE ; echo "$JOB_FILE is ready"
236
237#fi
Note: See TracBrowser for help on using the repository browser.