[1154] | 1 | # $Id$ |
---|
[693] | 2 | ##################################################################### |
---|
[1301] | 3 | # Author : Claude Talandier for NEMO team |
---|
| 4 | # Contact : nemo_st@locean-ipsl.upmc.fr |
---|
[693] | 5 | # |
---|
[1564] | 6 | # VARS TO SET: 9 + 1 (optional) |
---|
| 7 | # - NAM_V : name of the current test (associated to the same directory name) |
---|
| 8 | # - LISTE_CONF : configurations name (ORCA2_LIM, GYRE ...) |
---|
| 9 | # - JOBS_2LAUN : jobs to launch (nojob, all, long, short or gtime) |
---|
| 10 | # - BUILD_MAKE : run type (mon, mpi ... ) |
---|
| 11 | # - MAK_TIME : to perform a CPU time check use keyword: 'timing' or 'notiming' |
---|
| 12 | # - USE_IOMPUT : use or not the new I/O interface |
---|
| 13 | # - USE_IOSERVER : use the I/O interface using the server possibility |
---|
| 14 | # - NB_PROCS_IOSERVER : number of processors dedicated to the I/O server |
---|
| 15 | # - MAK_MEMO : to perform a memory check use keyword: 'memo' or 'nomemo' |
---|
| 16 | # - REF_TAGV : (optional) tag/experience name. If specified, |
---|
| 17 | # current results will be compare to the results |
---|
| 18 | # of this tag/experience (for a given configuration and run type) |
---|
[693] | 19 | # |
---|
| 20 | # WORK: Allows to launch all the validation process, i.e. |
---|
[1321] | 21 | # I. to build dependencies use: > gmake -s dep |
---|
| 22 | # II. to launch compilation,simulation,final report use: > gmake |
---|
[1564] | 23 | # III. to remove NetCDF output files of the NAM_V experience use: > gmake delf |
---|
[693] | 24 | # |
---|
| 25 | ##################################################################### |
---|
| 26 | SHELL = /bin/ksh |
---|
| 27 | ##################################################################### |
---|
| 28 | ##### Begin Users modifications |
---|
| 29 | ##################################################################### |
---|
| 30 | #- |
---|
| 31 | #- Name of the test |
---|
[1476] | 32 | NAM_V = 2TEST |
---|
[693] | 33 | #- |
---|
| 34 | #- Configurations list which must be tested |
---|
[1464] | 35 | LISTE_CONF = GYRE GYRE_LOBSTER ORCA2_LIM ORCA2_LIM3 ORCA2_LIM_PISCES ORCA2_OFF_PISCES |
---|
[693] | 36 | #- |
---|
[808] | 37 | #- Jobs to launch use keyword: nojob, all, long, short or gtime |
---|
| 38 | JOBS_2LAUN = all |
---|
| 39 | #- |
---|
[693] | 40 | #- Compilation list type to perform, mon (mono) &/or mpi &/or omp (Open-MP) |
---|
[1412] | 41 | BUILD_MAKE = mon mpi |
---|
[693] | 42 | #- |
---|
[1412] | 43 | #- Do we use the new io interface (iom_put)? With the io_server? On how many procs? |
---|
| 44 | USE_IOMPUT = false |
---|
| 45 | USE_IOSERVER = false |
---|
| 46 | NB_PROCS_IOSERVER = 1 |
---|
| 47 | #- |
---|
[1564] | 48 | #- Proceed to a timing, use keyword: 'timing' or 'notiming' |
---|
[693] | 49 | MAK_TIME = notiming |
---|
| 50 | #- |
---|
[1564] | 51 | #- Proceed to a memory check, use keyword: 'memo' or 'nomemo' |
---|
[958] | 52 | MAK_MEMO = memo |
---|
[808] | 53 | #- |
---|
[1564] | 54 | #- Experience name or reference Tag name (nemo_v2, nemo_v2_3 or nemo_v3) |
---|
| 55 | REF_TAGV = nemo_v3 |
---|
[693] | 56 | #- |
---|
| 57 | ##################################################################### |
---|
| 58 | ##### End Users modifications |
---|
| 59 | ##################################################################### |
---|
| 60 | |
---|
| 61 | ## |
---|
| 62 | all: $(LISTE_CONF) |
---|
| 63 | @echo ' ' |
---|
| 64 | @echo ' ----->>>>>>>>> Compilation process ended for configuration(s) :' $(LISTE_CONF) |
---|
| 65 | @echo ' ' |
---|
| 66 | |
---|
| 67 | #- Make good links & launch the compilation process |
---|
[1301] | 68 | $(LISTE_CONF): |
---|
[693] | 69 | @echo |
---|
| 70 | @echo "CONFIGURATION :" $@ |
---|
[1560] | 71 | @( if [ ! -d ${NAM_V} ] ; then mkdir ${NAM_V} ; fi ; ) |
---|
[1476] | 72 | @( cd ${NAM_V} ; MYREP_LIST=`( ls *.[Ffh]90 )` ; cd ../../$@/MY_SRC ; rm -rf *.[Ffh]90 ; \ |
---|
| 73 | if [ -n "$$MYREP_LIST" ] ; then ln -sf ../../NVTK/${NAM_V}/*.[Ffh]90 . ; fi ; ) |
---|
[693] | 74 | @echo "test=" $(NAM_V) > ../$@/specifs.txt |
---|
| 75 | @echo "runs=" $(BUILD_MAKE) >> ../$@/specifs.txt |
---|
| 76 | @echo "time=" $(MAK_TIME) >> ../$@/specifs.txt |
---|
[808] | 77 | @echo "memo=" $(MAK_MEMO) >> ../$@/specifs.txt |
---|
[693] | 78 | @echo "tagname=" $(REF_TAGV) >> ../$@/specifs.txt |
---|
[1301] | 79 | @echo `svn info ../../modeles/NEMO | grep URL` >> ../$@/specifs.txt |
---|
| 80 | @echo `svn info ../../modeles/NEMO | grep Revision ` >> ../$@/specifs.txt |
---|
[1476] | 81 | @( cd ${NAM_V} ; LSFILES=`( ls *.[Ffh]90 )` ; if [ -n "$$LSFILES" ] ; \ |
---|
[1365] | 82 | then echo $$LSFILES > ../../$@/f2test.txt ; else rm -f ../../$@/f2test.txt ; \ |
---|
[1564] | 83 | echo " " >../../$@/f2test.txt ; fi ; ) |
---|
[693] | 84 | @echo |
---|
[1476] | 85 | @echo ' ----->>>>>>>>> Links from NVTK/'${NAM_V} ' to '$@/MY_SRC 'done' |
---|
[693] | 86 | @echo |
---|
| 87 | @echo ' Build the Makefile for' $@ 'configuration' |
---|
[1301] | 88 | @../../util/ins_make -w $@ |
---|
[1564] | 89 | @( cd ../$@/WORK ; grep P_P Makefile | head -1 > $$ ; LSCPPKEY=`( cut -c,6- $$ )` ; \ |
---|
| 90 | rm -f $$ ; if [ -n "$$LSCPPKEY" ] ; then echo $$LSCPPKEY >> ../f2test.txt ; fi ; ) |
---|
[693] | 91 | @echo |
---|
| 92 | @echo |
---|
[1412] | 93 | @gmake -C ../$@ RUN='$(BUILD_MAKE)' JOB=$(JOBS_2LAUN) RTG=$(REF_TAGV) MKTE=$(MAK_TIME) MKMO=$(MAK_MEMO) REXP=$(NAM_V) USE_IOMPUT=$(USE_IOMPUT) USE_IOSERVER=$(USE_IOSERVER) NB_PROCS_IOSERVER=$(NB_PROCS_IOSERVER) -j 2 > $@_step.txt |
---|
[1301] | 94 | |
---|
| 95 | #- Rebuild dependencies when new cpp key and/or new module used |
---|
| 96 | dep: clear |
---|
[1476] | 97 | @for conf in ${LISTE_CONF}; do \ |
---|
[1301] | 98 | echo ; \ |
---|
| 99 | echo ; \ |
---|
| 100 | echo ; \ |
---|
| 101 | echo ' ----->>>>>>>>> Rebuild dependencies for the' $$conf 'configuration' ; \ |
---|
| 102 | echo ; \ |
---|
[1476] | 103 | echo ' > Build links from NVTK/'${NAM_V} ' to '$$conf'/MY_SRC directory :' ; \ |
---|
[1301] | 104 | echo ; \ |
---|
[1476] | 105 | cd ${NAM_V} ; \ |
---|
[1365] | 106 | MYREP_LIST=`( ls *.[Ffh]90 )` ; \ |
---|
| 107 | cd ../../$$conf/MY_SRC ; rm -rf *.[Ffh]90 ; \ |
---|
[1301] | 108 | if [ -n "$$MYREP_LIST" ] ; \ |
---|
| 109 | then for F in $$MYREP_LIST; do \ |
---|
[1476] | 110 | echo " # link from NVTK/"${NAM_V} "to "$$conf"/MY_SRC/$$F" ; \ |
---|
| 111 | ln -sf ../../NVTK/${NAM_V}/$$F . ; \ |
---|
[1301] | 112 | done ; fi ; \ |
---|
| 113 | echo ; \ |
---|
| 114 | echo ; \ |
---|
| 115 | echo ' > Rebuild links in the '$$conf'/WORK directory:' ; \ |
---|
| 116 | echo ; \ |
---|
| 117 | cd ../WORK ; \ |
---|
| 118 | rm -rf `ls | fgrep -v -f .patron` ; \ |
---|
| 119 | check=`grep OPA_SRC .config` ; \ |
---|
| 120 | if [ -n "$$check" ] ; then \ |
---|
| 121 | echo " # use OPA_SRC component files" ; \ |
---|
| 122 | ln -sf ../../../modeles/NEMO/OPA_SRC/*.[Ffh]90 . ; \ |
---|
| 123 | ln -sf ../../../modeles/NEMO/OPA_SRC/*/*.[Ffh]90 . ; \ |
---|
| 124 | fi ; \ |
---|
| 125 | check=`grep LIM_SRC_2 .config` ; \ |
---|
| 126 | if [ -n "$$check" ] ; then \ |
---|
| 127 | echo " # use LIM_SRC_2 component files" ; \ |
---|
| 128 | ln -sf ../../../modeles/NEMO/LIM_SRC_2/*.[Ffh]90 . ; \ |
---|
| 129 | fi ; \ |
---|
| 130 | check=`grep LIM_SRC_3 .config` ; \ |
---|
| 131 | if [ -n "$$check" ] ; then \ |
---|
| 132 | echo " # use LIM_SRC_3 component files" ; \ |
---|
| 133 | ln -sf ../../../modeles/NEMO/LIM_SRC_3/*.[Ffh]90 . ; \ |
---|
| 134 | fi ; \ |
---|
| 135 | check=`grep NST_SRC .config` ; \ |
---|
| 136 | if [ -n "$$check" ] ; then \ |
---|
| 137 | echo " # use NST_SRC component files" ; \ |
---|
| 138 | \rm -rf agrif_opa_interp.F90 ; \ |
---|
| 139 | \rm -rf agrif_opa_sponge.F90 ; \ |
---|
| 140 | \rm -rf agrif_opa_update.F90 ; \ |
---|
| 141 | \rm -rf agrif_top_interp.F90 ; \ |
---|
| 142 | \rm -rf agrif_top_sponge.F90 ; \ |
---|
| 143 | \rm -rf agrif_top_update.F90 ; \ |
---|
| 144 | ln -sf ../../../modeles/NEMO/NST_SRC/*.[Ffh]90 . ; \ |
---|
| 145 | fi ; \ |
---|
| 146 | check=`grep C1D_SRC .config` ; \ |
---|
| 147 | if [ -n "$$check" ] ; then \ |
---|
| 148 | echo " # use C1D_SRC component files" ; \ |
---|
| 149 | ln -sf ../../../modeles/NEMO/C1D_SRC/*.[Ffh]90 . ; \ |
---|
| 150 | fi ; \ |
---|
| 151 | check=`grep TOP_SRC .config` ; \ |
---|
| 152 | if [ -n "$$check" ] ; then \ |
---|
| 153 | echo " # use TOP_SRC component files" ; \ |
---|
| 154 | \rm -rf trcstp.F90 ; \ |
---|
| 155 | \rm -rf sms.F90 ; \ |
---|
| 156 | \rm -rf trcini.F90 ; \ |
---|
| 157 | ln -sf ../../../modeles/NEMO/TOP_SRC/*.[Ffh]90 . ; \ |
---|
| 158 | ln -sf ../../../modeles/NEMO/TOP_SRC/*/*.[Ffh]90 . ; \ |
---|
| 159 | fi ; \ |
---|
| 160 | check=`grep OFF_SRC .config` ; \ |
---|
| 161 | if [ -n "$$check" ] ; then \ |
---|
| 162 | echo " # use OFF_SRC component files" ; \ |
---|
| 163 | ln -sf ../../../modeles/NEMO/OFF_SRC/*.[Ffh]90 . ; \ |
---|
| 164 | ln -sf ../../../modeles/NEMO/OFF_SRC/*/*.[Ffh]90 . ; \ |
---|
| 165 | fi ; \ |
---|
| 166 | mn=`awk '{ print $$1 }' .config ` ; \ |
---|
| 167 | myrep=../../../config/$$mn/MY_SRC ; \ |
---|
| 168 | echo " # use MY_SRC component files" ; \ |
---|
| 169 | for i in `ls $$myrep` ; do \ |
---|
| 170 | [ -f $$i ] && \rm -rf $$i ;\ |
---|
| 171 | done ; \ |
---|
[1365] | 172 | cd $$myrep ; \ |
---|
| 173 | myrep_list=`( ls *.[Ffh]90 )` ; \ |
---|
[1475] | 174 | cd ../WORK ; \ |
---|
[1301] | 175 | if [ -n "$$myrep_list" ] ; then \ |
---|
| 176 | for F in $$myrep_list; do \ |
---|
| 177 | ln -sf $$myrep/$$F . ; \ |
---|
| 178 | done ; \ |
---|
| 179 | fi ; \ |
---|
| 180 | cd .. ; ../NVTK/fait_AA_make ; \ |
---|
[1475] | 181 | cd WORK ; \ |
---|
| 182 | ls -1 | fgrep -v -f .patron >tmplist ; \ |
---|
| 183 | cp tmplist SRC_FILE_LIST.temp ; \ |
---|
[1301] | 184 | echo ; \ |
---|
| 185 | echo " #################################" ;\ |
---|
| 186 | echo " Dependencies for" $$conf "ready" ;\ |
---|
| 187 | echo " #################################" ;\ |
---|
| 188 | echo ;\ |
---|
[1475] | 189 | cd ../../NVTK ; \ |
---|
[1301] | 190 | done |
---|
| 191 | @echo |
---|
| 192 | @echo " ##################################################" |
---|
| 193 | @echo " Launch the compilation and job process using gmake" |
---|
| 194 | @echo " ##################################################" |
---|
| 195 | @echo |
---|
| 196 | |
---|
| 197 | clear : |
---|
| 198 | @echo |
---|
| 199 | @echo |
---|
| 200 | @clear |
---|
[1564] | 201 | |
---|
| 202 | #- Delete NetCDF files for a given experience to save memory |
---|
| 203 | delf: |
---|
| 204 | @for conf in ${LISTE_CONF}; do \ |
---|
| 205 | echo ; \ |
---|
| 206 | echo ; \ |
---|
| 207 | echo ; \ |
---|
| 208 | echo ' ----->>>>>>>>> Remove all' $$conf '*.nc output files for the' ${NAM_V} 'experience' ; \ |
---|
| 209 | echo ; \ |
---|
| 210 | echo ; \ |
---|
| 211 | for typer in ${BUILD_MAKE}; do \ |
---|
| 212 | rm -f DELFIL/NEMO_VALID/W$$conf/$$typer/LONG/${NAM_V}/*.nc ; \ |
---|
| 213 | rm -f DELFIL/NEMO_VALID/W$$conf/$$typer/1_SHORT/${NAM_V}/*.nc ; \ |
---|
| 214 | rm -f DELFIL/NEMO_VALID/W$$conf/$$typer/2_SHORT/${NAM_V}/*.nc ; \ |
---|
| 215 | rm -f DELFIL/NEMO_VALID/W$$conf/$$typer/GTIME/${NAM_V}/*.nc ; \ |
---|
| 216 | done ; \ |
---|
| 217 | done |
---|