#!/bin/bash ############################################################# # Author : Simona Flavoni for NEMO # Contact : sflod@locean-ipsl.upmc.fr # # sette.sh : principal script of SET TEsts for NEMO (SETTE) # ---------------------------------------------------------------------- # NEMO/SETTE , NEMO Consortium (2010) # Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) # ---------------------------------------------------------------------- # ############################################################# #set -x set -o posix #set -u #set -e #+ # # ================ # sette.sh # ================ # # ---------------------------------------------- # Set of tests for NEMO # ---------------------------------------------- # # SYNOPSIS # ======== # # :: # # $ ./sette.sh # # DESCRIPTION # =========== # # principal script is sette.sh, that calls # # makenemo # # creates the exectuable in ${CONFIG_NAME}/BLD/bin/nemo.exe # # (and its link opa in ${CONFIG_NAME}/EXP00) # # param.cfg : sets and loads following directories # # Executing directory (EXE_DIR) # # # Input files storing (INPUT_DIR) # # Temporary directory (if needed) (TMPDIR) # # Validation directory (NEMO_VALIDATION_DIR) # # (note: this file is the same for all configrations to be tested with sette) # # all_functions.sh : loads functions used by sette (note: new functions can be added here) # # set_namelist : function declared in all_functions that set namelist parameters for tests # # fcm_job.sh # # runs job and saves output files (grid_files, restarts, ice_evolu, ftrace.out) # # and it creates tree of VALIDATION, in which there are restart files, solver.stat and ocean.output # # Tree of VALIDATION is: # # NEMO_VALIDATION_DIR/WCONFIG_NAME/WCOMPILER_NAME/TEST_NAME/REVISION_NUMBER(or DATE) # # (note this job needs to have an input_CONFIG.cfg in which can be found input tar file) # # (note other files can be saved adding at the end of fcm_job list of saved files) # # NOTE: if job is not launched for some problems you have executable ready in ${CONFIG_NAME}/EXP00 directory # # NOTE: the changed namelists are leaved in ${CONFIG_NAME}/EXP00 directory # # in ${SETTE_DIR} is created output.sette with the echo of commands run # # if sette.sh is stopped in output.sette there is written the last command executed by sette.sh # # if you run: ./sette.sh 2>&1 | tee out.sette # # in ${SETTE_DIR} out.sette is redirected standard error & standard output # # # EXAMPLES # ======== # # :: # # $ ./sette.sh # # # TODO # ==== # # option debug # # EVOLUTIONS # ========== # # $Id$ # # * creation # #- # #- # Compiler among those in NEMOGCM/ARCH COMPILER=gfortran_linux # Directory to run the tests SETTE_DIR=$(cd $(dirname "$0"); pwd) MAIN_DIR=${SETTE_DIR%/SETTE} CONFIG_DIR=${MAIN_DIR}/CONFIG TOOLS_DIR=${MAIN_DIR}/TOOLS COMPIL_DIR=${TOOLS_DIR}/COMPILE CMP_NAM=${1:-$COMPILER} ## NBTEST=6 ## echo "TOTAL NUMBER OF TEST" ${NBTEST} ## for (( config=2; config<=${NBTEST}; config++ )) for config in 1 2 3 4 5 6 7 do if [ ${config} -eq 1 ] ; then # Restartability tests for GYRE_LOBSTER cd ${SETTE_DIR} . ../CONFIG/makenemo -m ${CMP_NAM} -n GYRELOB_LONG -r GYRE_LOBSTER del_key "key_diatrc" cd ${SETTE_DIR} . param.cfg . all_functions.sh set_namelist namelist cn_exp \"GYRELOB_LONG\" set_namelist namelist nn_it000 1 set_namelist namelist nn_itend 120 set_namelist namelist nn_stock 60 set_namelist namelist ln_clobber .true. set_namelist namelist_top ln_trcrad .false. cd ${SETTE_DIR} . ./fcm_job.sh input_GYRE.cfg 1 LONG set_namelist namelist cn_exp \"GYRELOB_SHORT\" set_namelist namelist nn_it000 61 set_namelist namelist nn_itend 120 set_namelist namelist nn_stock 60 set_namelist namelist ln_rstart .true. set_namelist namelist nn_rstctl 2 set_namelist namelist ln_clobber .true. set_namelist namelist cn_ocerst_in \"GYRELOB_LONG_00000060_restart.nc\" set_namelist namelist_top ln_trcrad .false. set_namelist namelist_top ln_rsttr .true. set_namelist namelist_top nn_rsttr 2 set_namelist namelist_top cn_trcrst_in \"GYRELOB_LONG_00000060_restart_trc\" cd ${SETTE_DIR} . ./fcm_job.sh input_GYRE.cfg 1 SHORT fi if [ ${config} -eq 2 ] ; then # Restartability tests for ORCA2_LIM_PISCES cd ${SETTE_DIR} . ../CONFIG/makenemo -m ${CMP_NAM} -n ORCA2LIMPIS_LONG -r ORCA2_LIM_PISCES del_key "key_dtatrc key_diatrc" cd ${SETTE_DIR} . param.cfg . all_functions.sh set_namelist namelist cn_exp \"O2LP_LONG\" set_namelist namelist nn_it000 1 set_namelist namelist nn_itend 150 set_namelist namelist nn_stock 75 set_namelist namelist ln_clobber .true. set_namelist namelist_top ln_trcrad .false. # put ln_pisdmp, ln_dustfer, ln_river, ln_ndepo, ln_sedinput to false # if not you need input files, and for tests is not necessary set_namelist namelist_pisces ln_pisdmp .false. set_namelist namelist_pisces ln_dustfer .false. set_namelist namelist_pisces ln_river .false. set_namelist namelist_pisces ln_ndepo .false. set_namelist namelist_pisces ln_sedinput .false. cd ${SETTE_DIR} . ./fcm_job.sh input_ORCA2_LIM_PISCES.cfg 1 LONG # cd ${SETTE_DIR} # . ../CONFIG/makenemo -n ORCA2LIMPIS_SHORT -r ORCA2_LIM_PISCES del_key "key_dtatrc key_diatrc" cd ${SETTE_DIR} . param.cfg . all_functions.sh set_namelist namelist cn_exp \"O2LP_SHORT\" set_namelist namelist nn_it000 76 set_namelist namelist nn_itend 150 set_namelist namelist nn_stock 75 set_namelist namelist ln_rstart .true. set_namelist namelist nn_rstctl 2 set_namelist namelist ln_clobber .true. set_namelist namelist cn_ocerst_in \"O2LP_LONG_00000075_restart.nc\" set_namelist namelist_ice cn_icerst_in \"O2LP_LONG_00000075_restart_ice.nc\" set_namelist namelist_top ln_trcrad .false. set_namelist namelist_top ln_rsttr .true. set_namelist namelist_top nn_rsttr 2 set_namelist namelist_top cn_trcrst_in \"O2LP_LONG_00000075_restart_trc\" # put ln_pisdmp, ln_dustfer, ln_river, ln_ndepo, ln_sedinput # if not you need input files, and for tests is not necessary set_namelist namelist_pisces ln_pisdmp .false. set_namelist namelist_pisces ln_dustfer .false. set_namelist namelist_pisces ln_river .false. set_namelist namelist_pisces ln_ndepo .false. set_namelist namelist_pisces ln_sedinput .false. cd ${SETTE_DIR} . ./fcm_job.sh input_ORCA2_LIM_PISCES.cfg 1 SHORT fi if [ ${config} -eq 3 ] ; then ## Restartability tests for POMME cd ${SETTE_DIR} . ../CONFIG/makenemo -m ${CMP_NAM} -n POMME_LONG -r POMME cd ${SETTE_DIR} . param.cfg . all_functions.sh set_namelist namelist cn_exp \"POMME_LONG\" set_namelist namelist nn_it000 1 set_namelist namelist nn_itend 600 set_namelist namelist ln_clobber .true. cd ${SETTE_DIR} . ./fcm_job.sh input_POMME.cfg 1 LONG cd ${SETTE_DIR} set_namelist namelist cn_exp \"POMME_SHORT\" set_namelist namelist nn_it000 301 set_namelist namelist nn_itend 600 set_namelist namelist nn_stock 300 set_namelist namelist ln_rstart .true. set_namelist namelist nn_rstctl 2 set_namelist namelist ln_clobber .true. set_namelist namelist cn_ocerst_in \"POMME_LONG_00000075_restart.nc\" mv ${OUTPUT_DIR}/restart.obc.output ${OUTPUT_DIR}/restart.obc cd ${SETTE_DIR} . ./fcm_job.sh input_POMME.cfg 1 SHORT fi if [ ${config} -eq 4 ] ; then ## Reproducilibity tests for GYRE_LOBSTER cd ${SETTE_DIR} . ../CONFIG/makenemo -m ${CMP_NAM} -n GYRELOB_1_4 -r GYRE_LOBSTER add_key "key_mpp_mpi key_mpp_rep" del_key "key_vectopt_loop key_diatrc" cd ${SETTE_DIR} . param.cfg . all_functions.sh set_namelist namelist nn_it000 1 set_namelist namelist nn_itend 75 set_namelist namelist nn_fwb 0 set_namelist namelist nn_bench 0 set_namelist namelist ln_ctl .false. set_namelist namelist ln_clobber .true. set_namelist namelist jpni 1 set_namelist namelist jpnj 4 set_namelist namelist jpnij 4 cd ${SETTE_DIR} . ./fcm_job.sh input_GYRE.cfg 4 SHORT cd ${SETTE_DIR} . ../CONFIG/makenemo -m ${CMP_NAM} -n GYRELOB_2_2 -r GYRE_LOBSTER add_key "key_mpp_rep key_mpp_mpi" del_key "key_vectopt_loop key_diatrc" cd ${SETTE_DIR} . param.cfg . all_functions.sh set_namelist namelist nn_it000 1 set_namelist namelist nn_itend 75 set_namelist namelist nn_fwb 0 set_namelist namelist ln_ctl .false. set_namelist namelist ln_clobber .true. set_namelist namelist jpni 2 set_namelist namelist jpnj 2 set_namelist namelist jpnij 4 cd ${SETTE_DIR} . ./fcm_job.sh input_GYRE.cfg 4 SHORT fi if [ ${config} -eq 5 ] ; then ## Repropducilibity tests for ORCA2_LIM_PISCES cd ${SETTE_DIR} . ../CONFIG/makenemo -m ${CMP_NAM} -n ORCA2LIMPIS_4_4 -r ORCA2_LIM_PISCES add_key "key_mpp_mpi key_mpp_rep" del_key "key_vectopt_loop key_dtatrc key_diatrc" cd ${SETTE_DIR} . param.cfg . all_functions.sh set_namelist namelist nn_it000 1 set_namelist namelist nn_itend 75 set_namelist namelist nn_fwb 0 set_namelist namelist ln_ctl .false. set_namelist namelist ln_clobber .true. set_namelist namelist jpni 4 set_namelist namelist jpnj 4 set_namelist namelist jpnij 16 # put ln_pisdmp, ln_dustfer, ln_river, ln_ndepo, ln_sedinput to false # if not you need input files, and for tests is not necessary set_namelist namelist_pisces ln_pisdmp .false. set_namelist namelist_pisces ln_dustfer .false. set_namelist namelist_pisces ln_river .false. set_namelist namelist_pisces ln_ndepo .false. set_namelist namelist_pisces ln_sedinput .false. cd ${SETTE_DIR} . ./fcm_job.sh input_ORCA2_LIM_PISCES.cfg 16 SHORT cd ${SETTE_DIR} . ../CONFIG/makenemo -m ${CMP_NAM} -n ORCA2LIMPIS_2_8 -r ORCA2_LIM_PISCES add_key "key_mpp_rep key_mpp_mpi" del_key "key_vectopt_loop key_dtatrc key_diatrc" cd ${SETTE_DIR} . param.cfg . all_functions.sh set_namelist namelist nn_it000 1 set_namelist namelist nn_itend 75 set_namelist namelist nn_fwb 0 set_namelist namelist ln_ctl .false. set_namelist namelist ln_clobber .true. set_namelist namelist jpni 2 set_namelist namelist jpnj 8 set_namelist namelist jpnij 16 # put ln_pisdmp, ln_dustfer, ln_river, ln_ndepo, ln_sedinput to false # if not you need input files, and for tests is not necessary set_namelist namelist_pisces ln_pisdmp .false. set_namelist namelist_pisces ln_dustfer .false. set_namelist namelist_pisces ln_river .false. set_namelist namelist_pisces ln_ndepo .false. set_namelist namelist_pisces ln_sedinput .false. cd ${SETTE_DIR} . ./fcm_job.sh input_ORCA2_LIM_PISCES.cfg 16 SHORT fi if [ ${config} -eq 6 ] ; then ## Reproductibility tests for POMME cd ${SETTE_DIR} . ../CONFIG/makenemo -m ${CMP_NAM} -n POMME_1_4 -r POMME add_key "key_mpp_mpi key_mpp_rep" cd ${SETTE_DIR} . param.cfg . all_functions.sh set_namelist namelist nn_it000 1 set_namelist namelist nn_itend 300 set_namelist namelist nn_fwb 0 set_namelist namelist ln_ctl .false. set_namelist namelist ln_clobber .true. set_namelist namelist jpni 1 set_namelist namelist jpnj 4 set_namelist namelist jpnij 4 cd ${SETTE_DIR} . ./fcm_job.sh input_POMME.cfg 4 SHORT cd ${SETTE_DIR} . ../CONFIG/makenemo -m ${CMP_NAM} -n POMME_2_2 -r POMME add_key "key_mpp_mpi key_mpp_rep" cd ${SETTE_DIR} . param.cfg . all_functions.sh set_namelist namelist nn_it000 1 set_namelist namelist nn_itend 300 set_namelist namelist nn_fwb 0 set_namelist namelist ln_ctl .false. set_namelist namelist ln_clobber .true. set_namelist namelist jpni 2 set_namelist namelist jpnj 2 set_namelist namelist jpnij 4 cd ${SETTE_DIR} . ./fcm_job.sh input_POMME.cfg 4 SHORT fi if [ ${config} -eq 7 ] ; then ## ORCA2_LIM with Agulhas AGRIF zoom cd ${SETTE_DIR} . ../CONFIG/makenemo -m ${CMP_NAM} -n ORCA2AGUL -r ORCA2_LIM add_key "key_agrif" del_key "key_vectopt_loop key_dtatrc key_diatrc key_zdftmx" cd ${SETTE_DIR} . param.cfg . all_functions.sh set_namelist namelist nn_it000 1 set_namelist namelist nn_itend 75 set_namelist namelist ln_ctl .false. set_namelist namelist ln_clobber .true. set_namelist namelist jpni 1 set_namelist namelist jpnj 2 set_namelist namelist jpnij 2 set_namelist 1_namelist nn_it000 1 set_namelist 1_namelist nn_itend 150 set_namelist 1_namelist ln_ctl .false. set_namelist 1_namelist ln_clobber .true. cd ${SETTE_DIR} . ./fcm_job.sh input_ORCA2_LIM.cfg 1 SHORT fi if [ ${config} -eq 8 ] ; then ## ORCA2_LIM with Agulhas AGRIF zoom in MPI cd ${SETTE_DIR} . ../CONFIG/makenemo -m ${CMP_NAM} -n ORCA2AGUL_1_2 -r ORCA2_LIM add_key "key_mpp_mpi key_agrif" del_key "key_vectopt_loop key_dtatrc key_diatrc key_zdftmx" cd ${SETTE_DIR} . param.cfg . all_functions.sh set_namelist namelist nn_it000 1 set_namelist namelist nn_itend 75 set_namelist namelist ln_ctl .false. set_namelist namelist ln_clobber .true. set_namelist namelist jpni 1 set_namelist namelist jpnj 2 set_namelist namelist jpnij 2 set_namelist 1_namelist nn_it000 1 set_namelist 1_namelist nn_itend 150 set_namelist 1_namelist ln_ctl .false. set_namelist 1_namelist ln_clobber .true. cd ${SETTE_DIR} . ./fcm_job.sh input_ORCA2_LIM.cfg 2 SHORT fi done