diff --git a/arch/MERCATOR/arch-X64_AA_INTEL_OMPI.fcm b/arch/MERCATOR/arch-X64_AA_INTEL_OMPI.fcm new file mode 100644 index 0000000000000000000000000000000000000000..2e8a3139941ccc5df7a6d8812d3df486dfb0acb3 --- /dev/null +++ b/arch/MERCATOR/arch-X64_AA_INTEL_OMPI.fcm @@ -0,0 +1,62 @@ +# compiler options for AA (using INTEL compiler & OpenMPI) +# +# module purge +# module use /home/ar0s/modules +# module load prgenv/intel intel/2021.4.0 openmpi/4.1.1.1 hdf5-parallel/1.10.6 netcdf4-parallel/4.7.4 xios/trunk/rev2320-nmpi +# +# +# NCDF_INC netcdf4 include file +# NCDF_LIB netcdf4 library +# XIOS_INC xios include file (taken into accound only if key_xios is activated) +# XIOS_LIB xios library (taken into accound only if key_xios is activated) +# OASIS_INC oasis include file (taken into accound only if key_oasis3 is activated) +# OASIS_LIB oasis library (taken into accound only if key_oasis3 is activated) +# +# FC Fortran compiler command +# FCFLAGS Fortran compiler flags +# FFLAGS Fortran 77 compiler flags +# LD linker +# LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries +# FPPFLAGS pre-processing flags +# AR assembler +# ARFLAGS assembler flags +# MK make +# USER_INC complete list of include files +# USER_LIB complete list of libraries to pass to the linker +# CC C compiler used to compile conv for AGRIF +# CFLAGS compiler flags used with CC +# +# Note that: +# - unix variables "$..." are accpeted and will be evaluated before calling fcm. +# - fcm variables are starting with a % (and not a $) +# +#--------------------------------------------------------------------------------------------- +#--------------------------------------------------------------------------------------------- +# All NETCDF and HDF paths are empty as they are automatically defined through environment +# variables by the load of modules +#--------------------------------------------------------------------------------------------- +#--------------------------------------------------------------------------------------------- +# +# +%NCDF_INC ${NETCDF4_INCLUDE} +%NCDF_LIB ${NETCDF4_LIB} -L${HDF5_DIR}/lib -Wl,-rpath,${HDF5_DIR}/lib -lhdf5_hl -lhdf5 -lz +%XIOS_INC -I${XIOS_INC} +%XIOS_LIB -L${XIOS_LIB} -lxios -lstdc++ +%OASIS_INC -I${OASIS_DIR}/build/lib/mct -I${OASIS_DIR}/build/lib/psmile.MPI1 +%OASIS_LIB -L${OASIS_DIR}/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip + +%CPP cpp +%FC mpifort -c -cpp +%FCFLAGS -march=core-avx2 -i4 -r8 -O3 -fp-model strict -fno-alias -align array64byte +%FFLAGS %FCFLAGS +%LD mpifort +%LDFLAGS +%FPPFLAGS -P -traditional +%AR ar +%ARFLAGS rs +%MK gmake +%USER_INC %XIOS_INC %OASIS_INC %NCDF_INC +%USER_LIB %XIOS_LIB %OASIS_LIB %NCDF_LIB + +%CC mpicc +%CFLAGS -O0 diff --git a/arch/MERCATOR/arch-X64_AA_INTEL_OMPI_DEBUG.fcm b/arch/MERCATOR/arch-X64_AA_INTEL_OMPI_DEBUG.fcm new file mode 100644 index 0000000000000000000000000000000000000000..dd0994798d826bada2dced97f0a2527dea176e61 --- /dev/null +++ b/arch/MERCATOR/arch-X64_AA_INTEL_OMPI_DEBUG.fcm @@ -0,0 +1,62 @@ +# compiler options for AA (using INTEL compiler & OpenMPI) +# +# module purge +# module use /home/ar0s/modules +# module load prgenv/intel intel/2021.4.0 openmpi/4.1.1.1 hdf5-parallel/1.10.6 netcdf4-parallel/4.7.4 xios/trunk/rev2320-nmpi +# +# +# NCDF_INC netcdf4 include file +# NCDF_LIB netcdf4 library +# XIOS_INC xios include file (taken into accound only if key_xios is activated) +# XIOS_LIB xios library (taken into accound only if key_xios is activated) +# OASIS_INC oasis include file (taken into accound only if key_oasis3 is activated) +# OASIS_LIB oasis library (taken into accound only if key_oasis3 is activated) +# +# FC Fortran compiler command +# FCFLAGS Fortran compiler flags +# FFLAGS Fortran 77 compiler flags +# LD linker +# LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries +# FPPFLAGS pre-processing flags +# AR assembler +# ARFLAGS assembler flags +# MK make +# USER_INC complete list of include files +# USER_LIB complete list of libraries to pass to the linker +# CC C compiler used to compile conv for AGRIF +# CFLAGS compiler flags used with CC +# +# Note that: +# - unix variables "$..." are accpeted and will be evaluated before calling fcm. +# - fcm variables are starting with a % (and not a $) +# +#--------------------------------------------------------------------------------------------- +#--------------------------------------------------------------------------------------------- +# All NETCDF and HDF paths are empty as they are automatically defined through environment +# variables by the load of modules +#--------------------------------------------------------------------------------------------- +#--------------------------------------------------------------------------------------------- +# +# +%NCDF_INC ${NETCDF4_INCLUDE} +%NCDF_LIB ${NETCDF4_LIB} -L${HDF5_DIR}/lib -Wl,-rpath,${HDF5_DIR}/lib -lhdf5_hl -lhdf5 -lz +%XIOS_INC -I${XIOS_INC} +%XIOS_LIB -L${XIOS_LIB} -lxios -lstdc++ +%OASIS_INC -I${OASIS_DIR}/build/lib/mct -I${OASIS_DIR}/build/lib/psmile.MPI1 +%OASIS_LIB -L${OASIS_DIR}/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip + +%CPP cpp +%FC mpifort -c -cpp +%FCFLAGS -march=core-avx2 -i4 -r8 -g -O0 -debug all -traceback -fp-model strict -ftrapuv -check all,noarg_temp_created -fpe-all0 -ftz -init=arrays,snan,huge +%FFLAGS %FCFLAGS +%LD mpifort +%LDFLAGS +%FPPFLAGS -P -traditional +%AR ar +%ARFLAGS rs +%MK gmake +%USER_INC %XIOS_INC %OASIS_INC %NCDF_INC +%USER_LIB %XIOS_LIB %OASIS_LIB %NCDF_LIB + +%CC mpicc +%CFLAGS -O0 diff --git a/arch/MERCATOR/arch-X64_BELENOS_INTEL_MVAP_DEBUG.fcm b/arch/MERCATOR/arch-X64_BELENOS_INTEL_MVAP_DEBUG.fcm new file mode 100644 index 0000000000000000000000000000000000000000..4ec5587d320d34ac132ea03dfea97a76238ec544 --- /dev/null +++ b/arch/MERCATOR/arch-X64_BELENOS_INTEL_MVAP_DEBUG.fcm @@ -0,0 +1,70 @@ +# compiler options for BELENOS/TARANIS (using INTEL compiler + Intel MPI) +# +# -------------------------------- +# INTEL_IMPI (NEMO 4.0 + XIOS-2.5) +# -------------------------------- +# module use /home/ext/mr/smer/samsong/modules +# module load intel/2018.5.274 intelmpi/2018.5.274 phdf5/1.8.18 netcdf_par/4.7.1_V2 xios/2.5/rev1903 +# +# ---------------------------------- +# INTEL_IMPI (NEMO 4.2 + XIOS-TRUNK) +# ---------------------------------- +# module use /home/ext/mr/smer/samsong/modules +# module load gcc/9.2.0 intel/2018.5.274 intelmpi/2018.5.274 phdf5/1.8.18 netcdf_par/4.7.1_V2 xios/trunk/rev2134 +# +# +# NCDF_INC netcdf4 include file +# NCDF_LIB netcdf4 library +# XIOS_INC xios include file (taken into accound only if key_xios is activated) +# XIOS_LIB xios library (taken into accound only if key_xios is activated) +# OASIS_INC oasis include file (taken into accound only if key_oasis3 is activated) +# OASIS_LIB oasis library (taken into accound only if key_oasis3 is activated) +# +# FC Fortran compiler command +# FCFLAGS Fortran compiler flags +# FFLAGS Fortran 77 compiler flags +# LD linker +# LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries +# FPPFLAGS pre-processing flags +# AR assembler +# ARFLAGS assembler flags +# MK make +# USER_INC complete list of include files +# USER_LIB complete list of libraries to pass to the linker +# CC C compiler used to compile conv for AGRIF +# CFLAGS compiler flags used with CC +# +# Note that: +# - unix variables "$..." are accpeted and will be evaluated before calling fcm. +# - fcm variables are starting with a % (and not a $) +# +#--------------------------------------------------------------------------------------------- +#--------------------------------------------------------------------------------------------- +# All NETCDF and HDF paths are empty as they are automatically defined through environment +# variables by the load of modules +#--------------------------------------------------------------------------------------------- +#--------------------------------------------------------------------------------------------- +# +# +%NCDF_INC -I${NETCDF_INC} +%NCDF_LIB -L${NETCDF_LIB} -lnetcdff -lnetcdf -L${PHDF5_LIB_DIR} -lhdf5_hl -lhdf5 +%XIOS_INC -I${XIOS_INC} +%XIOS_LIB -L${XIOS_LIB} -lxios -lstdc++ +%OASIS_INC -I${OASIS_DIR}/include +%OASIS_LIB -L${OASIS_DIR}/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip + +%CPP cpp +%FC mpiifort -c -cpp +%FCFLAGS -march=core-avx2 -i4 -r8 -g -O0 -debug all -traceback -fp-model strict -ftrapuv -check all,noarg_temp_created -fpe-all0 -ftz -init=arrays,snan,huge +%FFLAGS %FCFLAGS +%LD mpiifort +%LDFLAGS +%FPPFLAGS -P -traditional +%AR ar +%ARFLAGS rs +%MK gmake +%USER_INC %XIOS_INC %OASIS_INC %NCDF_INC +%USER_LIB %XIOS_LIB %OASIS_LIB %NCDF_LIB + +%CC mpiicc +%CFLAGS -O0 diff --git a/arch/MERCATOR/arch-X64_BELENOS_INTEL_OMPI_DEBUG.fcm b/arch/MERCATOR/arch-X64_BELENOS_INTEL_OMPI_DEBUG.fcm new file mode 120000 index 0000000000000000000000000000000000000000..43aab11434e9921cdf8f32e0bead519434f2ece6 --- /dev/null +++ b/arch/MERCATOR/arch-X64_BELENOS_INTEL_OMPI_DEBUG.fcm @@ -0,0 +1 @@ +arch-X64_BELENOS_INTEL_IMPI_DEBUG.fcm \ No newline at end of file diff --git a/cfgs/ORCA2_ICE_PISCES/EXPREF/namelist_cfg b/cfgs/ORCA2_ICE_PISCES/EXPREF/namelist_cfg index c8353d3ad6ea8628ec7d3748dc60578b8b9c2cd3..4b17c10299ec87c10936d1ed936390a783d0f3e3 100644 --- a/cfgs/ORCA2_ICE_PISCES/EXPREF/namelist_cfg +++ b/cfgs/ORCA2_ICE_PISCES/EXPREF/namelist_cfg @@ -117,6 +117,7 @@ !----------------------------------------------------------------------- &namsbc_abl ! Atmospheric Boundary Layer formulation (ln_abl = T) !----------------------------------------------------------------------- + cn_dom = 'dom_cfg_abl_L25Z10' / !----------------------------------------------------------------------- &namtra_qsr ! penetrative solar radiation (ln_traqsr =T) diff --git a/cfgs/SHARED/namelist_ref b/cfgs/SHARED/namelist_ref index f146b16f520b78980d840f0ff104ac0b37d56a4a..28a67e4d54a5df21cc92367afbd896ee85a385ab 100644 --- a/cfgs/SHARED/namelist_ref +++ b/cfgs/SHARED/namelist_ref @@ -326,6 +326,7 @@ nn_dyn_restore = 0 ! restoring option for dynamical ABL variables: = 0 no restoring ! = 1 equatorial restoring ! = 2 global restoring + rn_vfac = 0. rn_ldyn_min = 4.5 ! dynamics nudging magnitude inside the ABL [hour] (~3 rn_Dt) rn_ldyn_max = 1.5 ! dynamics nudging magnitude above the ABL [hour] (~1 rn_Dt) rn_ltra_min = 4.5 ! tracers nudging magnitude inside the ABL [hour] (~3 rn_Dt) diff --git a/ext/AGRIF/AGRIF_FILES/modtypes.F90 b/ext/AGRIF/AGRIF_FILES/modtypes.F90 index 3651d7bc1df1da5ec3049a94083f7414b5eda0b0..d00cd3e8fa4b4ecdd8d04bb961593a51993a3292 100644 --- a/ext/AGRIF/AGRIF_FILES/modtypes.F90 +++ b/ext/AGRIF/AGRIF_FILES/modtypes.F90 @@ -378,7 +378,7 @@ end type Agrif_Variables_List integer :: Agrif_Regridding = 10 integer :: Agrif_Minwidth real :: Agrif_Efficiency = 0.7 - integer :: MaxSearch = 10 + integer :: MaxSearch = 3 real(kind=8), dimension(3) :: Agrif_mind !> @} !> \name parameters for the interpolation of the child grids diff --git a/mk/agrifpp.sh b/mk/agrifpp.sh index 32f63a440bbc0e6c0588511b22856906183bb12c..308125ce8005c817aa0c3e0ad4223b5fa68e0f09 100755 --- a/mk/agrifpp.sh +++ b/mk/agrifpp.sh @@ -60,8 +60,8 @@ if [ "$MYFILE" == "agrif2model.f90" ];then if [ -d ${MYDIR}/${NEW_CONF}/WORK ]; then \cp ${MYDIR}/${NEW_CONF}/WORK/${MYFILE/.f90/.F90} ${MYDIR}/${NEW_CONF}/NEMOFILES/obj/$MYFILE else - \cp ${MYDIR}/${NEW_CONF}/src/${MYFILE/.f90/.F90} ${MYDIR}/${NEW_CONF}/NEMOFILES/obj/$MYFILE + \cp ${CONFIG_DIR}/${NEW_CONF}/WORK/${MYFILE/.f90/.F90} ${MYDIR}/${NEW_CONF}/NEMOFILES/obj/$MYFILE fi else cd ${MYDIR}/${NEW_CONF}/NEMOFILES/ppsrc/nemo ; ${MYDIR}/${NEW_CONF}/NEMOFILES/conv ${MYDIR}/${NEW_CONF}/NEMOFILES/agrif_oce.in -rm -incdir ${MYDIR}/${NEW_CONF}/NEMOFILES/inc -comdirout ${MYDIR}/${NEW_CONF}/NEMOFILES/obj -convfile ${MYFILE} > /dev/null -fi \ No newline at end of file +fi diff --git a/mk/bld.cfg b/mk/bld.cfg index 1e596ae79a0f4df9e2917cd14a1825c9284b3280..67352be6cc9f0a0b9d8b098cbc89f15134996c13 100644 --- a/mk/bld.cfg +++ b/mk/bld.cfg @@ -14,7 +14,7 @@ search_src 1 src::ioipsl $MAIN_DIR/ext/IOIPSL/src src::agrif $MAIN_DIR/ext/AGRIF/AGRIF_FILES -src::nemo $CONFIG_DIR/$NEW_CONF/NEMOFILES/obj +src::nemo $NEMO_TDIR/$NEW_CONF/NEMOFILES/obj src::ppr_1d $MAIN_DIR/ext/PPR/src @@ -41,7 +41,7 @@ bld::pp::ioipsl 1 bld::pp::nemo 1 bld::pp::agrif 1 bld::pp::ppr_1d 1 -bld::tool::fppflags::nemo %FPPFLAGS -I$CONFIG_DIR/$NEW_CONF/NEMOFILES/inc +bld::tool::fppflags::nemo %FPPFLAGS -I$NEMO_TDIR/$NEW_CONF/NEMOFILES/inc bld::tool::fppflags::ioipsl %FPPFLAGS bld::tool::fppflags::agrif %FPPFLAGS -include ${MAIN_DIR}/ext/AGRIF/nemo_mpi.h bld::tool::fppflags::ppr_1d %FPPFLAGS diff --git a/sette/BATCH_TEMPLATE/batch-X64_AA_INTEL_OMPI b/sette/BATCH_TEMPLATE/batch-X64_AA_INTEL_OMPI new file mode 100644 index 0000000000000000000000000000000000000000..bdd075c6c25cfc14359dcc9eced3b355eed74968 --- /dev/null +++ b/sette/BATCH_TEMPLATE/batch-X64_AA_INTEL_OMPI @@ -0,0 +1,110 @@ +#!/usr/bin/env bash + +#SBATCH -J sette +#SBATCH -o sette.%j.out +#SBATCH -e sette.%j.err +#SBATCH -N 1 +#SBATCH --time=0-00:20:00 +#SBATCH --account=frtomerc +#SBATCH --partition=par +#SBATCH --qos=np +##SBATCH --ntasks=NPROCS +#SBATCH --ntasks=TOTAL_NPROCS + +set -x + +# Test specific settings. Do not hand edit these lines; the fcm_job.sh script will set these +# (via sed operating on this template job file). +# + echo " "; + OCORES=NPROCS + XCORES=NXIOPROCS + O_PER_NODE=32 + X_PER_NODE=8 + if [ $XCORES -le $X_PER_NODE ]; then X_PER_NODE=$XCORES; fi + if [ $OCORES -le $O_PER_NODE ]; then O_PER_NODE=$OCORES; fi + export SETTE_DIR=DEF_SETTE_DIR + +############################################################### +# +export MPIRUN="srun" +# +# load sette functions (only post_test_tidyup needed) +# + . ${SETTE_DIR}/all_functions.sh +############################################################### +# +# modules to load +module purge &> /dev/null +module use /home/ar5/modules +module load prgenv/intel intel/2021.4.0 openmpi/4.1.1.1 hdf5-parallel/1.10.6 netcdf4-parallel/4.7.4 xios/trunk/r2320_intel-ompi +module list + +# Don't remove neither change the following line +# BODY +# +# Test specific settings. Do not hand edit these lines; the fcm_job.sh script will set these +# (via sed operating on this template job file). Note that the number of compute nodes required +# is also set by the fcm_job.sh on the PBS select header line above. +# +# These variables are needed by post_test_tidyup function in all_functions.sh +# + export XIO_HOME=${XIOS_DIR} + export INPUT_DIR=DEF_INPUT_DIR + export CONFIG_DIR=DEF_CONFIG_DIR + export TOOLS_DIR=DEF_TOOLS_DIR + export NEMO_VALIDATION_DIR=DEF_NEMO_VALIDATION + export NEW_CONF=DEF_NEW_CONF + export CMP_NAM=DEF_CMP_NAM + export TEST_NAME=DEF_TEST_NAME + export EXE_DIR=DEF_EXE_DIR + ulimit -a + ulimit -s unlimited +# +# end of set up +############################################################### +# +# change to the working directory +# + cd ${EXE_DIR} + echo Running on host `hostname` + echo Time is `date` + echo Directory is `pwd` + sed -i "s/one_file/multiple_file/" file_def_nemo-*.xml +# +# Run the parallel MPI executable +# + echo "Running time ${MPIRUN} ./nemo" +# + if [ $XCORES -gt 0 ]; then +# +# Run MPMD case +# + #XIOS will run on a separate node so will run in parallel queue + if [ ! -f ./xios_server.exe ] && [ -f ${XIO_HOME}/bin/xios_server.exe ]; then + cp ${XIO_HOME}/bin/xios_server.exe . + fi + if [ ! -f ./xios_server.exe ]; then + echo "./xios_server.exe not found" + echo "run aborted" + exit + fi + cat > ./config.file <<-EOF +0-$((OCORES-1)) ./nemo +${OCORES}-$((TOTAL_NPROCS-1)) ./xios_server.exe +EOF + $MPIRUN --ntasks=TOTAL_NPROCS --multi-prog config.file + else +# +# Run SPMD case +# + time ./nemo + fi +# + +# + post_test_tidyup + +# END_BODY +# Don't remove neither change the previous line + exit diff --git a/sette/BATCH_TEMPLATE/batch-X64_AA_INTEL_OMPI_DEBUG b/sette/BATCH_TEMPLATE/batch-X64_AA_INTEL_OMPI_DEBUG new file mode 120000 index 0000000000000000000000000000000000000000..11d73e632c3fff46278fd7367d64fc4e216659e4 --- /dev/null +++ b/sette/BATCH_TEMPLATE/batch-X64_AA_INTEL_OMPI_DEBUG @@ -0,0 +1 @@ +batch-X64_AA_INTEL_OMPI \ No newline at end of file diff --git a/sette/BATCH_TEMPLATE/batch-X64_BELENOS_INTEL_IMPI b/sette/BATCH_TEMPLATE/batch-X64_BELENOS_INTEL_IMPI index fb453c207cf8d8f2f4dce96e4125b9ed35820860..481b788c1d6ceee865d63bf757b61c42f2e367b2 100644 --- a/sette/BATCH_TEMPLATE/batch-X64_BELENOS_INTEL_IMPI +++ b/sette/BATCH_TEMPLATE/batch-X64_BELENOS_INTEL_IMPI @@ -12,11 +12,11 @@ #SBATCH --time=01:00:00 ##SBATCH --time=00:15:00 -#SBATCH -A smer -##SBATCH -A cmems +##SBATCH -A smer +#SBATCH -A cmems -#SBATCH --qos=normal -##SBATCH --qos=coper +##SBATCH --qos=normal +#SBATCH --qos=coper # Test specific settings. Do not hand edit these lines; the fcm_job.sh script will set these @@ -43,7 +43,6 @@ module purge module use /home/ext/mr/smer/samsong/modules module load gcc/9.2.0 intel/2018.5.274 intelmpi/2018.5.274 phdf5/1.8.18 netcdf_par/4.7.1_V2 xios/trunk/rev2320-impi -#module load xios-2.5_rev1903 export XIO_HOME=${XIOS_DIR} # Don't remove neither change the following line @@ -76,61 +75,6 @@ export XIO_HOME=${XIOS_DIR} echo Running on host `hostname` echo Time is `date` echo Directory is `pwd` -# -# Run the parallel MPI executable -# - - # Comm/Fabric - # ----------- - export DAPL_ACK_RETRY=7 - export DAPL_ACK_TIMER=20 - export DAPL_IB_SL=0 - export DAPL_UCM_CQ_SIZE=8192 - export DAPL_UCM_DREQ_RETRY=4 - export DAPL_UCM_QP_SIZE=8192 - export DAPL_UCM_REP_TIME=8000 - export DAPL_UCM_RTU_TIME=8000 - export DAPL_UCM_WAIT_TIME=10000 - export I_MPI_CHECK_DAPL_PROVIDER_COMPATIBILITY=0 - export I_MPI_CHECK_DAPL_PROVIDER_MISMATCH=none - export I_MPI_DAPL_RDMA_MIXED=enable - export I_MPI_DAPL_SCALABLE_PROGRESS=1 - export I_MPI_DAPL_TRANSLATION_CACHE=1 - export I_MPI_DAPL_UD_DIRECT_COPY_THRESHOLD=65536 - export I_MPI_DAPL_UD=on - export I_MPI_FABRICS=shm:dapl - export I_MPI_DAPL_PROVIDER=ofa-v2-mlx5_0-1u - export I_MPI_FALLBACK=disable - export I_MPI_FALLBACK_DEVICE=disable - export I_MPI_DYNAMIC_CONNECTION=1 - export I_MPI_FAST_COLLECTIVES=1 - export I_MPI_LARGE_SCALE_THRESHOLD=8192 - # File system - # ----------- - export I_MPI_EXTRA_FILESYSTEM_LIST=lustre - export I_MPI_EXTRA_FILESYSTEM=on - # Slurm - # ----- - export I_MPI_HYDRA_BOOTSTRAP=slurm - export I_MPI_SLURM_EXT=0 - # Force kill job - # -------------- - export I_MPI_JOB_SIGNAL_PROPAGATION=on - export I_MPI_JOB_ABORT_SIGNAL=9 - # Extra - # ----- - export I_MPI_LIBRARY_KIND=release_mt - export EC_MPI_ATEXIT=0 - export EC_PROFILE_HEAP=0 - # Process placement (cyclic) - # -------------------------- - export I_MPI_JOB_RESPECT_PROCESS_PLACEMENT=off - export I_MPI_PERHOST=1 - # Process pinning - # --------------- - export I_MPI_PIN=enable - export I_MPI_PIN_PROCESSOR_LIST="allcores:map=scatter" # map=spread - if [ $XCORES -gt 0 ]; then # # Run MPMD case diff --git a/sette/BATCH_TEMPLATE/batch-mpmd-X64_AA_INTEL_OMPI b/sette/BATCH_TEMPLATE/batch-mpmd-X64_AA_INTEL_OMPI new file mode 120000 index 0000000000000000000000000000000000000000..11d73e632c3fff46278fd7367d64fc4e216659e4 --- /dev/null +++ b/sette/BATCH_TEMPLATE/batch-mpmd-X64_AA_INTEL_OMPI @@ -0,0 +1 @@ +batch-X64_AA_INTEL_OMPI \ No newline at end of file diff --git a/sette/BATCH_TEMPLATE/batch-mpmd-X64_AA_INTEL_OMPI_DEBUG b/sette/BATCH_TEMPLATE/batch-mpmd-X64_AA_INTEL_OMPI_DEBUG new file mode 120000 index 0000000000000000000000000000000000000000..178a7f6eabe69471382e8fb0df6d9c58be6d6fd3 --- /dev/null +++ b/sette/BATCH_TEMPLATE/batch-mpmd-X64_AA_INTEL_OMPI_DEBUG @@ -0,0 +1 @@ +batch-X64_AA_INTEL_OMPI_DEBUG \ No newline at end of file diff --git a/sette/all_functions.sh b/sette/all_functions.sh index d9f87067d7baef11909247a459e203179bcc5348..c86feff15d2a4ba3894a70483f283d7d6a45cc6e 100755 --- a/sette/all_functions.sh +++ b/sette/all_functions.sh @@ -153,12 +153,12 @@ clean_config() { echo '-------------------------------------------------------------------------------' echo ' CLEANING CONFIGURATION ' echo '' - echo "./makenemo -n $lCFG -a/-r $lREF clean" + echo "./makenemo -n $lCFG -a/-r $lREF -t ${CMP_DIR:-${CONFIG_DIR0}} clean" echo '' if [ ${lTYP} == 'tests' ]; then - ./makenemo -n $lCFG -a $lREF clean + ./makenemo -n $lCFG -t ${CMP_DIR:-${CONFIG_DIR0}} -a $lREF clean elif [ ${lTYP} == 'cfgs' ]; then - ./makenemo -n $lCFG -r $lREF clean + ./makenemo -n $lCFG -t ${CMP_DIR:-${CONFIG_DIR0}} -r $lREF clean else echo 'ERROR in the cleaning process'; exit 42 fi diff --git a/sette/input_ORCA2_ICE_PISCES.cfg b/sette/input_ORCA2_ICE_PISCES.cfg index 33408e69681d5afcf5d866425d24609f1145c717..55d14cd32c9a52a95cf4b6a56ff716f348683973 100644 --- a/sette/input_ORCA2_ICE_PISCES.cfg +++ b/sette/input_ORCA2_ICE_PISCES.cfg @@ -1 +1,2 @@ ORCA2_ICE_v4.2.0.tar.gz ORCA2_ICE_v4.2.0 +ORCA2_ABL_v4.2.0.tar.gz ORCA2_ABL_v4.2.0 diff --git a/sette/prepare_exe_dir.sh b/sette/prepare_exe_dir.sh index 1be9693fb337178140688848929f353fe14e1b6c..5e6b1a01153ad605471529ae4e740b58990ff551 100755 --- a/sette/prepare_exe_dir.sh +++ b/sette/prepare_exe_dir.sh @@ -69,7 +69,6 @@ set -o posix if [ -z "${CUSTOM_DIR}" ]; then export EXE_DIR=${CONFIG_DIR}/${NEW_CONF}/${TEST_NAME} else - NEMO_REV=$( git rev-parse --short HEAD 2> /dev/null ) export EXE_DIR=${CUSTOM_DIR}/${SETTE_SUB_VAL}_${NEMO_REV}/${NEW_CONF}/${TEST_NAME} fi mkdir -p ${EXE_DIR} @@ -86,6 +85,7 @@ echo "requested by the command : "$cmd $cmdargs >> ./sette_con echo "on branch : "$SETTE_THIS_BRANCH >> ./sette_config printf "%-33s : %s\n" USING_TIMING $USING_TIMING >> ./sette_config printf "%-33s : %s\n" USING_ICEBERGS $USING_ICEBERGS >> ./sette_config +printf "%-33s : %s\n" USING_ABL $USING_ABL >> ./sette_config printf "%-33s : %s\n" USING_EXTRA_HALO $USING_EXTRA_HALO >> ./sette_config printf "%-33s : %s\n" USING_TILING $USING_TILING >> ./sette_config printf "%-33s : %s\n" USING_COLLECTIVES $USING_COLLECTIVES >> ./sette_config diff --git a/sette/sette.sh b/sette/sette.sh index 4b816f34dea2998f181975f2c3c70e614a6a3be7..da7e291452053a16334fa77cc5e93e91362708cb 100755 --- a/sette/sette.sh +++ b/sette/sette.sh @@ -12,6 +12,7 @@ NO_REPORT=0 # export USING_TIMING='yes' # Default: yes => set ln_timing=.true. ; use -T to disable export USING_ICEBERGS='yes' # Default: yes => set ln_icebergs=.true. ; use -i to disable +export USING_ABL='no' # Default: no => set ln_abl=.false. ; use -a to set ln_abl=.true. export USING_EXTRA_HALO='yes' # Default: yes => set nn_hls=2 ; use -e to set nn_hls=1 export USING_COLLECTIVES='yes' # Default: yes => set nn_comm=2 ; use -C to set nn_comm=1 export USING_NOGATHER='yes' # Default: yes => set ln_nnogather=.true.; use -N to set ln_nnogather=.false. @@ -64,7 +65,7 @@ fi # Parse command-line arguments if [ $# -gt 0 ]; then - while getopts n:x:v:g:cdrshTqQteiACFNXu option; do + while getopts n:x:v:g:cdrshTqQteiACFNXua option; do case $option in c) export SETTE_CLEAN_CONFIGS='yes' export SETTE_SYNC_CONFIGS='yes' @@ -112,6 +113,9 @@ if [ $# -gt 0 ]; then i) export USING_ICEBERGS='no' echo "-i: ln_icebergs will be set to false" echo "";; + a) export USING_ABL='yes' + echo "-a: ln_abl will be set to true" + echo "";; C) export USING_COLLECTIVES='no' echo "-C: nn_comm will be set to 1" echo "";; @@ -142,6 +146,7 @@ if [ $# -gt 0 ]; then echo '-t set ln_tile false in all tests that support it (default: true)' echo '-e set nn_hls=1 (default: nn_hls=2)' echo '-i set ln_icebergs false (default: true)' + echo '-a set ln_abl true (default: false)' echo '-C set nn_comm=1 (default: nn_comm=2 ==> use MPI3 collective comms)' echo '-N set ln_nnogather false for ORCA2 configurations (default: true)' echo '-q to remove the key_qco key (default: added)' @@ -262,6 +267,7 @@ echo "requested by the command : "$cmd $cmdargs echo "on branch : "$SETTE_THIS_BRANCH printf "%-33s : %s\n" USING_TIMING $USING_TIMING printf "%-33s : %s\n" USING_ICEBERGS $USING_ICEBERGS +printf "%-33s : %s\n" USING_ABL $USING_ABL printf "%-33s : %s\n" USING_EXTRA_HALO $USING_EXTRA_HALO printf "%-33s : %s\n" USING_TILING $USING_TILING printf "%-33s : %s\n" USING_COLLECTIVES $USING_COLLECTIVES diff --git a/sette/sette_reference-configurations.sh b/sette/sette_reference-configurations.sh index 9c10991568137f3cab0f78a4e5b56bedba8cfe57..b79c4d79fb89accf7d09a6f8e9d1b62f6e7055f0 100755 --- a/sette/sette_reference-configurations.sh +++ b/sette/sette_reference-configurations.sh @@ -110,8 +110,12 @@ fi # Directory to run the tests CONFIG_DIR0=${MAIN_DIR}/cfgs TOOLS_DIR=${MAIN_DIR}/tools - +if [ -n "${CUSTOM_DIR}" ]; then + NEMO_REV=$( git rev-parse --short HEAD 2> /dev/null ) + CMP_DIR=${CUSTOM_DIR}/${SETTE_SUB_VAL}_${NEMO_REV} +fi CMP_NAM=${1:-$COMPILER} + # Copy job_batch_COMPILER file for specific compiler into job_batch_template cd ${SETTE_DIR} cp BATCH_TEMPLATE/${JOB_PREFIX}-${COMPILER} job_batch_template || exit @@ -149,7 +153,7 @@ if [ ${config} == "GYRE_PISCES" ] ; then clean_config GYRE_PISCES ${SETTE_CONFIG} 'cfgs' # # GYRE uses linssh so remove key_qco if added by default - . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -r GYRE_PISCES -j ${CMPL_CORES} add_key "${ADD_KEYS/key_qco/}" del_key "${DEL_KEYS}" + . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -r GYRE_PISCES -t ${CMP_DIR:-${CONFIG_DIR0}} -k 0 -j ${CMPL_CORES} add_key "${ADD_KEYS/key_qco/}" del_key "${DEL_KEYS}" fi if [ ${config} == "GYRE_PISCES" ] && [ ${DO_RESTART} == "1" ] ; then ## Restartability tests for GYRE_PISCES @@ -295,7 +299,7 @@ if [ ${config} == "ORCA2_ICE_PISCES" ] ; then sync_config ORCA2_ICE_PISCES ${SETTE_CONFIG} 'cfgs' clean_config ORCA2_ICE_PISCES ${SETTE_CONFIG} 'cfgs' # - . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -r ORCA2_ICE_PISCES -j ${CMPL_CORES} add_key "${ADD_KEYS}" del_key "${DEL_KEYS}" + . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -r ORCA2_ICE_PISCES -t ${CMP_DIR:-${CONFIG_DIR0}} -k 0 -j ${CMPL_CORES} add_key "${ADD_KEYS}" del_key "${DEL_KEYS}" fi if [ ${config} == "ORCA2_ICE_PISCES" ] && [ ${DO_RESTART} == "1" ] ; then ## Restartability tests for ORCA2_ICE_PISCES @@ -321,6 +325,20 @@ if [ ${config} == "ORCA2_ICE_PISCES" ] && [ ${DO_RESTART} == "1" ] ; then set_namelist namelist_cfg ln_cdgw .false. set_namelist namelist_cfg ln_sdw .true. set_namelist namelist_cfg ln_stcor .true. + if [ ${USING_ABL} == "yes" ]; then + set_namelist namelist_cfg nn_date0 20130101 + set_namelist namelist_cfg ln_blk .false. + set_namelist namelist_cfg ln_abl .true. + set_namelist namelist_cfg ln_tair_pot .true. + sed -i "/sn_wndi/s/u_10.15JUNE2009_fill/uwnd_ERAI_L25Z10_ORCA2_ana1d/; /sn_wndi/s/ 6./24./; /sn_wndi/s/U_10_MOD/uwnd/; \ + /sn_wndi/s/true/false/; /sn_wndi/s/yearly/monthly/; /sn_wndi/s/weights_core2_orca2_bicub//" namelist_cfg + sed -i "/sn_wndj/s/v_10.15JUNE2009_fill/vwnd_ERAI_L25Z10_ORCA2_ana1d/; /sn_wndj/s/ 6./24./; /sn_wndj/s/V_10_MOD/vwnd/; \ + /sn_wndj/s/true/false/; /sn_wndj/s/yearly/monthly/; /sn_wndj/s/weights_core2_orca2_bicub//" namelist_cfg + sed -i "/sn_tair/s/t_10.15JUNE2009_fill/tair_ERAI_L25Z10_ORCA2_ana1d/; /sn_tair/s/ 6./24./; /sn_tair/s/T_10_MOD/tair/; \ + /sn_tair/s/true/false/; /sn_tair/s/yearly/monthly/; /sn_tair/s/weights_core2_orca2_bilin//" namelist_cfg + sed -i "/sn_humi/s/q_10.15JUNE2009_fill/humi_ERAI_L25Z10_ORCA2_ana1d/; /sn_humi/s/ 6./24./; /sn_humi/s/Q_10_MOD/humi/; \ + /sn_humi/s/true/false/; /sn_humi/s/yearly/monthly/; /sn_humi/s/weights_core2_orca2_bilin//" namelist_cfg + fi # set_namelist_opt namelist_cfg ln_icebergs ${USING_ICEBERGS} .true. .false. set_namelist_opt namelist_cfg nn_hls ${USING_EXTRA_HALO} 2 1 @@ -356,6 +374,7 @@ if [ ${config} == "ORCA2_ICE_PISCES" ] && [ ${DO_RESTART} == "1" ] ; then set_namelist namelist_cfg nn_itend ${ITEND} set_namelist namelist_cfg nn_stock $(( ${ITEND} / 2 )) set_namelist namelist_cfg ln_rstart .true. + set_namelist namelist_cfg ln_rstart_abl .true. set_namelist namelist_cfg nn_rstctl 2 set_namelist namelist_cfg jpni 4 set_namelist namelist_cfg jpnj 8 @@ -366,6 +385,20 @@ if [ ${config} == "ORCA2_ICE_PISCES" ] && [ ${DO_RESTART} == "1" ] ; then set_namelist namelist_cfg ln_cdgw .false. set_namelist namelist_cfg ln_sdw .true. set_namelist namelist_cfg ln_stcor .true. + if [ ${USING_ABL} == "yes" ]; then + set_namelist namelist_cfg nn_date0 20130101 + set_namelist namelist_cfg ln_blk .false. + set_namelist namelist_cfg ln_abl .true. + set_namelist namelist_cfg ln_tair_pot .true. + sed -i "/sn_wndi/s/u_10.15JUNE2009_fill/uwnd_ERAI_L25Z10_ORCA2_ana1d/; /sn_wndi/s/ 6./24./; /sn_wndi/s/U_10_MOD/uwnd/; \ + /sn_wndi/s/true/false/; /sn_wndi/s/yearly/monthly/; /sn_wndi/s/weights_core2_orca2_bicub//" namelist_cfg + sed -i "/sn_wndj/s/v_10.15JUNE2009_fill/vwnd_ERAI_L25Z10_ORCA2_ana1d/; /sn_wndj/s/ 6./24./; /sn_wndj/s/V_10_MOD/vwnd/; \ + /sn_wndj/s/true/false/; /sn_wndj/s/yearly/monthly/; /sn_wndj/s/weights_core2_orca2_bicub//" namelist_cfg + sed -i "/sn_tair/s/t_10.15JUNE2009_fill/tair_ERAI_L25Z10_ORCA2_ana1d/; /sn_tair/s/ 6./24./; /sn_tair/s/T_10_MOD/tair/; \ + /sn_tair/s/true/false/; /sn_tair/s/yearly/monthly/; /sn_tair/s/weights_core2_orca2_bilin//" namelist_cfg + sed -i "/sn_humi/s/q_10.15JUNE2009_fill/humi_ERAI_L25Z10_ORCA2_ana1d/; /sn_humi/s/ 6./24./; /sn_humi/s/Q_10_MOD/humi/; \ + /sn_humi/s/true/false/; /sn_humi/s/yearly/monthly/; /sn_humi/s/weights_core2_orca2_bilin//" namelist_cfg + fi # set_namelist_opt namelist_cfg ln_icebergs ${USING_ICEBERGS} .true. .false. set_namelist_opt namelist_cfg nn_hls ${USING_EXTRA_HALO} 2 1 @@ -381,6 +414,7 @@ if [ ${config} == "ORCA2_ICE_PISCES" ] && [ ${DO_RESTART} == "1" ] ; then set_namelist namelist_cfg cn_icbrst_in \"O2L3P_LONG_${ITRST}_restart_icb\" set_namelist namelist_top_cfg cn_trcrst_in \"O2L3P_LONG_${ITRST}_restart_trc\" set_namelist namelist_ice_cfg cn_icerst_in \"O2L3P_LONG_${ITRST}_restart_ice\" + set_namelist namelist_cfg cn_ablrst_in \"O2L3P_LONG_${ITRST}_restart_abl\" set_namelist namelist_top_cfg ln_trcbc .false. # put ln_ironsed, ln_hydrofe to false # if not you need input files, and for tests is not necessary @@ -396,6 +430,9 @@ if [ ${config} == "ORCA2_ICE_PISCES" ] && [ ${DO_RESTART} == "1" ] ; then ln -sf ../LONG/O2L3P_LONG_${ITRST}_restart_${L_NPROC}.nc . ln -sf ../LONG/O2L3P_LONG_${ITRST}_restart_trc_${L_NPROC}.nc . ln -sf ../LONG/O2L3P_LONG_${ITRST}_restart_ice_${L_NPROC}.nc . + if [ ${USING_ABL} == "yes" ]; then + ln -sf ../LONG/O2L3P_LONG_${ITRST}_restart_abl_${L_NPROC}.nc . + fi if [ ${USING_ICEBERGS} == "yes" ] then ln -sf ../LONG/O2L3P_LONG_${ITRST}_restart_icb_${L_NPROC}.nc O2L3P_LONG_${ITRST}_restart_icb_${L_NPROC}.nc @@ -433,7 +470,20 @@ if [ ${config} == "ORCA2_ICE_PISCES" ] && [ ${DO_REPRO} == "1" ] ; then set_namelist namelist_cfg ln_cdgw .false. set_namelist namelist_cfg ln_sdw .true. set_namelist namelist_cfg ln_stcor .true. - + if [ ${USING_ABL} == "yes" ]; then + set_namelist namelist_cfg nn_date0 20130101 + set_namelist namelist_cfg ln_blk .false. + set_namelist namelist_cfg ln_abl .true. + set_namelist namelist_cfg ln_tair_pot .true. + sed -i "/sn_wndi/s/u_10.15JUNE2009_fill/uwnd_ERAI_L25Z10_ORCA2_ana1d/; /sn_wndi/s/ 6./24./; /sn_wndi/s/U_10_MOD/uwnd/; \ + /sn_wndi/s/true/false/; /sn_wndi/s/yearly/monthly/; /sn_wndi/s/weights_core2_orca2_bicub//" namelist_cfg + sed -i "/sn_wndj/s/v_10.15JUNE2009_fill/vwnd_ERAI_L25Z10_ORCA2_ana1d/; /sn_wndj/s/ 6./24./; /sn_wndj/s/V_10_MOD/vwnd/; \ + /sn_wndj/s/true/false/; /sn_wndj/s/yearly/monthly/; /sn_wndj/s/weights_core2_orca2_bicub//" namelist_cfg + sed -i "/sn_tair/s/t_10.15JUNE2009_fill/tair_ERAI_L25Z10_ORCA2_ana1d/; /sn_tair/s/ 6./24./; /sn_tair/s/T_10_MOD/tair/; \ + /sn_tair/s/true/false/; /sn_tair/s/yearly/monthly/; /sn_tair/s/weights_core2_orca2_bilin//" namelist_cfg + sed -i "/sn_humi/s/q_10.15JUNE2009_fill/humi_ERAI_L25Z10_ORCA2_ana1d/; /sn_humi/s/ 6./24./; /sn_humi/s/Q_10_MOD/humi/; \ + /sn_humi/s/true/false/; /sn_humi/s/yearly/monthly/; /sn_humi/s/weights_core2_orca2_bilin//" namelist_cfg + fi set_namelist_opt namelist_cfg ln_icebergs ${USING_ICEBERGS} .true. .false. set_namelist_opt namelist_cfg nn_hls ${USING_EXTRA_HALO} 2 1 set_namelist_opt namelist_cfg nn_comm ${USING_COLLECTIVES} 2 1 @@ -478,6 +528,20 @@ if [ ${config} == "ORCA2_ICE_PISCES" ] && [ ${DO_REPRO} == "1" ] ; then set_namelist namelist_cfg ln_cdgw .false. set_namelist namelist_cfg ln_sdw .true. set_namelist namelist_cfg ln_stcor .true. + if [ ${USING_ABL} == "yes" ]; then + set_namelist namelist_cfg nn_date0 20130101 + set_namelist namelist_cfg ln_blk .false. + set_namelist namelist_cfg ln_abl .true. + set_namelist namelist_cfg ln_tair_pot .true. + sed -i "/sn_wndi/s/u_10.15JUNE2009_fill/uwnd_ERAI_L25Z10_ORCA2_ana1d/; /sn_wndi/s/ 6./24./; /sn_wndi/s/U_10_MOD/uwnd/; \ + /sn_wndi/s/true/false/; /sn_wndi/s/yearly/monthly/; /sn_wndi/s/weights_core2_orca2_bicub//" namelist_cfg + sed -i "/sn_wndj/s/v_10.15JUNE2009_fill/vwnd_ERAI_L25Z10_ORCA2_ana1d/; /sn_wndj/s/ 6./24./; /sn_wndj/s/V_10_MOD/vwnd/; \ + /sn_wndj/s/true/false/; /sn_wndj/s/yearly/monthly/; /sn_wndj/s/weights_core2_orca2_bicub//" namelist_cfg + sed -i "/sn_tair/s/t_10.15JUNE2009_fill/tair_ERAI_L25Z10_ORCA2_ana1d/; /sn_tair/s/ 6./24./; /sn_tair/s/T_10_MOD/tair/; \ + /sn_tair/s/true/false/; /sn_tair/s/yearly/monthly/; /sn_tair/s/weights_core2_orca2_bilin//" namelist_cfg + sed -i "/sn_humi/s/q_10.15JUNE2009_fill/humi_ERAI_L25Z10_ORCA2_ana1d/; /sn_humi/s/ 6./24./; /sn_humi/s/Q_10_MOD/humi/; \ + /sn_humi/s/true/false/; /sn_humi/s/yearly/monthly/; /sn_humi/s/weights_core2_orca2_bilin//" namelist_cfg + fi set_namelist_opt namelist_cfg ln_icebergs ${USING_ICEBERGS} .true. .false. set_namelist_opt namelist_cfg nn_hls ${USING_EXTRA_HALO} 2 1 @@ -523,7 +587,7 @@ if [ ${config} == "ORCA2_OFF_PISCES" ] ; then clean_config ${SETTE_CONFIG} ORCA2_OFF_PISCES_ST 'cfgs' # # ORCA2_OFF_PISCES uses linssh so remove key_qco if added by default - . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -r ORCA2_OFF_PISCES -j ${CMPL_CORES} add_key "${ADD_KEYS/key_qco/}" del_key "${DEL_KEYS}" + . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -r ORCA2_OFF_PISCES -t ${CMP_DIR:-${CONFIG_DIR0}} -k 0 -j ${CMPL_CORES} add_key "${ADD_KEYS/key_qco/}" del_key "${DEL_KEYS}" fi if [ ${config} == "ORCA2_OFF_PISCES" ] && [ ${DO_RESTART} == "1" ] ; then ## Restartability tests for ORCA2_OFF_PISCES @@ -699,7 +763,7 @@ if [ ${config} == "AMM12" ] ; then sync_config AMM12 ${SETTE_CONFIG} 'cfgs' clean_config AMM12 ${SETTE_CONFIG} 'cfgs' # - . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -r AMM12 -j ${CMPL_CORES} add_key "${ADD_KEYS}" del_key "${DEL_KEYS}" + . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -r AMM12 -t ${CMP_DIR:-${CONFIG_DIR0}} -k 0 -j ${CMPL_CORES} add_key "${ADD_KEYS}" del_key "${DEL_KEYS}" fi if [ ${config} == "AMM12" ] && [ ${DO_RESTART} == "1" ] ; then ## Restartability tests for AMM12 @@ -834,7 +898,7 @@ if [ ${config} == "SAS" ] ; then clean_config ORCA2_SAS_ICE ${SETTE_CONFIG} 'cfgs' # # ORCA2_SAS_ICE uses linssh so remove key_qco if added by default - . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -r ORCA2_SAS_ICE -j ${CMPL_CORES} add_key "${ADD_KEYS/key_qco/}" del_key "${DEL_KEYS}" + . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -r ORCA2_SAS_ICE -t ${CMP_DIR:-${CONFIG_DIR0}} -k 0 -j ${CMPL_CORES} add_key "${ADD_KEYS/key_qco/}" del_key "${DEL_KEYS}" fi if [ ${config} == "SAS" ] && [ ${DO_RESTART} == "1" ] ; then ## Restartability tests @@ -981,7 +1045,7 @@ if [ ${config} == "ORCA2_ICE_OBS" ] ; then sync_config ORCA2_ICE_PISCES ${SETTE_CONFIG} 'cfgs' clean_config ORCA2_ICE_PISCES ${SETTE_CONFIG} 'cfgs' # - . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -r ORCA2_ICE_PISCES -d "OCE ICE" -j ${CMPL_CORES} add_key "key_asminc ${ADD_KEYS}" del_key "key_top ${DEL_KEYS}" + . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -r ORCA2_ICE_PISCES -d "OCE ICE" -t ${CMP_DIR:-${CONFIG_DIR0}} -k 0 -j ${CMPL_CORES} add_key "key_asminc ${ADD_KEYS}" del_key "key_top ${DEL_KEYS}" fi if [ ${config} == "ORCA2_ICE_OBS" ] && [ ${DO_RESTART} == "1" ] ; then ## Reproducibility tests @@ -1107,7 +1171,7 @@ if [ ${config} == "AGRIF" ] ; then # # AGRIF_DEMO does not yet support nn_hls=2 => key_loop_fusion can not be used # . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -r AGRIF_DEMO -j ${CMPL_CORES} add_key "${ADD_KEYS/key_loop_fusion}" del_key "${DEL_KEYS}" - . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -r AGRIF_DEMO -j ${CMPL_CORES} add_key "${ADD_KEYS}" del_key "${DEL_KEYS}" + . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -r AGRIF_DEMO -t ${CMP_DIR:-${CONFIG_DIR0}} -k 0 -j ${CMPL_CORES} add_key "${ADD_KEYS}" del_key "${DEL_KEYS}" fi if [ ${config} == "AGRIF" ] && [ ${DO_RESTART} == "1" ] ; then ## Restartability tests @@ -1423,7 +1487,7 @@ if [ ${config} == "AGRIF" ] && [ ${DO_CORRUPT} == "1" ] ; then clean_config AGRIF_DEMO ${SETTE_CONFIG} 'cfgs' # # AGRIF_DEMO does not yet support nn_hls=2 => key_loop_fusion can not be used - . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -r AGRIF_DEMO -j ${CMPL_CORES} add_key "${ADD_KEYS/key_loop_fusion}" del_key "key_agrif ${DEL_KEYS}" + . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -r AGRIF_DEMO -t ${CMP_DIR:-${CONFIG_DIR0}} -k 0 -j ${CMPL_CORES} add_key "${ADD_KEYS/key_loop_fusion}" del_key "key_agrif ${DEL_KEYS}" cd ${SETTE_DIR} . ./prepare_exe_dir.sh set_valid_dir @@ -1471,7 +1535,7 @@ if [ ${config} == "WED025" ] ; then clean_config WED025 ${SETTE_CONFIG} 'cfgs' # # WED025 uses ln_hpg_isf so remove key_qco if added by default - . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -r WED025 -j ${CMPL_CORES} add_key "${ADD_KEYS/key_qco/}" del_key "${DEL_KEYS}" + . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -r WED025 -t ${CMP_DIR:-${CONFIG_DIR0}} -k 0 -j ${CMPL_CORES} add_key "${ADD_KEYS/key_qco/}" del_key "${DEL_KEYS}" fi if [ ${config} == "WED025" ] && [ ${DO_RESTART} == "1" ] ; then ## Restartability tests diff --git a/sette/sette_test-cases.sh b/sette/sette_test-cases.sh index 40073dca722168ab18dd7cf8fdc81ad7dad7b03c..629fa0def4c953b4e9b77140b27489f0813dcd65 100755 --- a/sette/sette_test-cases.sh +++ b/sette/sette_test-cases.sh @@ -111,6 +111,10 @@ fi CONFIG_DIR0=${MAIN_DIR}/cfgs TOOLS_DIR=${MAIN_DIR}/tools +if [ -n "${CUSTOM_DIR}" ]; then + NEMO_REV=$( git rev-parse --short HEAD 2> /dev/null ) + CMP_DIR=${CUSTOM_DIR}/${SETTE_SUB_VAL}_${NEMO_REV} +fi CMP_NAM=${1:-$COMPILER} # Copy job_batch_COMPILER file for specific compiler into job_batch_template cd ${SETTE_DIR} @@ -149,7 +153,7 @@ if [ ${config} == "OVERFLOW" ] ; then # sync_config OVERFLOW ${SETTE_CONFIG} 'tests' # - . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -a OVERFLOW -j ${CMPL_CORES} add_key "${ADD_KEYS}" del_key "${DEL_KEYS}" + . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -a OVERFLOW -t ${CMP_DIR:-${CONFIG_DIR0}} -k 0 -j ${CMPL_CORES} add_key "${ADD_KEYS}" del_key "${DEL_KEYS}" fi if [ ${config} == "OVERFLOW" ] && [ ${DO_RESTART} == "1" ] ; then ## Restartability tests for OVERFLOW @@ -266,7 +270,7 @@ if [ ${config} == "LOCK_EXCHANGE" ] ; then # sync_config LOCK_EXCHANGE ${SETTE_CONFIG} 'tests' # - . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -a LOCK_EXCHANGE -j ${CMPL_CORES} add_key "${ADD_KEYS}" del_key "${DEL_KEYS}" + . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -a LOCK_EXCHANGE -t ${CMP_DIR:-${CONFIG_DIR0}} -k 0 -j ${CMPL_CORES} add_key "${ADD_KEYS}" del_key "${DEL_KEYS}" fi if [ ${config} == "LOCK_EXCHANGE" ] && [ ${DO_RESTART} == "1" ] ; then ## Restartability tests for LOCK_EXCHANGE @@ -385,7 +389,7 @@ if [ ${config} == "VORTEX" ] ; then # sync_config VORTEX ${SETTE_CONFIG} 'tests' # - . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -a VORTEX -j ${CMPL_CORES} add_key "${ADD_KEYS}" del_key "${DEL_KEYS}" + . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -a VORTEX -t ${CMP_DIR:-${CONFIG_DIR0}} -k 0 -j ${CMPL_CORES} add_key "${ADD_KEYS}" del_key "${DEL_KEYS}" fi if [ ${config} == "VORTEX" ] && [ ${DO_RESTART} == "1" ] ; then ## Restartability tests for VORTEX @@ -580,7 +584,7 @@ if [ ${config} == "ICE_AGRIF" ] ; then sync_config ICE_AGRIF ${SETTE_CONFIG} 'tests' # # ICE_AGRIF uses linssh so remove key_qco if added by default - . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -a ICE_AGRIF -j ${CMPL_CORES} add_key "${ADD_KEYS/key_qco/}" del_key "${DEL_KEYS}" + . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -a ICE_AGRIF -t ${CMP_DIR:-${CONFIG_DIR0}} -k 0 -j ${CMPL_CORES} add_key "${ADD_KEYS/key_qco/}" del_key "${DEL_KEYS}" fi if [ ${config} == "ICE_AGRIF" ] && [ ${DO_RESTART} == "1" ] ; then ## Restartability tests for ICE_AGRIF @@ -778,7 +782,7 @@ if [ ${config} == "ISOMIP+" ] ; then sync_config ISOMIP+ ${SETTE_CONFIG} 'tests' # # ISOMIP+ uses ln_hpg_isf so remove key_qco if added by default - . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -a ISOMIP+ -j ${CMPL_CORES} add_key "${ADD_KEYS/key_qco/}" del_key "${DEL_KEYS}" + . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -a ISOMIP+ -t ${CMP_DIR:-${CONFIG_DIR0}} -k 0 -j ${CMPL_CORES} add_key "${ADD_KEYS/key_qco/}" del_key "${DEL_KEYS}" fi if [ ${config} == "ISOMIP+" ] && [ ${DO_RESTART} == "1" ] ; then ## Restartability tests @@ -922,7 +926,7 @@ if [ ${config} == "SWG" ] && [ ${USING_QCO} == "yes" ] ; then # sync_config SWG ${SETTE_CONFIG} 'tests' # - . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -a SWG -j ${CMPL_CORES} add_key "${ADD_KEYS}" del_key "${DEL_KEYS}" + . ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -a SWG -t ${CMP_DIR:-${CONFIG_DIR0}} -k 0 -j ${CMPL_CORES} add_key "${ADD_KEYS}" del_key "${DEL_KEYS}" fi if [ ${config} == "SWG" ] && [ ${DO_RESTART} == "1" ] && [ ${USING_QCO} == "yes" ] ; then ## Restartability tests for SWG diff --git a/src/ABL/ablrst.F90 b/src/ABL/ablrst.F90 index 29445c5985be1e0fa186dc278f3aa465ca29da76..925234b3e73663d1aeeba26e750649f20f3ab062 100644 --- a/src/ABL/ablrst.F90 +++ b/src/ABL/ablrst.F90 @@ -200,15 +200,15 @@ CONTAINS & ' control of time parameter nrstdt' ) ! --- mandatory fields --- ! - CALL iom_get( numrar, jpdom_auto, 'u_abl', u_abl(:,:,:,nt_n ), cd_type = 'U', psgn = -1._wp ) - CALL iom_get( numrar, jpdom_auto, 'v_abl', v_abl(:,:,:,nt_n ), cd_type = 'V', psgn = -1._wp ) - CALL iom_get( numrar, jpdom_auto, 't_abl', tq_abl(:,:,:,nt_n,jp_ta) ) + CALL iom_get( numrar, jpdom_auto, 'u_abl', u_abl(:,:,:,nt_n ), cd_type = 'T', psgn = -1._wp ) + CALL iom_get( numrar, jpdom_auto, 'v_abl', v_abl(:,:,:,nt_n ), cd_type = 'T', psgn = -1._wp ) + CALL iom_get( numrar, jpdom_auto, 't_abl', tq_abl(:,:,:,nt_n,jp_ta), kfill = jpfillcopy ) CALL iom_get( numrar, jpdom_auto, 'q_abl', tq_abl(:,:,:,nt_n,jp_qa) ) CALL iom_get( numrar, jpdom_auto, 'tke_abl', tke_abl(:,:,:,nt_n ) ) - CALL iom_get( numrar, jpdom_auto, 'avm_abl', avm_abl(:,:,: ) ) + CALL iom_get( numrar, jpdom_auto, 'avm_abl', avm_abl(:,:,: ), kfill = jpfillcopy ) CALL iom_get( numrar, jpdom_auto, 'avt_abl', avt_abl(:,:,: ) ) - CALL iom_get( numrar, jpdom_auto,'mxld_abl',mxld_abl(:,:,: ) ) - CALL iom_get( numrar, jpdom_auto, 'pblh', pblh(:,: ) ) + CALL iom_get( numrar, jpdom_auto,'mxld_abl',mxld_abl(:,:,: ), kfill = jpfillcopy ) + CALL iom_get( numrar, jpdom_auto, 'pblh', pblh(:,: ), kfill = jpfillcopy ) IF(.NOT.lrxios) CALL iom_delay_rst( 'READ', 'ABL', numrar ) ! read only abl delayed global communication variables diff --git a/src/ABL/sbcabl.F90 b/src/ABL/sbcabl.F90 index cd771f978c5dc566915c866f214bbda24edda2d4..d0eac5483d1a9caeda3b34add824131d3b7d6b2e 100644 --- a/src/ABL/sbcabl.F90 +++ b/src/ABL/sbcabl.F90 @@ -272,6 +272,11 @@ CONTAINS nt_n = 1; nt_a = 2 ! initialize ABL from data or restart + u_abl (:,:,:,nt_a ) = 0._wp + v_abl (:,:,:,nt_a ) = 0._wp + tq_abl (:,:,:,nt_a,: ) = 0._wp + tke_abl(:,:,:,nt_a ) = 0._wp + IF( ln_rstart_abl ) THEN CALL abl_rst_read ELSE @@ -281,16 +286,10 @@ CONTAINS v_abl(:,:,:,nt_n ) = sf(jp_wndj)%fnow(:,:,:) tq_abl(:,:,:,nt_n,jp_ta) = sf(jp_tair)%fnow(:,:,:) tq_abl(:,:,:,nt_n,jp_qa) = sf(jp_humi)%fnow(:,:,:) - tke_abl(:,:,:,nt_n ) = tke_min avm_abl(:,:,: ) = avm_bak avt_abl(:,:,: ) = avt_bak pblh (:,: ) = ghw_abl( 3 ) !<-- assume that the pbl contains 3 grid points - u_abl (:,:,:,nt_a ) = 0._wp - v_abl (:,:,:,nt_a ) = 0._wp - tq_abl (:,:,:,nt_a,: ) = 0._wp - tke_abl(:,:,:,nt_a ) = 0._wp - mxlm_abl(:,:,: ) = mxl_min mxld_abl(:,:,: ) = mxl_min ENDIF diff --git a/src/NST/agrif_ice_interp.F90 b/src/NST/agrif_ice_interp.F90 index e51c386844126ab8bf05acf41d9028d62d503124..5952bc8425cf105c426cd4fb403cfe0cf5802374 100644 --- a/src/NST/agrif_ice_interp.F90 +++ b/src/NST/agrif_ice_interp.F90 @@ -26,13 +26,17 @@ MODULE agrif_ice_interp USE phycst , ONLY: rt0 USE icevar USE sbc_ice, ONLY : tn_ice - USE lbclnk + USE lbclnk + USE iceistate, ONLY : rsshadj + USE traqsr, ONLY : ln_traqsr + USE lib_mpp IMPLICIT NONE PRIVATE - PUBLIC agrif_interp_ice ! called by agrif_user.F90 - PUBLIC agrif_istate_ice ! called by icerst.F90 + PUBLIC agrif_interp_ice ! called by agrif_user.F90 + PUBLIC agrif_istate_ice ! called by icerst.F90 + PUBLIC agrif_istate_icevol ! called by restart.F90 !!---------------------------------------------------------------------- !! NEMO/NST 4.0 , NEMO Consortium (2018) @@ -57,6 +61,7 @@ CONTAINS ! Set a_i, v_i, v_s, sv_i, oa_i, a_ip, v_ip, t_su, e_s, e_i: Agrif_SpecialValue = -9999. Agrif_UseSpecialValue = .TRUE. + CALL Agrif_Set_MaskMaxSearch(10) CALL Agrif_init_variable(tra_iceini_id,procname=interp_tra_ice) ! CALL lbc_lnk( 'agrif_istate_ice', a_i,'T',1._wp, v_i,'T',1._wp, & @@ -76,6 +81,7 @@ CONTAINS CALL Agrif_init_variable(v_iceini_id ,procname=interp_v_ice) use_sign_north = .FALSE. Agrif_UseSpecialValue = .FALSE. + CALL Agrif_Set_MaskMaxSearch(3) ! CALL lbc_lnk( 'agrif_istate_ice', u_ice, 'U', -1._wp, v_ice, 'V', -1._wp ) ! @@ -83,6 +89,60 @@ CONTAINS ! END SUBROUTINE agrif_istate_ice + + SUBROUTINE agrif_istate_icevol( Kbb, Kmm, Kaa ) + !!----------------------------------------------------------------------- + !! *** ROUTINE agrif_istate_icevol *** + !! + !! ** Method : Set initial ssh over child grids from the ice volume + !! computed over the parent grid. + !! This routine is call only if nn_ice/=2 (no ice), over + !! the child grid, hence it needs to know nn_ice + !! + !!----------------------------------------------------------------------- + INTEGER, INTENT(in) :: Kbb, Kmm, Kaa ! ocean time level indices + ! + INTEGER :: ios + !! + NAMELIST/namsbc/ nn_fsbc , & + & ln_usr , ln_flx , ln_blk , ln_abl, & + & ln_cpl , ln_mixcpl, nn_components, & + & nn_ice , ln_ice_embd, & + & ln_traqsr, ln_dm2dc , & + & ln_rnf , nn_fwb , ln_ssr , ln_apr_dyn, & + & ln_wave , nn_lsm + !!---------------------------------------------------------------------- + ! + IF ( Agrif_Root() ) RETURN + ! + ! !** read Surface Module namelist + ! (we only need nn_ice actually which is unknown at the + ! time this subroutine is called) + READ ( numnam_ref, namsbc, IOSTAT = ios, ERR = 901) +901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc in reference namelist' ) + READ ( numnam_cfg, namsbc, IOSTAT = ios, ERR = 902 ) +902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namsbc in configuration namelist' ) + ! + IF ( (nn_ice/=2).AND.((Agrif_Parent(nn_ice)==2).AND. & + & (.NOT.(Agrif_Parent(ln_rstart) & + & .OR.(Agrif_Parent(nn_iceini_file)==2))).AND. & + & (.NOT.Agrif_Parent(ln_ice_embd)) & + & )) THEN + + IF(lwp) WRITE(numout,*) ' ' + IF(lwp) WRITE(numout,*) 'Agrif_istate_icevol : Add an ssh increment coming from the parent grid sea-ice volume' + IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~~~~~~~~' + IF(lwp) WRITE(numout,*) ' ' + + WHERE( ssmask(:,:) == 1._wp ) + ssh(:,:,Kmm) = ssh(:,:,Kmm) - Agrif_Parent(rsshadj) + ssh(:,:,Kbb) = ssh(:,:,Kbb) - Agrif_Parent(rsshadj) + ENDWHERE + ENDIF + ! + END SUBROUTINE agrif_istate_icevol + + SUBROUTINE agrif_interp_ice( cd_type, kiter, kitermax ) !!----------------------------------------------------------------------- !! *** ROUTINE agrif_interp_ice *** diff --git a/src/NST/agrif_oce_interp.F90 b/src/NST/agrif_oce_interp.F90 index 6649f60b403db34975ffa60884974cbf69b2b8ca..d98bbe1d50045fa66db342b76ea0e4258cc51f5a 100644 --- a/src/NST/agrif_oce_interp.F90 +++ b/src/NST/agrif_oce_interp.F90 @@ -87,6 +87,7 @@ CONTAINS Agrif_SpecialValue = 0.0_wp Agrif_UseSpecialValue = .TRUE. l_vremap = ln_vert_remap + CALL Agrif_Set_MaskMaxSearch(10) ts(:,:,:,:,Kbb) = 0.0_wp uu(:,:,:,Kbb) = 0.0_wp @@ -106,6 +107,7 @@ CONTAINS Agrif_UseSpecialValue = .FALSE. l_ini_child = .FALSE. l_vremap = .FALSE. + CALL Agrif_Set_MaskMaxSearch(3) Krhs_a = Kaa ; Kmm_a = Kmm diff --git a/src/OCE/DOM/domain.F90 b/src/OCE/DOM/domain.F90 index 5288311db4074a8562c078b2621038823e97efd2..dbbe4a9031aa13452c7ef3a83f7ad708b72407d1 100644 --- a/src/OCE/DOM/domain.F90 +++ b/src/OCE/DOM/domain.F90 @@ -36,6 +36,9 @@ MODULE domain #endif #if defined key_agrif USE agrif_oce_interp, ONLY : Agrif_istate_ssh ! ssh interpolated from parent +#if defined key_si3 + USE agrif_ice_interp, ONLY : agrif_istate_icevol ! ssh increment from ice +#endif #endif USE sbc_oce ! surface boundary condition: ocean USE trc_oce ! shared ocean & passive tracers variab @@ -176,6 +179,11 @@ CONTAINS ELSEIF( .NOT.Agrif_root() .AND. & & ln_init_chfrpar ) THEN !* Interpolate initial ssh from parent CALL Agrif_istate_ssh( Kbb, Kmm, Kaa ) +#if defined key_si3 + ! Possibly add ssh increment from parent grid + ! only if there is no ice model in the child grid + CALL Agrif_istate_icevol( Kbb, Kmm, Kaa ) +#endif #endif ELSE !* Read in restart file or set by user CALL rst_read_ssh( Kbb, Kmm, Kaa ) diff --git a/src/OCE/IOM/restart.F90 b/src/OCE/IOM/restart.F90 index 32e23127996f4c17c31f755174c50a24875e7eb4..f39619ad225e08fc3ac32af8872370330c933db7 100644 --- a/src/OCE/IOM/restart.F90 +++ b/src/OCE/IOM/restart.F90 @@ -31,6 +31,9 @@ MODULE restart USE trdmxl_oce ! ocean active mixed layer tracers trends variables USE diu_bulk ! ??? #if defined key_agrif +#if defined key_si3 + USE agrif_ice_interp +#endif USE agrif_oce_interp #endif ! @@ -435,7 +438,15 @@ CONTAINS ENDIF #if defined key_agrif ! Set ghosts points from parent - IF (.NOT.Agrif_Root()) CALL Agrif_istate_ssh( Kbb, Kmm, Kaa, .true. ) + IF (.NOT.Agrif_Root()) THEN + ! Set ghosts points from parent + CALL Agrif_istate_ssh( Kbb, Kmm, Kaa, .true. ) +#if defined key_si3 + ! Possibly add ssh increment from parent grid + ! only if there is no ice model in the child grid + CALL Agrif_istate_icevol( Kbb, Kmm, Kaa ) +#endif + ENDIF #endif ! ssh(:,:,Kmm) = ssh(:,:,Kbb) !* set now values from to before ones diff --git a/src/OCE/SBC/sbcmod.F90 b/src/OCE/SBC/sbcmod.F90 index 78e2e3aeaaae7265949b30ced2b8bc29b0d0b2c9..82d0dd6e9e17f3fb0ff28639b74048c7b155ea78 100644 --- a/src/OCE/SBC/sbcmod.F90 +++ b/src/OCE/SBC/sbcmod.F90 @@ -418,31 +418,28 @@ CONTAINS ! ! !== sbc formulation ==! ! + IF( ln_blk .OR. ln_abl ) THEN + IF( ll_sas ) CALL sbc_cpl_rcv ( kt, nn_fsbc, nn_ice, Kbb, Kmm ) ! OCE-SAS coupling: SAS receiving fields from OCE + IF( ln_wave ) THEN + IF ( lk_oasis ) CALL sbc_cpl_rcv ( kt, nn_fsbc, nn_ice, Kbb, Kmm ) ! OCE-wave coupling + CALL sbc_wave ( kt, Kmm ) + ENDIF + ENDIF + ! SELECT CASE( nsbc ) ! Compute ocean surface boundary condition ! ! (i.e. utau,vtau, qns, qsr, emp, sfx) - CASE( jp_usr ) ; CALL usrdef_sbc_oce( kt, Kbb ) ! user defined formulation - CASE( jp_flx ) ; CALL sbc_flx ( kt ) ! flux formulation - CASE( jp_blk ) - IF( ll_sas ) CALL sbc_cpl_rcv ( kt, nn_fsbc, nn_ice, Kbb, Kmm ) ! OCE-SAS coupling: SAS receiving fields from OCE -!!!!!!!!!!! ATTENTION:ln_wave is not only used for oasis coupling !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - IF( ln_wave ) THEN - IF ( lk_oasis ) CALL sbc_cpl_rcv ( kt, nn_fsbc, nn_ice, Kbb, Kmm ) ! OCE-wave coupling - CALL sbc_wave ( kt, Kmm ) - ENDIF - CALL sbc_blk ( kt ) ! bulk formulation for the ocean - ! - CASE( jp_abl ) - IF( ll_sas ) CALL sbc_cpl_rcv ( kt, nn_fsbc, nn_ice, Kbb, Kmm ) ! OCE-SAS coupling: SAS receiving fields from OCE - CALL sbc_abl ( kt ) ! ABL formulation for the ocean - ! - CASE( jp_purecpl ) ; CALL sbc_cpl_rcv ( kt, nn_fsbc, nn_ice, Kbb, Kmm ) ! pure coupled formulation + CASE( jp_usr ) ; CALL usrdef_sbc_oce( kt, Kbb ) ! user defined formulation + CASE( jp_flx ) ; CALL sbc_flx ( kt ) ! flux formulation + CASE( jp_blk ) ; CALL sbc_blk ( kt ) ! bulk formulation for the ocean + CASE( jp_abl ) ; CALL sbc_abl ( kt ) ! ABL formulation for the ocean + CASE( jp_purecpl ) ; CALL sbc_cpl_rcv ( kt, nn_fsbc, nn_ice, Kbb, Kmm ) ! pure coupled formulation CASE( jp_none ) IF( ll_opa ) CALL sbc_cpl_rcv ( kt, nn_fsbc, nn_ice, Kbb, Kmm ) ! OCE-SAS coupling: OCE receiving fields from SAS END SELECT ! IF( ln_mixcpl ) CALL sbc_cpl_rcv ( kt, nn_fsbc, nn_ice, Kbb, Kmm ) ! forced-coupled mixed formulation after forcing ! - IF( ln_wave .AND. ln_tauoc ) THEN ! Wave stress reduction + IF( ln_wave .AND. ln_tauoc ) THEN ! Wave stress reduction ! DO_2D( 0, 0, 0, 0 ) utau(ji,jj) = utau(ji,jj) * tauoc_wave(ji,jj) diff --git a/src/OFF/dtadyn.F90 b/src/OFF/dtadyn.F90 index 253d699db5d2b13d0e708af11cfb31d1515b4c69..3a68e3128e1e596f150662a3e74f17d1e957059d 100644 --- a/src/OFF/dtadyn.F90 +++ b/src/OFF/dtadyn.F90 @@ -24,7 +24,7 @@ MODULE dtadyn USE dom_oce ! ocean domain: variables #if defined key_qco USE domqco ! variable volume -#else +#elif ! defined key_linssh USE domvvl #endif USE zdf_oce ! ocean vertical physics: variables @@ -53,7 +53,7 @@ MODULE dtadyn PUBLIC dta_dyn_init ! called by nemo_init PUBLIC dta_dyn ! called by nemo_gcm PUBLIC dta_dyn_atf ! called by nemo_gcm -#if ! defined key_qco +#if ! defined key_qco && ! defined key_linssh PUBLIC dta_dyn_sf_interp ! called by nemo_gcm #endif #if defined key_sed_off @@ -345,6 +345,7 @@ CONTAINS CALL iom_close( inum ) ! close file ENDIF ! +#if ! defined key_linssh #if defined key_qco CALL dom_qco_r3c( ssh(:,:,Kbb), r3t(:,:,Kbb), r3u(:,:,Kbb), r3v(:,:,Kbb) ) CALL dom_qco_r3c( ssh(:,:,Kmm), r3t(:,:,Kmm), r3u(:,:,Kmm), r3v(:,:,Kmm) ) @@ -356,6 +357,7 @@ CONTAINS CALL dta_dyn_sf_interp( nit000, Kmm ) CALL dta_dyn_sf_interp( nit000, Kbb ) +#endif #endif ENDIF ! @@ -390,7 +392,7 @@ CONTAINS END SUBROUTINE dta_dyn_atf -#if ! defined key_qco +#if ! defined key_qco && ! defined key_linssh SUBROUTINE dta_dyn_sf_interp( kt, Kmm ) !!--------------------------------------------------------------------- diff --git a/src/OFF/nemogcm.F90 b/src/OFF/nemogcm.F90 index 9cffd0190d1a01528c6ce0c37503905e632353d2..9e83a72731fbf1f2ad7821634dbb064606b0e729 100644 --- a/src/OFF/nemogcm.F90 +++ b/src/OFF/nemogcm.F90 @@ -62,7 +62,7 @@ MODULE nemogcm USE prtctl ! Print control (prt_ctl_init routine) USE timing ! Timing USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) -#if defined key_qco +#if defined key_qco || defined key_linssh USE stpmlf , ONLY : Nbb, Nnn, Naa, Nrhs ! time level indices #else USE step , ONLY : Nbb, Nnn, Naa, Nrhs ! time level indices @@ -150,7 +150,7 @@ CONTAINS Nnn = Naa Naa = Nrhs ! -# if ! defined key_qco +# if ! defined key_qco && ! defined key_linssh IF( .NOT.ln_linssh ) CALL dta_dyn_sf_interp( istp, Nnn ) ! calculate now grid parameters # endif